예제 #1
0
파일: data.py 프로젝트: nformant1/p2pool
def get_cashaddr_pubkey_hash(address, net):
    try:
        ver, data = cash_addr.decode(net.HUMAN_READABLE_PART, address)
        if ver is None or data is None:
            raise ValueError
    except Exception as e:
        raise AddrError
    else:
        return int(''.join('{:02x}'.format(x) for x in data), 16), -1, ver
예제 #2
0
 def test_old_and_new_addresses_match(self):
     for oaddr, naddr in self.OLD_NEW_ADDRESS:
         # Base58 has 4 bytes of checksum
         odata = self.to_byte_array(data.base58_decode(oaddr))[:-4]
         for prefix in [True, False]:
             addr = naddr if prefix else naddr[12:]
             # cashaddr.decode already removes the 5 bytes of checksum
             nver, ndata = cash_addr.decode('bitcoincash', naddr)
             self.assertTrue(
                 odata[0] in [0, 5],
                 "Old address %s is not a valid version" % oaddr)
             self.assertTrue(ndata[0] & 8 in [0, 8],
                             "New address %s in not a valid type" % naddr)
             if odata[0] == 0:
                 self.assertEqual(0, nver, "Bad version for %s" % naddr)
             elif odata[0] == 5:
                 self.assertEqual(1, nver, "Bad version for %s" % naddr)
             self.assertListEqual(
                 odata[1:], ndata,
                 "Old address %s and new address %s don't have the same payload."
                 % (oaddr, naddr))
예제 #3
0
 def test_decode(self, mcb, md):
     data = [0, 1, 2, 3, 4, 5]
     md.return_value = ('bchtest', data)
     addr = 'bitcoincash:qzzxswqlwze7c0gj8mwel8l4q3wqk0krlu7jch88gv'
     pfix = 'bitcoincash'
     # Test wrong prefix
     self.assertTupleEqual((None, None), cash_addr.decode(pfix, addr))
     md.assert_called_once_with(addr, pfix)
     md.reset_mock()
     self.assertTupleEqual((None, None), cash_addr.decode(pfix, addr[12:]))
     md.assert_called_once_with(addr[12:], pfix)
     self.assertEqual(0, mcb.call_count)
     # Test bad convertbits
     mcb.return_value = None
     md.return_value = (pfix, data)
     self.assertTupleEqual((None, None), cash_addr.decode(pfix, addr))
     mcb.assert_called_once_with(data, 5, 8, False)
     mcb.return_value = []
     self.assertTupleEqual((None, None), cash_addr.decode(pfix, addr))
     # Test version
     mcb.return_value = [0, 5, 4, 3]
     self.assertTupleEqual((0, [5, 4, 3]), cash_addr.decode(pfix, addr))
     mcb.return_value = [8, 1, 2, 3]
     self.assertTupleEqual((1, [1, 2, 3]), cash_addr.decode(pfix, addr))
예제 #4
0
 def test_invalid_addresess(self):
     for addr in self.INVALID_ADDRESS:
         prefix = self.get_prefix(addr)
         self.assertEqual((None, None), cash_addr.decode(prefix, addr),
                          "Address %s failed." % addr)
예제 #5
0
 def test_valid_addresses(self):
     for addr, script in self.VALID_ADDRESS:
         prefix = self.get_prefix(addr)
         ver, data = cash_addr.decode(prefix, addr)
         self.assertEqual(addr.lower(), cash_addr.encode(prefix, ver, data),
                          "Address %s failed." % addr)