A Bitcoin blockchain parser in pure Julia
Author gdkrmr
7 Stars
Updated Last
1 Year Ago
Started In
January 2019


Build Status


A pure Julia implementation of a Bitcoin blockchain parser. Before using BTCParser.jl you must install a bitcoin client and download the entire blockchain.

Bitcoin core should save the blockchain data into $HOME/.bitcoin/blocks, BTCParser.jl will look there by default. You can change this directory by setting the environmental variable BTCPARSER_BLOCK_DIR.


Read the chain:

using BTCParser

# this takes ~2-3 minues on a SATA SSD
chain = make_chain()

Extract the Genesis Block

genesis_block = Block(chain[0])

Extract Block at height h

block = Block(chain[h])

chain indexing is 0-based to match the numbering used by the bitcoin core client, if you require 1-based indexing, use[h].

Get the hash of a block


Get the header of a block


Access transactions

genesis_tx = genesis_block.transactions[1]

Hashing transactions


Update an existing chain (in case the bitcoin client is running in the background)

chain = make_chain(chain)


  • Currently only tested on amd64 architectures under Linux
    • many of the internals are endian-dependent and may not work on other architectures.
    • Paths are different under Windows/MacOS.
  • Testing requires a working copy of the Bitcoin blockchain (200GB) and therefore testing on travis is difficult.
  • Grep the code for "TODO" for more stuff.
  • Please report any issues or improvement proposals here.

Used By Packages

No packages found.