Bitcoind

getrawtransaction 似乎只適用於某些交易

  • December 14, 2017

我正在努力掌握比特幣。我很困惑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文件中執行。

在實踐中,它適用於所有至少有一個未使用輸出的交易,但它相對較慢,並且在某些時候可能會刪除功能。

引用自:https://bitcoin.stackexchange.com/questions/60123