/utxompt

UTXO Set in a Merkle Patricia Trie

Primary LanguagePython

utxompt

UTXO Set in a Merkle Patricia Trie

levelpy

git clone git@github.com:akubera/levelpy.git
diff --git a/levelpy/serializer.py b/levelpy/serializer.py
index 721a429..4a92b81 100644
--- a/levelpy/serializer.py
+++ b/levelpy/serializer.py
@@ -34,6 +34,14 @@ def binary_decode(byte_str):
     return byte_str
 
 
+def bytes_encode(byte_str):
+    return bytes(byte_str)
+
+
+def bytes_decode(byte_str):
+    return bytes(byte_str)
+
+
 class MsgPackSerializer:
 
     def __init__(self):
@@ -58,6 +66,7 @@ class Serializer:
         'utf-8': (utf8_encode, utf8_decode),
         'bin': (binary_encode, binary_decode),
         'binary': (binary_encode, binary_decode),
+        'bytes': (bytes_encode, bytes_decode),
         'none': (binary_encode, binary_decode),
         'msgpack': (MsgPackSerializer.encode, MsgPackSerializer.decode)
     }

Loading the DB

Use Rusty's bitcoin-iterate to generate text records and process:

/usr/local/src/bitcoin-iterate/bitcoin-iterate \
    --quiet \
    --blockdir /mnt/t5/blocks \
    --block=B:%bN \
    --input=I:%ih:%ii \
    --output=O:%th:%oN:%oa \
    | ./load | tee output.log

The loader will create a list of root block hashes in roots.txt.

Generate a proof

The proof generator takes root_hash, txid and index as args:

./prove \
    6c079c9cfbc0d3dfe9f7133adb69ce8a555bb7641e4e3d988f19b0228e8f4640 \
    7e55be4820c159fd990893c8508e063bc5fe142d49ccca604647078c2c9305a7 \
    0 > proof.txt

Verify a proof

./verify \
    6c079c9cfbc0d3dfe9f7133adb69ce8a555bb7641e4e3d988f19b0228e8f4640 \
    7e55be4820c159fd990893c8508e063bc5fe142d49ccca604647078c2c9305a7 \
    0