Mercurial > public > bitcaviar-plus
annotate README.md @ 29:d9537541d623
Update README.md
committer: GitHub <noreply@github.com>
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Mon, 07 Aug 2023 15:31:56 +0100 |
parents | 30535f42d0ff |
children | dbf757904681 |
rev | line source |
---|---|
19
905b6fdc5e1b
handle invalid magic bytes
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
17
diff
changeset
|
1 <!--suppress HtmlDeprecatedAttribute, HtmlRequiredAltAttribute --> |
17 | 2 <p align="center"> |
3 <img src="https://user-images.githubusercontent.com/66180929/136657868-0ec6971b-ed76-43f3-9689-f643e8893706.png" /> | |
4 </p> | |
5 | |
6 | |
29 | 7 # bitcaviar-plus [DEPRECATED] |
28
30535f42d0ff
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
21
diff
changeset
|
8 |
4
e7a84094bf07
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
1
diff
changeset
|
9 A Bitcoin blockchain parser written in Python. |
e7a84094bf07
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
1
diff
changeset
|
10 |
13
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
11 ## Installation |
28
30535f42d0ff
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
21
diff
changeset
|
12 |
30535f42d0ff
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
21
diff
changeset
|
13 ### Recommended |
30535f42d0ff
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
21
diff
changeset
|
14 |
13
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
15 ```bash |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
16 pip install bitcaviar-plus |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
17 ``` |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
18 |
28
30535f42d0ff
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
21
diff
changeset
|
19 ### Manual |
30535f42d0ff
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
21
diff
changeset
|
20 |
30535f42d0ff
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
21
diff
changeset
|
21 ```bash |
30535f42d0ff
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
21
diff
changeset
|
22 python setup.py install |
30535f42d0ff
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
21
diff
changeset
|
23 ``` |
30535f42d0ff
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
21
diff
changeset
|
24 |
13
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
25 ## Usage |
28
30535f42d0ff
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
21
diff
changeset
|
26 |
30535f42d0ff
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
21
diff
changeset
|
27 ### Deserialize Genesis block |
30535f42d0ff
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
21
diff
changeset
|
28 |
13
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
29 ```python |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
30 from bitcaviar_plus.block import deserialize_block |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
31 |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
32 |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
33 def parse_genesis_block(): |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
34 with open('path/to/file/blk00000.dat', 'rb') as f: |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
35 block = deserialize_block(f) |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
36 print(block) |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
37 ``` |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
38 |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
39 ### Deserialize entire blockchain |
28
30535f42d0ff
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
21
diff
changeset
|
40 |
13
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
41 ```python |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
42 import os |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
43 from bitcaviar_plus.block import deserialize_block |
21
2a4ee2f23e0c
fix typo
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
20
diff
changeset
|
44 from bitcaviar_plus.errors import InvalidMagicBytes |
13
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
45 |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
46 |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
47 def parse_entire_blockchain(): |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
48 file_counter = -1 |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
49 while True: |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
50 file_counter += 1 |
14
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
51 file_name = 'path/to/file/blk{}.dat'.format(str(file_counter).zfill(5)) |
13
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
52 with open(file_name, 'rb') as f: |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
53 file_size = os.path.getsize(file_name) |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
54 while f.tell() < file_size: |
20
b3eb78c5d03b
update documentation
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
19
diff
changeset
|
55 try: |
b3eb78c5d03b
update documentation
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
19
diff
changeset
|
56 block = deserialize_block(f) |
b3eb78c5d03b
update documentation
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
19
diff
changeset
|
57 except InvalidMagicBytes as e: |
b3eb78c5d03b
update documentation
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
19
diff
changeset
|
58 print(e) |
13
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
59 ``` |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
60 |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
61 ### Example output |
28
30535f42d0ff
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
21
diff
changeset
|
62 |
13
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
63 ```json |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
64 { |
14
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
65 "magic_number":"f9beb4d9", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
66 "size":"0000011d", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
67 "id":"000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
68 "transaction_count":"01", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
69 "header":{ |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
70 "version":"00000001", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
71 "previous_block_id":"0000000000000000000000000000000000000000000000000000000000000000", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
72 "merkle_root":"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
73 "time":"495fab29", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
74 "bits":"1d00ffff", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
75 "nonce":"7c2bac1d" |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
76 }, |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
77 "transactions":[ |
13
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
78 { |
14
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
79 "version":"00000001", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
80 "input_count":"01", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
81 "output_count":"01", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
82 "lock_time":"00000000", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
83 "id":"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
84 "inputs":[ |
13
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
85 { |
14
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
86 "id":"0000000000000000000000000000000000000000000000000000000000000000", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
87 "vout":"ffffffff", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
88 "script_sig_size":"4d", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
89 "script_sig":"04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
90 "sequence":"ffffffff" |
13
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
91 } |
14
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
92 ], |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
93 "outputs":[ |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
94 { |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
95 "value":"000000012a05f200", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
96 "script_pub_key_size":"43", |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
97 "script_pub_key":"4104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac" |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
98 } |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
99 ] |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
100 } |
feae0cd7fea1
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
13
diff
changeset
|
101 ] |
13
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
102 } |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
103 ``` |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
104 |
4
e7a84094bf07
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
1
diff
changeset
|
105 ## Attribution |
e7a84094bf07
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
1
diff
changeset
|
106 - [blockchain-parser](https://github.com/ragestack/blockchain-parser/blob/master/blockchain-parser.py) |
e7a84094bf07
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
1
diff
changeset
|
107 - [bitcoinbook](https://github.com/bitcoinbook/bitcoinbook) |
17 | 108 - [LearnMeABitcoin.com](https://learnmeabitcoin.com) |