如果你不想自己单独开一个 eth 的节点,可以使用免费的 eth 云节点。
因为有一个解析 eth 转账的业务,也就是拿到 eth 的各种块,如果有需要记录的地址,就把该转账记录存下来。
但是,你自己要是做 eth 节点的话,需要一个比较好的机器,个人成本比较大,但是,网上有那种开源的 eth 云节点,即 infura。
所以,infura 我使用的仅仅只是云节点功能而已。
看我下面的截图。

创建一个 project ,然后得到 HttpService的Url,这就相当于你的云节点的地址,通过访问它,就可以进行一系列操作。
其中只有mainnet是主链,也就是真实交易链,其他的都是测试链。它们的chainid不同。
关于这个云节点还可以做各种 dapp 项目的测试节点,具体可以参考下面的博文。
因为,我只是解析转账记录,所以,这里我用的是 ethereum-etl 开源项目。
这里贴一下,我的启动命令。
pycharm 启动命令
stream --start-block 1383977 -l eth.txt -e token_transfer,token,transaction --provider-uri https://mainnet.infura.io/v3/f818ac9fb14a4a0e8****** --output mysql+mysqlconnector://****?autocommit=true命令行启动命令
python ethereumetl.py stream --start-block 1383977 -l eth.txt -e token_transfer,token,transaction --provider-uri https://mainnet.infura.io/v3/f818ac9fb14a4a0e8****** --output mysql+mysqlconnector://****?autocommit=trueethereum-etl 本身没有 mysql 的参数,是我自己添加的,后面应该会有专门的博文来说这一块,尽情期待。
额度
infura 的额度不是无限的,免费的大概每天 10万请求,如果只是查询的话,这个额度绰绰有余,但是,如果对接的是 websocket 进行订阅查询的话,额度几分钟就没了。
尽管 web3.js 使用的是长链接 websocket 查询,不需要消耗额度,但是,如果,你订阅了 pending 之后,需要返回状态的时候,还需要进行查询,那么,就非常消耗资源了。
但是, infura 同样也提供 websocket 长链接。
这个长链接不需要消耗额度。
但是,这个长链接返回的数据很有限。
可以自己看一下。
所以,如果要使用订阅获取比如 pending 数据,还是需要自己搭建节点网络。
ps: 2021-9-12 日,我发现了一个非常牛逼的方法。
小狐狸的 eth 主网 rpc 可以无限次查询,至于怎么获得,自己去找吧。
后面的编程方式就是,使用 infura 节点订阅「小狐狸的 rpc 地址,只有 https 查询,没有 wss」后,用小狐狸的 rpc 查询,完美!