【发布时间】:2022-06-25 03:41:35
【问题描述】:
我有一份 Eth 用户存款地址列表。他们可以向这些地址进行外部 USDT 转账。如何订阅 USDT 合约并过滤我拥有的所有存款用户地址。我的用户数量会不断增长。
我知道我可以过滤 1 上的传输事件来解决。但是如何过滤数千个地址?
【问题讨论】:
标签: javascript node.js ethereum solidity web3js
我有一份 Eth 用户存款地址列表。他们可以向这些地址进行外部 USDT 转账。如何订阅 USDT 合约并过滤我拥有的所有存款用户地址。我的用户数量会不断增长。
我知道我可以过滤 1 上的传输事件来解决。但是如何过滤数千个地址?
【问题讨论】:
标签: javascript node.js ethereum solidity web3js
您可以使用 web3 事件处理程序 options 对象 (docs) 来订阅仅发送给指定收件人的传输。
例子:
usdtContract.events.Transfer({
filter: {
// `to` is the name of the indexed Solidity event topic, as in
// `event Transfer(address indexed from, address indexed to, uint value)`
to: ["0x123", "0x456", "0x789"]
}
}, (err, data) => {
// ...
});
【讨论】:
usdtContract 对象并再次调用处理程序来做到这一点......或者您可以使用通用 web3 subscribe 处理程序及其方法 unsubscribe() (docs) 允许您取消订阅和重新订阅再次。