Bech32: additional tests
This commit is contained in:
parent
165f0483e8
commit
6f572cddde
7 changed files with 174 additions and 37 deletions
|
|
@ -252,6 +252,7 @@ class LitecoinProtocol(BitcoinProtocol):
|
|||
else os.path.join(g.home_dir,'.litecoin')
|
||||
addr_ver_num = { 'p2pkh': ('30','L'), 'p2sh': ('32','M'), 'p2sh2': ('05','3') } # 'p2sh' is new fmt
|
||||
wif_ver_num = { 'std': 'b0' }
|
||||
mmtypes = ('L','C','S')
|
||||
secs_per_block = 150
|
||||
rpc_port = 9332
|
||||
coin_amt = LTCAmt
|
||||
|
|
|
|||
|
|
@ -273,7 +273,11 @@ def Wif2segwit_pair(wif):
|
|||
Msg('{}\n{}'.format(rs,addr))
|
||||
|
||||
def Pubhash2addr(pubhash):
|
||||
Msg(g.proto.pubhash2addr(pubhash,at.addr_fmt=='p2sh'))
|
||||
if opt.type == 'bech32':
|
||||
ret = g.proto.pubhash2bech32addr(pubhash)
|
||||
else:
|
||||
ret = g.proto.pubhash2addr(pubhash,at.addr_fmt=='p2sh')
|
||||
Msg(ret)
|
||||
|
||||
def Addr2hexaddr(addr): Msg(g.proto.verify_addr(addr,CoinAddr.hex_width,return_dict=True)['hex'])
|
||||
def Hash160(pubkeyhex): Msg(hash160(pubkeyhex))
|
||||
|
|
|
|||
|
|
@ -311,6 +311,7 @@ i_gen='Gentest'
|
|||
s_gen="The following tests will run '$gentest_py' on mainnet and testnet for all supported coins"
|
||||
t_gen=(
|
||||
"$gentest_py -q 2 $REFDIR/btcwallet.dump"
|
||||
"$gentest_py -q --type=bech32 2 $REFDIR/btcwallet-bech32.dump"
|
||||
"$gentest_py -q 1:2 $gen_rounds"
|
||||
"$gentest_py -q --type=segwit 1:2 $gen_rounds"
|
||||
"$gentest_py -q --type=bech32 1:2 $gen_rounds"
|
||||
|
|
|
|||
|
|
@ -224,6 +224,7 @@ def dump_test():
|
|||
except:
|
||||
die(2,'\nInvalid {}net WIF address in dump file: {}'.format(('main','test')[g.testnet],wif))
|
||||
b_addr = ag.to_addr(kg_a.to_pubhex(sec))
|
||||
vmsg('\nwif: {}\naddr: {}\n'.format(wif,b_addr))
|
||||
if a_addr != b_addr:
|
||||
match_error(sec,wif,a_addr,b_addr,3,a)
|
||||
qmsg(green(('\n','')[bool(opt.verbose)] + 'OK'))
|
||||
|
|
|
|||
109
test/ref/btcwallet-bech32.dump
Normal file
109
test/ref/btcwallet-bech32.dump
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
# Wallet dump created by Bitcoin v0.16.0
|
||||
# * Created on 2018-03-05T17:00:47Z
|
||||
# * Best block at time of backup was 0 (000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f),
|
||||
# mined on 2009-01-03T18:15:05Z
|
||||
|
||||
# extended private masterkey: xprv9s21ZrQH143K2E1vJ8UzCcQc3nn7ACSCKvVn1eMFagn5bcpi5rQsAdNHzsoek1NDj5mzv6bLJQTV1uCFbJVEwhsyrhy25qg42JQBXg3Z7Dw
|
||||
|
||||
KyWTCn5B7FzwD9xkFuVit5zjK2gT65nqBhqtZFttRSG3x3WEnGUM 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqp3gqvmdcnpk3zqmsqs7jrgt50w2d6u67hznvn hdkeypath=m/0'/0'/888'
|
||||
L1sBX4pyZRj2mMYkHGVSrY4AZdX6cdaB7PJxcMWjgZpo6aWwLs16 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqrgrczafwmxjqtwwkg6xd45ha0qs43dgv2c7w8 hdkeypath=m/0'/0'/319'
|
||||
L21i1EB3nT49w25YFBphAeV1WohgbUwKgqpxG2Mcqhs7hW8r3QDM 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqykw28cwsagekcpp5wm34mkuavz3yeh39cl3ld hdkeypath=m/0'/0'/545'
|
||||
KwHuXwJgdj9eSCBgtMeQFchwD1eZyjt2aVSn31HAXQyS9rGuN2sN 2018-03-05T16:59:40Z reserve=1 # addr=bc1qq9r8j26vyug495cw4mjek3v37cjqnvvezg3lnr hdkeypath=m/0'/0'/675'
|
||||
L2q9rcJYdWetw7WkTD5xP9oh9iqDbeMevdw1w85z143TWu9V1HBq 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqxk25mad5zue8r0r9h6h9ahg5h60rg8h3qkr60 hdkeypath=m/0'/0'/694'
|
||||
Kx1BK1hoDvr2ypqz92wpZCXz6WG6dQyuHhQoAh9eMsdvRJyDyfmN 2018-03-05T16:59:40Z reserve=1 # addr=bc1qq84lq3kdrkx0m3lmtvsaw34uyg9xkr259y8tgw hdkeypath=m/0'/0'/328'
|
||||
Kyr4BZBPTNqc4xmZ8GCaZB4SarDJCdiZNUCYbZT9yEsrfe18ZyKQ 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqg7z8uzgtw9z0d5f4hd5zfcc2kh3kwqr0gg9kf hdkeypath=m/0'/0'/535'
|
||||
L4At7umzDG6uCRhEugMMQbQy1fKGEvfbpy9bdhUzwRpmQHfAXTPf 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqfz4etlf6tjhxs9za7e47wlg2yjcv4dkke60yn hdkeypath=m/0'/1'/127'
|
||||
KzoZHRnz5Pzd4ASyAN266kWEZsFH3TLJVoTZrSnSVaJTDr7eqQ4u 2018-03-05T16:59:40Z reserve=1 # addr=bc1qq20hlnuhrvu5r6an0p3sd7my44hnxadvymw3u3 hdkeypath=m/0'/0'/313'
|
||||
L1NpMJWUtVtNBBdw6wDxGHBUCBcm9WyqH3nMEJ7frMz8Z7AvNvTy 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqvemejtcxfypasga8na722mw5zrh0ej8vslq0u hdkeypath=m/0'/0'/823'
|
||||
KwpW4hP1yPkQGwwKw3KENarLRcWKxV5z3cvXrtPAUvBaX1CADJu1 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqwtg2e8hw5ez2gfmtkp5k0vvsd2636nezgd7cz hdkeypath=m/0'/0'/511'
|
||||
KzXyoZV7hMg79dTMsFPDs55W59ZfyCdGop3Hdov8h6U1mkeDVehJ 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqw0xlhaafj4qhq28zqz8kzy4h0r3g8xmeljdt3 hdkeypath=m/0'/0'/791'
|
||||
L3z6oA4g8LjeZohM5C2bWymVQn3Ur38y1cecD8aDdUnh1Rt79w4b 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqwmh7zzz95j9hwtxas3gtfuj6lh4q084sfrrm6 hdkeypath=m/0'/1'/25'
|
||||
L2CkEPfXQxKiKuLdBD9cW6FEGM3hFJV19VTZ5SmPD4HJfuudaryb 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqswte344gun53ggt3dmstuxl6pph67el33eqvv hdkeypath=m/0'/0'/666'
|
||||
L1ZzVyfoPg8TTrRiqF42pqJUYVTYJMCxVCgbGu1csoZxGrLhGpzS 2018-03-05T16:59:40Z reserve=1 # addr=bc1qq3tckl70j3pf9lwhyzex0c76x4x979kma6dzmh hdkeypath=m/0'/0'/766'
|
||||
KwHgnn61SaNjbvnvBo71R8szs2C9sGytXevHmfzfy5PDs36iAiRs 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqj885hxk75cwvzc5ddmmtu38d7e6jmk00pkxcd hdkeypath=m/0'/0'/794'
|
||||
L4gHTef1ADBqjUyP9YxJcYNXahHSS5XV5tCmKcsBHLNeJru13TGj 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqj53s7ltrqk0xqnv82656lsahukr8sez08p0n2 hdkeypath=m/0'/0'/59'
|
||||
L3eZiBUbLKyf8kdguH99Eum5pjLhZgtgCWX75CMs39ErB4jNe7DM 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqnyg93da3pd75zlnk02sv9fz0wrvhc5ft5rghn hdkeypath=m/0'/0'/909'
|
||||
L5PWQ7kXy34EBJSaXDsoE5DLchgtriiGstpY4obUsb3ySqRkf1Ln 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqngry3p2d6v0g2z0nyzu807lg9rmsp58kd69fc hdkeypath=m/0'/0'/0'
|
||||
L34HTqbJcQxE1a4tWxzrahNyuntfc4ov4JgFeUBmcvyP2uKHs8BS 2018-03-05T16:59:40Z reserve=1 # addr=bc1qq4puyc8kth0vj5pka93t4gw5lcjtnyzu82qlsu hdkeypath=m/0'/0'/590'
|
||||
L2vmEeAAue1bTG4ndKYUMDa4ZDMHStZa64TqUyX6dPP2egc7YWEf 2018-03-05T16:59:40Z reserve=1 # addr=bc1qq4wrre3g8gle8wl26j024a79xj870fua8xmm0g hdkeypath=m/0'/0'/215'
|
||||
L5LCjVd5DiWbbXNzBSnC7Tvw6D2XgcMc2yVTJZL7hyP1SHE3THoA 2018-03-05T16:59:40Z reserve=1 # addr=bc1qq46axh96hcwmk0jqv0c3yzjk27z4qxw9qnhd59 hdkeypath=m/0'/1'/123'
|
||||
KyvN52EN727SJD1EvrY5aXzswg7W3KytrFXjqzGAuvNzrNYtKeYu 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqhrc49asjczyrduzpmz5net90pq75gt9pv6faa hdkeypath=m/0'/0'/843'
|
||||
L5b8R2MrDgiBeHh5B5XPhexArARa8YCmyNh7nuZdX2LJRrKBqrW7 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqhyvyjkrlkck4gjgjvwjafs30y88muwxxlww79 hdkeypath=m/0'/0'/988'
|
||||
L1zBancKMMMccRqadcowbS53CjG6rT5eqaWVHfrUf4Z75H7YjbUc 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqh224zthptx8r5wzhurjartvxs5ewd4hm3dmrh hdkeypath=m/0'/0'/923'
|
||||
Kz2Eqz4qQM8nAVNBXVXvNf8UMVJL2A9GRSeyNy5QU9UHW28W9C4r 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqe4x09flnqvz4p8nvkv3eeq3u5kh76h7jq4ehe hdkeypath=m/0'/1'/109'
|
||||
L3EMCL9RspToyDoc98qsykXo8wyCE3b6iZfQVUieaY8onCxMghUz 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqmx2hgr8jad62w8z7xyc0rnu7c6nvf59npmh73 hdkeypath=m/0'/0'/946'
|
||||
L3tygoS8c88aFZeqqkkwDeHw6RJMcSS4fs5HUdDV96agSdtb9zi1 2018-03-05T16:59:40Z reserve=1 # addr=bc1qquyawrpvsva6e5ftx0w602gs9hqg8nwjxky5at hdkeypath=m/0'/0'/832'
|
||||
L3jHg3ekpkRN6cGV8Wyu6jq961uKWnByzwd8wghHJ3JiUoL9KTvA 2018-03-05T16:59:40Z reserve=1 # addr=bc1qquu5zdngf5ujfmgh9fy0px3pz5t6hew20xylty hdkeypath=m/0'/0'/154'
|
||||
L2jVuc6fWHsUo9S2PYEp6TkkcSMzYFmMTXLBthL3651uHpadV8tM 2018-03-05T16:59:40Z reserve=1 # addr=bc1qqagf53n9z2c5qdk2tfzuhpax5ppfaywwcvh48u hdkeypath=m/0'/0'/427'
|
||||
KxkJWD7cNWAq6aPi7YvmSRBveFoxR44m4imCUYTnJQ4yuA93qgVi 2018-03-05T16:59:40Z reserve=1 # addr=bc1qq76jcducsrg2hqgufrkn06mg55wvzxw22cqhpj hdkeypath=m/0'/0'/570'
|
||||
L4jgcwxj1s1RRXf3UPtsH8uNK3zWLyLad8YNQQCakH5Pv2RsRMYY 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpqtzpvptfuz0045t24h8tcfzkan6wc62ar2vjf hdkeypath=m/0'/0'/285'
|
||||
KxE124suFFaYa11NajqC3oRYAgboGE35DaqE5UtMNYdQcbBGdasV 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpqjah85k56z8545z3uakpfv7ergpx4239z262n hdkeypath=m/0'/0'/753'
|
||||
L2dwSX8zoQbNYJGjADEhfFowAiYMso1SzUQZ3FTMdZeBW6FoxG5d 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpz3vy576zwp4aqmccw2fl2wwhyu6rz05elryjx hdkeypath=m/0'/0'/56'
|
||||
L4GiN5EvuFPh9yAKV8JDX8BPUBbWtXoD49psbnekmhHtTJtea63L 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpze532kez0g3j4n8s5ayu4juvl8qn5pg6ewm6l hdkeypath=m/0'/1'/43'
|
||||
KxRRL1mYse1ySJNAHDR16sNrKAQzWrdE2K2qQqFKnKddWa7YS9Vs 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpz6wf2z902esruqtgz5lz944ncl0qg9dlqlzqp hdkeypath=m/0'/0'/767'
|
||||
KxvDTY6xQ18K3ZGq4RBAy66DCr3n7Bk9QC6iXfvL2M1hR6e53W5R 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpzah2g3e53udpfr2hechf99r362dt3lj9v94dq hdkeypath=m/0'/0'/684'
|
||||
L1Qf1XCwQgfGN13pssuM3j9Ds7ePyLFjZ35kbK9BsLVZsH9B6apo 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpr46nsmjsukvrmyfrfdwc2gz7zanzy4yrv6ygl hdkeypath=m/0'/1'/84'
|
||||
KyCUMn3QE61oe6cetw6zTJbK52BGnnPBm3SNJ2xNn9HB6UYKrjAE 2018-03-05T16:59:40Z reserve=1 # addr=bc1qprldy94rsz4ufpqvs3x06lzpfcyl59wddmwclf hdkeypath=m/0'/0'/959'
|
||||
KxwoViXXjjumNtRZLRfUqpUadiqz54dPjMP1xegqorrPcXeD1Fz8 2018-03-05T16:59:40Z reserve=1 # addr=bc1qp93lx8ewuzk9nygxqkqvyjpe0gt9mz9ea7jqsk hdkeypath=m/0'/0'/408'
|
||||
Kwm8czowx4GEP9NyKG3WnkER8BuETJU51duN46E5xAQjpz2ixRrU 2018-03-05T16:59:40Z reserve=1 # addr=bc1qp8naexmqq9ryj90sjtnneqgdesm3lp50fjjmv5 hdkeypath=m/0'/0'/914'
|
||||
L592QXSDgkaKe7pxvDFKkPXbBCiwvxTkyQn6aufKyqW4WU851Ntr 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpfda87xjh073adw305eqjt39xkysr26459mhd5 hdkeypath=m/0'/0'/620'
|
||||
L1uXXZC5SrsweJVDdFu48R8rQpp9dmjj76jtVC9e8Mnohti1XBzG 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpfk6cguq3mzcv7gzxhd844tr0tk9x27vuswxv7 hdkeypath=m/0'/0'/401'
|
||||
L59F1RwSTxRbyp5cd3Pvog2XoYmNUhQi7eAijRkhMZBmdgNu2BB1 2018-03-05T16:59:40Z reserve=1 # addr=bc1qp2fv5gyz0f0rjtuq68ktvqx6wj7tzpr3azxu58 hdkeypath=m/0'/0'/262'
|
||||
L5NaLRQ9atywqUjkuFqajV468tytZKPqK2yAb5hzRiPJN5TBjhXg 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpdvklpsmtcyslz9srnu5zxge92wd9tz0fz45q9 hdkeypath=m/0'/0'/90'
|
||||
L2zcJjPSPNQD9NLXHrRJ6mSmBAU4AUN9CBotdsYZfwoFWhqFXm8w 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpwzp5y73dl823txuj6kzjxfufqx67xuxflsmkd hdkeypath=m/0'/0'/503'
|
||||
L2FNif6JWkaRGFajYLtswNd2Lsqe39hzd5UiLPrQRnidWBHuZz8T 2018-03-05T16:59:40Z reserve=1 # addr=bc1qp02gw74r4yry2ctg0wn5l8k2lgydksxn64e8p0 hdkeypath=m/0'/0'/436'
|
||||
L4X9Kkxe6NPvRz6TVB2REyRJ7VKffJks9TxoJVmHVUdZw5KBRGY9 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpszas698p6arh8dydq07mlg5cpv0j3tmtnjw9f hdkeypath=m/0'/0'/1'
|
||||
L5CfKHQhz7XCQ3DF49vsCLSf9h4eZqXSDnJLjBKhpabE33FKhtxj 2018-03-05T16:59:40Z reserve=1 # addr=bc1qp3c774jrc54fhqa9z2hk5l2ugzsnmt62qddte4 hdkeypath=m/0'/0'/476'
|
||||
L1PvQdYMXr9ifYN6AosYpCvHu2BKM4SsBKcsuLczVMwHxAXi4UKK 2018-03-05T16:59:40Z reserve=1 # addr=bc1qp36zctn4wane7g2w43yqefaqxxej7faut3ykt0 hdkeypath=m/0'/0'/161'
|
||||
L4LYDHAJLjugrHmyq7aZKMiqgwuLbJUBGaXrVRgVNiVMbS7Q4TaQ 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpj0emewh8dlfykv7qlmgf4hwflugya8pd9zffz hdkeypath=m/0'/0'/757'
|
||||
L468MTvpVBGY31m67W7e6Nd5FGdwB14VUv3URRgjkCjgEfmmufEP 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpjs9zrd7ferkzpwgsghszz78dpcrrftyyl07m6 hdkeypath=m/0'/0'/385'
|
||||
Kz5ZUuuTSFv3t6sXqXbnQizXi1Y6AggXNu8Phzpqes353wncJYar 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpjs4gjxs4w56sx9spxm2njc6v2mpzxenfv644m hdkeypath=m/0'/0'/343'
|
||||
L1UbRCzxmEpmccpWPGMXgvSueupRgf4ycpj5TkuWfEMPQWh1QGFo 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpjegzmx2vd60jrx2dn0pd0wsg5munxy4lj2zl5 hdkeypath=m/0'/0'/346'
|
||||
L3t9ZogBWEKrjjRdC7MCd4zzCptM7AMRFbsvpsT9HmpJtmLAHmDZ 2018-03-05T16:59:40Z reserve=1 # addr=bc1qp5ct6ux2fnnzfmnuwwl0sw5cuhddeatqg00fga hdkeypath=m/0'/0'/32'
|
||||
KwudSdDLdVS4ExhojDy1QDcEH4nRFi6WVYhZXaTGbEFoi8Cz8jPT 2018-03-05T16:59:40Z reserve=1 # addr=bc1qp42y506qcnteasg52j2zwmgu5efa39j89jzhwh hdkeypath=m/0'/0'/190'
|
||||
L3wi1sxb5fFhgVXA2JiNjFU7qmh8jhAfqxYUDkjxpyNsSEratgsH 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpk4qrkhx7g22rxt4vdlgczefl0hzh08yeumld4 hdkeypath=m/0'/0'/133'
|
||||
Kz5MV2oEe54nsqe2h9AxbFJax5CAYjsJhFwowCCfrBEFTSLCx9EH 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpedhst2yp48p39hvga302lk6gzcaepgsqck80j hdkeypath=m/0'/0'/737'
|
||||
L44RS8bJzRXqE5rpED8HbJzdBx1XfGqKwWdPhGzGaj9B8fkXrsnA 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpmapqjtrjrm9fumh243dcjdgrme5fh98hjdvnw hdkeypath=m/0'/0'/616'
|
||||
L1tLSdu3JjZYXNn3h2PpYndC1nQRDSgbWJZ9wpdx9LoNmqZ2akPe 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpayqa7kdxv43gl8ey5x8lwnffsw9muk9g8x860 hdkeypath=m/0'/0'/80'
|
||||
L2AzEVsZhdFg3br6XkZGt8hTX1ZXHJUEM9AtBB3x6NLY5rtHD3Pf 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpasjrv2tlf3kzjud293hwrmwch8drwy4kj0vzd hdkeypath=m/0'/0'/867'
|
||||
L5RSy2C3Z2xWhhXeGXfGpkHH4EdosXctEKPw4uhDBgVpqPHyzb3i 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpamczxwcmj0kxneje87ydtakrd6mj42nlrse9y hdkeypath=m/0'/0'/931'
|
||||
KzwQtmR1c6vVZHvj5SUxxx2sFVxHGKFwV6EmYBxR1yG21ifzunWj 2018-03-05T16:59:40Z reserve=1 # addr=bc1qplpszat256uyhhzjereddjez0qk6ghy7kqtg4a hdkeypath=m/0'/0'/526'
|
||||
Kx9a2RD9wVQAXVYRKhUQnrVUREkXhKDaZSKnz9JMoGes4A6YC5Yn 2018-03-05T16:59:40Z reserve=1 # addr=bc1qplrazmtn8x5x2eyj6c5v9x8y8336pw4vlg6kw2 hdkeypath=m/0'/0'/509'
|
||||
L4we8nfKFkZNBam6D7t63P3e7LrMLwRjpZ7Cjt3ZGDwWPb5pX6Vt 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpl4mfayagsew6qlgjfdgjsycx7sf2cwfntkf5l hdkeypath=m/0'/0'/970'
|
||||
KzL3ntoDHe48vgEGQ6mRGLePaLgQr48mp6waqQAs99K9MjJZVRqX 2018-03-05T16:59:40Z reserve=1 # addr=bc1qpluner5ay9p2lfrswwscz7r5jy2lxy0hg3alxx hdkeypath=m/0'/0'/848'
|
||||
Ky1drboQJbkFSaJzDXJ6bZiTxEQQHX8rx73Ph4wzFs3k6tmVWBYr 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzq6gg9esvq5drl5mtlumvyu46t996n0kxuyq0k hdkeypath=m/0'/0'/954'
|
||||
KyYRjfkDvdCGZxwVXH2N3pg7FKHBwet6jv6LsT4eTZ1FPuWqjpL1 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzpa0r4yuh0jwywvup50me6dvllp7dps69l7d9g hdkeypath=m/0'/0'/28'
|
||||
L3yQJ397woQWmYZuWPDHx84RcaGP2iTzkZ8FBB5P7NgaVCe264Vr 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzzdecf0gkuqrqatvly7zz4j43wwhqkmn3pzllr hdkeypath=m/0'/1'/111'
|
||||
L1nksP6jdcoHD9q7Eqxbq6SSoKbabFQyMXF2yaepGicRSh2qkCs6 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzrfvwmf4canzlrmdkljuqsgllhhqfjvqdsvl7t hdkeypath=m/0'/0'/266'
|
||||
KzspjV4xxP4ZueyzWhH9QjA17X26t7iCQPiUPRYxjH7FcEYoA97G 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzrdsjpq44zz7z2gx63anvlwwfxec099w7n73qz hdkeypath=m/0'/0'/917'
|
||||
Ky8b8tqEx6mLvvmromccVfvGB8fTuE11FKbVBU8WJEMTK99kZd3k 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzr7ptylg2reydsfx7e3pv3yryv6hjncjyzegx4 hdkeypath=m/0'/0'/788'
|
||||
KxHQs2imQZugSigx3WZj1HVMdSgj2uQZ52WgtQjpdzuKsnSJ6daV 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzyu4q32wjwerjt2numx7unrjw7hhlk4pv74dxm hdkeypath=m/0'/0'/160'
|
||||
L3eJiFTFrqtGYyCLV7pwSvR1wonCdKSa5b5Jnrc58jaW8iec4Z1R 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzxqk4l72k2gedx9jx0eydcvcru257psl3ddpw2 hdkeypath=m/0'/0'/588'
|
||||
L1L1cU6oiojuwWXcveVhW3wh2mcj3DhZYHtzw6Q11hPmzJD3Q5Lx 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzxy6hrvr2jg6w3ngy65k95wj9ywgjdjrsvulen hdkeypath=m/0'/0'/378'
|
||||
L3WP94FFjZ9Eg7DgrbmVvL5kMDNwacgHVNcgKSrwVXBQYeZztJZc 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzxx9gzt60x0m4cqccpqv9v9ya7ajdcv9snq5jm hdkeypath=m/0'/0'/829'
|
||||
KxRmaWfA76L6ok99Z8cfu6nLcog8KyWZKdRd2chH9YAENgeW9AMK 2018-03-05T16:59:40Z reserve=1 # addr=bc1qz8pe4qt33ja40tsfnf3jtnawwsmmjp6pu0qyyq hdkeypath=m/0'/0'/84'
|
||||
L4AWqGUmu3Ab2zU2xNtS1n7wHuRyrjzSS2mSX9NQ2oE4gjADvp4M 2018-03-05T16:59:40Z reserve=1 # addr=bc1qz8rnq3lrh83nljqajfd0fl4yq4m0dhcwwdskzf hdkeypath=m/0'/0'/841'
|
||||
L2ke9RZkB9KWatUNey4pUfbGNBg3qyvdC9YnH9sN1Tm33R7xLvfe 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzgfh93xm86m9rlsmkjffehlqhyzvhm66rlsp6n hdkeypath=m/0'/0'/374'
|
||||
L2apDq3XVGhYaBCubNXNgoCxDAgsZHhX5SCxh1HdLBJhhdapGZxU 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzgd7695z20qs25x5rh9znu5zufr4whsrh8ec6c hdkeypath=m/0'/0'/717'
|
||||
KwgVhYPVx5HbfY9uHM4ipdA3FHBWsfkrzpdXUPeXpsX4rdBk3mrL 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzgjectrrvvmev72cfdt6uqfql5gzssg3h286c9 hdkeypath=m/0'/0'/50'
|
||||
L1f8ysdwawiEK8ACVU9WbA9RgXWuKpqiZ1xt4XsV38YbBHg8ctm8 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzg5f2lrpers0a7hsddfvpmz25grzxug7efhg6e hdkeypath=m/0'/0'/525'
|
||||
KwYLBnkJ53HpZT9PHRf4bUJhzwC8JnJSTonzMxrEmhAgWrk6skk4 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzga3z9ejqfrrpcj9r0k5mrlu5rmnr8ekqggwp8 hdkeypath=m/0'/0'/221'
|
||||
L4aMkL5UKbucBoTsswSTZCrKbEcPn89KbMc1nP2FhLHT4nhJUS33 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzfeh2yt9th423u24k3htpq74d0frpz8p9jyz0s hdkeypath=m/0'/1'/36'
|
||||
L5CZdr4RwtjdAzVDY7qqznxps2EmW2T2AuUv7uHmjPHavuseJVhm 2018-03-05T16:59:40Z reserve=1 # addr=bc1qz2x7jz7krhxmu4q8j85syfxhf25ala2emtz78p hdkeypath=m/0'/0'/626'
|
||||
L4yG4ftoEXWcQH2w9TSh6wMzN5twTQrTS4AasG5DKiGoZhgsGW8b 2018-03-05T16:59:40Z reserve=1 # addr=bc1qztvs4vu8a4trp9wfqdunvj6cehpwlg0teews4z hdkeypath=m/0'/0'/66'
|
||||
Kwq8oeRTMJuR4RwMVXAvJACydeJovwAEf9opEeoDCYMicCcUUCbg 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzway2udfewsz9cfmeypxvgdnjgptdvwrpww2va hdkeypath=m/0'/0'/751'
|
||||
KzjPNZC4F1Ksn6qcnMy5ypYuT2RvrBXh6L3qk8vawej1rKdtKFpu 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzsnmd95w4a83qmwht9qm73w4xulu07znexxx2k hdkeypath=m/0'/1'/29'
|
||||
KzNWGiombLc9go866A3sSGRtdsU1TSpeZbxNyHA3sa7bAXbvTFPk 2018-03-05T16:59:40Z reserve=1 # addr=bc1qz3zn4qp3c5rv5gskme94jzztn7pjyxdwwyrg2y hdkeypath=m/0'/0'/838'
|
||||
KwrsiQv4svb82viqDQDrerfbQUsZyx8jM7PfkVZzVdVX2M6kjRAc 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzjy9wygr2z94qv0yzp9xdr3fwny5heh0h7k60w hdkeypath=m/0'/0'/591'
|
||||
L4DbRGykiPaT8298kmDLo3rQqyHmtJ1ZJiWuDXmqUZAdrZUYNkCJ 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzjfyj0ljhudl5w98xcv02ydzv6kjzxercwnx3z hdkeypath=m/0'/0'/347'
|
||||
L5RUT8xB3rzh1s41fa6wRnskULVF5MpiDrcVJgEug5ud8mJc8D1F 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzn3tcm7p8j37au68ajsa7pencrvkmtx9e6fagc hdkeypath=m/0'/0'/514'
|
||||
L1Q3isvNS45fGFWj6JVQ7q24peFDSafXiqJuZZPw8smd1LMCohfs 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzn7arptq59rr4z2qwlf5kzmnzpj9tvq9enjsc7 hdkeypath=m/0'/1'/144'
|
||||
Kxejtrx77wP5B9j1nJz1wjMMnwLGa9XZjifoD6gwb6YufRF37vpw 2018-03-05T16:59:40Z reserve=1 # addr=bc1qz4jtg66ysrv4vzyxwmvwsl9clwvkcegjf90j4d hdkeypath=m/0'/0'/883'
|
||||
L1n9jYsRQF1R5adHijhNyWcQgPPovizr8oQfEhzwQ59RSZC7fVdb 2018-03-05T16:59:40Z reserve=1 # addr=bc1qz45jn0l56dx8qp3hnge4nprdg90tm6922trr6f hdkeypath=m/0'/0'/821'
|
||||
L1upSitKPfbj74gupBVe7iB343UUE2NJCTEtymdHqRf2zd4KGcUV 2018-03-05T16:59:40Z reserve=1 # addr=bc1qz4cdmyl3czsu9937jnp2wt6atzge7jm7jpxc49 hdkeypath=m/0'/0'/492'
|
||||
L3oAMsZDkN6tWL2iBXWQPuPDmKMVnLYFDYUbAFkoUDVJV8yzV5CF 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzky9athff8teluwjg7gvqwadqpay6ggz4k9mhc hdkeypath=m/0'/0'/233'
|
||||
L2JZLfMEd8FgvZvaQTaxPicx9yVX6X2GUiMdGicfXdQHHcPa92Cu 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzkk0j0y9v5rdugugdnjuny0azw7en5mqt9zvu8 hdkeypath=m/0'/0'/306'
|
||||
KxtP4NCXGLspbMN5Wxw1RXZJiwe2LKxCFkbEQxo2NqJZ5t2CRS7L 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzhvp0pue0ddpdthh6zyckhh69hgprfsfs4lhfs hdkeypath=m/0'/0'/827'
|
||||
L19MAvFt16Cv5sBVDrj91GmPFcEyqWpumtwdPMyeQ6xnedWZaE4v 2018-03-05T16:59:40Z reserve=1 # addr=bc1qzhv4xdcyw9yw3uferekl05mcj3w3753m4vujmk hdkeypath=m/0'/0'/777'
|
||||
|
||||
# End of dump
|
||||
|
|
@ -168,8 +168,8 @@ rtFee = {
|
|||
}[coin_sel]
|
||||
rtBals = {
|
||||
'btc': ('499.9999488','399.9998282','399.9998147','399.9996877','13.00000000','986.99933647','999.99933647'),
|
||||
'bch': ('499.9999416','399.9999124','399.99989','399.9997616','276.22339397','723.77626763','999.99966160'),
|
||||
'ltc': ('5499.9971','5399.994085','5399.993545','5399.987145','13.00000000','10986.93714500','10999.93714500'),
|
||||
'bch': ('499.9999484','399.9999194','399.9998972','399.9997692','6.79000000','993.20966920','999.99966920'),
|
||||
'ltc': ('5499.99744','5399.994425','5399.993885','5399.987525','6.79000000','10993.14752500','10999.93752500'),
|
||||
}[coin_sel]
|
||||
rtBobOp3 = {'btc':'S:2','bch':'L:3','ltc':'S:2'}[coin_sel]
|
||||
|
||||
|
|
@ -2551,7 +2551,7 @@ class MMGenTestSuite(object):
|
|||
amts = (a for a in (1.12345678,2.87654321,3.33443344,4.00990099,5.43214321))
|
||||
outputs1 = ['{},{}'.format(a,amts.next()) for a in addrs]
|
||||
sid = self.regtest_user_sid('bob')
|
||||
l1,l2 = (':S',':B') if g.proto.cap('segwit') else (':L',':L')
|
||||
l1,l2 = (':S',':B') if 'B' in g.proto.mmtypes else (':S',':S') if g.proto.cap('segwit') else (':L',':L')
|
||||
outputs2 = [sid+':C:2,6.333', sid+':L:3,6.667',sid+l1+':4,0.123',sid+l2+':5']
|
||||
return self.regtest_user_txdo(name,'bob',rtFee[5],outputs1+outputs2,'1-2')
|
||||
|
||||
|
|
|
|||
|
|
@ -84,24 +84,24 @@ cmd_data = OrderedDict([
|
|||
'desc': 'Cryptocoin address/key commands',
|
||||
'cmd_data': OrderedDict([
|
||||
('Randwif', ()),
|
||||
('Randpair', ()), # create 3 pairs: uncomp,comp,segwit
|
||||
('Wif2addr', ('Randpair','o3')),
|
||||
('Wif2hex', ('Randpair','o3')),
|
||||
('Randpair', ()), # create 4 pairs: uncomp,comp,segwit,bech32
|
||||
('Wif2addr', ('Randpair','o4')),
|
||||
('Wif2hex', ('Randpair','o4')),
|
||||
|
||||
('Privhex2pubhex', ('Wif2hex','o3')),
|
||||
('Pubhex2addr', ('Privhex2pubhex','o3')),
|
||||
('Hex2wif', ('Wif2hex','io2')),
|
||||
('Addr2hexaddr', ('Randpair','o2'))] + # TODO: Hexaddr2addr
|
||||
([],[
|
||||
('Pubhash2addr', ('Addr2hexaddr','io2'))
|
||||
])[opt.type != 'zcash_z'] +
|
||||
([],[
|
||||
('Pubhex2redeem_script', ('Privhex2pubhex','o3')),
|
||||
('Wif2redeem_script', ('Randpair','o3')),
|
||||
('Wif2segwit_pair', ('Randpair','o2')),
|
||||
('Privhex2addr', ('Wif2hex','o3')), # compare with output of Randpair
|
||||
('Pipetest', ('Randpair','o3'))
|
||||
])[g.coin in ('BTC','LTC')]
|
||||
('Privhex2pubhex', ('Wif2hex','o3')), # segwit only
|
||||
('Pubhex2addr', ('Privhex2pubhex','o3')), # segwit only
|
||||
('Hex2wif', ('Wif2hex','io2')), # uncomp, comp
|
||||
('Addr2hexaddr', ('Randpair','o4'))] + # uncomp, comp, bech32
|
||||
([],[
|
||||
('Pubhash2addr', ('Addr2hexaddr','io4')) # uncomp, comp, bech32
|
||||
])[opt.type != 'zcash_z'] +
|
||||
([],[
|
||||
('Pubhex2redeem_script', ('Privhex2pubhex','o3')),
|
||||
('Wif2redeem_script', ('Randpair','o3')),
|
||||
('Wif2segwit_pair', ('Randpair','o2')),
|
||||
('Privhex2addr', ('Wif2hex','o4')), # compare with output of Randpair
|
||||
('Pipetest', ('Randpair','o3'))
|
||||
])[g.coin in ('BTC','LTC')]
|
||||
)
|
||||
}
|
||||
),
|
||||
|
|
@ -196,15 +196,17 @@ if opt.list_names:
|
|||
|
||||
from mmgen.tx import is_wif,is_coin_addr
|
||||
|
||||
msg_w = 35
|
||||
msg_w = 33
|
||||
def test_msg(m):
|
||||
m2 = 'Testing {}'.format(m)
|
||||
msg_r(green(m2+'\n') if opt.verbose else '{:{w}}'.format(m2,w=msg_w+8))
|
||||
|
||||
maybe_compressed = ('','compressed')['C' in g.proto.mmtypes]
|
||||
maybe_segwit = ('','segwit')['S' in g.proto.mmtypes]
|
||||
maybe_bech32 = ('','bech32')['B' in g.proto.mmtypes]
|
||||
maybe_type_compressed = ([],['--type=compressed'])['C' in g.proto.mmtypes]
|
||||
maybe_type_segwit = ([],['--type=segwit'])['S' in g.proto.mmtypes]
|
||||
maybe_type_bech32 = ([],['--type=bech32'])['B' in g.proto.mmtypes]
|
||||
|
||||
class MMGenToolTestSuite(object):
|
||||
|
||||
|
|
@ -354,38 +356,57 @@ class MMGenToolTestSuite(object):
|
|||
ret = self.run_cmd_out(name,add_opts=ao,Return=True,fn_idx=n+1)
|
||||
ok_or_die(ret,is_wif,'WIF key')
|
||||
def Randpair(self,name):
|
||||
for n,k in enumerate(['',maybe_compressed,maybe_segwit]):
|
||||
for n,k in enumerate(['',maybe_compressed,maybe_segwit,maybe_bech32]):
|
||||
ao = ['--type='+k] if k else []
|
||||
wif,addr = self.run_cmd_out(name,add_opts=ao,Return=True,fn_idx=n+1).split()
|
||||
ok_or_die(wif,is_wif,'WIF key',skip_ok=True)
|
||||
ok_or_die(addr,is_coin_addr,'Coin address')
|
||||
def Wif2addr(self,name,f1,f2,f3):
|
||||
for n,f,k,m in ((1,f1,'',''),(2,f2,'',maybe_compressed),(3,f3,maybe_segwit,maybe_compressed)):
|
||||
def Wif2addr(self,name,f1,f2,f3,f4):
|
||||
for n,f,k,m in (
|
||||
(1,f1,'',''),
|
||||
(2,f2,'',maybe_compressed),
|
||||
(3,f3,maybe_segwit,''),
|
||||
(4,f4,maybe_bech32,'')
|
||||
):
|
||||
ao = ['--type='+k] if k else []
|
||||
wif = read_from_file(f).split()[0]
|
||||
self.run_cmd_out(name,wif,add_opts=ao,fn_idx=n,extra_msg=m)
|
||||
def Wif2hex(self,name,f1,f2,f3):
|
||||
for n,f,m in ((1,f1,''),(2,f2,maybe_compressed),(3,f3,'{} for {}'.format(maybe_compressed,maybe_segwit))):
|
||||
def Wif2hex(self,name,f1,f2,f3,f4):
|
||||
for n,f,m in (
|
||||
(1,f1,''),
|
||||
(2,f2,maybe_compressed),
|
||||
(3,f3,'{} for {}'.format(maybe_compressed,maybe_segwit)),
|
||||
(4,f4,'{} for {}'.format(maybe_compressed,maybe_bech32))
|
||||
):
|
||||
wif = read_from_file(f).split()[0]
|
||||
self.run_cmd_out(name,wif,fn_idx=n,extra_msg=m)
|
||||
def Privhex2addr(self,name,f1,f2,f3):
|
||||
keys = [read_from_file(f).rstrip() for f in (f1,f2,f3)]
|
||||
for n,k in enumerate(('',maybe_compressed,maybe_segwit)):
|
||||
def Privhex2addr(self,name,f1,f2,f3,f4):
|
||||
keys = [read_from_file(f).rstrip() for f in (f1,f2,f3,f4)]
|
||||
for n,k in enumerate(('',maybe_compressed,maybe_segwit,maybe_bech32)):
|
||||
ao = ['--type='+k] if k else []
|
||||
ret = self.run_cmd(name,[keys[n]],add_opts=ao).rstrip()
|
||||
iaddr = read_from_tmpfile(cfg,'Randpair{}.out'.format(n+1)).split()[-1]
|
||||
vmsg('Out: {}'.format(ret))
|
||||
cmp_or_die(iaddr,ret)
|
||||
def Hex2wif(self,name,f1,f2,f3,f4):
|
||||
for n,fi,fo,k in ((1,f1,f2,''),(2,f3,f4,maybe_compressed)):
|
||||
ao = ['--type='+k] if k else []
|
||||
ret = self.run_cmd_chk(name,fi,fo,add_opts=ao)
|
||||
def Addr2hexaddr(self,name,f1,f2):
|
||||
for n,f,m in ((1,f1,''),(2,f2,'from {}'.format(maybe_compressed))):
|
||||
def Addr2hexaddr(self,name,f1,f2,f3,f4):
|
||||
for n,f,m,ao in (
|
||||
(1,f1,'',[]),
|
||||
(2,f2,'from {}'.format(maybe_compressed),[]),
|
||||
(4,f4,'',maybe_type_bech32),
|
||||
):
|
||||
addr = read_from_file(f).split()[-1]
|
||||
self.run_cmd_out(name,addr,fn_idx=n,extra_msg=m)
|
||||
def Pubhash2addr(self,name,f1,f2,f3,f4):
|
||||
for n,fi,fo,m in ((1,f1,f2,''),(2,f3,f4,'from {}'.format(maybe_compressed))):
|
||||
self.run_cmd_chk(name,fi,fo,extra_msg=m)
|
||||
self.run_cmd_out(name,addr,fn_idx=n,add_opts=ao,extra_msg=m)
|
||||
def Pubhash2addr(self,name,f1,f2,f3,f4,f5,f6,f7,f8):
|
||||
for n,fi,fo,m,ao in (
|
||||
(1,f1,f2,'',[]),
|
||||
(2,f3,f4,'from {}'.format(maybe_compressed),[]),
|
||||
(4,f7,f8,'',maybe_type_bech32)
|
||||
):
|
||||
self.run_cmd_chk(name,fi,fo,add_opts=ao,extra_msg=m)
|
||||
def Privhex2pubhex(self,name,f1,f2,f3): # from Hex2wif
|
||||
addr = read_from_file(f3).strip()
|
||||
self.run_cmd_out(name,addr,add_opts=maybe_type_compressed,fn_idx=3) # what about uncompressed?
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue