Skip to content

Commit 19eb1e1

Browse files
committed
bip32 refactoring
1 parent e9add25 commit 19eb1e1

15 files changed

+492
-475
lines changed

docs/source/classes.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ Reference
99
address.rst
1010
transaction.rst
1111
block.rst
12-
12+
wallet.rst
1313

docs/source/functional.rst

+18-25
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@ Base function primitives implemented in functional programming paradigm.
77

88

99

10-
Mnemonic
11-
============
10+
Mnemonic(BIP39)
11+
===============
1212

13-
.. autofunction:: pybtc.create_passphrase
14-
.. autofunction:: pybtc.create_mnemonic
15-
.. autofunction:: pybtc.create_wordlist
16-
.. autofunction:: pybtc.add_checksum_ent
13+
.. autofunction:: pybtc.generate_entropy
14+
.. autofunction:: pybtc.load_word_list
15+
.. autofunction:: pybtc.entropy_to_mnemonic
1716
.. autofunction:: pybtc.mnemonic_to_entropy
1817
.. autofunction:: pybtc.mnemonic_to_seed
1918

@@ -42,6 +41,19 @@ Public keys
4241
.. autofunction:: pybtc.private_to_public_key
4342
.. autofunction:: pybtc.is_public_key_valid
4443

44+
45+
46+
Extended keys(BIP32)
47+
====================
48+
49+
.. autofunction:: pybtc.create_master_xprivate_key
50+
.. autofunction:: pybtc.xprivate_to_xpublic_key
51+
.. autofunction:: pybtc.derive_xkey
52+
.. autofunction:: pybtc.public_from_xpublic_key
53+
.. autofunction:: pybtc.private_from_xprivate_key
54+
55+
56+
4557
Addresses
4658
=========
4759

@@ -53,25 +65,6 @@ Addresses
5365
.. autofunction:: pybtc.is_address_valid
5466

5567

56-
HD Wallets
57-
=========
58-
59-
.. autofunction:: pybtc.create_xmaster_key
60-
.. autofunction:: pybtc.create_xpublic_key
61-
.. autofunction:: pybtc.derive_xkey
62-
.. autofunction:: pybtc.xprivate_to_xpublic_key
63-
.. autofunction:: pybtc.xkey_to_private_key
64-
.. autofunction:: pybtc.xkey_to_public_key
65-
.. autofunction:: pybtc.create_child_privkey
66-
.. autofunction:: pybtc.create_child_pubkey
67-
.. autofunction:: pybtc.create_expanded_key
68-
.. autofunction:: pybtc.create_expanded_hard_key
69-
.. autofunction:: pybtc.is_xprivate_key_valid
70-
.. autofunction:: pybtc.is_xpublic_key_valid
71-
.. autofunction:: pybtc.is_validate_path_level
72-
.. autofunction:: pybtc.serialize_xkey
73-
.. autofunction:: pybtc.deserialize_xkey
74-
7568

7669
Script
7770
======

docs/source/wallet.rst

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
======
2+
Blocks
3+
======
4+
5+
The class for creating transaction.
6+
7+
8+
9+
.. autoclass:: pybtc.Wallet

pybtc/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
from .transaction import *
55
from .block import *
66
from .address import *
7-
from .hdwallet import *
7+
from .wallet import *
88
version = "2.0.1"

pybtc/constants.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
SIGHASH_NONE = 0x00000002
1111
SIGHASH_SINGLE = 0x00000003
1212
SIGHASH_ANYONECANPAY = 0x00000080
13-
MAX_INT_PRIVATE_KEY = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141
13+
ECDSA_SEC256K1_ORDER = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141
1414

1515
MAINNET_ADDRESS_BYTE_PREFIX = b'\x00'
1616
TESTNET_ADDRESS_BYTE_PREFIX = b'\x6f'
@@ -66,7 +66,7 @@
6666
ECDSA_CONTEXT_VERIFY = secp256k1.secp256k1_context_create(FLAG_VERIFY)
6767
ECDSA_CONTEXT_ALL = secp256k1.secp256k1_context_create(ALL_FLAGS)
6868
secp256k1.secp256k1_context_randomize(ECDSA_CONTEXT_SIGN,
69-
random.SystemRandom().randint(0, MAX_INT_PRIVATE_KEY).to_bytes(32,byteorder="big"))
69+
random.SystemRandom().randint(0, ECDSA_SEC256K1_ORDER).to_bytes(32, byteorder="big"))
7070

7171
SCRIPT_TYPES = {"P2PKH": 0,
7272
"P2SH": 1,
@@ -80,10 +80,11 @@
8080

8181

8282
# CONSTANTS hierarchical deterministic wallets (HD Wallets)
83-
MAINNET_PRIVATE_WALLET_VERSION = b'\x04\x88\xAD\xE4'
84-
MAINNET_PUBLIC_WALLET_VERSION = b'\x04\x88\xB2\x1E'
85-
TESTNET_PRIVATE_WALLET_VERSION = b'\x04\x35\x83\x94'
86-
TESTNET_PUBLIC_WALLET_VERSION = b'\x04\x35\x87\xCF'
83+
MAINNET_XPRIVATE_KEY_PREFIX = b'\x04\x88\xAD\xE4'
84+
MAINNET_XPUBLIC_KEY_PREFIX = b'\x04\x88\xB2\x1E'
85+
TESTNET_XPRIVATE_KEY_PREFIX = b'\x04\x35\x83\x94'
86+
TESTNET_XPUBLIC_KEY_PREFIX = b'\x04\x35\x87\xCF'
87+
HARDENED_KEY = 0x80000000
8788
FIRST_HARDENED_CHILD = 0x80000000
8889
PATH_LEVEL_BIP0044 = [0x8000002C, 0x80000000, 0x80000000, 0, 0]
8990
TESTNET_PATH_LEVEL_BIP0044 = [0x8000002C, 0x80000001, 0x80000000, 0, 0]

pybtc/functions/__init__.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55
from .hash import *
66
from .block import *
77
from .encode import *
8-
from .bip39_mnemonic import *
8+
from .bip39_mnemonic import *
9+
from .bip32 import *

0 commit comments

Comments
 (0)