【问题标题】:Listen to Solidity Events using in Javascript using the UseDapp(React)使用 UseDapp(React) 在 Javascript 中收听 Solidity 事件
【发布时间】:2022-06-17 16:23:16
【问题描述】:

我正在使用 useDapp 反应库来使用 useContractFunction 调用 Solidity 上的函数。

 const { state, send, events } = useContractFunction(CreateERC20Contract, 'createToken', { transactionName: 'create a new erc20 token' })

我想在 React 前端使用 useDapp 或我可以与 useDapp 集成的任何其他库来监听智能合约创建的事件。如果有人对如何使用 useDapp 收听 Solidity 合约事件有任何想法,我将不胜感激。

【问题讨论】:

    标签: javascript reactjs ethereum solidity ethers.js


    【解决方案1】:

    监听事件的最佳方式是使用The Graph

    【讨论】:

      【解决方案2】:

      UseDapp 最近为此添加了一个名为 useLogs 的钩子。

      我邀请您到take a look 看看它是否适合您的用例。

      示例

      这将从token 合约的实例中下载所有Transfer 事件,并打印出每个事件的交易哈希和数据。

      const logs = useLogs(
        {
          contract: token,
          event: 'Transfer',
          args: [],
        },
        {
          fromBlock: 0,
          toBlock: 'latest',
        }
      )
      
      logs?.value?.forEach((log) => {
        console.log(log.transactionHash)
        console.log(log.data)
      })
      

      最好使用fromBlocktoBlock 参数来缩小您检查的块的数量,否则对于RPC 提供程序来说查询可能会变得太大。您也可以使用blockHash 来定位特定的块。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-23
        • 2011-11-16
        • 1970-01-01
        • 2022-08-04
        • 2016-04-25
        相关资源
        最近更新 更多