From 33fc67e241ea24e6e827415ec8a49a63061c3905 Mon Sep 17 00:00:00 2001 From: MMGen Date: Wed, 9 May 2018 14:23:33 +0000 Subject: [PATCH] zcash: update address, viewkey prefixes --- mmgen/addr.py | 3 ++- mmgen/protocol.py | 12 ++++++------ test/gentest.py | 1 + 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/mmgen/addr.py b/mmgen/addr.py index d3626ce9..8fa614a6 100755 --- a/mmgen/addr.py +++ b/mmgen/addr.py @@ -92,6 +92,7 @@ class AddrGeneratorEthereum(AddrGenerator): class AddrGeneratorZcashZ(AddrGenerator): addr_width = 95 + vk_width = 97 def zhash256(self,s,t): s = map(ord,s+'\0'*32) @@ -121,7 +122,7 @@ class AddrGeneratorZcashZ(AddrGenerator): vk[63] |= 0x40 from mmgen.protocol import _b58chk_encode ret = _b58chk_encode(g.proto.addr_ver_num['viewkey'][0] + hexlify(''.join(map(chr,vk)))) - assert len(ret) == self.addr_width,'Invalid Zcash view key length' + assert len(ret) == self.vk_width,'Invalid Zcash view key length' return ZcashViewKey(ret) def to_segwit_redeem_script(self,pubhex): diff --git a/mmgen/protocol.py b/mmgen/protocol.py index 1607f8f3..65e39f3e 100755 --- a/mmgen/protocol.py +++ b/mmgen/protocol.py @@ -317,7 +317,7 @@ class ZcashProtocol(BitcoinProtocolAddrgen): 'p2pkh': ('1cb8','t1'), 'p2sh': ('1cbd','t3'), 'zcash_z': ('169a','zc'), - 'viewkey': ('0b1c','V') } + 'viewkey': ('a8abd3','ZiVK') } wif_ver_num = { 'std': '80', 'zcash_z': 'ab36' } mmtypes = ('L','C','Z') dfl_mmtype = 'L' @@ -340,12 +340,12 @@ class ZcashProtocol(BitcoinProtocolAddrgen): raise ValueError,'{}: incorrect pubkey_hash length'.format(hl) class ZcashTestnetProtocol(ZcashProtocol): - wif_ver_num = { 'std': '??', 'zcash_z': 'ac08' } + wif_ver_num = { 'std': 'ef', 'zcash_z': 'ac08' } addr_ver_num = { - 'p2pkh': ('??','t1'), - 'p2sh': ('??','t3'), - 'zcash_z': ('16b6','??'), - 'viewkey': ('0b2a','??') } + 'p2pkh': ('1d25','tm'), + 'p2sh': ('1cba','t2'), + 'zcash_z': ('16b6','zt'), + 'viewkey': ('a8ac0c','ZiVt') } # https://github.com/monero-project/monero/blob/master/src/cryptonote_config.h class MoneroProtocol(DummyWIF,BitcoinProtocolAddrgen): diff --git a/test/gentest.py b/test/gentest.py index a76354a8..ec026412 100755 --- a/test/gentest.py +++ b/test/gentest.py @@ -180,6 +180,7 @@ def compare_test(): if b == 'ext': if addr_type.name == 'zcash_z': b_wif,b_addr,b_vk = ext_sec2addr(sec) + vmsg_r('\nvkey: {}'.format(b_vk)) if b_vk != a_vk: match_error(sec,sec.wif,a_vk,b_vk,a,b) else: