从Devcon5大会看以太坊和区块链生态发展

2019-10-17

10月8日至11日,备受瞩目的以太坊年度开发者大会Devcon5(第五届)在日本大阪举行。文章结合大会内容与社区信息,帮助大家更全面地了解以太坊生态,以及区块链生态的一些最新发展。关于以太坊的发展,大会主要交流了以太坊2.0目前的进展、已经积累的开发经验分享、下一步的规划、1.0和 2.0 版本如何切换等内容。另外,大会还重点关注了去中心化应用用户体验升级、加密经济和密码学、DeFi 等内容。文章将会分为上下两篇,本篇主要为以太坊生态的发展,下篇将会发布一些大会上关于目前热门议题的讨论。

正文

要了解以太坊的生态,首先要对以太坊的发展路径做一个了解。

Ethereum1.X

在去年的Devcon4上,一群以太坊核心开发人员和爱好者讨论了当前以太坊的挑战,他们都有一个相似的观点:由于日渐严重的性能瓶颈,以及占用的存储空间持续增加,如果以太坊主网不寻求变化,以太坊的可用性将会变得非常差。性能下降主要归因于过大(且不断增加)的状态数据。越来越大的存储需求,主要是由于需要留存区块、Event日志(receipts),以及状态历史记录(当前可在大部分客户端中删除)。

最后,他们得出一个共识:改进,以太坊主网必须改进!

他们还给改进计划取了一个代号“Ethereum1.x”。Ethereum主网计划在近期内采纳的各种重大升级更新都包含在里面。

行动代号为“Ethereum1.x”的计划包括:

1、通过提高tps吞吐量来提高主网可扩展性(通过客户端优化实现,这将能够大幅提高区块的gas限制);

2、通过“存储租金”来减少和限制对磁盘空间需求,从而确保整个节点是可持续化的运营。具体做法是设计一种租金模型,要求合约开发者和用户随着时间的迁移,为EVM2的存储付费,而不是无期限存储代码和数据。

3、通过VM升级(包括eWASM)改善开发者体验。

为了实现这些目标和计划,以太坊核心开发团队成立了几个工作组:

1、状态租金:设计存储占用的费用模型,用以限制链上存储占用;

2、eWASM:以太坊Wasm虚拟机;

3、存储裁剪:优化客户端的存储空间占用;

4、模拟/仿真。

在今年的Devcon5上,以太坊基金会介绍了过去一年内成立的几个工作组:

1、EVM进化:优化性能、安全和互操作性;

2、EIP 1559:费用模型优化,让交易易费用更更稳定、可预测;

3、测试/基础设施:用新的工具来帮助测试客户端能更更好的互相兼容;

4、最终性组件:用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

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协议:

1、管理验证节点及其Stake;

2、在每一步中为每一个分片任命出块者;

3、将验证节点组织为验证委员会(committee),用于对提议区块进行投票;

4、运行共识协议;

5、对验证节点进行奖励和惩罚;

6、作为一个锚点,各分片向其注册状态,从而有助于进行跨分片的交易的执行。

信标链上的主要数据载荷为证明(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年底同时上线。

Ethereum2.0中的随机性

在本次Devcon5会议上,还有一些关于Ethereum2.0中的随机性的讨论议题。

在现今区块链系统中,系统随机性问题正受到越来越多的关注。

Ethereum2.0采用了PoS(Proof of Stake)和分片(sharding)机制相结合的共识协议,共识委员会的选取依赖于系统产生的随机值。因此,方案的安全性与系统产生随机值的随机性高度相关。一旦恶意攻击者可以操控或者影响随机值的产生,那么他们就可以利用这种优势,在共识过程中增加自身被选入委员会的机率,降低攻击系统所花费的代价,从而威胁协议的安全性。

区块链作为承载分布式应用的底层平台,链上提供的安全随机数同样也是众多应用安全性的重要保障。

随机数在Ethereum2.0中主要被使用在如下三个环节:

区块提议者的选取

共识委员会的选取

链上应用

安全的随机性算法需要保证:

1、公平性(unbiased):任何参与者不能影响随机数生成的结果。

2、无法预测性(unpredictable):在随机数生成前,任何参与者无法提前预测输出的结果。

此外,为了满足分布式系统的容错性,可靠的随机性算法还应该保证即使系统中若干节点停止工作时,算法依然继续运行。

因此,安全的随机性算法可以使得:

1、保证区块提议者选取的公平性,同时防止攻击者提前预测提议者身份,发起DOS攻击;

2、在委员会选取阶段,降低攻击者控制某一委员会的可能性;

3、保证依赖于随机数的链上应用的安全性。

分布式随机性算法RANDAO

RANDAO是一个简单的分布式随机性算法,使得多个节点可以交互协商,产生一致的安全随机数。

算法包含两个阶段:

承诺阶段(commit)

揭示阶段(reveal)

在承诺阶段中,系统中所有节点各自线下选定某个随机数,然后向 RANDAO 提交对该随机数的承诺。

在揭示阶段,每个参与者打开承诺公布其随机值,将所有公开随机数进行异或操作得到的结果就是该轮协议产生的随机数。

但RANDAO也是有缺陷的:

1、RANDAO协议产生的随机数满足不可预测性,并且拥有与底层共识协议一样的容错性,但仍是在公平性上存在缺陷。

2、协议中,在揭示阶段,最后公布其随机值的节点可以影响最后产生的随机值。

3、具体来说,恶意攻击者看到网络中所有其他节点公布各自所选取的随机数之后,可以根据自身随机数执行异或运算,并根据结果对自己的利弊来决定是否要公布自己的随机数。

4、这使得单个攻击者就能对输出造成一定的影响,同时随着攻击方所控制的参与者数目增多,该类攻击的破坏性也随之增强。

5、对区块链系统来说,如果攻击者利用这种在随机数产生过程中获得的优势,那么将降低其攻击系统所需要的成本。具体来说,如果一个区块链系统采用RANDAO和最长链原则作为共识协议,那么攻击者只需要拥有36%的质押(stake)就可以控制整个系统。(注:此分析来自大佬Vitalik)。

方法总比困难多,这些缺陷也并不是没有解决办法。VDF函数就是解决RANDAO这些缺陷的“小药丸”。

VDF函数

VDF是一类数学函数(Verifable Delay Function),该函数的特点是:

1、计算至少需要一段已知的时间。

2、通过证明可以快速验证函数输出结果的正确性。

利用VDF函数的计算延迟,可以使得RANDAO协议中最后公布其随机值的节点失去对最终结果的影响。

具体来说,在RANDAO协议揭示阶段中,所有参与者公布的随机值不再通过简单的异或操作,而是通过VDF函数得到最终的随机值,同时设置VDF函数的执行时间大于揭示阶段的等待期。那么,攻击者无法提前计算最终的随机值,无法确定公布自身随机值对自己的好处,从而保证了随机性算法的公平性。

前面我们提到过,Ethereum1.0会向2.0切换。这又是一个大工程,这种切换该如何平稳过渡呢?

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 分片合约

实现不同分片上的合约之间的交互。目前的各种关于分片合约互操作的提案中,似乎都无法解决同步、扩展这一对矛盾课题,这也是最具挑战的阶段之一。

相关新闻

新闻&案例

新闻动态
行业资讯

关于我们

公司简介
联系我们

联系方式

电话:020-22954640
微信:13265307814
邮件:service@buhuokeji.com
QQ:1663714047

开发合作扫我

关注公众号