Coder Social home page Coder Social logo

btcparser.jl's Introduction

BTCParser.jl

Build Status codecov.io

About

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.

Usage

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 chain.data[h].

Get the hash of a block

double_sha256(genesis_block)
double_sha256(chain[0])

Get the header of a block

Header(chain[1])
Header(genesis_block)

Access transactions

genesis_tx = genesis_block.transactions[1]

Hashing transactions

double_sha256(genesis_tx)

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

chain = make_chain(chain)

Problems

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

btcparser.jl's People

Contributors

gdkrmr avatar juliatagbot avatar vnegi10 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.