I'd like to iterate through the entire block chain using RPC. The process I intend to do is:

  1. getblockhash 1
  2. getblock (input of #1 here)
  3. iterate through each transaction with GetRawtransaction (input of tx field here)
  4. After getting all transactions, call getblockhash 2 (or goto nextblockhash in block)

I just want to make sure I'm enumerating the chain correctly

  • The above seems correct. Most probably you will also want to DecodeRawTransaction after step 3. If performance is a requirement and you are already indexing all transactions (txindex=1) consider parsing your blk*.dat local files which will be way more faster than the RPC based approach. This should help: en.bitcoin.it/wiki/Data_directory#blocks_subdirectory – George Kimionis Mar 13 '14 at 20:22

Your plan is correct (use getrawtransaction <hash> 1 to get JSON instead of HEX :D) but the RPC becomes slow > 60% of the blockchain because there's between 500 and 2k transactions to go through. Make sure txindex=1 is in your config so it has the rawTX data.

As suggested by George parsing the raw files stored will make a very significant difference, to save you a lot of work; this project (by bitpay) already does a that nicely:


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.