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