File tree Expand file tree Collapse file tree 1 file changed +9
-3
lines changed
Expand file tree Collapse file tree 1 file changed +9
-3
lines changed Original file line number Diff line number Diff line change 44import json
55import sys
66
7- ## Graypaper conforming implementation
7+ ## Graypaper conforming implementation of the trie merklization (Appendix D)
8+ ## Based on GP 0.2.2
9+
10+ # Blake2b-256
811def hash (data ):
912 return hashlib .blake2b (data , digest_size = 32 ).digest ()
1013
11- def fork (l , r ):
14+ # GP (286)
15+ def branch (l , r ):
1216 assert len (l ) == 32
1317 assert len (r ) == 32
1418 head = l [0 ] & 0xfe
1519 return bytes ([head ]) + l [1 :] + r
1620
21+ # GP (287)
1722def leaf (k , v ):
1823 if len (v ) <= 32 :
1924 head = 0b01 | (len (v ) << 2 )
@@ -24,6 +29,7 @@ def leaf(k, v):
2429def bit (k , i ):
2530 return (k [i >> 3 ] & (1 << (i & 7 ))) != 0
2631
32+ # GP (289)
2733def merkle (kvs , i = 0 ):
2834 if not kvs :
2935 return 32 * b'\0 '
@@ -37,7 +43,7 @@ def merkle(kvs, i=0):
3743 r .append ((k , v ))
3844 else :
3945 l .append ((k , v ))
40- encoded = fork (merkle (l , i + 1 ), merkle (r , i + 1 ))
46+ encoded = branch (merkle (l , i + 1 ), merkle (r , i + 1 ))
4147 assert len (encoded ) == 64
4248 return hash (encoded )
4349
You can’t perform that action at this time.
0 commit comments