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