Mercurial > public > bitcaviar-plus
comparison tests/implementation_testing.py @ 24:139c77ea99b7
add plyvel
author | Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com> |
---|---|
date | Sun, 14 Nov 2021 17:36:43 +0100 |
parents | 32061555853c |
children |
comparison
equal
deleted
inserted
replaced
23:32061555853c | 24:139c77ea99b7 |
---|---|
1 import os | 1 import os |
2 import plyvel | |
3 import tempfile | |
2 from bitcaviar_plus.block import deserialize_block | 4 from bitcaviar_plus.block import deserialize_block |
5 from bitcaviar_plus.block import __deserialize_header | |
3 from bitcaviar_plus.errors import InvalidMagicBytes | 6 from bitcaviar_plus.errors import InvalidMagicBytes |
4 import plyvel | |
5 | 7 |
6 | 8 |
7 # noinspection PyUnresolvedReferences | |
8 def parse_genesis_block(): | 9 def parse_genesis_block(): |
9 blk_path = '/bitcoin-node/.bitcoin/blocks/blk00355.dat' | 10 blk_path = '/bitcoin-node/.bitcoin/blocks/blk00355.dat' |
10 db = plyvel.DB('/bitcoin-node/.bitcoin/blocks/index/', create_if_missing=False) | |
11 | 11 |
12 with open(blk_path, 'rb') as f: | 12 with open(blk_path, 'rb') as f: |
13 file_size = os.path.getsize(blk_path) | 13 file_size = os.path.getsize(blk_path) |
14 while f.tell() < file_size: | 14 while f.tell() < file_size: |
15 try: | 15 try: |
16 block = deserialize_block(f) | 16 block = deserialize_block(f) |
17 except InvalidMagicBytes as e: | 17 except InvalidMagicBytes as e: |
18 print(e) | 18 print(e) |
19 | 19 |
20 | 20 |
21 # noinspection PyUnresolvedReferences | |
22 def iterate_leveldb_keys(): | |
23 db = plyvel.DB('/bitcoin-node/.bitcoin/blocks/index/', create_if_missing=False) | |
24 for key, value in db: | |
25 print('---- RAW KEY ----') | |
26 print(key.hex()) | |
27 print('---- LITTLE ENDIAN KEY ----') | |
28 print(key[::-1].hex()) | |
29 print('---- RAW VALUE ----') | |
30 print(value[::-1].hex()) | |
31 exit() | |
32 | |
33 | |
34 # noinspection PyUnresolvedReferences | |
35 def search_block(): | |
36 db = plyvel.DB('/bitcoin-node/.bitcoin/blocks/index/', create_if_missing=False) | |
37 search_type = bytes.fromhex('62') # 'b' (block) in hex is 62 | |
38 block_hash = bytes.fromhex('000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f')[::-1] | |
39 key = search_type + block_hash | |
40 value = db.get(key) | |
41 print(value.hex()) | |
42 db.close() | |
43 | |
44 | |
21 if __name__ == '__main__': | 45 if __name__ == '__main__': |
22 parse_genesis_block() | 46 search_block() |