使用 python 从比特币区块中提取所有已确认的交易

Extract all confirmed transactions from a bitcoin block using python

我想从比特币区块链中提取所有已确认的交易。我知道那里有回购协议(例如 https://github.com/znort987/blockparser),但我想自己写一些东西以便更好地理解。

我在下载了超过 42 个块之后尝试了以下代码,而 运行 bitcoind(最小示例):

from bitcoin.rpc import RawProxy

proxy = RawProxy()
blockheight=42
block = proxy.getblock(proxy.getblockhash(blockheight))
tx_list = block['tx']

for tx_id in tx_list:
    raw_tx = proxy.getrawtransaction(tx_id)

这会产生以下错误:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/home/donkeykong/.local/lib/python3.7/site-packages/bitcoin/rpc.py", line 315, in <lambda>
    f = lambda *args: self._call(name, *args)
  File "/home/donkeykong/.local/lib/python3.7/site-packages/bitcoin/rpc.py", line 239, in _call
    'message': err.get('message', 'error message not specified')})
bitcoin.rpc.InvalidAddressOrKeyError: {'code': -5, 'message': 'No such mempool transaction. Use -txindex or provide a block hash to enable blockchain transaction queries. Use gettransaction for wallet transactions.'}

谁能解释一下我的误解?

转载:

运行 作为 bitcoind -txindex 的客户端解决了问题,因为它维护了完整的事务索引。我应该多注意错误信息...

摘自bitcoind --help

-txindex
       Maintain a full transaction index, used by the getrawtransaction rpc
       call (default: 0)