以太合约方法 "No mathing event" 错误
Ethers contract on method "No mathing event" error
我刚开始学习ethers
,这是我的代码:
(async () => {
const connection = new ethers.providers.JsonRpcProvider(
"https://mainnet.infura.io/v3/key"
);
const contract = new ethers.Contract(
"0x7be8076f4ea4a4ad08075c2508e481d6c946d12b",
abi,
connection
);
contract.on("atomicMatch_", (...args) => {
console.log(args);
});
})();
所以合约是opensea
主合约-link
我想听 sales transactions/events。正如我在该事件的合同名称中看到的那样,在 ABI 中可能是 Atomic Match_
或 atomicMatch_
。
对于 ABI,我只是将整个合同复制粘贴到 https://remix.ethereum.org/ 网站并复制了 abi 代码。问题是我现在收到这个错误:
Error: no matching event (argument="name", value="atomicMatch_", code=INVALID_ARGUMENT, version=abi/5.5.0)
这里有什么问题?我尝试了两个事件名称,但我一遍又一遍地得到同样的错误...
@edit 这里是sandbox,
当我将事件名称更改为 OrdersMatched
时有什么奇怪的,例如它工作得很好...
Ethers contract.on()
(docs) 在发出具有指定名称的事件时调用。
您的代码段传递的是函数名称 (atomicMatch_
),而不是事件名称。
atomicMatch_
函数有效地发出名为 OrdersMatched
的事件。这就是为什么将处理程序更改为 contract.on('OrdersMatched')
可以解决问题。
此外,沙箱使用 getDefaultProvider()
下的内置提供程序,它通过 WSS 与应用程序通信。您的代码段使用的 HTTPS 提供程序在设计上无法侦听事件。您还需要使用 WSS 提供程序(Infura 支持它们)。
我刚开始学习ethers
,这是我的代码:
(async () => {
const connection = new ethers.providers.JsonRpcProvider(
"https://mainnet.infura.io/v3/key"
);
const contract = new ethers.Contract(
"0x7be8076f4ea4a4ad08075c2508e481d6c946d12b",
abi,
connection
);
contract.on("atomicMatch_", (...args) => {
console.log(args);
});
})();
所以合约是opensea
主合约-link
我想听 sales transactions/events。正如我在该事件的合同名称中看到的那样,在 ABI 中可能是 Atomic Match_
或 atomicMatch_
。
对于 ABI,我只是将整个合同复制粘贴到 https://remix.ethereum.org/ 网站并复制了 abi 代码。问题是我现在收到这个错误:
Error: no matching event (argument="name", value="atomicMatch_", code=INVALID_ARGUMENT, version=abi/5.5.0)
这里有什么问题?我尝试了两个事件名称,但我一遍又一遍地得到同样的错误...
@edit 这里是sandbox,
当我将事件名称更改为 OrdersMatched
时有什么奇怪的,例如它工作得很好...
Ethers contract.on()
(docs) 在发出具有指定名称的事件时调用。
您的代码段传递的是函数名称 (atomicMatch_
),而不是事件名称。
atomicMatch_
函数有效地发出名为 OrdersMatched
的事件。这就是为什么将处理程序更改为 contract.on('OrdersMatched')
可以解决问题。
此外,沙箱使用 getDefaultProvider()
下的内置提供程序,它通过 WSS 与应用程序通信。您的代码段使用的 HTTPS 提供程序在设计上无法侦听事件。您还需要使用 WSS 提供程序(Infura 支持它们)。