def validateaddress(self, address: str) -> bool: "Returns True if the passed address is valid, False otherwise." btcpy_constants = self.network_properties.btcpy_constants try: Address.from_string(btcpy_constants, address) except ValueError: return False return True
def validateaddress(self, address: str) -> bool: "Returns True if the passed address is valid, False otherwise." try: Address.from_string(address, self.network_properties) except InvalidAddress: return False return True
def validateaddress(self, address: str) -> bool: """Returns True if the passed address is valid, False otherwise. Note the limitation that we don't check the address against the underlying network (i.e. strict=False). When btcpy can support multiple networks at runtime we can be more precise (i.e. strict=True) ;) """ try: Address.from_string(address, strict=False) except ValueError: return False return True
def get_address_hash( address: str, script: bool = False) -> Union[str, P2pkhScript, P2shScript]: """ Get Bitcoin address hash. :param address: Bitcoin address. :type address: str :param script: Return script (P2pkhScript, P2shScript), default to False. :type script: bool :returns: str -- Bitcoin address hash. >>> from swap.providers.bitcoin.utils import get_address_hash >>> get_address_hash(address="mrmtGq2HMmqAogSsGDjCtXUpxrb7rHThFH", script=False) "7b7c4431a43b612a72f8229935c469f1f6903658" """ if not is_address(address=address): raise AddressError(f"Invalid Bitcoin '{address}' address.") loaded_address = Address.from_string(address) get_type = loaded_address.get_type() if not script: return loaded_address.hash.hex() if str(get_type) == "p2pkh": return P2pkhScript(loaded_address) elif str(get_type) == "p2sh": return P2shScript(loaded_address)
def p2pkh_script(network: str, address: str) -> P2pkhScript: '''create pay-to-key-hash (P2PKH) script''' network_params = net_query(network) addr = Address.from_string(network=network_params, string=address) return P2pkhScript(addr)
def p2sh_p2pkh_script(network: str, address: str) -> P2shScript: '''p2sh embedding p2pkh''' network_params = net_query(network) addr = Address.from_string(network=network_params, string=address) p2pkh = P2pkhScript(addr) return P2shScript(p2pkh)
def from_address(self, address): """ Initiate Bitcoin wallet from address. :param address: Bitcoin wallet private key. :type address: str. :returns: Wallet -- Bitcoin wallet instance. >>> from shuttle.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_address("mqLyrNDjpENRMZAoDpspH7kR9RtgvhWzYE") <shuttle.providers.bitcoin.wallet.Wallet object at 0x040DA268> """ if not is_address(address=address, network=self.network): raise AddressError("invalid %s %s address" % (self.network, address)) self._address = Address.from_string(address) return self
def get_address_type(address: str) -> str: """ Get Bitcoin address type. :param address: Bitcoin address. :type address: str :returns: str -- Bitcoin address type (P2PKH, P2SH). >>> from swap.providers.bitcoin.utils import get_address_type >>> get_address_type(address="mrmtGq2HMmqAogSsGDjCtXUpxrb7rHThFH") "p2pkh" """ if not is_address(address=address): raise AddressError(f"Invalid Bitcoin '{address}' address.") loaded_address = Address.from_string(address) address_type = loaded_address.get_type() return str(address_type)
def p2sh(self, address=None): """ Get Bitcoin wallet p2sh. :param address: Bitcoin p2sh, default is None. :type address: str :return: str -- Bitcoin p2sh. >>> from shuttle.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_passphrase("meherett") >>> wallet.p2sh() "a914a3c4995d9cd0303e5f89ee1433212c797d04ee5d87" """ if address is None: return P2shScript(P2pkhScript(self._address)).hexlify() if not is_address(address=address, network=self.network): raise AddressError("invalid %s %s address" % (self.network, address)) address = Address.from_string(address) return P2shScript(P2pkhScript(address)).hexlify()
def p2pkh(self, address=None): """ Get Bitcoin wallet p2pkh. :param address: Bitcoin p2pkh, default is None. :type address: str :return: str -- Bitcoin p2pkh. >>> from shuttle.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_passphrase("meherett") >>> wallet.p2pkh() "76a9143c8acde1c7cf370d970725f13eff03bf74b3fc6188ac" """ if address is None: return P2pkhScript(self._address).hexlify() if not is_address(address=address, network=self.network): raise AddressError("invalid %s %s address" % (self.network, address)) address = Address.from_string(address) return P2pkhScript(address).hexlify()
def p2pkh_script(address: str) -> P2pkhScript: '''create pay-to-key-hash (P2PKH) script''' addr = Address.from_string(address) return P2pkhScript(addr)