#!/usr/bin/python3 -tt import sys import os from random import getrandbits from util import * import base58 import keys import bip32 import bip39 if __name__ == '__main__': # test bip39 wlen = 12 b39phrase = bip39.genPhrase( intBytes( getrandbits( wlen // 3 * 32 ) ) ) b39seed = bip39.genSeed( b39phrase ) # test bip32 # master private (key, chain) bytes b32master = bip32.getMaster( b39seed ) # serialize master ext prv and pub key b32masterxprv = bip32.serializeExtPrvKey( b32master ) b32masterxpub = bip32.serializeExtPubKey( (keys.getPubKey( b32master[0] ), b32master[1]) ) print( 'BIP39 phrase, seed\n\t', b39phrase + '\n\t', b39seed.hex() + '\nBIP32 master\n' + f'\t{b32masterxprv}\n\t{b32masterxpub}' ) print() prvmaster = (b32master[0], b32master[1]) prvroot0 = bip32.ckdPrv( prvmaster, 0 ) # m/0 parfp = keys.getPubKeyHash( keys.getPubKey( prvmaster[0] ) )[:4] # parent fingerprint prvroot0ext = bip32.serializeExtPrvKey( prvroot0, 1, parfp, 0 ) pubroot0ext = bip32.serializeExtPubKey( (keys.getPubKey( prvroot0[0] ), prvroot0[1]), 1, parfp, 0 ) print( f'm/0 derived ext keys:\n\t{prvroot0ext}\n\t{pubroot0ext}' ) for i in range( 20 ): # pubkey - prvkey pk = bip32.ckdPrv( prvroot0, i )[0] print( 'm/0/{}: {} - {}'.format( i, keys.getPubKey( pk ).hex(), keys.getPrvKeyWIF( pk ) ) ) """ pp = b'poop' #input( 'Phrase: ' ).encode() prvkey = b32master[0] pubkey = keys.getPubKey( prvkey ) pubaddr = keys.getPubKeyAddr( pubkey ) print( f'prvkey hex: {prvkey.hex()}' ) print( f'b58 wif pk: {keys.getPrvKeyWIF( prvkey )}' ) print( f'pubkey: {pubkey.hex()}\n\thash: {keys.getPubKeyHash( pubkey ).hex()}\n\taddr: {pubaddr}' ) """