Wie validiere ich Rohtransaktionen mit Bitcoin und/oder Bitcoin-Cli (vorzugsweise offline)?

Ich wollte schon immer am Spaß dieses Bitcoin-Transaktionswettbewerbs teilnehmen, aber obwohl ich mich damit wohl fühle, die Skripte selbst auszuarbeiten und mit den vorgeschlagenen webbasierten Tools zu spielen, habe ich als relativer Neuling bei Bitcoin keine Ahnung wie man bitcoind/qt verwendet, um die rohe Transaktionsvalidierung durchzuführen.

Ich habe bitcoind/qt/cli heruntergeladen, aber ich weiß nicht, was ich in meine bitcoin.conf einfügen soll, noch weiß ich, wie ich die Tools ausführe oder welche Daten ich ihnen zuführen soll, um meine Rohtransaktionen zu validieren.

Ich würde es vorziehen, meine rohen Transaktionsvalidierungen offline auszuführen, aber ich weiß nicht einmal, ob das mit diesen Tools möglich ist?

Trotz Durchsuchen von Wikis, Foren usw. habe ich keine „Dummy-Anleitung“ für diese Tools gefunden; alles scheint von einem Wissensstand auszugehen, der irgendwo über dem liegt, wo ich mich gerade befinde.

Ich wäre sehr dankbar, wenn mir jemand geeignete Informationen in die Richtung weisen oder sie hier bereitstellen könnte?

Und obwohl der Organisator des Bitcoin-Wettbewerbs vorgeschlagen hat, Bitcoin zur Validierung von Rohtransaktionen zu verwenden, ziehe ich gerne andere Tools/Dienste in Betracht, die die gleiche Arbeit leisten würden. Wenn mich also jemand auf (einfachere?) Alternativen hinweisen kann, die auch in Ordnung wären.

Danke im Voraus.

Antworten (1)

Sie können Transaktionen in einer Offline-Instanz von Bitcoin validieren, die absolut nichts von der Blockchain hat!

Starten Sie es wie folgt:

$ bitcoind -datadir=some-datadir -server -connect=localhost:9999

Der "connect"-Parameter gibt ihm die Remote-Verbindung zu. Wenn Sie es auf einen nicht lauschenden Port richten, wird es niemals Blöcke sammeln. Dies ist in Ordnung, um Transaktionen zu validieren.

Es wird Ihnen sagen, dass Sie eine bitcoin.conf erstellen müssen und wo und was Sie darin einfügen müssen (rpcuser=bitcoinrpc und rpcpassword=some_long_string).

Dann wird Ihre Bitcoin-RPC-URL sein

http://bitcoinrpc:password@localhost:8332/

Sie verwenden die JSON-API signrawtransaction, die in Abschnitt 7.2 von https://en.bitcoin.it/wiki/Raw_Transactions dokumentiert ist . Sie müssen die Eingaben übergeben, da sie dem Bitcoin-Daemon nicht bekannt sind.

Ich bin der Autor der Python-Bibliothek pycoin https://github.com/richardkiss/pycoin/ und ich verwende bitcoind, um zu überprüfen, ob von pycoin erstellte Transaktionen gültig (oder in einigen Fällen ungültig) sind. Siehe bitcoind_agrees_on_transaction_validity in https://github.com/richardkiss/pycoin/blob/offline_tx/pycoin/services/bitcoind.py für ein Verwendungsbeispiel.

(Sie könnten auch Pycoin verwenden, um Transaktionen zu validieren. Es funktioniert, aber es ist noch nicht ganz so weit, was die Dokumentation betrifft. Es wurde auch nicht ausgiebig auf Nicht-Standard-Transaktionen getestet, daher ist seine VM-Implementierung kaum maßgebend.)

Habe den Server unter Windows 7 laufen lassen (danke) und ich kann erfolgreich Befehle mit Bitcoin ausgeben (z. B. getinfo, decoderawtransaction usw.), aber alle meine Versuche, irgendeine Art von JSON-Daten in einen Befehl einzufügen, schlagen fehl ... zum Beispiel ... bitcoind signrawtransaction <transactioninhex> [{"txid":"bc2964822afc7ed5cf0f6f412cc61a086ff765584d6cb910a2bbe8d4f045eedf","vout":0,"scriptPubKey":"76a91406f1b6703d3f56427bfcfd372f952d50d04b64bd88ac"}] error: Error parsing JSON:[{txid:bc2964822afc7ed5cf0f6f412cc61a086ff765584d6cb910a2bbe8d4f045eedf,vout:0,scriptPubKey:76a91406f1b6703d3f56427bfcfd372f952d50d04b64bd88ac}]
@PhilDannWard Versuchen Sie, alles in dreifache Anführungszeichen einzuschließen. Und wenn Sie unter Windows arbeiten – es scheint, als hätte ich mit Namecoin herumgespielt – glaube ich, dass CMD \newlines braucht, um gut mit JSON zu spielen (obwohl ich mich wahrscheinlich sehr täusche).
@KJO Ihr Vorschlag führte mich zu bitcoin.stackexchange.com/questions/5424/… und bitcointalk.org/index.php?topic=104512.0 Die Verwendung beider Methoden vermeidet den JSON-Parsing-Fehler ( :-) ), aber das Ausprobieren hat funktioniert Beispiel people.xiph.org/~greg/signdemo.txt gibt mir complete=false, wo ich erwarten würde, das Beispiel neu zu erstellen, um complete=true ( :-( ) zu erhalten. Ich werde weiterhin meinen Kopf gegen die Wand schlagen und versuchen zu arbeiten herauszufinden, warum ich anscheinend nicht in der Lage bin, Rohtransaktionen richtig zu verarbeiten, aber danke, dass Sie mich ein paar Schritte näher gebracht haben.