This is some fast code to iterate over bitcoind's block files (or dumptxoutset output) to extract blockchain data from the main blockchain.
- make
Show block hash and transaction size for each transaction in the main chain:
./bitcoin-iterate -q --tx=%bh,%tl
This will produce output like:
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f,204
00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048,134
000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd,134
0000000082b5015589a3fdf2d4baff403e6f0be035a5d9742c1cae6295464449,134
000000004ebadb55ee9096c9a2f8880e09da59c0d68b1c228da88e48844a1485,134
…
Show output script sizes in the main chain (block number, transaction number, output number, output script length):
./bitcoin-iterate -q --output=%bN,%tN,%oN:%ol
This will produce output like:
0,0,0:67
1,0,0:67
2,0,0:67
3,0,0:67
4,0,0:67
…
Show the five largest blocks, by height and blockhash:
./bitcoin-iterate -q --block='%bl %bN %bh' | sort -nr | head -n5
This will produce output like:
999993 343188 96395be50a116886fb04a1262aa89aaa765c4af524d0ae090000000000000000
999991 355770 5ce1f5e58d5d718374b1bdecb474eae5cdd91e1b8a3256050000000000000000
999990 327145 821196665ed237f53ca2c7eafe05c97d26743c07d2b539110000000000000000
999989 345578 0294fa5b68babd848a1fe097b075a856bfd9eb9a619efd130000000000000000
999989 333434 f9776021575b6e408d7745d115db75e17937fc40ab9f0e190000000000000000
…
You can see some examples by looking at the manual page source.
utxoset-iterate reads a Bitcoin Core UTXO snapshot file (produced by the
dumptxoutset RPC, Bitcoin Core v28+) and iterates over every unspent output.
Dump all UTXOs as CSV (height, txid, vout, satoshis):
./utxoset-iterate --output='%bN,%th,%oN,%oa' utxo.dat
Show only coinbase UTXOs:
./utxoset-iterate --output='%tC:%th:%oN %oa' utxo.dat | grep ^1: | cut -d: -f2-
Format specifiers: %bN (block height), %th (txid), %tC (coinbase flag),
%oN (vout index), %oa (amount in satoshis), %ol (script length), %os (script hex).
See the utxoset-iterate manual page source for full details.
Happy to consider them!
You can reach me on IRC (rusty on #bitcoin-wizards on Freenode), and of course, via pull requests and the Github bug tracker.
Good luck!
Rusty Russell.