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

    这是一篇关于 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
    翻译&校对: 俊颖 & 阿剑

    转载请注明:比特阁 » 运行以太坊全节点的一项经济激励措施

    喜欢 0

还没有人抢沙发呢~