1

我正在尝试收听PairCreatedPancakeSwap 工厂合同上的事件,如果正在发行新令牌,我会收到警告。

我基本上是这样做的:

const ethers = require('ethers');

const addresses = {
    WBNB: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
    factory: "0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73",
}

const mnemonic = "my_seed_phrase"

const provider = new ethers.getDefaultProvider()
const wallet = ethers.Wallet.fromMnemonic(mnemonic);
const account = wallet.connect(provider)

const factory = new ethers.Contract(
    addresses.factory,
    ['event PairCreated(address indexed token0, address indexed token1, address pair, uint)'],
    account
);

factory.on("PairCreated", async (token0, token1, addressPair) => {
    console.log(`
    ~~~~~~~~~~~~~~~~~~
    New pair detected
    ~~~~~~~~~~~~~~~~~~
    token0: ${token0}
    token1: ${token1}
    addressPair: ${addressPair}
    `);
})

现在我不确定这是否有效,因为我不确定我是否可以为此使用任何提供程序,或者我是否需要一个WebSocketProvider.

根据我从 ethers 文档中收集到的信息,上面的代码应该没问题并且应该可以工作。现在它似乎不起作用,因为我从来没有收到警报。一段时间后我确实收到了这个警告:

========= 通知 =========

Request-Rate Exceeded(此消息将不再重复)

每个服务的默认 API 密钥作为低流量项目和早期原型设计的高度限制的社区资源提供。

虽然您的应用程序将继续运行,但我们强烈建议您注册自己的 API 密钥以提高性能、提高请求率/限制并启用其他特权,例如指标和高级 API。

更多详情:https ://docs.ethers.io/api-keys/

===========================

我忽略了这一点,因为现在,这只是一个练习,它说它仍然有效。只是很慢。

我使用列出新令牌的公开可用资源来检查我是否应该执行该事件。

4

0 回答 0