annotate DOCS.md @ 30:dbf757904681

CHnage info files
author Dennis <dennis@denniscm.com>
date Fri, 11 Aug 2023 16:36:36 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
1
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
2 # Table of Contents
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
3
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
4 1. [Installation](#org79ef3e8)
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
5 2. [Usage](#org47a2d85)
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
6 1. [Example 1 -> Deserialize genesis block](#orgb8ccd7c)
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
7 2. [Example 2 -> Deserialize entire blockchain](#org6c651d9)
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
8
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
9 ![img](https://denniscm.com/static/bitcaviar-logo.png)
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
10
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
11
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
12 <a id="org79ef3e8"></a>
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
13
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
14 # Installation
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
15
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
16 Recommended:
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
17
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
18 pip install bitcaviar-plus
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
19
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
20 Manual:
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
21
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
22 python setup.py install
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
23
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
24
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
25 <a id="org47a2d85"></a>
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
26
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
27 # Usage
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
28
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
29
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
30 <a id="orgb8ccd7c"></a>
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
31
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
32 ## Example 1 -> Deserialize genesis block
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
33
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
34 from bitcaviar_plus.block import deserialize_block
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
35
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
36
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
37 def parse_genesis_block():
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
38 with open('path/to/file/blk00000.dat', 'rb') as f:
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
39 block = deserialize_block(f)
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
40 print(block)
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
41
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
42
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
43 <a id="org6c651d9"></a>
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
44
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
45 ## Example 2 -> Deserialize entire blockchain
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
46
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
47 import os
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
48 from bitcaviar_plus.block import deserialize_block
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
49 from bitcaviar_plus.errors import InvalidMagicBytes
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
50
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
51
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
52 def parse_entire_blockchain():
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
53 file_counter = -1
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
54 while True:
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
55 file_counter += 1
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
56 file_name = 'path/to/file/blk{}.dat'.format(str(file_counter).zfill(5))
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
57 with open(file_name, 'rb') as f:
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
58 file_size = os.path.getsize(file_name)
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
59 while f.tell() < file_size:
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
60 try:
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
61 block = deserialize_block(f)
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
62 except InvalidMagicBytes as e:
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
63 print(e)
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
64
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
65 Example output:
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
66
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
67 {
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
68 "magic_number":"f9beb4d9",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
69 "size":"0000011d",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
70 "id":"000000000019d6...",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
71 "transaction_count":"01",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
72 "header":{
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
73 "version":"00000001",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
74 "previous_block_id":"00000000000000...",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
75 "merkle_root":"4a5e1e4baab89f3a32...",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
76 "time":"495fab29",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
77 "bits":"1d00ffff",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
78 "nonce":"7c2bac1d"
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
79 },
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
80 "transactions":[
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
81 {
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
82 "version":"00000001",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
83 "input_count":"01",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
84 "output_count":"01",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
85 "lock_time":"00000000",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
86 "id":"4a5e1e4baab89f3a32518a8...",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
87 "inputs":[
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
88 {
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
89 "id":"0000000000000000000000...",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
90 "vout":"ffffffff",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
91 "script_sig_size":"4d",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
92 "script_sig":"04ffff001d01044554686520546...",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
93 "sequence":"ffffffff"
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
94 }
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
95 ],
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
96 "outputs":[
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
97 {
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
98 "value":"000000012a05f200",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
99 "script_pub_key_size":"43",
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
100 "script_pub_key":"4104678afdb0fe55482719..."
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
101 }
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
102 ]
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
103 }
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
104 ]
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
105 }
dbf757904681 CHnage info files
Dennis <dennis@denniscm.com>
parents:
diff changeset
106