TLDR:在大多数情况下,你不应该托管你的以太坊节点,但这也要视情况而定。
最近,我有机会在以太坊网络中重构一个有点大的 Dapp,我开始忙于解决继续托管节点的问题,或者只是使用 KISS 架构(保持简单,愚蠢)和只需使用可信方服务即可。
目录
- 为什么你需要一个以太坊节点?
- 托管你的以太坊节点的优势
- 使用受托方以太坊服务的优势
- 价格比较
1. 为什么你需要一个以太坊节点?
如果你是一个dapp开发者,你可能需要一些链外基础设施,以运行cronjob任务或自动管理私钥,等等。
以编程方式与以太坊网络互动的唯一最佳方式是使用Geth给你的API,它允许你将你的链外逻辑与签署交易的逻辑以及网络同步和通信的方式分开。
2. 托管你的以太坊节点的优势
托管你的节点,给你更多:
- 隐私:你没有分享对受信任方节点的访问。
- 可用性:无论一个第三方有多么值得信任,总会有一些停机时间,即使只有几秒钟或几分钟,你必须在你的代码中加入一些重试逻辑来处理这些。
- 灵活性:你可以在你的 Geth 节点内托管私钥(不推荐这样做!)并立即跳过所有的签名交易。
在我看来,这是3个最重要的优势,但如果你决定走这条路,肯定还会发现其它的优势。
3. 使用可信方以太坊服务的优势
这里要考虑的第一件事是决定你应该选择哪个供应商,有一大堆供应商,随着时间的推移,会出现更多的供应商。
我能想到的顶级供应商是Infura、Alchemy,以及最近的Etherscan。
我为我所做的项目选择了Etherscan,因为除了通常的Geth端点之外,他们还有额外的端点,其次,我已经在使用他们的网站来追踪项目的钱包和合约,所以直接使用他们的API也是非常有意义的。
使用受托方服务的一些优势是:
- 心态:你不必担心升级节点,总是不断查看每个版本的补丁说明很烦人。
- 睡眠时间:每次节点发生故障时,你的工作不是去排除故障并尽快修复,由于这些受信任的各方已经有大量的运行节点的经验,他们可能根本不会在发生故障时惊慌。
- 成本优化:对于大多数应用程序,你不会每分钟进行大量的交易,这使你几乎可以无限期地运行在他们的免费层(下面有更多细节)。
- 2层:当你要转移到第二层甚至另一个网络如Binance智能链时,你所要做的就是改变基本的API端点,因为接口几乎是相同的,基本就像在以太坊链上一样。
使用受托方的一个主要缺点是,你将缺少让Geth管理你的私钥和交易签名的功能,所以你在开发与区块链的集成时需要考虑这一点。
4. 价格比较
自我托管和受托方之间的成本比较。
只是要多说几句,我们的eth合约有定义明确的事件,这使得抓取网络更加容易。
我所要做的就是用我们的合约地址调用eth_getLogs端点,它最多可以返回1000个事件,我想要多少块就有多少块。
我做了一些计算,在最极端的情况下,我们每次调用只能抓取25个区块,这将给我们带来每区块约40个事件,这对我们的使用来说是绰绰有余。
我们在AWS中运行节点的成本如下:
- 当前网络大小约为 1TB,这相当于附加到我们正在运行的实例的 EFS 每月约 300 美元
- 我们为 Geth 节点运行了一个非常大材小用的实例,每月花费我们大约 200 美元(因为我们还在那里与 Geth 并排运行一些服务)
- 我没有计算实例的出口流量
在迁移到Etherscan API后,我们完全删除了EFS存储,并将实例降级为1/4,最终每月节省了约450美元的AWS账单。
在新的Etherscan API中,我们能够无限期地使用免费层,因为我们有这样的优化请求。
简而言之,每个案例都是不同的。但是,在任何项目的最初阶段,使用一个值得信赖的第三方总是有利的,以后你可以重新考虑升级到一个自我托管的节点。
所有评论