Contract-Development

一個合約可以監聽另一個合約的事件嗎?

  • December 7, 2018

我讀了那個來收聽你需要使用 web3.js 的事件。還有其他方法嗎?一個合約甚至可以以某種方式監聽另一個合約的事件嗎?謝謝!

一個合約不能監聽另一個合約的事件。來自Solidity 文件:

無法從合約中訪問日誌和事件數據(甚至無法從創建日誌的合約中訪問)。

web3.js 是 JSON-RPC 的包裝器,因此訪問事件數據的另一種方法是通過 JSON-RPC 中的“過濾器”,例如eth_newFilter。

請注意合約無法訪問事件和需要 web3.js 的二分法,但 web3.js 無法訪問合約呼叫的返回值。因此,可能需要這樣一種同時使用事件和返回值的模式:

event FooEvent(uint256 n);
function foo() returns (uint256) {
 FooEvent(1337);
 return 1337;
}

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