Solidity
Web3.js 過濾事件
我的 Dapp 需要動態部署合約。因此,我需要將這些合約的地址儲存在某處並選擇以下解決方案:
- 日誌創建事件
- 根據日誌檢索契約
執行記錄的片段是這個:
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,以便您了解如何使用這些主題。
茶我留下了一個非常有用的連結,其中包含一個類似於您嘗試的案例。關聯