Events

如何從 Argent 錢包訂閱原生乙太坊轉賬?

  • October 24, 2021

我想知道如何使用topic[0]: 0x7d2476ab50663f025cff0be85655bcf355f62768615c0c478f3cd5293f807365.

如果我的理解是正確的,從下面連結的文件中,這是從 Argent Relayer EOA 到由某些模組合約呼叫的 BaseWallet 合約的本機 ETH 轉移。

https://github.com/argentlabs/argent-contracts/blob/develop/specifications/specifications.pdf https://docs.argent.xyz/wallet-connect-and-argent#meta-transactions-and-relayers

我的問題是具體的事件/功能在哪裡?我嘗試查看智能合約程式碼https://github.com/argentlabs/argent-contracts,試圖找到我可以使用 ABI 從日誌中提取事件的事件簽名,但我找不到合適的事件。這是一個沒有明確事件簽名的匿名事件嗎?我應該如何安全地從日誌中辨識轉移?

我目前的方法是匹配事件日誌,topic[0]: 0x7d2476ab50663f025cff0be85655bcf355f62768615c0c478f3cd5293f807365然後從主題中獲取發件人、收件人和價值

$$ 1,2,3 $$因此。這是這樣做的方法嗎?這安全嗎?

您可以在乙太坊簽名數據庫中搜尋已知事件簽名。

它對應於Invoked(address,address,uint256,bytes)

使用 Etherscan vmtrace它顯示它正在invokeBaseWallet 呼叫 functiun。它執行傳輸.call()並發出呼叫事件。

function invoke(address _target, uint _value, bytes calldata _data) external moduleOnly returns (bytes memory _result) {
   bool success;
   // solium-disable-next-line security/no-call-value
   (success, _result) = _target.call.value(_value)(_data);
   if (!success) {
       // solium-disable-next-line security/no-inline-assembly
       assembly {
           returndatacopy(0, 0, returndatasize)
           revert(0, returndatasize)
       }
   }
   emit Invoked(msg.sender, _target, _value, _data);
}

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