|
|
|
@ -84,7 +84,7 @@ def convertbits(data, frombits, tobits, pad=True):
|
|
|
|
|
return ret
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def decode(hrp, addr):
|
|
|
|
|
def decode_segwit_address(hrp, addr):
|
|
|
|
|
"""Decode a segwit address."""
|
|
|
|
|
hrpgot, data = bech32_decode(addr)
|
|
|
|
|
if hrpgot != hrp:
|
|
|
|
@ -99,10 +99,10 @@ def decode(hrp, addr):
|
|
|
|
|
return (data[0], decoded)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def encode(hrp, witver, witprog):
|
|
|
|
|
def encode_segwit_address(hrp, witver, witprog):
|
|
|
|
|
"""Encode a segwit address."""
|
|
|
|
|
ret = bech32_encode(hrp, [witver] + convertbits(witprog, 8, 5))
|
|
|
|
|
if decode(hrp, ret) == (None, None):
|
|
|
|
|
if decode_segwit_address(hrp, ret) == (None, None):
|
|
|
|
|
return None
|
|
|
|
|
return ret
|
|
|
|
|
|
|
|
|
@ -111,8 +111,8 @@ class TestFrameworkScript(unittest.TestCase):
|
|
|
|
|
def test_python_bech32(addr):
|
|
|
|
|
hrp = addr[:4]
|
|
|
|
|
self.assertEqual(hrp, "bcrt")
|
|
|
|
|
(witver, witprog) = decode(hrp, addr)
|
|
|
|
|
self.assertEqual(encode(hrp, witver, witprog), addr)
|
|
|
|
|
(witver, witprog) = decode_segwit_address(hrp, addr)
|
|
|
|
|
self.assertEqual(encode_segwit_address(hrp, witver, witprog), addr)
|
|
|
|
|
|
|
|
|
|
# P2WPKH
|
|
|
|
|
test_python_bech32('bcrt1qthmht0k2qnh3wy7336z05lu2km7emzfpm3wg46')
|
|
|
|
|