INNER CODE UNIT · Python
checksum
bee-san/pyWhat · pywhat/bitcoin.py:49
payload, checksum = decoded[:-4], decoded[-4:]
if hashlib.sha256(hashlib.sha256(payload).digest()).digest()[:4] != checksum:
return None
return payload
def bech32_polymod(values: Sequence[int]) -> int:
"""The checksum of Bech32 and Bech32m, a BCH code (BIP 173)."""
checksum = 1
for value in values:
top = checksum >> 25
checksum = (checksum & 0x1FFFFFF) << 5 ^ value
for i, generator in enumerate(BECH32_GENERATOR):
if (top >> i) & 1:
checksum ^= generator
return checksum