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.
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