本文为万向区块链研发部研究组团队参加Devcon5后,对大会内容进行的一些解读。万向区块链研发部研究组是万向内部专一于区块链底层技术研究与落地的团队。git
10月8日至11日,备受瞩目的以太坊年度开发者大会Devcon5(第五届)在日本大阪举行。文章结合大会内容与社区信息,帮助你们更全面地了解以太坊生态,以及区块链生态的一些最新发展。关于以太坊的发展,大会主要交流了以太坊2.0目前的进展、已经积累的开发经验分享、下一步的规划、1.0和 2.0 版本如何切换等内容。github
正文算法
要了解以太坊的生态,首先要对以太坊的发展路径作一个了解。安全
在去年的Devcon4上,一群以太坊核心开发人员和爱好者讨论了当前以太坊的挑战,他们都有一个类似的观点:因为日渐严重的性能瓶颈,以及占用的存储空间持续增长,若是以太坊主网不寻求变化,以太坊的可用性将会变得很是差。性能降低主要归因于过大(且不断增长)的状态数据。愈来愈大的存储需求,主要是因为须要留存区块、Event日志(receipts),以及状态历史记录(当前可在大部分客户端中删除)。网络
最后,他们得出一个共识:改进,以太坊主网必须改进!异步
他们还给改进计划取了一个代号“Ethereum1.x”。Ethereum主网计划在近期内采纳的各类重大升级更新都包含在里面。分布式
行动代号为“Ethereum1.x”的计划包括:函数
一、经过提升tps吞吐量来提升主网可扩展性(经过客户端优化实现,这将可以大幅提升区块的gas限制);工具
二、经过“存储租金”来减小和限制对磁盘空间需求,从而确保整个节点是可持续化的运营。具体作法是设计一种租金模型,要求合约开发者和用户随着时间的迁移,为EVM2的存储付费,而不是无期限存储代码和数据。性能
三、经过VM升级(包括eWASM)改善开发者体验。
为了实现这些目标和计划,以太坊核心开发团队成立了几个工做组:
一、状态租金:设计存储占用的费用模型,用以限制链上存储占用;
二、eWASM:以太坊Wasm虚拟机;
三、存储裁剪:优化客户端的存储空间占用;
四、模拟/仿真。
在今年的Devcon5上,以太坊基金会介绍了过去一年内成立的几个工做组:
一、EVM进化:优化性能、安全和互操做性;
二、EIP 1559:费用模型优化,让交易易费用更更稳定、可预测;
三、测试/基础设施:用新的工具来帮助测试客户端能更更好的互相兼容;
四、最终性组件:用Ethereum2.0信标链来敲定Ethereum1.0生产的区块。
咦,怎么还有Ethereum1.0和2.0?它们和Ethereum1.x有什么关系?
简单来讲,以太坊如今的主网就是Ethereum1.0,Ethereum1.x是针对如今主网的改进计划,而Ethereum2.0则是独立于Ethereum1.0进行开发的一条链。Ethereum1.0将会向2.0切换。
接下来,咱们重点介绍下Ethereum2.0。
Ethereum2.0,是以太坊的宁静(Serenity)版本,刚才也说了它是独立于Ethereum1.0进行开发的一条链。而且在去年的Devcon4会议上明确了Ethereum2.0在3-5年内不会在功能上取代Ethereum1.0。
Ethereum2.0将包含Sharding(分片),Proof of Stake共识以及一个新的VM(即eWASM)等一系列升级。
它的目标主要有如下5个:
☆ 去中心化(Decentralization):容许普通消费级的笔记本计算机可以利用O(C)的资源处理和验证O(1)的分片(包括系统级别如信标链的验证等)。
☆ 弹性(Resilience):主网络分区或大量节点掉线时系统仍旧是可用的。
☆ 安全性(Security):利用密码学和设计技术来保证大量验证节点能够参与到系统中来(短时间和长期范围内)。
☆ 简单性(Simplicity):最小化复杂性,即便性能上有一些损失。
☆ 长期可用性(Longevity):选择量子安全的组件,或者在可用时容易替换为相应的量子安全的组件。
这是个大工程,因此并不会在单一的时间点完成,而是按阶段进行开发。这里简要介绍各个阶段及其计划完成的目标。
Phase0 信标链(Beacon Chain)
Phase0阶段即为信标链的启动。信标链是整个系统的基础,用于管理其自身以及各分片区块链(shardchain)的Casper Proof of Stake协议:
一、管理验证节点及其Stake;
二、在每一步中为每个分片任命出块者;
三、将验证节点组织为验证委员会(committee),用于对提议区块进行投票;
四、运行共识协议;
五、对验证节点进行奖励和惩罚;
六、做为一个锚点,各分片向其注册状态,从而有助于进行跨分片的交易的执行。
信标链上的主要数据载荷为证实(attestation),包括对分片区块的投票(availability vote)和信标区块的PoS投票等。
Phase0将使用Casper the Friendly Finality Gadget (FFG)来实现最终确认性(finality)。
在Phase0期间,全部的用户交易和智能合约计算都在Ethereum1.0上进行。而在Phase0完成后,将同时有两条链:Ethereum1.0链和Ethereum2.0链。
Phase1 分片区块链(Shard Chain)
分片区块链是将来实现可扩展性的关键,这是由于其容许交易的并行执行。Phase1主要关注分片区块链的数据的构造、有效性和一致性,而并不实现状态的执行和帐户的余额。Phase1更多的是分片结构的试运行,而不是尝试实现使用分片进行扩展。对信标链来讲,它把分片的区块看成是位集合,而非结构化或有意义的数据。
信标链区块中使用crosslink来表示一段时间内分片的当前状态(也就是combined data root)。
crosslink即为分片链上验证节点委员会对区块的有效签名集合,表明了分片区块链的最新状态,同时也是跨分片的异步通讯的基础。
Phase2 状态执行(State Execution)
Phase2中,各相关功能将会进行集聚。分片区块链的数据将再也不是简单的数据容器,而是从新引入的的结构化的链数据和智能合约。每一个分片管理基于eWASM的VM,支持帐户,合约,状态数据等。
Phase2中将颇有可能引入状态租赁(State Rent),合约开发者和用户将为eWASM存储付费。
Phase3及以后的阶段 不断更新中
相关计划处于不断更新中,具体可参见:
https://github.com/ethereum/wiki/wiki/Sharding-roadmap#phase-3-light-client-state-protocol
其中,Phase0预计于2020年第一季度上线,而Phase1和2预计于2020年末同时上线。
在本次Devcon5会议上,还有一些关于Ethereum2.0中的随机性的讨论议题。
在现今区块链系统中,系统随机性问题正受到愈来愈多的关注。
Ethereum2.0采用了PoS(Proof of Stake)和分片(sharding)机制相结合的共识协议,共识委员会的选取依赖于系统产生的随机值。所以,方案的安全性与系统产生随机值的随机性高度相关。一旦恶意攻击者能够操控或者影响随机值的产生,那么他们就能够利用这种优点,在共识过程当中增长自身被选入委员会的机率,下降攻击系统所花费的代价,从而威胁协议的安全性。
区块链做为承载分布式应用的底层平台,链上提供的安全随机数一样也是众多应用安全性的重要保障。
随机数在Ethereum2.0中主要被使用在以下三个环节:
区块提议者的选取
共识委员会的选取
链上应用
安全的随机性算法须要保证:
一、公平性(unbiased):任何参与者不能影响随机数生成的结果。
二、没法预测性(unpredictable):在随机数生成前,任何参与者没法提早预测输出的结果。
此外,为了知足分布式系统的容错性,可靠的随机性算法还应该保证即便系统中若干节点中止工做时,算法依然继续运行。
所以,安全的随机性算法可使得:
一、保证区块提议者选取的公平性,同时防止攻击者提早预测提议者身份,发起DOS攻击;
二、在委员会选取阶段,下降攻击者控制某一委员会的可能性;
三、保证依赖于随机数的链上应用的安全性。
RANDAO是一个简单的分布式随机性算法,使得多个节点能够交互协商,产生一致的安全随机数。
算法包含两个阶段:
承诺阶段(commit)
揭示阶段(reveal)
在承诺阶段中,系统中全部节点各自线下选定某个随机数,而后向 RANDAO 提交对该随机数的承诺。
在揭示阶段,每一个参与者打开承诺公布其随机值,将全部公开随机数进行异或操做获得的结果就是该轮协议产生的随机数。
但RANDAO也是有缺陷的:
一、RANDAO协议产生的随机数知足不可预测性,而且拥有与底层共识协议同样的容错性,但还是在公平性上存在缺陷。
二、协议中,在揭示阶段,最后公布其随机值的节点能够影响最后产生的随机值。
三、具体来讲,恶意攻击者看到网络中全部其余节点公布各自所选取的随机数以后,能够根据自身随机数执行异或运算,并根据结果对本身的利弊来决定是否要公布本身的随机数。
四、这使得单个攻击者就能对输出形成必定的影响,同时随着攻击方所控制的参与者数目增多,该类攻击的破坏性也随之加强。
五、对区块链系统来讲,若是攻击者利用这种在随机数产生过程当中得到的优点,那么将下降其攻击系统所须要的成本。具体来讲,若是一个区块链系统采用RANDAO和最长链原则做为共识协议,那么攻击者只须要拥有36%的质押(stake)就能够控制整个系统。(注:此分析来自大佬Vitalik)。
方法总比困难多,这些缺陷也并非没有解决办法。VDF函数就是解决RANDAO这些缺陷的“小药丸”。
VDF是一类数学函数(Verifable Delay Function),该函数的特色是:
一、计算至少须要一段已知的时间。
二、经过证实能够快速验证函数输出结果的正确性。
利用VDF函数的计算延迟,可使得RANDAO协议中最后公布其随机值的节点失去对最终结果的影响。
具体来讲,在RANDAO协议揭示阶段中,全部参与者公布的随机值再也不经过简单的异或操做,而是经过VDF函数获得最终的随机值,同时设置VDF函数的执行时间大于揭示阶段的等待期。那么,攻击者没法提早计算最终的随机值,没法肯定公布自身随机值对本身的好处,从而保证了随机性算法的公平性。
前面咱们提到过,Ethereum1.0会向2.0切换。这又是一个大工程,这种切换该如何平稳过渡呢?
从Ethereum1.0链迁移到Ethereum2.0链须要考虑两个重要因素。首先,须要迁移现有的以太币,其次,须要迁移状态。
Phase0 以太币迁移(信标链)
在第0阶段,Ethereum1.0链上的用户将可以将他们的以太币锁定在合约中,并在Ethereum2.0中的信标链上得到等量的以太币。以后他们能够抵押以太币(32个ETH)成为验证人,并开始在Ethereum2.0链上得到验证奖励。
Phase1 状态迁移(分片)
在阶段1中,将当前Ethereum1.0链的状态转移到Ethereum2.0链上的一个分片中。而从保证来自Ethereum1.0链的全部信息将在Ethereum2.0链上可用。目前第1阶段及以后的阶段尚未进入积极的开发阶段。
Phase2 智能合约
这一阶段计划从新引入智能合约,并用eWASM代替当前的EVM。此外状态租金这一在Ethereum1.x被提到的概念可能会在这一阶段实施。
Phase3 链下状态存储
第 3 阶段会尽量地把链上的状态转移到链下,从而最小化链上状态。在第 3 阶段中维护和检索链下的状态将会成为dApp的关键性设计约束。
Phase4 分片合约
实现不一样分片上的合约之间的交互。目前的各类关于分片合约互操做的提案中,彷佛都没法解决同步、扩展这一对矛盾课题,这也是最具挑战的阶段之一。
今天的分享就到这儿了,后续万向区块链技术中心研究组,将持续分享更多干货,保持关注!