Beispiel #1
0
def address_to_cashaddr(address: str, coin: CoinInfo) -> str:
    raw = base58.decode_check(address, coin.b58_hash)
    version, data = raw[0], raw[1:]
    if version == coin.address_type:
        version = cashaddr.ADDRESS_TYPE_P2KH
    elif version == coin.address_type_p2sh:
        version = cashaddr.ADDRESS_TYPE_P2SH
    else:
        raise ValueError("Unknown cashaddr address type")
    return cashaddr.encode(coin.cashaddr_prefix, version, data)
 def test_valid_address(self):
     # b58 -> cashaddr
     for b58, ca in VALID_ADDRESS:
         data = base58.decode_check(b58)
         version = data[0]
         if version == 5:
             version = 8
         enc = cashaddr.encode('bitcoincash', version, data[1:])
         self.assertEqual(ca, enc)
     # cashaddr -> base58
     for b58, ca in VALID_ADDRESS:
         prefix, addr = ca.split(':')
         version, data = cashaddr.decode(prefix, addr)
         if version == 8:
             version = 5
         enc = base58.encode_check(bytes([version]) + data)
         self.assertEqual(b58, enc)