node.js - 如何构建与 BSC 测试网或主网通信的 nodejs api 以使用 web3js 监听智能联系人事件
问题描述
我已经按照本指南https://docs.binance.org/smart-chain/developer/deploy/truffle.html在带有 HDWalletProvider 的松露中将我的智能合约部署到 BSC 测试网,如下所示:
const HDWalletProvider = require('@truffle/hdwallet-provider');
module.exports = {
networks: {
testnet: {
provider: () => new HDWalletProvider(mnemonic, `https://data-seed-prebsc-1-s1.binance.org:8545`),
network_id: 97,
confirmations: 10,
timeoutBlocks: 200,
skipDryRun: true
},
},
}
我可以从前端连接智能合约,但我会喜欢创建一个 nodejs api 端点来使用 websocket 连接来监听智能合约事件。
在网上做了一些关于如何解决这个问题的研究后,我看到的更接近我想要的特定参考是这里哪种有意义但令人困惑,所以这是我的疑问
从链接中,安装 web3js 后,我需要连接到 web3js,如下所示
const web3 = new Web3(new web3.providers.WebsocketProvider('ws://localhost:8546'));
但在我的情况下,我可以替换为ws://localhost:8546
,ws://data-seed-prebsc-1-s1.binance.org:8545/
因为我连接的是 BSC 测试网而不是本地主机,如果我通过替换链接成功连接?当我需要监听特定的智能合约事件时,如何添加我的智能合约地址。
通过一些小挖掘,我意识到我可能需要一个区块链节点提供商,例如getblock.io
,quicknode.com
如果我要将它们与我部署的智能合约一起使用,我该怎么做,或者我必须以某种方式重新部署我的智能合约,或者也许我什至根本不需要它们。
如果有人能帮助回答我的问题,我会很高兴,谢谢。
解决方案
推荐阅读
- css - 如何增加 Primefaces Checkbox 的高度和宽度
- django - 使用自动重试、退避和抖动对 celery 任务进行单元测试时出现 AssertionError
- c++ - C++ 类型推断
- java - 在 Hibernate HQL 中,我如何过滤以我的主表为父级的连接表的结果?
- angular - TypeError 中的错误:执行 ng serve 时无法读取未定义的属性“标志”
- mysql - MySQL“错误1262(01000):第1行被截断;它包含的数据多于输入列”这是为什么?
- hibernate - 使用 JPA 通过联合生成的访问视图
- apk - 执行 msfvenom 时如何解决此错误?
- c - 通过子进程和未命名的 posix 信号量增加计数器变量不起作用
- microsoft-graph-api - 首选副本不可用 - Microsoft Graph