Mercurial > public > bitcaviar-plus
annotate README.md @ 13:4bbe48c95079
add instructions
author | Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com> |
---|---|
date | Tue, 26 Oct 2021 09:38:46 +0200 |
parents | e7a84094bf07 |
children | feae0cd7fea1 |
rev | line source |
---|---|
13
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
1 # bitcaviar-plus |
4
e7a84094bf07
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
1
diff
changeset
|
2 A Bitcoin blockchain parser written in Python. |
e7a84094bf07
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
1
diff
changeset
|
3 |
13
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
4 ## Installation |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
5 Clone repository |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
6 ```bash |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
7 pip install bitcaviar-plus |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
8 ``` |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
9 |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
10 ## Usage |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
11 ### Deserialize first block from file `blk00000.dat` |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
12 ```python |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
13 from bitcaviar_plus.block import deserialize_block |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
14 |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
15 |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
16 def parse_genesis_block(): |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
17 with open('path/to/file/blk00000.dat', 'rb') as f: |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
18 block = deserialize_block(f) |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
19 print(block) |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
20 ``` |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
21 |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
22 ### Deserialize entire blockchain |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
23 ```python |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
24 import os |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
25 from bitcaviar_plus.block import deserialize_block |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
26 |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
27 |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
28 def parse_entire_blockchain(): |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
29 file_counter = -1 |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
30 while True: |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
31 file_counter += 1 |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
32 file_name = '/Users/dennis/Bitcoin/blocks/blk{}.dat'.format(str(file_counter).zfill(5)) |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
33 with open(file_name, 'rb') as f: |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
34 file_size = os.path.getsize(file_name) |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
35 while f.tell() < file_size: |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
36 block = deserialize_block(f) |
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 ### Example output |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
40 ```json |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
41 { |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
42 "magic_number": "f9beb4d9", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
43 "size": "0000011d", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
44 "id": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
45 "transaction_count": "01", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
46 "header": |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
47 { |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
48 "version": "00000001", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
49 "previous_block_id": "0000000000000000000000000000000000000000000000000000000000000000", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
50 "merkle_root": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
51 "time": "495fab29", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
52 "bits": "1d00ffff", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
53 "nonce": "7c2bac1d" |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
54 }, |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
55 "transactions": |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
56 [ |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
57 { |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
58 "version": "00000001", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
59 "input_count": "01", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
60 "output_count": "01", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
61 "lock_time": "00000000", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
62 "id": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
63 "inputs": |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
64 [ |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
65 { |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
66 "id": "0000000000000000000000000000000000000000000000000000000000000000", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
67 "vout": "ffffffff", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
68 "script_sig_size": "4d", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
69 "script_sig": "04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
70 "sequence": "ffffffff" |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
71 } |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
72 ], |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
73 "outputs": |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
74 [ |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
75 { |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
76 "value": "000000012a05f200", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
77 "script_pub_key_size": "43", |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
78 "script_pub_key": "4104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac" |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
79 } |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
80 ] |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
81 } |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
82 ] |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
83 } |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
84 ``` |
4bbe48c95079
add instructions
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
4
diff
changeset
|
85 |
4
e7a84094bf07
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
1
diff
changeset
|
86 ## Attribution |
e7a84094bf07
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
1
diff
changeset
|
87 - [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
|
88 - [bitcoinbook](https://github.com/bitcoinbook/bitcoinbook) |
e7a84094bf07
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
1
diff
changeset
|
89 - [LearnMeABitcoin.com](https://learnmeabitcoin.com) |