INNER CODE UNIT · Python
base58_decode
bee-san/pyWhat · pywhat/bitcoin.py:28
def base58_decode(text: str) -> bytes:
"""Decode Base58 text. Raises ValueError if it is not Base58."""
number = 0
for char in text:
digit = BASE58_ALPHABET.find(char)
if digit < 0:
raise ValueError(f"{char!r} is not a Base58 character")
number = number * 58 + digit
# Every leading "1" stands for a leading zero byte
zeros = len(text) - len(text.lstrip(BASE58_ALPHABET[0]))
return bytes(zeros) + number.to_bytes((number.bit_length() + 7) // 8, "big")
def base58check_decode(text: str) -> Optional[bytes]:
"""The payload of Base58Check text, or None if its checksum is wrong."""
try:
decoded = base58_decode(text)
except ValueError: