Bitcoind
getrawtransaction 似乎只適用於某些交易
我正在努力掌握比特幣。我很困惑
getrawtransaction
。我想看看 block 中的第一筆交易277316
。from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException # rpc_user and rpc_password are set in the bitcoin.conf file p = AuthServiceProxy("http://%s:%s@127.0.0.1:8332"%(username, pw)) # look at specific block blockheight = 277316 # get the hash of that block block_hash = p.getblockhash(277316) # get the block block = p.getblock(block_hash) # get the transactions in the block transactions = block['tx'] first_transaction = transactions[0] print p.getrawtransaction(first_transaction)
給出這個錯誤:
bitcoinrpc.authproxy.JSONRPCException: -5: No such mempool transaction. Use -txindex to enable blockchain transaction queries. Use gettransaction for wallet transactions.
它似乎只想在
mempool
. 如何使用-txindex
它建議的參數?如果我執行下面的程式碼,它工作正常。這也是來自同一個區塊的交易(第 64 個交易),顯然不在記憶體池中。這與我在上面的程式碼中獲取交易 ID 的方式有什麼區別?
print p.getrawtransaction('0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2')
getrawtransaction
僅保證適用於記憶體池事務,除非您使用-txindex
命令行標誌或txindex=1
在您的bitcoin.conf
文件中執行。在實踐中,它適用於所有至少有一個未使用輸出的交易,但它相對較慢,並且在某些時候可能會刪除功能。