为什么 BLOCKCHAIN.COM API 仅 return 收件人 BASE58 地址并忽略 BECH32s?

Why does BLOCKCHAIN.COM API only return recipient BASE58 addresses and omits BECH32s?

之后,我正在尝试访问比特币区块链中#630873 区块内的所有交易。

import requests

r = requests.get('https://blockchain.info/block-height/630873?format=json')
data = r.json()

检查此区块内的(0 索引)第 4 笔交易时(通过 data['blocks'][0]['tx'][4]['out']),我得到:

[{'n': 0,
  'script': '0014d0aba2c93bac0fcafafe43f2ad39d664ba51910d',
  'spent': False,
  'tx_index': 0,
  'type': 0,
  'value': 19571491},
 {'addr': '1A7tWftaGHohhGcJMVkkm4zAYnF53KjRnU',
  'n': 1,
  'script': '76a9146406a0a47d4ed716f6ddf2eeca20c725932763f188ac',
  'spending_outpoints': [{'n': 0, 'tx_index': 0}],
  'spent': True,
  'tx_index': 0,
  'type': 0,
  'value': 3928145371}]

仅包含此交易的第二个收款人的addr。在 blockchain.com 网站上,此交易如下所示:

bc1q6z469jfm4s8u47h7g0e26wwkvja9rygdqpeykd 地址在那里可见。如何通过API访问它?

不可访问地址格式为BECH32,可访问地址格式为BASE58(我在网站上点击地址获取的信息)。我能够检索到收件人地址的那些交易具有 BASE58 格式。

Link to the block I am talking about..

Blochchain.com API 还不完全支持 bech32 地址。

因此您可以使用其他提供商,例如 Blockstream 或 Blockchair。

或者您也可以从 P2WPKH 脚本中导出地址。例如使用 BitcoinLib(免责声明:我的图书馆):

from bitcoinlib.transactions import script_deserialize
from bitcoinlib.keys import Address

locking_script = '0014d0aba2c93bac0fcafafe43f2ad39d664ba51910d'
scr = script_deserialize(locking_script)
a = Address(hashed_data=scr['hashes'][0], script_type=scr['script_type'])
print(a.address)