Как получить адреса из транзакции (биткойн-блокчейн)

Я делаю быстрый анализ блокчейна, и возникает вопрос об определении адреса для входной транзакции.
Так, scriptSig является шестнадцатеричным:

 len:       107
scriptSig: 483045022100fffc98a7bcbe7fc6d6716775794f59551e335914683fd1ed6fcdae40c68918310220763ceeb8b9bf168f75b98e4a1dd774072e8816fec384a6228b1ecbfbcbf8239d012102d939f9164fc61e89eaf18841cc13f08721ce9ef671f3751a1536a10af752881f

или же

PUSHDATA[72] 3045022100fffc98a7bcbe7fc6d6716775794f59551e335914683fd1ed6fcdae40c68918310220763ceeb8b9bf168f75b98e4a1dd774072e8816fec384a6228b1ecbfbcbf8239d01
PUSHDATA[33] 02d939f9164fc61e89eaf18841cc13f08721ce9ef671f3751a1536a10af752881f

Правильно я понимаю, что для вычисления адреса нам сначала нужно получить сжатый ключ (pushdata [33]) — несжатый методом https://en.bitcoin.it/wiki/Secp256k1?

Я попробовал этот метод, используя OpenSSL

EC_KEY* key=EC_KEY_new_by_curve_name(NID_secp256k1);
if (key)
{
EC_KEY* r=o2i_ECPublicKey(&key, &keypart, 33);
if (r)
{
EC_KEY_set_conv_form(key, POINT_CONVERSION_UNCOMPRESSED);
char key_result[65];
int size=i2o_ECPublicKey(key, &key_result);
}
EC_KEY_free(key);
}

openssl указывает, что

key_result [65] = 04d939f9164fc61e89eaf18841cc13f08721ce9ef671f3751a1536a10af752881f42a2f60dd229dca9adbc86f16104a0114f8d1458fda83d4a747476d137e0fd18

Из которого я затем определяю адрес (согласно алгоритму, описанному в https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses)

но к сожалению я ошибаюсь 1LzATNQX57AEZ1qXKbHemS1gRxMayito1n


Это про блок № 170058 https://blockexplorer.com/block/000000000000047e131d31e3cd3c8e673c117136b72fd5d67b8b1bffbde04772
и его последняя транзакция № 17 из 1KqydgzrzK28T6rdPVoLaASp3i4BZ5CGTb (1.75723208 BTC)

то есть вместо 1KqydgzrzK28T6rdPVoLaASp3i4BZ5CGTb Я получаю другое.

Как из указанной формы sriptSig правильно рассчитать адрес?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector