Можно ли декодировать открытый ключ из "scriptSig", найденного в необработанной транзакции?

7.  "in":[
8.    {"prev_out":
9.      {"hash":"2007ae...",
10.      "n":0},
11.    "scriptSig":"304502... 042b2d..."}],

Строка 11 содержит подпись лица, отправляющего деньги,

304502...

затем пробел, а затем соответствующий открытый ключ

04b2d.... Опять же, они оба в шестнадцатеричном виде.

Могу ли я декодировать шестнадцатеричный открытый ключ в исходный адрес биткойна или это невозможно? Спасибо:)

1 ответ

Решение

Да, это возможно, и вот функция, которая делает это:

pub = 'public key string you wish to decode'

def addr_decode(pub, testnet=True):

    h3 = hashlib.sha256(unhexlify(pub))
    h4 = hashlib.new('ripemd160', h3.digest())

    result =(b'\x00' if not testnet else b'\x6f') + h4.digest()

    h5 = hashlib.sha256(result)
    h6 = hashlib.sha256(h5.digest())

    result += h6.digest()[:4]

    return b58encode(result)

В приведенной выше форме он настроен для testnet, для использования в основной сети просто измените testnet= в False или удалите его из кортежа аргументов функций.

Наслаждаться:)

* модифицировано из репозитория yodro's addgen.

Другие вопросы по тегам