从Devcon5大会看:以太坊和区块链生态发展│万字长文
高天 2019-10-17 10:11:55发布
92135
摘要:大会主要交流了以太坊2.0目前的进展、已经积累的开发经验分享、下一步的规划、1.0和 2.0 版本如何切换等内容。  

本文为万向区块链研发部研究组团队参加Devcon5后,对大会内容进行的一些解读。万向区块链研发部研究组是万向内部专注于区块链底层技术研究与落地的团队。


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


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


下篇

加密经济、用户体验、Web3、DeFi这些行业热门话题,也是Devcon5大会重点讨论的议题。我们选取了一些具有代表性的观点和解决方案,供大家参考。


先来看看V神对加密经济学和密码学的观点。


Vitalik Buterin:加密经济学和密码学


Vitalik在Devcon5主题演讲中重点提到“加密经济学(cryptoeconomics)”,旨在强调其对整个区块链生态的影响和意义。


Vitalik 认为比特币使用“加密经济学”来解决的两个主要问题:权重分配和激励机制。后者“激励机制”容易理解;前者权重分配是指,在所有的 BFT 算法模型中,会对恶意节点掌握的资源占总资源的比例做一个假设,但是在去中心化程度很高的系统中,特别是公链系统中,这个资源如何界定?比特币能通过算力来衡量。


接下来,Vitalik 先从假设前提这个角度比较密码学与加密经济学。


1、对于密码学而言,不需要一些前提假设,我们就能证明事情的合理性,因为它基于数学的合理性。

2、加密经济学需要对参与者很少的假设就能来证明一些事情。比如说,理想情况下,假设攻击者能够并且愿意支付用于攻击的成本上限。基于这样的假设可以做很多系统设计。这两套系统通过各自的优势都能实现去中心化/信任最小化。


之后,通过“交互计算”和“zk-SNARKs”的对比提出他的观点“加密经济学可以和加密算法竞争”。交互计算:假设有一个函数,该函数的计算可以分解成很多步,并且中间步骤的值都很小。提交者提交一系列的中间计算结果和一个抵押。然后会存在一个挑战阶段,即任何人都可以对计算中的某一步提出挑战,以此来验证该函数的中间某个计算结果的合理性。


可以发现这种交互计算的方式其实与zk-SNARKs做的是同样的事情,交互计算的优点是:相对zk-SNARKs要更容易实现,比 SNARKs 效率更高,但是SNARKs则不需要挑战这个过程。


加密经济学可以用于:基本层共识的安全性、轻客户端、抗DoS攻击的链下协议。


我们初步分析认为,Vitalik 对于 BTC 模型,BFT 算法等本质的理解是比较深的,这也会帮助其带领生态往前发展。其提出的交互计算,则是 TrueBit 中提出的交互验证游戏的一个子集。我们推断,把计算切分成小份,也是便于链上做验证。而 Vitalik 提议给 TrueBit 论文的 forced error 机制,在大会 PPT中没有介绍,Vitalik 应该是想抽象一个例子来讲加密经济学的作用。


随着区块链技术的快速发展,“用户体验“被越来越多的提及和谈论,用户的体验效果直接影响产品在市场中的竞争力。使用户获得良好的体验,才是区块链走到人民群众中去的根本。在Devcon大会中跟用户体验相关的课题主要有如下几个。


用户体验


1、State of Ethereum


Etherscan 项目 CEO Matthew Tan 基于以太坊上的数据对以太坊生态中的用户信息进行统计,如用户地理位置的分布、用户年龄段分布、性别分布、使用的浏览器类型、使用的设备以及操作系统等。


根据其统计分析,指出目前的用户痛点top5,分别为:


1)请求退款或取消交易

2)交易/余额信息不能即时反映

3)交易失败后咋办

4)用户被欺诈

5)怎样将token提现并存在银行账户


2、The Bounties Network and Rimble


The Bounties Network and Rimble项目主要负责研究阻碍dApp应用和可用性的用户体验问题,针对用户体验问题,通过使用奖金激励来产生创造性和有效的解决方案。Rimble将对最佳解决方案进行验证和迭代,最终将它们整合到开源资源中,让开发人员更容易构建可用性更广的dApp。


每个赏金项目链接中会包含如下内容:


1)问题背景介绍

2)挑战:提出需解决的明确需求

3)提交要求:最低提交要求和理想提交要求

4)评估标准:给出详细的项目评估标准

5)奖励金额:项目的完成度对应的赏金金额


3、Ethical Design Practices for Web3


Omna Toshniwal & Jenny Pollack的演讲主题为"Ethical Design Practices for Web3 ",其演讲的内容为:描述现如今web是如何破坏用户信任的,具体来说,缺乏用户控制、缺乏选择、不道德的数据共享和网站使用暗模式;web3尝试解决其中的一些问题,但演讲者认为还不够成熟,于是分享一些实用的设计实践。


在许多最佳实践以及web2的产品设计的金字塔模型由下至上依次为:功能性、可靠性、可用性、娱乐性,但演讲者认为,尊重人权应该是一个好的产品设计的核心,因此需在产品设计的金字塔模型的最底层中加入道德性。


关于web3产品的道德性设计,给出如下建议:


1)设计出用户可理解的权限控制模型

2)权限要易于管理并可撤销

3)自动执行的步骤需询问用户

4)用户使用需安全、可靠


4、ENS(Ethereum Name Service)


名称的可读性作为用户体验的重要部分,简单、易读的名称可以给用户提供便捷。ENS着重解决Ethereum中的可读性问题。


ENS提供一种安全且去中心化的方式,使用简单、易读的名称来处理区块链内外的资源,其主要的工作是将可读的名字映射到机器可读的标识符,如以太坊的地址、hash值和元数据。


ENS的目标与互联网域名服务DNS类似,但由于Ethereum区块链提供的功能和约束,其架构有很大的不同。与DNS一样,ENS在一个名为域的点分隔的层次结构名称系统上运行,域的所有者完全控制子域。


域的所有者可以是外部帐户(用户)或智能合约。注册商只是拥有一个域的智能合约,并将该域的子域分发给遵循合约中定义的一些规则的用户。


域名所有者可以:


为域设置解析器和TTL

将域的所有权转让

更改子域的所有权

解析器负责将名称转换为地址的实际过程。每个记录类型如Ethereum地址、hash值等都定义了一个或多个方法,解析器必须实现这些方法才能提供这类记录的解析。


在ENS中解析一个名称需要两个步骤:询问注册中心哪个解析器负责该名称,然后向该解析器询问查询的答案。

DeFi

DeFi也是今年行业的另一个流行语,它是“Decentralized Finance”的缩写,指的是“去中心化金融”。在区块链的世界中,这个概念指代那些在开放去中心化网络中发展出的各类金融领域的应用,其目标是建立一个多层面的金融系统,以区块链技术和密码货币为基础,重新创造并完善已有的金融体系。DeFi行业覆盖的领域较为广泛,涉及支付、稳定币、借贷、去中心化交易所、衍生品等,DeFi领域涌现一批有价值的项目,比如MakerDAO、Compound、InstaDApp、Oasis App、Wirex、crypto.com、monolith等。其中MakerDao目前是DeFi领域最广为人知的项目,被普遍认为“启动了 DeFi运动的项目”。


在Devcon5中,MakerDAO 创始人Rune Christensen在演讲中介绍了DeFi下一步的发展方向,同时宣布了多抵押Dai系统(MCD)将于11月18日正式推出,并强调了Maker协议去中心化治理对本次上线的重要性。多抵押Dai将给Maker协议带来很多新功能,包括期待已久的Dai存款利率(DSR)和更多的抵押品类型。


Oracle

区块链预言机(Oracle)是区块链与外部世界交互的一种实现机制。它允许确定的智能合约对不确定的外部世界作出反应,是智能合约与外部进行数据交互的有效途径,也是区块链与现实世界进行数据交互的接口。


Oracle分类:


1、由可信中心提供数据通过第三方企业,提供智能合约运行所需要的外部数据,并将数据传输至智能合约中。


主要项目: Oraclize、Town Crier。


2、由分布式节点提供数据


分布式的预言机节点 / 预言机服务提供商从分散的数据源获取数据,通过算法对数据进行聚合,并将结果返回给到智能合约中。


主要项目: ChainLink、Augur、Witnet、DOS Network。


3、由可信联盟提供数据


组成的分散的预言机网络中的节点是指定的,对节点的信任,这很大程度上源于节点本身的利益相关者身份以及节点本身的机构声誉。


主要项目:Maker的预言机。


来源:万向区块链

点击进入招聘详情>
微信扫一扫
关注区块链新金融
扫一扫
下载数链APP
内容合作/商务合作:
gxcj@gongxiangcj.com
联系电话:
021-31128751