Merge bitcoin/bitcoin#24324: test: refactor: remove unneeded bytes<->hex conversions in `byte_to_base58`

f11dad22a5 test: refactor: remove unneeded bytes<->hex conversions in `byte_to_base58` (Sebastian Falbesoner)

Pull request description:

  It seems like the only reason for using hex strings in this method was to have a convenient way to convert to an integer from the input data interpreted as big-endian. In Python3 we have `int.from_bytes(..., 'big')` for that purpose, hence there is no need for that anymore and we can simply operate on bytes only.

ACKs for top commit:
  laanwj:
    Code review ACK f11dad22a5

Tree-SHA512: 9b1563010066ca74d85139c3b9259e9a5bb49e1f141c30b6506a0445afddb2bde7fd421fdd917dc516956e66f93610e2c21d720817640daee8f57f803be76ee4
pull/24347/head
MarcoFalke 3 years ago
commit 7164e00e1b
No known key found for this signature in database
GPG Key ID: CE2B75697E69A548

@ -55,17 +55,15 @@ def create_deterministic_address_bcrt1_p2tr_op_true():
def byte_to_base58(b, version): def byte_to_base58(b, version):
result = '' result = ''
str = b.hex() b = bytes([version]) + b # prepend version
str = chr(version).encode('latin-1').hex() + str b += hash256(b)[:4] # append checksum
checksum = hash256(bytes.fromhex(str)).hex() value = int.from_bytes(b, 'big')
str += checksum[:8]
value = int('0x' + str, 0)
while value > 0: while value > 0:
result = chars[value % 58] + result result = chars[value % 58] + result
value //= 58 value //= 58
while (str[:2] == '00'): while b[0] == 0:
result = chars[0] + result result = chars[0] + result
str = str[2:] b = b[1:]
return result return result

Loading…
Cancel
Save