Solidity

如何在 Javascript 中獲取內部事務?

  • March 31, 2021

我正在創建一個用於監控帳戶交易的包裝器。我能夠追踪兩個賬戶之間發生的交易,而如果它通過智能合約發生,我就無法追踪它。在 etherscan 中,我可以在內部事務中看到它。如何在 Javascript 中跟踪內部事務?

Parity 提供了一個非常好的 eth_tracetransaction RPC 命令(和相關呼叫)。這是我知道的唯一獲取痕蹟的方法。“內部交易”只是一個智能合約呼叫另一個智能合約。此數據可在跟踪中找到。請注意,Geth 提供了跟踪,但它們不像 Parity 那樣易於使用。

trace可以使用乙太坊客戶端中可用的模組來跟踪內部交易。除此之外,還有更多選擇:

  • Etherscanner是另一種可用於查找內部交易的工具。
  • Etherquery將所有乙太坊數據上傳到 bigquery,它還具有跟踪內部交易的機制。
  • Parity-trace_callGeth-tracers引入了重放交易並返回那些移動乙太的呼叫的機制。

geth 中引入跟踪器的PRgo允許任何人引入他們自己用或編寫的自定義跟踪器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) {
   ...
});

引用自:https://ethereum.stackexchange.com/questions/52820