From 52db317acc3df9d6a594b8ec30408f59e7495d06 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Fri, 8 Mar 2019 15:49:56 -0800 Subject: [PATCH] Add script to convert between old and new style Hush addresses Example: $ ./contrib/convert_address.py t1QkTnFb9hsvkfn1kaEVf2c6pzQhkCM9zvD RGA3rS4JLNwj99L46yfezKL7W1yG5MiUam --- contrib/convert_address.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100755 contrib/convert_address.py diff --git a/contrib/convert_address.py b/contrib/convert_address.py new file mode 100755 index 000000000..37195a8cf --- /dev/null +++ b/contrib/convert_address.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 +# Copyright (c) 2019 Hush developers + +import sys +import base58 +from binascii import unhexlify +from base58 import b58encode, b58decode_check +from hashlib import sha256 + +# based on https://github.com/KMDLabs/pos64staker/blob/master/stakerlib.py#L89 +def addr_convert(prefix, address, prefix_bytes): + rmd160_dict = {} + # ZEC/HUSH/etc have 2 prefix bytes, BTC/KMD only have 1 + # NOTE: any changes to this code should be verified against https://dexstats.info/addressconverter.php + ripemd = b58decode_check(address).hex()[2*prefix_bytes:] + net_byte = prefix + ripemd + bina = unhexlify(net_byte) + sha256a = sha256(bina).hexdigest() + binb = unhexlify(sha256a) + sha256b = sha256(binb).hexdigest() + final = b58encode(unhexlify(net_byte + sha256b[:8])) + return(final.decode()) + +if len(sys.argv) < 2: + sys.exit('Usage: %s hushv2address' % sys.argv[0]) + +address = sys.argv[1] +# convert given address to a KMD address +print(addr_convert('3c', address,2))