Source code for coinbits.encoding

from collections import deque
from hashlib import sha256

BASE58_DIGITS = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'


[docs]def b58decode(s): result = 0 for c in s: result = result * 58 + BASE58_DIGITS.index(c) return result
[docs]def b58encode(n): result = '' while n > 0: n, rem = divmod(n, 58) result = BASE58_DIGITS[rem] + result return result
[docs]def b256encode(n): result = '' while n > 0: result = chr(n % 256) + result n /= 256 return result
[docs]def b58_check_decode(s): # first, get the number of prefix ones ones = 0 ls = deque(s) while ls and ls.popleft() == '1': ones += 1 s = b256encode(b58decode(s)) result = '\0' * ones + s[:-4] checksum = sha256(sha256(result).digest()).digest()[0:4] assert(checksum == s[-4:]) return result[1:]