NodeJS 有哪些方法可以自动接收更新后的以太坊钱包余额?

ovfsdjhp  于 2023-01-20  发布在  Node.js
关注(0)|答案(1)|浏览(136)

我在Google上看了很多选项,除了如何订阅事件web3.eth.subscribe("newBlockHeaders"...之外,没有找到任何东西,或者根本不起作用。但我认为这个解决方案是最耗费资源和效率最低的。告诉我这是我唯一能实现的方法吗?有没有付费的解决方案?
我的任务是跟踪钱包的余额并在更新时通知用户。通过更新余额,我的意思是当钱包中发生事件时:
1.收到转账
1.转账已发送

ie3xauqp

ie3xauqp1#

这是一个示例合约,它有两个发出“TransferReceived”和“TransferSent”的函数。

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;

contract Sample {

    event TransferReceived(address sender, uint amount);
    event TransferSent(address sender, uint amount);

    function SendTransfer() public payable{
        emit TransferSent(msg.sender, msg.value);
    }

    function ReceiveTransfer(uint amount) public {
        emit TransferReceived(msg.sender, amount);        
    }
 }

这是一段Javascript代码,用于监听样本合约上的两个事件。

const contractAddress = process.env.CONTRACT_ADDRESS;
const provider = new ethers.providers.WebSocketProvider(process.env.WEB_SOCKET);

const contract = new ethers.Contract(contractAddress, abi, provider);

export async function handleEvents() {
    contract.on("TransferReceived", async (sender, amount,event) => {
        //Do Something 
    })

    contract.on("TransferSent", async (sender, amount, event) => {
      //Do something
    });
  }

您可以从Alchemy或Infura等节点提供者那里获得WebSocket URL。

相关问题