建议和反馈

请填写你的反馈内容

问答 > Python > 问答详情

如何从交易中获取地址(比特币区块链)10LK

我对区块链进行了快速解析,并且对输入交易的地址定义存在疑问。因此,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 及其来自1KqydgzrzK28T6rdPVoLaASp3i4BZ5CGTb(1.75723208)的最后一笔交易

也就是说,我得到了另一个,而不是1KqydgzrzK28T6rdPVoLaASp3i4BZ5CGTb

如何从指定格式sriptSig正确计算地址?


2020-10-27
0
请先登陆或注册

暂无回答!

求助中

解决了这个问题,预计可以帮助到

  • 0
  • 4
  • 1
  • 5
  • 2
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励