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
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: 17
diff changeset
1 <!--suppress HtmlDeprecatedAttribute, HtmlRequiredAltAttribute -->
17
25b0a9a206c4 Update README.md
Dennis C. M. <dennis@denniscm.com>
parents: 14
diff changeset
2 <p align="center">
25b0a9a206c4 Update README.md
Dennis C. M. <dennis@denniscm.com>
parents: 14
diff changeset
3 <img src="https://user-images.githubusercontent.com/66180929/136657868-0ec6971b-ed76-43f3-9689-f643e8893706.png" />
25b0a9a206c4 Update README.md
Dennis C. M. <dennis@denniscm.com>
parents: 14
diff changeset
4 </p>
25b0a9a206c4 Update README.md
Dennis C. M. <dennis@denniscm.com>
parents: 14
diff changeset
5
25b0a9a206c4 Update README.md
Dennis C. M. <dennis@denniscm.com>
parents: 14
diff changeset
6
29
d9537541d623 Update README.md
Dennis C. M. <dennis@denniscm.com>
parents: 28
diff changeset
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
25b0a9a206c4 Update README.md
Dennis C. M. <dennis@denniscm.com>
parents: 14
diff changeset
108 - [LearnMeABitcoin.com](https://learnmeabitcoin.com)