Gibt es eine Möglichkeit, die Coinbase für einen bestimmten Block nur mit Bitcoin-Befehlen zu finden?

ASICMiner enthält Hex (Mined By ASICMiner) in der Coinbase.

Ich möchte wöchentliche Statistiken erstellen, die die Solo-Mining-Bemühungen von ASICMiner beinhalten, aber ich möchte mich nicht auf blockchain.info oder blockexplorer.com verlassen müssen. Gibt es eine Möglichkeit, Bitcoin-Befehle zu verwenden, um die Coinbase für einen Block mit einer bestimmten Höhe (oder Hash) zurückzugeben?

Antworten (2)

Ich denke, das lässt sich am besten an einem Beispiel beantworten. Lassen Sie uns die Coinbase aus einem Block im Bitcoin-Testnet finden.

Zuerst erhalten wir den Hash für einen Block, den wir uns ansehen möchten. Wir werden uns den (während ich dies schreibe) neuesten Block ansehen:

> bitcoind getblockcount
81626
> bitcoind getblockhash 81626
0000000000834f3933b50577b854692ed246728a17d10006ced1283a3fd8074c

Jetzt müssen wir den Hash der Generierungstransaktion aus diesem Block finden. Es ist immer der erste, der aufgeführt wird. In diesem Beispiel gibt es nur 1 Transaktion.

> bitcoind getblock 0000000000834f3933b50577b854692ed246728a17d10006ced1283a3fd8074c
[...]
    "tx" : [
        "f1fdeb7ced28f697c97b6a3ed7cc1946e1fc5e062ad8c17d05c88b1767b91b2a"
    ],
[...]

Und jetzt können wir die Coinbase aus der Transaktion holen. Der zweite Parameter des Befehls getrawtransaction kann auf 1 gesetzt werden, um uns einzelne Teile der Transaktion zu geben, damit wir die Coinbase leicht finden können. Alternativ könnten wir das weglassen und es würde uns einen einzelnen binären Blob geben, um uns selbst zu navigieren.

> bitcoind getrawtransaction f1fdeb7ced28f697c97b6a3ed7cc1946e1fc5e062ad8c17d05c88b1767b91b2a 1
[...]
"coinbase" : "03da3e012cfabe6d6d18c47c97379852a93158528bb709355a0d38d05fedf072b610bb57442aad4e710400000000000000062f503253482f",
[...]

Und da ist die Coinbase. Jetzt können wir prüfen, ob es Teile von ASCII-Text enthält oder was wir sonst damit machen wollen.

Ich dachte, "getrawtransaction" würde nur für Transaktionen funktionieren, die sich im Speicherpool befinden? Nicht für diejenigen, die bereits in Blöcke abgebaut wurden ...
Ich sehe, was ich getan habe – ich habe getrawtransaction auf dem Genesis-Block getestet (da ich wusste, dass das eine Nachricht enthielt) – und das hat natürlich nicht funktioniert. Danke, DrH!
Ich habe vergessen hinzuzufügen - diese Methode funktioniert nur für aktuelle Blöcke.

Ich denke nein - es ist nicht möglich, das aktuelle bitconind zu verwenden.

Es sei denn, Sie möchten nicht nur RPC, sondern auch das Bitcoin-Protokoll verwenden. Dann können Sie einfach jeden neuen Block von Ihrem Knoten herunterladen (mit dem Befehl getdata) und überprüfen, ob er an der erwarteten Stelle "Mined By ASICMiner" hat.

Sie können auch direkt in die Blockdatenbank schauen - die Blöcke werden von Ihrem Bitcoin-Knoten in einem ziemlich einfachen Format auf der Festplatte gespeichert.

-1 „Ich denke“ ist keine Antwort, entweder weißt du es oder du weißt es nicht.
Es ist, wenn Sie bescheiden sind :) Aber, da Sie sich so sehr um Worte kümmern: Ich bin mir sehr sicher, dass getrawtransaction nicht für alte ausgegebene Transaktionen funktionieren wird. Fühlen Sie sich frei, die Wahrheit noch einmal zu -1, aber das wird die Welt einfach nicht reparieren :)