ethereum - 订阅ERC-20时出错(BAT,即Basic Attention Token)
问题描述
我正在尝试订阅 BAT(基本注意令牌)ERC-20 令牌“转移”事件,以检测在 nodejs 中使用 web3 对我的以太坊地址进行的任何交易。我正在使用在同一台本地机器上运行的奇偶校验 (Parity/v1.10.6-stable-bc0d134-20180605/x86_64-linux-gnu/rustc1.26.1) 节点-
parity --jsonrpc-hosts all --jsonrpc-apis all --ws-apis all --ws-hosts all --ws-origins all --ws-interface all
这是我用来订阅的代码 -
const Web3 = require('web3');
const abi = require('human-standard-token-abi');
var contract = '0x0D8775F648430679A709E98d2b0Cb6250d2887EF'; //BAT contract address
var web3Socket = new Web3(new Web3.providers.WebsocketProvider('ws://localhost:8546'));
function tokenEventListener = (address) => {
let token = new web3Socket.eth.Contract(abi, address);
console.log(address);
let subscription = token.events.Transfer({
fromBlock: 0
})
.on('data', (event) => {
// do something
})
.on('error', console.error);
}
tokenEventListener(contract);
运行代码时出现错误 - 错误:连接错误:无法连接到 WS 上的节点
解决方案
这意味着您的节点设置不正确。改变:
var web3Socket = new Web3(new Web3.providers.WebsocketProvider('ws://localhost:8546'));
至
var web3Socket = new Web3(new Web3.providers.WebsocketProvider('wss://mainnet.infura.io/ws'));
这将连接到不需要您托管的 Infura 节点。
推荐阅读
- python - H2O GAM 火车:参数“fold_column”不起作用
- docker - 如何在 Docker 中创建双向绑定卷?
- c++ - IO 饥饿的原因?
- python - Tensorboard libprotobuf.so.23:无法打开共享对象文件:没有这样的文件或目录
- database - 在图形数据库中,基于标记的分页会比基于偏移的分页提供更好的性能吗?
- kubernetes - AlertManager 未将警报转发到 webhook 接收器
- css - 如何使我的html文本背景透明而不使文本透明
- python - 在更新许多不可预测的列时,如何使其他列保持当前值?
- c++ - 调用 isApprox 后 eigen::vector 的范数发生变化
- python - 有没有办法使用 python 的“匹配”语句来测试 Iterable 是否包含模式?