BitcoinJ Überprüfe einen Timestamp

Nach der Erzeugung und Erweiterung eines Timestamps kommen wir nun zur wichtigsten Funktion, nämlich der Überprüfung („Verifizierung“) des Timestamps. Da diese Überprüfung in der Regel von einem Dritten durchgeführt werden soll, braucht Ihr dem Prüfer lediglich die Originaldatei, die erweiterte Timestamp-Datei und dieses Programm geben – das eigene Wallet wird NICHT an den Dritten gegeben.

Das Programm baut im Wege der Überprüfung eine direkte Verbindung zum Bitcoin (Test-)Netzwerk auf und bittet einen Node, ihm die Daten eines speziellen Blocks im Rohformat zur Verfügung zu stellen. Anschließend geht das Programm durch alle Transaktionen dieses Blocks durch und sucht „unsere“ Transaktion, in der sich der Hashwert befindet. Sobald der Hashwert gefunden ist und mit dem aktuellen Hashwert der Originaldatei übereinstimmt wird „grünes“ Licht gegeben.

Hier nun die einfach zu bedienende Oberfläche – zuerst wählen wir eine Datei aus deren Timestamp wir verifizieren wollen (die erweiterte Timestamp-Datei muss „neben“ der Originaldatei liegen:

Das Programm verbindet sich nun mit dem Netzwerk und fragt nach den Daten des gewünschten Blockes – etwas warten ist angesagt:

Manchmal kann es sein, das der Node nicht schnell genug antwortet – bitte startet dann den Prüfvorgang erneut:

Sollte die Überprüfung positiv ausfallen erscheint eine grün unterlegte Information:

Sollte die erweiterte Timestamp-Datei nicht vorhanden sein bricht das Programm mit einer Fehlermeldung ab:

Sollte die Überprüfung fehlschlagen werden wir auch darüber informiert:

Mit diesem Artikel könnte unsere kleine Artikelreihe über den Timestamp enden aber ich habe noch eine weitere Möglichkeit der Überprüfung eines Timestamps gefunden, und zwar die Nutzung von externen Online-Programmschnittstellen; mehr dazu im Artikel BitcoinJ Überprüfe einen Timestamp API.

Die Sourcecodes findet Ihr am Ende des Artikels.

Alle Quellcodes zu BitcoinJ Timestamps & OP_RETURN findet Ihr zum Download in meinem GitHub-Repository BitcoinJTimestamp, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/BitcoinJTimestamp. Alle Programme sind unter Java 11 lauffähig (vermutlich auch unter Java 8) und wurden mit intelliJ IDEA entwickelt, welches für dieses Programm aber nicht notwendig ist.

Zur Nutzung der Programme benötigt Ihr diverse Bibliotheken – ladet Euch diese aus dem separaten GitHub-Archiv (https://github.com/java-crypto/BitcoinJ_Libraries) herunter und bindet Sie über Eure Entwicklungsumgebung ein.

Noch ein Wort zum Thema „Lizenz“: Das Programm steht unter unterschiedlichen Lizenzen, die Ihr bitte beachten solltet. Die von mir erstellten Beispiele selber stehen unter der „Unlicense“-Lizenz, allerdings werden zur Laufzeit diverse Bibliotheken eingebunden, welche zum Teil ganz eigene Lizenzen mitbringen. Darauf kann ich in meinen Lizenzhinweisen nicht hinweisen.

Letzte Bearbeitung: 22.03.2020

Hier der Sourcecode des Programms und der Form; den Quellcode der Klasse RedirectedFrame.java findet Ihr in meinem GitHub-Repository: