Solidity
如何在 Javascript 中獲取內部事務?
我正在創建一個用於監控帳戶交易的包裝器。我能夠追踪兩個賬戶之間發生的交易,而如果它通過智能合約發生,我就無法追踪它。在 etherscan 中,我可以在內部事務中看到它。如何在 Javascript 中跟踪內部事務?
Parity 提供了一個非常好的 eth_tracetransaction RPC 命令(和相關呼叫)。這是我知道的唯一獲取痕蹟的方法。“內部交易”只是一個智能合約呼叫另一個智能合約。此數據可在跟踪中找到。請注意,Geth 提供了跟踪,但它們不像 Parity 那樣易於使用。
trace
可以使用乙太坊客戶端中可用的模組來跟踪內部交易。除此之外,還有更多選擇:
- Etherscanner是另一種可用於查找內部交易的工具。
- Etherquery將所有乙太坊數據上傳到 bigquery,它還具有跟踪內部交易的機制。
- Parity-trace_call和Geth-tracers引入了重放交易並返回那些移動乙太的呼叫的機制。
geth 中引入跟踪器的PR
go
允許任何人引入他們自己用或編寫的自定義跟踪器js
。您可以使用 web3@0.20 以下列方式呼叫這些方法var web3 = require('web3'); web3.web3.currentProvider.sendAsync({ method: "debug_traceTransaction", params: ['0x3fac854179691e377fc1aa180b71a4033b6bb3bde2a7ef00bc8e78f849ad356e', {}], jsonrpc: "2.0", id: "2" }, function (err, result) { ... });