使用 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.'}
谁能解释一下我的误解?
转载:
- python版本:Python3.7.3
- 我通过以下方式安装了 bitcoin.rpc:
pip3 install python-bitcoinlib
- bitcoin-cli 版本:Bitcoin Core RPC 客户端版本 v0.20.1
运行 作为 bitcoind -txindex
的客户端解决了问题,因为它维护了完整的事务索引。我应该多注意错误信息...
摘自bitcoind --help
:
-txindex
Maintain a full transaction index, used by the getrawtransaction rpc
call (default: 0)
我想从比特币区块链中提取所有已确认的交易。我知道那里有回购协议(例如 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.'}
谁能解释一下我的误解?
转载:
- python版本:Python3.7.3
- 我通过以下方式安装了 bitcoin.rpc:
pip3 install python-bitcoinlib
- bitcoin-cli 版本:Bitcoin Core RPC 客户端版本 v0.20.1
运行 作为 bitcoind -txindex
的客户端解决了问题,因为它维护了完整的事务索引。我应该多注意错误信息...
摘自bitcoind --help
:
-txindex
Maintain a full transaction index, used by the getrawtransaction rpc
call (default: 0)