Solidity

Web3.js 過濾事件

  • June 6, 2017

我的 Dapp 需要動態部署合約。因此,我需要將這些合約的地址儲存在某處並選擇以下解決方案:

  1. 日誌創建事件
  2. 根據日誌檢索契約

執行記錄的片段是這個:

event Created(address indexed _who, address indexed _to_whom, uint money, uint _max_duration);

//...

Created(msg.sender, _to_address, money_quantity, _contract_max_duration);

在 web3.js 中,我很難理解如何根據以下條件過濾日誌:Contract Type_who參數以及最終的 _to_whom參數。

我正在獲取所有日誌(在 js 中):

var filter = web3.eth.filter({fromBlock:0, toBlock: 'latest', topics: [/* ????!!! */]});

filter.get(function(error, result) {
  console.log(result)
})

在控制台中,我通過逆向工程獲得了 3 個“主題”的雜湊值,它們是契約類型雜湊值和其他兩個索引事件參數。

假設我想查詢以目前使用者為**_who參數的所有契約類型類型的事件。**我該怎麼做?我在論點中插入什麼?topics

非常感謝

從經驗來看,使用過濾器的問題相當複雜,因為回調的使用和與區塊鏈的同步使得這類實用程序變得困難。

首先,我告訴你,理想的方法是過濾確切的塊,這是唯一給我結果回饋並且不會給我失敗的塊。最快的方法是使用外部日誌來保存交易和地址。

我還建議您查看此 API,以便您了解如何使用這些主題。

茶我留下了一個非常有用的連結,其中包含一個類似於您嘗試的案例。關聯

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