A ruby implementation of Greg Maxwell's Merkle approach to prove Bitcoin liabilities.


Liability Proof

Build Status

If you're not familiar with liability proof or the Merkle approach, check this page: Proving Your Bitcoin Reserves. Basically, every mordern exchanges should prove they really hold the bitcoins/money they claim to.


  • ruby 2.0.0 or higher (if you want to run 'rake test' in this gem you'll need ruby 2.1.0 or higher)
  • openssl


gem install liability-proof


As command line tool:

# Generate root.json and partial tree json for each account in accounts.json.
# The generated file format conforms with the standard in progress:
# https://github.com/olalonde/blind-liability-proof#serialized-data-formats-work-in-progress--draft
lproof generate -f accounts.json

# Verify specified partial tree is valid, i.e. the root node calculated from
# from the partial tree matches the root node in root.json
lproof verify -r root.json -f partial_trees/jan.json

# Pretty print a partial tree or any other json file
lproof pp -f partial_trees/jan.json

As library: check LiabilityProof::Generator and LiabilityProof::Verifier for example.


LiabilityProof is a ruby gem released under MIT license. See http://peatio.mit-license.org for more information.

How To Contribute

Just create an issue or open a pull request :)

Other implementations