我正在尝试收听PairCreated
PancakeSwap 工厂合同上的事件,如果正在发行新令牌,我会收到警告。
我基本上是这样做的:
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/
===========================
我忽略了这一点,因为现在,这只是一个练习,它说它仍然有效。只是很慢。
我使用列出新令牌的公开可用资源来检查我是否应该执行该事件。