#!/usr/bin/env python3 # # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution # Copyright (C)2013-2023 The MMGen Project """ test.objattrtest_py_d.oat_btc_mainnet: BTC mainnet test vectors for MMGen data objects """ from .oat_common import sample_objs,seed_bin,atd from ..include.common import cfg from mmgen.protocol import init_proto proto = init_proto( cfg, 'btc', need_amt=True ) from mmgen.key import PrivKey,WifKey from mmgen.addr import CoinAddr,MMGenID,AddrIdx,MMGenAddrType,MMGenPasswordType from mmgen.amt import BTCAmt from mmgen.tw.shared import TwMMGenID sample_objs.update({ 'PrivKey': PrivKey(proto,seed_bin,compressed=True,pubkey_type='std'), 'WifKey': WifKey(proto,'5HwzecKMWD82ppJK3qMKpC7ohXXAwcyAN5VgdJ9PLFaAzpBG4sX'), 'CoinAddr': CoinAddr(proto,'1111111111111111111114oLvT2'), 'BTCAmt': BTCAmt('0.01'), 'MMGenID': MMGenID(proto,'F00F00BB:B:1'), 'TwMMGenID': TwMMGenID(proto,'F00F00BB:S:23'), }) from mmgen.addrlist import AddrListEntry from mmgen.passwdlist import PasswordListEntry from mmgen.obj import TwComment,CoinTxID,HexStr from mmgen.seed import SeedID,SeedBase from mmgen.subseed import SubSeed,SubSeedIdx from mmgen.seedsplit import ( SeedShareCount, SeedSplitIDString, SeedShareIdx, MasterShareIdx, SeedShareList, SeedShareLast, SeedShareMaster, SeedShareMasterJoining ) from mmgen.proto.btc.tw.unspent import BitcoinTwUnspentOutputs from mmgen.tx.base import Base tests = { # addr.py 'AddrListEntry': atd({ 'addr': (0b01001, CoinAddr), 'idx': (0b01001, AddrIdx), 'comment': (0b01101, TwComment), 'sec': (0b01001, PrivKey), # 'viewkey': (0b01001, ViewKey), # TODO # 'wallet_passwd': (0b01001, WalletPassword), # TODO }, (proto,), {} ), 'PasswordListEntry': atd({ 'passwd': (0b00001, str), 'idx': (0b01001, AddrIdx), 'comment':(0b01101, TwComment), 'sec': (0b01001, PrivKey), }, (proto,), {'passwd':'ΑlphaΩmega', 'idx':1 }, ), # obj.py 'PrivKey': atd({ 'compressed': (0b00001, bool), 'wif': (0b00001, WifKey), }, (proto,seed_bin), {'compressed':True, 'pubkey_type':'std'}, ), 'MMGenAddrType': atd({ 'name': (0b01001, str), 'pubkey_type': (0b01001, str), 'compressed': (0b11001, bool), 'gen_method': (0b11001, str), 'addr_fmt': (0b11001, str), 'wif_label': (0b11001, str), 'extra_attrs': (0b11001, tuple), 'desc': (0b01001, str), }, (proto,'S'), {}, ), # seed.py 'SeedBase': atd({ 'data': (0b00001, bytes), 'sid': (0b00001, SeedID), }, [cfg,seed_bin], {}, ), 'SubSeed': atd({ 'idx': (0b00001, int), 'nonce': (0b00001, int), 'ss_idx': (0b01001, SubSeedIdx), }, [sample_objs['SubSeedList'],1,1,'short'], {}, ), 'SeedShareList': atd({ 'count': (0b01001, SeedShareCount), 'id_str': (0b01001, SeedSplitIDString), }, [sample_objs['Seed'],sample_objs['SeedShareCount']], {}, ), 'SeedShareLast': atd({ 'idx': (0b01001, SeedShareIdx), }, [sample_objs['SeedShareList']], {}, ), 'SeedShareMaster': atd({ 'idx': (0b01001, MasterShareIdx), 'nonce': (0b00001, int), }, [sample_objs['SeedShareList'],7,0], {}, ), 'SeedShareMasterJoining': atd({ 'id_str': (0b01001, SeedSplitIDString), 'count': (0b01001, SeedShareCount), }, [cfg,sample_objs['MasterShareIdx'], sample_objs['Seed'], 'foo', 2], {}, ), # twuo.py 'BitcoinTwUnspentOutputs.MMGenTwUnspentOutput': atd({ 'txid': (0b01001, CoinTxID), 'vout': (0b01001, int), 'amt': (0b01001, BTCAmt), 'amt2': (0b01001, BTCAmt), 'comment': (0b01101, TwComment), 'twmmid': (0b01001, TwMMGenID), 'addr': (0b01001, CoinAddr), 'confs': (0b00001, int), 'scriptPubKey': (0b01001, HexStr), 'skip': (0b00101, str), }, (proto,), { 'amt':BTCAmt('0.01'), 'twmmid':'F00F00BB:B:17', 'addr':'1111111111111111111114oLvT2', 'confs': 100000, 'scriptPubKey':'ff', }, ), # tx.py 'Base.Input': atd({ 'vout': (0b01001, int), 'amt': (0b01001, BTCAmt), 'comment': (0b01101, TwComment), 'mmid': (0b01001, MMGenID), 'addr': (0b01001, CoinAddr), 'confs': (0b01001, int), 'txid': (0b01001, CoinTxID), 'have_wif': (0b00011, bool), 'scriptPubKey': (0b01001, HexStr), 'sequence': (0b00001, int), }, (proto,), { 'amt':BTCAmt('0.01'), 'addr':sample_objs['CoinAddr'] }, ), 'Base.Output': atd({ 'vout': (0b01001, int), 'amt': (0b01001, BTCAmt), 'comment': (0b01101, TwComment), 'mmid': (0b01001, MMGenID), 'addr': (0b01001, CoinAddr), 'confs': (0b01001, int), 'txid': (0b01001, CoinTxID), 'have_wif': (0b00011, bool), 'is_chg': (0b00001, bool), }, (proto,), { 'amt':BTCAmt('0.01'), 'addr':sample_objs['CoinAddr'] }, ), } tests['MMGenPasswordType'] = atd(tests['MMGenAddrType'].attrs, [proto,'P'], {})