如何校验交易发生在币安智能链BSC网络还是以太坊网络?
BSC/以太坊网络交易校验方法
链ID校验(最常用、最便捷)
每条EVM兼容链都有唯一的链ID标识,你可以在发起交易前、或者交易上链后调用provider接口查询链ID,和已知的链ID做匹配即可:- BSC测试网(Chapel)固定链ID为
97,BSC主网链ID为56 - 以太坊主网链ID为
1,以太坊常见测试网链ID均和BSC测试网不重叠
代码示例:
如果你用web3.js:
const chainId = await web3.eth.getChainId(); const isBscTestnet = chainId === 97;如果你用ethers.js:
const network = await provider.getNetwork(); const isBscTestnet = network.chainId === 97;你也可以在DApp的交易发起逻辑里加前置校验,只要链ID不是97就拦截交易提交,避免误发到其他网络。
- BSC测试网(Chapel)固定链ID为
交易哈希匹配校验
交易上链后会生成唯一的交易哈希,你可以把你DApp生成的交易哈希,放到对应网络的区块搜索工具中查询:如果能查询到完整的交易详情(包括调用的合约地址、转账金额、Gas消耗、出块高度等)和你触发的交易参数完全一致,就说明交易确实在对应网络执行。RPC端点校验
你初始化web3 provider时用的RPC地址是对应网络的专属节点地址,你可以在代码中硬编码BSC测试网的RPC地址白名单,每次发交易前先校验当前连接的RPC地址是否在白名单内,避免provider被意外切换到以太坊节点。
内容的提问来源于stack exchange,提问作者Tapas
相关产品推荐
相关产品推荐

