Transactions
一種擷取每筆交易實際使用的氣體的方法
兩個問題,相關:
getGasUsed()
TransactionReceipt 上的 真的是實際使用的 gas,而不是估計gasLimit
的 gas 嗎?看起來像但是…- 實際使用的氣體是否可以在 TransactionReceipt 之外獲得(“可讀”)?您可以使用 tx 雜湊或其他材料事後確定實際使用的氣體嗎?
編輯: 剛剛在 web3j 的測試驅動程序中遇到了這個:
EthGetTransactionReceipt etxr = web3j.ethGetTransactionReceipt(txhash).send(); assertTrue(ethGetTransactionReceipt.getTransactionReceipt().isPresent()); TransactionReceipt TXr = etxr.getTransactionReceipt().get();
我試過了,它有效。事後(如在過濾器或 Flowable 中),當我得到 TXhash 時,我可以得到 TXreceipt 並因此得到實際使用的氣體。
為什麼這不容易被發現?
- 是的,
gasUsed
交易收據上的是交易使用的真實氣體。- 習慣的唯一(合理)方法是閱讀收據。
其他不理想的方法是 (a) 從 tx 中讀取所有 OPCODES 並將其成本相加,或 (b) 讀取總塊中使用的氣體並減去塊
gasUsed
中所有其他交易的氣體。