订阅 ERC-20(BAT,即基本注意令牌)时出错

Posted

技术标签:

【中文标题】订阅 ERC-20(BAT,即基本注意令牌)时出错【英文标题】:Error when subscribing to ERC-20 (BAT, i.e. Basic Attention Token) 【发布时间】:2019-01-03 15:08:48 【问题描述】:

我正在尝试订阅 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 上的节点

【问题讨论】:

【参考方案1】:

这意味着您的节点设置不正确。变化:

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 节点。

【讨论】:

@dkpaul91 如果此答案正确,请将其标记为正确,以便将来的读者知道此问题已解决。

以上是关于订阅 ERC-20(BAT,即基本注意令牌)时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何在 rinkeby 和 ropsten 上获取测试令牌

发送 ERC-20 令牌失败。交易成功,但没有发送令牌

使用 PHP 将 ERC20 代币从一个账户转移到另一个账户

令牌合约不会迁移,因为它是抽象的

使用 web3 发送 ERC20 令牌

如何使用 web3 库发送 ERC20 令牌