欧易OKEx
数字资产服务平台

探索以太坊20:区块链激励制度的演变

最近有很多文章在讨论以太坊2.0的路线图、研究建议和现状。但关于2.0背后的设计理念和不变量的消息却没有什么公开文章透露。明确不变量对协调工作非常有帮助,还能保证开发人员在哲学逻辑上保持一致。本文将解释2.0中一些设计,背景以及对未来协议的影响。

历史发展

以太坊诞生后,技术人员正在尝试将PoW转换为PoS。Vitalik Buterin当时正在探索一种可行的解决方案,防止PoS出现漏洞,具备比PoW更大的安全保障。他与以太坊研究小组设计了一种slasher机制,用于惩罚PoS作恶者来削减他们的存款。

随后,数学家弗拉德·赞菲尔(Vlad Zamfir)加入了slasher项目,2014年的大部分时间都集中在解决PoS远程攻击上。当远程攻击时,攻击者可以从零开始创建一个比当前规范链更长的完整链,这使得网络的剩余节点会信任新的规范状态。这在PoW是几乎不可能会发生的情况,因为发起攻击需要极大的算力,而PoS并不依靠算力,因此发起远程攻击,会导致区块链奔溃。

Vitalik和Vlad一致认为,针对远程攻击,只能严格禁止客户端同步超过某个检查点的链。因此新节点无需从创世区块同步链,只需从网络中其他节点一致确认的最近“检查点”开始同步,也就是当新节点加入网络时,可以信任旧节点。后来这种现象被称为PoS的主观性弱化。当有新节点加入,他们主观上会信任“最终的”、“不可逆转的”区块。

在研究Slasher的同时,Vitalik和以太坊基金会Virgil Giffith一起忙于撰写ArXiV的初始版Casper Proof of Stake白皮书。2014年-2017年,以太坊一直都在尝试从PoW向PoS转变,同时,以太坊也在努力实现分片技术,扩容区块链。时间来到2018年3月,在一个重大的台北研讨会后,以太坊研究团队提议将Casper Proof of Stake和分片技术合并到以太坊Slasher,即以太坊2.0。

为何是合并到2.0呢?

这篇文章旨在解释中心问题背后的设计理念:“为何要使用以太坊2.0呢?”通过硬分叉来检查现有系统的共识协议和数据完整性并非易事,抛弃以太坊1.0从头开始建立一个新系统不是更简单吗?我们面临的最大难题是需要社区参与构建2.0之中,并明确过渡到以太坊2.0后有巨大的好处及需求。

虽然转换范式要承担巨大责任,但此刻是最佳良机。无论你喜欢与否,加密技术仍处于起步阶段,今天的决定会对后面几年加密技术采用产生深远影响。PoS切换和以太坊应用扩容已准备充分,团队也做好了充分准备。

挑战

单纯的第1层扩容可能会在大程度上牺牲安全性,分片区块链会阻止全局交易验证(比如比特币和以太坊正在使用的)。关键难题是:如何在不牺牲去中心化或安全性的前提下,进行扩容?很多竞争对手采用集中式方案。Ethereum选择了一种不同的方法,将网络状态划分为1024个碎片,这些碎片表现为一组同质的区块链,每个区块链由一个称为信标链的根链协调。信标链运行Casper Proof of Stake协议,它没有受托权或集中式投票权。每个节点只负责打包网络中的部分交易,可以并行生成多个区块,从而整个网络吞吐量呈线性增长。此解决方案的不成熟的规范可回答以下问题:

如果没有全局验证交易,网络中的安全文件将如何变化?筛选验证节点时,如何防止垄断情形?如何设计激励制度,以最大化地利用数据和提高参与度?

经过多年的研究、探索和协调做出权衡后,以太坊将选择了PoS共识算法。间接地验证全局交易,每个分片交易先由分片验证者检查,然后在信标链上提交检查点。后者作为一个协调分片信息的“协调器”。

不变量设计

协议设计关键点是理解协议将在哪些不变量下运行。对于以太坊和它的开发者社区来说,拥有一份不可协商的设计决策清单至关重要。

我们可以将Eth2的核心分解为以下几个要点:

·网络参与无需许可

·第1层的范围应该简洁、抽象和紧凑

·最大限度地表达协议,而不是假设它的未来用途——即符合以太坊格言“我们没有未来”

·网络应该活跃,以便高效地从灾难情况下恢复。

·将协议复杂性与应用程序开发复杂性分开。

无需许可

Eth2和其他“新生代”区块链的一个显著区别是如何确定共识参与度。Eth2的唯一要求是持有32 ETH才能成为一名验证者。没有受托人,没有投票筛选验证节点,也没有中央法律决定谁可以参与。更重要的是,Eth2中对所有验证者一视同仁——硬顶32 ETH。但是,任何个人都可以拥有多个验证程序实例。简化了安全性和共识协议。从激励设计的角度和正式建模的角度来看,投票区块时候,规定所有参与者拥有相同的stake这一点非常重要。1个验证=32ETH作为stake,其他区块链都是采用集中式方案扩容,但对于以太坊,绝不会采用。

简洁,但又能最大限度地表达

Eth2的目标做到核心定义简洁、紧凑。从基本层面看,以太坊是一个可扩展、无需许可、用于创建去中心化应用的平台。

无需引入应用程序逻辑, 将以太坊类比为一个Linux内核——它不取决于操作系统的功能和应用场景,而取决于在该内核构建应用程序的开发人员。

安全

Eth2的PoS模型,称为Casper the Friendly Finality Gadget,运行在一系列保证高度活跃和网络参与的激励机制下。Eth2扩展了Casper,利用它来保护分片区块链网络安全。也就是,运用链终结阀值的概念确保Eth2的1024个分片与信标链共享一样的安全池。

PoS的核心前提是,验证者完成预期角色指定的任务获得奖励,如果偷懒则失去奖励,并且如果违反协议作恶,则会受到严厉惩罚(slashed)。虽然前提很简要,但重点都体现细节之中。如果我们要考量各个验证者行为,以及整个验证者委员会行为,Casper经济就会变得更加复杂。

一般而言,PoS链一个开放性问题是何时惩罚,如何根据行为恶劣程度进行处罚?也就是是说,我们要找到一种全面的惩罚措施,以便简洁的同时覆盖所有极端案例。鉴于协议的运行取决于验证者行为以及强大的运行时,可能存在诚实验证者无法执行的情况。比如停电、网络不稳定等,导致诚实验证者离线,因此我们要明确区分偷懒处罚和作恶行为惩罚。

Eth2部分设计理念是让攻击破坏协议付出巨额代价。就像其他链的51%攻击需要付出高昂代价。攻击者逆转协议中具有最终性的部分,将明显地暴露在大家面前,社区可以协调软分叉,移除作恶者,使攻击无效。当然,如果攻击成功,且协调失败,如果攻击者的单一目的是破环系统,造成巨额损失,那么系统的完整性会遭到破坏。

PoS系统另一大限制是验证者困境,由现象命名而来。系统中的验证者偷懒,简单地相信协议中的其他人认真地完成了工作,因此不验证自己负责的内容。除非受到重大惩罚,否则验证者可以不履行职责,而节省带宽和算力。通过对网络中丢失的数据或错误签名添加重大惩罚和质询机制,可以减少这种行为发生。

以太坊2.0的验证者激励如下:

验证者不活跃:二次泄漏

ETH2依赖于网络中2/3诚实参与者的拜占庭容错阈值。针对不活跃的惩罚也叫作不活跃泄露。如果链超过4个时期都未确认最终性,协议会严格把控验证者奖励。也就是说,如果自链确认最终性过了很长时间,则最大奖励会降至0。此时验证者需要表现良好,否则面临惩罚。惩罚轻重与链自终结以来的时间成正比,防止验证者离线。验证者偷懒的时间越长,惩罚越重。这种“二次泄露”惩罚对短期偷懒没有多大影响,但针对长期偷懒则惩罚较重,罚款金额将被销毁,不会重新分配给诚实验证者。

故意作恶行为:slashing

最初的以太坊PoS提案这样写道:作恶的验证者将受到严重惩罚,即slashing惩罚,通常是针对单个验证者作恶,而不是串谋的验证者。如果大部分验证者联合作恶,则会破坏网络。根据拜占庭容错的保证,对作恶者的惩罚=3×同一时间段内作恶者数量。这有助于惩罚大型联合作恶行为,还可以抑制作恶验证者池的发展。也就是说,在网络中发起联合攻击,会损坏作恶者集体利益。提倡检举机制,激励验证者发现其他违法攻击行为,将slashed的资金作为检举奖励。

验证者奖励

根据Vitalik的以太坊slasher设计原理,他在每个时期(64个区块)中概述了验证者基本奖励的4个特定组成部分:

1.检查指定的纪元检查点,奖励1/4

2.证明指定的区块链头,奖励1/4

3.证明被快速打包进链上,奖励1/4

4.证明指定正确的分片区块,奖励1/4

根据正确参与的验证人数量,此基本奖励还有额外奖励。这个额外的奖励用于激励验证者做正确的事情,推动集体诚实行为。奖励发布计划应当是一致且直观的,增加更多的复杂性只会使系统容易出错,并且从宏观经济的角度来看更难理解。

从应用程序复杂性中分离协议复杂性

说Eth2路线图令人生畏是一种保守的说法。它可能是最有雄心,并长期计划吸收行业教训,优雅地创建一个解决扩容难题且可持续的协议。关于分片降低开发人员体验这一点已有大量讨论,之所以降低是因为将Eth2开发人员剥离内部极其困难,我们有一个复杂的分片系统需要彼此交互。从表面上看,Eth2令人生畏,如何在项目中明确地执行合约也并不清楚。但事实非常微妙。

应用程序开发人员只需要了解一小部分Eth2协议。普通智能合约开发人员无需了解验证者注册表或信标链终端小工具的内部结构。因此,阶段0从应用层中完全删除。阶段1和阶段2最近也提出了强大提案,主张更高程度的抽象执行环境,使Eth2更强大,更简洁。最坏的打算,钱包和应用开发人员需要了解跨分片交易细节,以掌握一些显示即时交易结算的技巧。计算机操作系统和内部构件已比10年前要复杂得多,然而,大多数应用程序开发人员无需了解隐藏的内部构件,这些内部构件使其成为强大的计算机架构。这种关注点的分离是良好架构设计的核心,人们可以说,在构建Eth2时我们应该牢记不变量设计。

构建真实世界的计算机

总之,以太坊相对来说很美,这意味着它可以运行任何类型的可想象的代码,就像今天的计算机一样,尽管它是一台非常有限的,慢速的,单线程的计算机。今天的以太坊类似于早期的弱处理器。今天在以太坊运行应用程序也很是昂贵,因为该协议内置了一些机制,以防止困扰公共产品的公共场景发生悲剧。以太坊充满活力的开发人员会永远不断地改进当前网络,无论是核心层和是第二层。但从治理层面而言,预定的升级可能会困难重重,且过程艰难。一旦Eth2被激活的几年后,我们能感到它有一定限制,希望建立Eth3,那么便意味着Eth2的核心设计失败了。应该以无需硬分叉的方式升级协议,也就是,一旦系统投入使用,层1的设计是最不需创新或接近于0的。我们仍有很长一段旅程要走,时刻提醒自己为何构建这个软件,以及是否10年后还存在?这样我们便会编写更强大的代码,经得起时间的推敲。

猜你喜欢