想监听以太坊pending的交易,但是发现不全

import {ethers} from "ethers"
import fs from 'fs';

var wss = "wss://mainnet.infura.io/ws/v3/*******************";
const wssProvider = new ethers.providers.WebSocketProvider(wss);
wssProvider.on("pending",(txHash) =>{
    //console.log(txHash);
    fs.appendFile('hash.txt', txHash+"\r\n", 'utf8', (err) => {
        if(err){
            fs.appendFile('hasherror.txt', txHash+" "+err.toString()+"\r\n", 'utf8', (err) => {});
        }
    });
});

1,代码很简单,就是基本的逻辑,监听到的哈希记录到文件,但是我发现获取的不全。 2,比如这个监听我开启了1小时,然后我找到这一小时的任意几条交易,有的哈希能搜到,有的搜不到。 3,这套代码我同时启动了3份,分别用了3家不同的节点服务商“infura”,“quiknode”,“alchemy”,看一小时的日志,infura大概是6M,quiknode是4M,alchemy是12M,即便最多的alchemy,也存在很多没有的哈希。 4,按照我的理解,所有的交易都应该会有至少一瞬间处于pending状态,有的话节点服务器就应该推送给我。现在结果是有缺少,那么问题可能是2点:1)不是所有的交易都会进入pending状态。2)免费节点服务商推送的不全,需要付费版就全了 5,求有经验的大佬帮忙,人民币求助,我的微信 332439180

请先 登录 后评论

2 个回答

Jeack
请先 登录 后评论
小蘑菇云
请先 登录 后评论
  • 2 关注
  • 0 收藏,1499 浏览
  • 小蘑菇云 提出于 2023-11-16 11:27