查看原文
其他

干货 | 运行以太坊全节点的一项经济激励措施

Andrey Petrov 以太坊爱好者 2019-01-23

这是一篇关于 vipnode(一个以太坊基金会的资助项目)的文章。



全节点,轻节点:它们有何不同?


连接到以太坊网络时,你可以使用 全节点,也可以使用 轻节点(也就是大家熟悉的 轻客户端)。


全节点可以拷贝以太坊区块链的全部状态,并执行每项需要“挖矿”的交易。——这就需要超过 120GB 的存储空间和 8GB 以上的内存。一个全节点需要花上几个小时连接网络并实现完全同步。如果你想在云端运行全节点,那这笔花销会非常非常大。


当轻节点与全节点通信时,轻节点只用最小量的状态来把握区块链。因此我们只需几百 MB 的存储空间和 128~512 MB 的内存。轻节点的目标是小到可以在手机或嵌入式设备上运行。


每当轻节点想要查询区块链或者发送一项交易,它必须请求一个全节点以它的名义进行操作。实际上,轻节点就像一个“吃白食的人”,但也 OK 啦。


轻节点几乎可以瞬间连接到网络并开始使用,假设它能找到一个全节点(还带有一个可用的轻节点位置)。



“为什么我的轻节点不能连接到网络?”


在2017年末发生了两件事,使得轻节点遭受重创。


1. 以太猫


大量新用户涌入以太坊网络,其中很多人依靠轻节点来交易他们的猫咪并且赚钱。通过观察我们可以看到,随着交易费用的上升,使用量也在飙升:


-https://etherscan.io/chart/transactionfee-


2. Light Ethereum Subprotocol 升级


大约在同一时间,LES/2 发布——这是一项用于服务轻节点的协议升级。新协议仍然被认为是实验性质的,对于服务器的实现仍有许多问题未解决。这就意味着许多客户端已切换到新的协议,但是许多旧的全节点仍然在运行旧的代码,而这些代码并不支持升级。


但结果呢?


那段时间,我自己在运行一些轻节点。通常情况下,我启动轻节点之后,它会在一分钟内开启并运行。到了 12 月,这一切都打破了。一夜之间,我的节点不再运行,它一直无法找到一个与之兼容而且还留有位置的全节点。


关于这个项目的 Github Issues 上也到处都是吐槽:


-https://github.com/ethereum/go-ethereum/issues?utf8=%E2%9C%93&q=syncmode+light+peers-



我们需要更多留有轻节点位置的全节点!


好吧。我们要如何“说服”更多的节点花费时间和精力去运行具有潜在风险的实验代码呢?有一项经济激励措施是可行的。


-https://vipnode.shazow.net/-


Vipnode 的第一个版本非常简单:我部署一个由特定驱动程序控制的全节点,该程序可以监视为订阅者而设的智能合约。当有人购买 VIP 会员时,他的公钥(也就是 enode ID)就会被添加到我的 vipnode 服务器的白名单上。这就意味着,即使我的服务器已经满了,它仍然能允许VIP绕过服务器的限制。


在与 Robbie Bent 和 Jon Choi 聊天之后(再次感谢),他们给了我很大的鼓励,我决定向以太坊基金会提交一份基金申请方案,以构建更完整的 vipnode 版本。


vipnode 池


在版本 2 的方案中,我概述了 vipnode 池的设计。任何全节点都可以加入 vipnode 池,服务 VIP 用户,并开始从中赚取一定比例的收益。


为了能够跟踪每个节点所应得的份额,我们必须依赖于以太客户端的一些特性:


  • 客户端可以指定一个 ethstats 服务器,用于接收有关该客户端的分析,比如它连接到哪个对等节点(peer)。vipstats 服务器将利用这些信息来接收客户端对其所连接的 vipnode 的支付请求。

  • 服务器可以通过 RPC API 进行控制。组建 vipnode 的进程可以使用 PRC API 来管理白名单中的对等点(Parity 可以支持这项操作,Geth 还要等我的 PR 合并之后再定)。当一个新的 VIP 注册时,池中的所有成员都会被要求把新的 enode ID 添加进白名单。当一个 VIP 连接时,该节点将向 vipstatsserver 发送一个支付请求。

  • 当 vipstats 服务器证实来自客户端和服务器的支付请求时,它会向服务器支付该池一定比例的收益作为费用。但这笔费用的结构还没有确定。也许是以单位时间计算,或是一个固定的费率,或者其它。每个池都可以决定自己的结构。

  • 如果出现不一致,那么 vipnode 将拒绝对此进行计算,服务器也会断开一个无法及时证实该请求的客户端。

  • vipstats 服务器还将充当一个自定义引导服务器,VIPs 可以用它来引导客户端连接到正确的全节点集合。


激励措施延伸


vipnode 设计可以扩展到对所有类型的服务器 - 客户端实行激励措施。想象一下,不同种类的池子你可以用不同的担保来支付:


  • 用于管理集群的池(像 Infura 池,一个 分布式 的Infura)

  • 具有风险性实验特征的池(像 LES/2 首次发布时那样)

  • 用于支持非标准扩展 API 的池(使用反向索引支持像 Etherscan API 这样的复杂查询)

  • 为大矿工设立的池。当时间要求精确到毫秒时,保证直接接触一些最大的矿工是有价值的


我们可以用 vipnode 池的设计来衡量市场需求。任何人都可以启动一个池,并投入初始资金,以此鼓励人们运行全节点来获取另一端的节点。


我们现在到哪一步了?


我已经开始为 vipnode 池的实现做准备啦。我的目标是在 2018 年 8 月进行测试,在 9 月推出一个更完善的版本。


在 MIT 许可下,这些都是开源的。你可以关注:

https://github.com/vipnode


这里可以看到关于我们的新闻:

https://tinyletter.com/vipnode


如果你想试运行第一版,点击:

https://vipnode.shazow.net/


特别感谢以太坊基金会对这项研究和开发的支持。对于他们的理想、慷慨和高效,我深受感染。我也很荣幸成为其中的一分子。



原文链接: https://medium.com/@shazow/an-economic-incentive-for-running-ethereum-full-nodes-ecc0c9ebe22
作者: Andrey Petrov
翻译&校对: 俊颖 & 阿剑


本文由作者授权 EthFans 翻译及再出版。



你可能还会喜欢:

6种以太坊钱包的基本介绍
干货 | 以太坊的工作原理
干货 | Merkle Patricia Tree  详解

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存