Is there a way to find the coinbase for a given block using only bitcoind commands?

5

ASICMiner includes hex(Mined By ASICMiner) in the coinbase.

I'd like to generate weekly statistics that include ASICMiner' solo-mining efforts, but I don't want to have to rely on blockchain.info or blockexplorer.com. Is there a way to use bitcoind commands to return the coinbase for a block of given height (or hash)?

organofcorti

Posted 2013-05-24T01:50:21.977

Reputation: 327

Answers

4

I think this is best answered by an example. Let's find the coinbase from a block on the Bitcoin testnet.

First we'll get the hash for a block we want to look at. We'll have a look at the (as I write this) latest block:

> bitcoind getblockcount
81626
> bitcoind getblockhash 81626
0000000000834f3933b50577b854692ed246728a17d10006ced1283a3fd8074c

Now we need to find the hash of the generation transaction from that block. It's always the first one listed. In this example there is only 1 transaction.

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

And now we can grab the coinbase from the transaction. The getrawtransaction command's second parameter can be set to 1 to give us individual pieces of the transaction so we can easily find the coinbase. Alternatively we could leave that out and it would give us a single binary blob to navigate ourselves.

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

And there's the coinbase. Now we can check whether it contains pieces of ASCII text or whatever else we want to do with it.

Dr.Haribo

Posted 2013-05-24T01:50:21.977

Reputation: 7 823

I though "getrawtransaction" would only work for transactions that are in the memory pool? Not for those that have been mined into blocks already...Gigi 2013-05-24T17:57:20.713

I see what I'd been doing - I'd been testing getrawtransaction on the genesis block (since I knew that contained a message) - and of course that didn't work.Thanks DrH!organofcorti 2013-05-25T10:09:54.017

I forgot to add - this method only works for recent blocks.organofcorti 2013-12-19T03:12:18.703

0

I think no - it's not possible using the current bitconind.

Unless you want to use not only RPC, but also the bitcoin protocol. Then you can just download each new block from your node (using getdata command) and check it is has "Mined By ASICMiner" in the expected place.

You could also look into the blocks database directly - the blocks are stored on disk by your bitcoin node, in a pretty straight forward format.

Gigi

Posted 2013-05-24T01:50:21.977

Reputation: 600

-1 "I think" is not an answer, either you know or you do not know.o0'. 2013-05-25T21:23:06.353

It is, when you're modest :) But, since you care about words so much: I am very sure that getrawtransaction will not work for old spent transactions. Feel free to -1 the truth one more time, but this just won't fix the world :)Gigi 2013-05-26T15:10:26.960