如果你不想自己单独开一个 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=true
ethereum-etl
本身没有 mysql
的参数,是我自己添加的,后面应该会有专门的博文来说这一块,尽情期待。
额度
infura
的额度不是无限的,免费的大概每天 10万
请求,如果只是查询的话,这个额度绰绰有余,但是,如果对接的是 websocket
进行订阅查询的话,额度几分钟就没了。
尽管 web3.js
使用的是长链接 websocket
查询,不需要消耗额度,但是,如果,你订阅了 pending
之后,需要返回状态的时候,还需要进行查询,那么,就非常消耗资源了。
但是, infura
同样也提供 websocket
长链接。
这个长链接不需要消耗额度。
但是,这个长链接返回的数据很有限。
可以自己看一下。
所以,如果要使用订阅获取比如 pending
数据,还是需要自己搭建节点网络。
ps: 2021-9-12 日,我发现了一个非常牛逼的方法。
小狐狸的 eth
主网 rpc
可以无限次查询,至于怎么获得,自己去找吧。
后面的编程方式就是,使用 infura
节点订阅「小狐狸的 rpc
地址,只有 https
查询,没有 wss
」后,用小狐狸的 rpc
查询,完美!