Web3js

按合約地址和發送者地址過濾事件

  • August 1, 2018

我需要通過兩個參數來觀察事件:代幣合約地址和發送者地址。我找到瞭如何查看合約地址,但不確定如何通過發件人地址查看?我應該為這樣的主題指定地址嗎?:

var eventFilter = web3.eth.filter({
   fromBlock:0,
   toBlock: 'latest',
   address: '0xefcc9f9a5cb3d6062c18eeffdf90a29bb771fccc',
   'topics':[web3.sha3('Transfer(address,address,uint256,uint256)'), web3.sha3('0xdd7b798cbfe06af77fdc4b64e48f71672595adcf')]});
eventFilter.watch(function(error, result) {
   if(error) throw error;
   console.log(result);
});

或者也許有不同的方式?

FilterChange 中的地址是發出合約的地址。

您需要在事件定義中包含發件人地址才能進入 FiltecChange。只有當您索引地址時,它才會顯示在主題中,以便您可以過濾它。

event CalledTrigger (address indexed from, uint256 value1, uint256 value2);

function triggerEvent() public {
 uint256 myVal1 = 9999;
 uint256 myVal2 = 9999;
 emit CalledTrigger2(msg.sender, myVal1, myVal2);
}

但你的問題可能是你的話題

$$ 1 $$是地址的 sha3,而不是我想您要過濾的地址。

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