Alert Source Discuss
🛑 Withdrawn Standards Track: Core

EIP-908: 为了可持续的网络,奖励客户端

Authors James Ray (@jamesray1), Micah Zoltu (@MicahZoltu)
Created 2018-03-01
Discussion Link https://ethereum-magicians.org/t/eip-908-reward-full-nodes-and-clients/241

运行完整节点的奖励已被弃用,但客户端奖励的提案仍然存在

虽然 Casper 验证者被激励去验证交易,但仍然没有激励措施来传递区块和存储数据(包括状态)。本文更像是一个高层次的分析和讨论,而不是试图提供一个具体的解决方案。Pocket Network 是一个独立区块链,截至 2018 年 9 月的设计目标是激励传递交易,旨在与其他区块链兼容。另请注意,Rocket Pool 正在开发中,计划成为 Casper 的一个池,这将有助于激励运行一个完整节点。另一种选择是 VIPnode,它向为其提供服务的完整节点的轻客户端收取费用。鉴于这些解决方案正在开发中,也许更合适的奖励客户端方法是激励带宽(中继和下载)、存储和 I/O(而计算已经通过矿工的 gas 费用来激励,并且在分片和 Casper 下也将激励提议者)。另请注意,在分片下,公证人将被激励去下载整理。已过时(Casper FFG 将通过带有分片的 Ethereum 2.0 实现:shasper):鉴于 Casper FFG 看起来将很快实现,为了最大限度地减少对协议的不必要的复杂性,在此期间激励验证可能被认为是不值得的。有关包含奖励完整节点提案的早期版本,请参阅此处

简述

当每个交易被验证时,给予客户端开发奖励。

摘要

公地悲剧是一种在许多领域广为人知的现象,尤其是在可持续性方面。它涉及过度利用共享的有限资源,这损害了所有参与者和相关者(在全球公共物品的情况下,这可能是每个人,包括后代)。如果没有对公共资源进行适当的管理,就会发生公地悲剧。内部化外部性(其中外部性可以广义地定义为在商品、服务或资源的内在价格中未考虑的影响)是激励适当管理资源的一种方式,尽管其他实际适当管理资源的方法是必要的。本 EIP 建议对协议进行更改,以便奖励客户端以提供使 Ethereum 能够运行的软件,其中奖励可以包括一部分交易费用(减少矿工当前收到的完整比例),以及一些新铸造的 ETH。因此,客户端有动力维护和提高 Ethereum 协议和生态系统的安全性和健康性。为了总结提案中的机制,用户代理附加到交易,其中此用户代理包含一个向量,其中包含访问列表中客户端地址的索引。客户端地址可以由客户端插入,并验证它是否与客户端存储中的只读常量相同。

构建到协议中的外部奖励机制不属于本 EIP 的范围。此类协议外奖励方法包括用于额外服务的状态通道支付,例如提供更快信息(如收据)的轻客户端服务器;用于从完整节点购买状态读取的状态通道支付;存档服务(仅适用于未来提议的具有无状态客户端的 Ethereum 版本);以及用于客户端和运行完整节点的代币。

动机

目前,缺乏激励任何人运行完整节点的措施,而如果现在必须购买矿机(多个 GPU),加入矿池实际上并不经济,因为在 Ethereum 过渡到 Casper FFG 的混合工作量证明/权益证明,然后是 CBC Casper 的完整 PoS 之前,不太可能获得投资回报。

此外,为客户端提供奖励提供了一个独立于状态通道或其他第二层机制的收入来源,这些机制安全性较低,尽管这种不安全性可以通过保险、担保支付和时间锁等机制来抵消。认为投资者可能会投资于客户端,因为它是一个使能 Ethereum 生态系统的工具(从而打开投资机会)可能无法很好地扩展,并且将客户端货币化为它提供的服务的一部分似乎更可持续。

虽然可以争辩说,Ethereum 预挖(预 ICO 和 ICO)筹集的资金可用于资助客户端开发,但这种论点值得怀疑,因为 Parity 获得了风险投资,其他客户端(如 Prysmatic Labs 1, 2, 3exthereum)已从其他方获得资金,但如果 Ethereum 预挖资金充足,他们可能不需要这样做。Drops of Diamond 尚未收到任何资金。

激励客户端开发将更直接地激励协议中的资源供应,防止公地悲剧,在这种悲剧中,存在极度缺乏供应和过度需求,导致协议无法使用。

参见 此处 以了解比特币、PoW 和混合 PoW/PoS 协议的背景分析。虽然 Ethereum 有 gas 限制,但该部分指出这还不够,因为市值增加,攻击网络的动机增加,而安全成本与交易费用的比率没有增加,而 PoS 将进一步缓解该问题。但是,该部分指出 PoS 是不够的,因为传播、验证和存储交易的成本没有得到激励。请注意,“活动证明:通过权益证明扩展比特币的工作量证明”论文还包含一个激励目标参与水平的方案。

“活动”一词在“活动证明”一词中强调了只有维护完整在线节点的活跃利益相关者才能获得奖励,以换取他们为网络提供的 vital 服务。这与早期的权益证明方案形成对比,在早期的权益证明方案中,离线权益会随着时间的推移积累权重,并可能最终被用于双重支出攻击。

除了验证交易之外,我们还可以激励完整节点传播交易和存储交易或状态。虽然前两个激励措施不在此 EIP 的范围内,但 此处此处 分别有提案。

将此作为第二层解决方案实施可能无法确保协议的可持续性,因为并非所有人都会使用它;如果协议没有完整节点验证交易的任何成本,那么人们将会利用这一点而不使用第二层解决方案。似乎您至少应该拥有在协议中提供奖励的部分,但是该奖励和用户代理签名实际上并没有向协议添加任何其他内容,因此可以在协议中进行一部分,而在协议外进行一部分,例如验证或验证游戏,但这已经在协议中完成了。另请注意,某些计算量大的任务对于在协议中可行地完成来说太具有挑战性,例如,由于不符合 gas 限制,可以使用 Truebit 完成,验证者有激励。

不为客户端提供激励现在是一个问题,因为建立一个符合用户需求的客户端的激励较少,需要在协议之外筹集资金来资助客户端开发,这不是去中心化的。如果只有一小部分人能够资助客户端开发,例如风险投资公司、天使投资人和机构投资者,那么这可能与 Ethereum 的所有当前和潜在利益相关者(包括未来的利益相关者)的利益不符。表面上,Ethereum 的目标之一是去中心化一切,包括财富,或者换句话说,改善财富平等。不为验证交易的完整节点提供激励现在可能看起来不是什么大问题,但不这样做可能会阻碍协议的增长。当然,激励措施是不够的,它还需要在技术上去中心化,以便理想情况下,低端主流计算机甚至移动或嵌入式 IoT 设备都可能成为验证完整节点,或者至少能够帮助保护网络,如果认为它们成为完整节点是不切实际的。

请注意,使用供应上限(如 EIP-960 中那样),可以防止发行量无限期地增加。或者,可以至少减少发行量(仍然可能但不一定为零,或者与在削减参与者(例如 Casper PoS 方案下的验证者或分片方案下的公证人)时 Ether 被销毁的速率相同),例如,通过硬分叉,或者按照 EIP-1015 中的规定,由决策程序集管理的链上合约获取来自代表某些利益相关者集合的其他合约的信号。

规范

为每个区块添加一个名为 PrevBlockVerifications 的新字段,这是一个任意的、大小不受限制的字节数组。当客户端验证前一个区块是否 有效 时,客户端通过交易中的操作码 PREV_BLOCK_VERIF 将用户代理附加到 PrevBlockVerifications。用户代理是一个向量,其中包含不可变字段:已验证区块的区块哈希,以及访问列表中客户端地址的索引(详细信息如下)。矿工在将交易包含在区块中之前验证交易,但是他们无法更改向量的这些字段,因为它们是不可变的。

当处理区块时,向客户端发送 0.15 ETH(请参阅下面的原理)。这些金额可以包括一部分交易费用(而矿工将收到更少的费用),这将减少新发行的 ETH。这些金额在区块中的新 ClientReward 字段中指定。

为了只激励验证最近的区块,断言与区块哈希对应的区块号小于 400 个区块前。

用于防止攻击和添加的规范

矿工可以创建一个客户端,并用仅包含 PREV_BLOCK_VERIF 操作码的交易(或者,任意复杂的交易,仍然带有操作码)填充他们的区块,其中包含他们已验证的前一个区块哈希和他们的客户端地址。为了防止这种情况,状态必须存储一个包含列表的列表,其中每个子列表列出最多 400 个区块前的对应于矿工的区块哈希,然后矿工(或 Casper CBC 下的提议者)可能必须放下抵押金,如果提议者插入这样的交易(其中包含他们已经提议的区块哈希,而不仅仅是在一个区块中,而是在以前的任何时间),将被削减。更新状态以删除超过 400 个区块前的区块哈希会增加额外的开销,尽管您可以为较旧的区块添加额外的窗口,例如 120,000 个区块(大约每 3 周一次),仍然忽略 400 个区块前的区块,并每 120,000 个区块删除这些较旧的 120,000 个区块。攻击者可以贿赂矿工/提议者以包含包含他们拥有的访问列表中客户端地址的上述交易。但是,上述削减条件应阻止这种情况。

关于访问列表的更多细节

访问列表阻止任何人将任何地址插入到向量的第一个元素中,其中可能有一种方法可以防止审查和谁决定在列表中注册新地址的权力集中化,例如,通过带有信号的链上治理(可能类似于 EIP-1015,它也指定了一种替代的资金发送方式)或第二层权威证明网络,其中可以通过智能合约添加新地址。请注意,实施这些列出的示例中的任何一个都可能存在严重的缺点。链上治理 以及 财阀统治 都有反驳。权威证明 不适合公共网络,因为它不能很好地分配信任。但是,在第二层合约中使用信号是可以接受的,但 Vlad Zamfir 认为,使用它来影响协议中的结果可能会剥夺矿工作为治理过程中必要参与者的权利。因此,鉴于这些反驳,在实施去中心化、无需信任的维护方式并且理想情况下被代表 Ethereum 用户群体的随机样本的大多数人接受之前,拥有访问列表可能不合适。

但是,管理访问列表的另一种方法是进行去中心化的验证,即从查询访问列表中的索引产生的地址确实对应于“合法”客户端的地址。此验证的一部分将涉及检查是否有客户端声明此地址归他们所有,他们很乐意以这种方式接收资金并同意或安排将地址放入访问列表中,并且客户端通过 Ethereum 测试套件 中的所有测试。但是,最后这个条款将排除从开发开始时资助新客户端,尽管这些未来的客户端在实施客户端之前无论如何也无法在协议中接收资金(顺便说一句,他们可以通过各种方式筹集资金——推荐使用 DAII,发音为 die-yee,而 Dogezer 正在开发 DAII 平台)。所有这些都可以在链下完成,如果有人发现访问列表中的某些地址不合法,那么他们可以质疑该地址并提供非法证明,并且将该地址提交到访问列表的参与者可能会被削减(而他们必须持有抵押金才能在访问列表中注册和保留地址)。

此外,它应该有助于只能从客户端读取客户端的地址,并且如果该地址不在访问列表中,则整个交易可能会恢复。您可以提供访问列表中地址的索引,然后您可以 assert 在该索引处找到的地址与客户端可以读取的地址匹配(其中后者将是只读地址)。

原理

对费用的粗略定性分析

截至 2018 年 5 月 4 日,有 16428 个节点。假设平均客户端开发组织的年成本为每年 100 万美元。向前展望(并注意到如果实施此 EIP,节点的数量应大幅增加,从而有助于 Ethereum 实现去中心化一切的目标),假设有 10 个客户端。因此,让我们假设在 5 年内节点数量翻倍到 30000 个节点(即使是前瞻性的,此假设也可能保守)。为简单起见,假设客户端的成本完全由该区块的奖励承担。

每个客户端的平均成本 = 节点数 * 每个客户端的区块奖励 / 客户端数

每个客户端的区块奖励(ETH 价格的最坏情况)= 每个客户端的平均收入 * 客户端数 / (ETH 汇率 * 节点数)

= $2,000,000 * 10 / (500 * 30,000)

= 1.333333333 ETH

每个客户端的区块奖励(更好情况)= $1,000,000 * 10 / (2000 * 30,000) = 0.166666667 ETH

假设我们使用 0.15 ETH 的区块奖励给客户端。

更多原理(上述已过时)

验证交易的计算量将与矿工相同,因为需要执行交易。因此,如果验证完整节点和客户端需要支付交易费用,并且验证者需要像矿工一样执行交易,那么以与矿工的 gas 费相同的方式计算它们是有意义的。这将引起争议地大大增加交易费用,因为一个交易可能有多个验证者。换句话说,对于完整节点验证者是否提供与矿工相同的交易费用(这在一个方面是公平的,因为验证者必须执行相同的计算量),或者阻止交易费用上涨过高,并将完整节点的交易费用设置为,例如,矿工的交易费用,除以验证交易的完整节点的平均数量,这是有争议的。后一种选择似乎更具争议(但仍然比没有激励的现状更好),因为虽然运行完整节点的激励会比现在没有激励的情况下更多,但验证者执行相同数量的计算获得的报酬会更少。

至于绝对数量,这将需要数据分析,但显然,完整节点处理区块中的交易获得的报酬应该远少于矿工,因为区块中有许多交易,并且对区块有许多确认。数据分析可能涉及计算区块中验证交易的完整节点的平均数量。宏观经济分析可能需要完整节点为网络提供的经济安全利益。

现在,至于客户端与完整节点的奖励比例,作为最初的猜测,我建议比例约为 99:1。为什么有这么大的差异?好吧,我猜客户端在开发和维护客户端上花费的时间大约是完整节点用户运行和维护完整节点所花费的时间的 99 倍。在一周内,可能会有几个人全职地工作在客户端上,但是完整节点可能只会花费半个小时(或更少)的时间来最初进行设置,再加上运行它,再加上电力和互联网成本。完整节点运营商可能不需要升级他们的计算机(并且随着 Casper PoS 计划即将实施,购买矿机是不值得的)。

但是,经过进一步分析,客户端还将从运行客户端的每个完整节点获得大量奖励的好处,因此为了进一步激励完整节点的操作,该比率可以更改为例如 4:1,甚至 1:1,当然,可以通过更进一步的实际数据分析来调整,而不是投机。

为完整节点验证者和客户端提供奖励将增加发行量。为了将发行量维持在当前水平,此 EIP 还可以减少挖矿奖励(尽管在 2017 年 10 月通过 Byzantium 版本从 5 ETH 降低到 3 ETH ),但这会产生更多的争议和讨论。

奖励客户端和完整节点的另一个潜在争议点是,直到现在,他们以前所做的工作都没有得到报酬(当然,Ethereum 基金会或 Parity 的风险投资公司资助了这项工作除外),因此现有客户端可能会说,此 EIP 给新进入者带来了优势。但是,这并不成立,因为现有客户端具有先发优势,可以通过大量的开发来创建有用且被广泛使用的产品。

有一个权衡。更高的费用意味着您可能会排除穷人和那些只是不想支付费用的人。但是,如果一台笔记本电脑可以运行一个完整节点并获得报酬,那么这将通过使用抵消费用。完整节点确实提供了一种安全性优势,因此给出的总费用至少可以是这一优势的一部分。用于客户端开发的费用可以激励更高质量的客户端。对我来说,我认为尽可能多地将成本内部化更有意义:用于计算、存储、带宽、I/O、客户端开发、运行完整节点、挖矿/验证等。您可以通过外部化成本来避免公地悲剧。您内部化的成本越多,它就越可持续,并且您就越少依赖富人的慷慨等。(虽然,从哲学上讲,最终你不能强迫富人慷慨,他们必须出于内心的善良这样做。)

关于完整节点的奖励,在第一阶段分片规范草案中,充当完整节点的提议者有奖励,用于提议要包含到整理/区块中的 blob(没有执行)或之后的第三阶段交易(有执行)。这将有所帮助。但是,不充当提议者并且仅验证交易的完整节点,或者完整状态节点,仍然没有得到激励。

请注意,虽然应该进行进一步的定量分析来指定费用,但在链上实施此方法后,可能需要进行一定程度的实验。

安全性

应通过使用访问列表并验证客户端提供的只读地址与访问列表中的地址匹配,以及使用第二层解决方案(如 PoA 网络)来实现下面的所有删除线信息,以实现审查抵制并最大程度地减少访问列表中的集中化。

更多讨论请参见 https://ethresear.ch/t/incentives-for-running-full-ethereum-nodes/1239。

向后兼容性

引入协议内费用是一种向后不兼容的更改,因此将在硬分叉中引入。

测试用例

待办

实施

待办

版权

通过 CC0 放弃版权和相关权利。

Citation

Please cite this document as:

James Ray (@jamesray1), Micah Zoltu (@MicahZoltu), "EIP-908: 为了可持续的网络,奖励客户端 [DRAFT]," Ethereum Improvement Proposals, no. 908, March 2018. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-908.