Mercurial > public > bitcaviar-plus
annotate src/bitcaviar_plus/helpers.py @ 12:6a0a8cce058e
refactor code
author | Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com> |
---|---|
date | Tue, 26 Oct 2021 09:38:38 +0200 |
parents | src/puppy/helpers.py@6e9f420c117e |
children | 30535f42d0ff |
rev | line source |
---|---|
8
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
1 import hashlib |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
2 |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
3 """ |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
4 Helper methods |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
5 """ |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
6 |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
7 |
10
6e9f420c117e
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
9
diff
changeset
|
8 def __get_var_int(f): |
8
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
9 """ |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
10 A VarInt (variable integer) is a field used in transaction data to indicate the number of upcoming fields, |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
11 or the length of an upcoming field. |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
12 More info: https://learnmeabitcoin.com/technical/varint |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
13 :param f: buffer, required |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
14 :return: string |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
15 """ |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
16 |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
17 prefix = f.read(1).hex() |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
18 |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
19 if int(prefix, 16) == 253: |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
20 number_of_transactions = f.read(2)[::-1].hex() |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
21 elif int(prefix, 16) == 254: |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
22 number_of_transactions = f.read(4)[::-1].hex() |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
23 elif int(prefix, 16) == 255: |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
24 number_of_transactions = f.read(8)[::-1].hex() |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
25 else: |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
26 number_of_transactions = prefix |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
27 |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
28 return number_of_transactions |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
29 |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
30 |
10
6e9f420c117e
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
9
diff
changeset
|
31 def __compute_hash(data): |
8
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
32 """ |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
33 Get hash |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
34 :param data: bytes, required |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
35 :return: string |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
36 """ |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
37 |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
38 h = hashlib.sha256(data).digest() |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
39 h = hashlib.sha256(h).digest() |
4d259e84160d
fix OverFlow bug
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
40 |
9
e218f70e19e9
refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
8
diff
changeset
|
41 return h[::-1].hex() |