def address_p2wpkh(pubkey: bytes, hrp: str) -> str: pubkeyhash = ecdsa_hash_pubkey(pubkey) address = bech32.encode(hrp, _BECH32_WITVER, pubkeyhash) if address is None: raise AddressError(FailureType.ProcessError, 'Invalid address') return address
def test_valid_address(self): """Test whether valid addresses decode to the correct output.""" for (address, hexscript) in VALID_ADDRESS: hrp = "tb" if address.startswith("tb1") else "bc" witver, witprog = bech32.decode(hrp, address) self.assertIsNotNone(witver) scriptpubkey = segwit_scriptpubkey(witver, witprog) self.assertEqual(scriptpubkey, unhexlify(hexscript)) addr = bech32.encode(hrp, witver, witprog) self.assertEqual(address.lower(), addr)
def address_p2wsh(witness_script_hash: bytes, hrp: str) -> str: address = bech32.encode(hrp, _BECH32_WITVER, witness_script_hash) if address is None: raise AddressError(FailureType.ProcessError, "Invalid address") return address
def address_p2wpkh(pubkey: bytes, coin: CoinInfo) -> str: pubkeyhash = ecdsa_hash_pubkey(pubkey, coin) address = bech32.encode(coin.bech32_prefix, _BECH32_WITVER, pubkeyhash) if address is None: raise AddressError(FailureType.ProcessError, "Invalid address") return address
def encode_bech32_address(prefix: str, script: bytes) -> str: address = bech32.encode(prefix, _BECH32_WITVER, script) if address is None: raise wire.ProcessError("Invalid address") return address
def test_invalid_address_enc(self): """Test whether address encoding fails on invalid input.""" for hrp, version, length in INVALID_ADDRESS_ENC: code = bech32.encode(hrp, version, [0] * length) self.assertIsNone(code)
def encode_bech32_address(prefix: str, witver: int, script: bytes) -> str: assert witver in _BECH32_WITVERS address = bech32.encode(prefix, witver, script) if address is None: raise wire.ProcessError("Invalid address") return address