def address(self, netcode=None): from pycoin.networks import pay_to_script_prefix_for_netcode from pycoin.networks.default import get_current_netcode if netcode is None: netcode = get_current_netcode() address_prefix = pay_to_script_prefix_for_netcode(netcode) return encoding.hash160_sec_to_bitcoin_address(self.hash160, address_prefix=address_prefix)
def address_for_pay_to_script(script, netcode=None): if netcode is None: netcode = get_current_netcode() address_prefix = pay_to_script_prefix_for_netcode(netcode) if address_prefix: return encoding.hash160_sec_to_bitcoin_address( encoding.hash160(script), address_prefix=address_prefix) return None
def address(self, use_uncompressed=None): """ Return the public address representation of this key, if available. If use_uncompressed is not set, the preferred representation is returned. """ hash_160 = self.hash160(use_uncompressed=use_uncompressed) if hash_160: is_p2pwk = address_wit_for_netcode(self._netcode) if is_p2pwk: witness = ScriptPayToAddressWit(b'\0', hash_160) return witness.info(self._netcode)['address_f']() is_p2pwk_in_p2sh = pay_to_script_wit_for_netcode(self._netcode) if is_p2pwk_in_p2sh: address_prefix = pay_to_script_prefix_for_netcode( self._netcode) wit_script = ScriptPayToAddressWit(b'\0', hash_160).script() hash_160 = hash160(wit_script) else: address_prefix = address_prefix_for_netcode(self._netcode) return hash160_sec_to_bitcoin_address( hash_160, address_prefix=address_prefix) return None
from pycoin.key import Key from pycoin.key.BIP32Node import BIP32Node from pycoin.key.Key import InvalidPublicPairError, InvalidSecretExponentError from pycoin.key.validate import is_address_valid, is_wif_valid, is_public_bip32_valid, is_private_bip32_valid from pycoin.networks import pay_to_script_prefix_for_netcode, network_codes def change_prefix(address, new_prefix): return hash160_sec_to_bitcoin_address(Key.from_text(address).hash160(), address_prefix=new_prefix) PAY_TO_HASH_ADDRESSES = ["1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH", "1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm", "1cMh228HTCiwS8ZsaakH8A8wze1JR5ZsP", "1LagHJk2FyCV2VzrNHVqg3gYG4TSYwDV4m", "1CUNEBjYrCn2y1SdiUMohaKUi4wpP326Lb", "1NZUP3JAc9JkmbvmoTv7nVgZGtyJjirKV1"] PAY_TO_SCRIPT_PREFIX = pay_to_script_prefix_for_netcode("BTC") PAY_TO_SCRIPT_ADDRESSES = [change_prefix(t, PAY_TO_SCRIPT_PREFIX) for t in PAY_TO_HASH_ADDRESSES] class KeyUtilsTest(unittest.TestCase): def test_address_valid_btc(self): for address in PAY_TO_HASH_ADDRESSES: self.assertEqual(is_address_valid(address), "BTC") a = address[:-1] + chr(ord(address[-1])+1) self.assertEqual(is_address_valid(a), None) for address in PAY_TO_HASH_ADDRESSES: self.assertEqual(is_address_valid(address, allowable_types=["pay_to_script"]), None) self.assertEqual(is_address_valid(address, allowable_types=["address"]), "BTC")
def address_for_pay_to_script(script, netcode=None): if netcode is None: netcode = get_current_netcode() address_prefix = pay_to_script_prefix_for_netcode(netcode) return encoding.hash160_sec_to_bitcoin_address(encoding.hash160(script), address_prefix=address_prefix)
from pycoin.key.validate import is_address_valid, is_wif_valid, is_public_bip32_valid, is_private_bip32_valid from pycoin.networks import pay_to_script_prefix_for_netcode, network_codes def change_prefix(address, new_prefix): return hash160_sec_to_bitcoin_address(Key.from_text(address).hash160(), address_prefix=new_prefix) PAY_TO_HASH_ADDRESSES = [ "1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH", "1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm", "1cMh228HTCiwS8ZsaakH8A8wze1JR5ZsP", "1LagHJk2FyCV2VzrNHVqg3gYG4TSYwDV4m", "1CUNEBjYrCn2y1SdiUMohaKUi4wpP326Lb", "1NZUP3JAc9JkmbvmoTv7nVgZGtyJjirKV1" ] PAY_TO_SCRIPT_PREFIX = pay_to_script_prefix_for_netcode("BTC") PAY_TO_SCRIPT_ADDRESSES = [ change_prefix(t, PAY_TO_SCRIPT_PREFIX) for t in PAY_TO_HASH_ADDRESSES ] class KeyUtilsTest(unittest.TestCase): def test_address_valid_btc(self): for address in PAY_TO_HASH_ADDRESSES: self.assertEqual(is_address_valid(address), "BTC") a = address[:-1] + chr(ord(address[-1]) + 1) self.assertEqual(is_address_valid(a), None) for address in PAY_TO_HASH_ADDRESSES: self.assertEqual(