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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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()