forked from petertodd/python-bitcoinlib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
66 lines (46 loc) · 2.1 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
python-bitcoinlib
-----------------
This Python2/3 library provides an easy interface to the bitcoin data
structures and protocol. The approach is low-level and "ground up", with a
focus on providing tools to manipulate the internals of how Bitcoin works.
Structure
---------
Everything consensus critical is found in the modules under bitcoin.core. This
rule is followed pretty strictly, for instance chain parameters are split into
consensus critical and non-consensus-critical.
bitcoin.core - Basic core definitions, datastructures, and
(context-independent) validation
bitcoin.core.bignum - Bignum handling
bitcoin.core.key - ECC pubkeys
bitcoin.core.script - Scripts and opcodes
bitcoin.core.scripteval - Script evaluation/verification
bitcoin.core.serialize - Serialization
In the future the bitcoin.core may use the Satoshi sourcecode directly as a
libary. Non-consensus critical modules include the following:
bitcoin - Chain selection
bitcoin.base58 - Base58 encoding
bitcoin.bloom - Bloom filters (incomplete)
bitcoin.net - Network communication (broken currently)
bitcoin.messages - Network messages (broken currently)
bitcoin.rpc - Bitcoin Core RPC interface support
bitcoin.wallet - Wallet code, currently just CBitcoinAddress
Effort has been made to follow the Satoshi source relatively closely, for
instance Python code and classes that duplicate the functionality of
corresponding Satoshi C++ code uses the same naming conventions: CTransaction,
CBlockHeader, nValue etc. Otherwise Python naming conventions are followed.
Example Code
------------
See examples/ directory.
Selecting the chain to use
--------------------------
Do the following:
import bitcoin
bitcoin.SelectChain(NAME)
Where NAME is one of 'testnet', 'mainnet', or 'regtest'. The chain currently
selected is a global variable that changes behavior everywhere, just like in
the Satoshi codebase.
Unit tests
----------
Under bitcoin/tests using test data from Bitcoin Core. To run them:
python -m unittest discover
python3 -m unittest discover