Example #1
0
 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)
Example #2
0
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
Example #3
0
 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
Example #4
0
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")
Example #5
0
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)
Example #6
0
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(