当前位置:首页 > 区块链新闻 > 正文

Eth 2.0 会成为第一个从 PoW转PoS 的公链吗?丨SheKnows第五期

来源: 互联网时间:2019-07-26 14:39:54

以太坊2.0究竟是什么?以太坊2.0的生态会有哪些变化?在技术上又有哪些新的点?BCH、ETC谁会成为以太坊的数据层?以太坊的未来之路到底该如何走?

面对以上种种疑问,本周二至本周四晚,巴比特首档社群访谈栏目SheKnows携手ETC,全面解析“后以太时代”(以太坊2.0)。

继周二晚上的“ETH2.0 生态”主题分享之后,周三晚上带来的主题分享是“从1.0到2.0——看后以太时代的技术走向”,分享嘉宾依次是:以太坊黄皮书翻译者杨镇、以太坊企业联盟中国区负责人张卫家、以太坊爱好者社区负责人阿剑,主持人洒脱喜。

图片1

分享要点如下:

1)信标链上自始至终不会有复杂的状态,但却是后续整个系统的中心。——阿剑

2)以太坊2.0的节点只为特定的分片处理交易,这样就实现了并行处理,大大提高了交易吞吐量和可扩展性。 ——张卫家

3)按每个验证者需要质押 32 eth 算,Beacon chain(信标链)的存款合约将至少会锁定超过 200 万个 eth。——杨镇

4)Casper FFG 相比于其它 PoS 共识机制,最大的优势在于其 liveness。——阿剑

5)惩罚应该在DAO(社区自动管理系统)建立起来,有了惩罚共识以后才有意义。——张卫家

6)VDF 作为一种开源硬件(ASIC)设计,目的是用来作为对通过 RANDAO 方式产生的随机数进行再计算来获得最终结果,它是要与 RANDAO 共同使用的,并不是二选一的关系。——杨镇

7)Eth 2.0 的分片系统处理的所有交易都不是跨片交易,不依赖于其他分片的数据,整体处理速度理论上能提高1000 倍,但这个整体性能会随着跨片交易比例的提高而显著降低。——杨镇

8)eWASM 阶段难度大风险大,更适合大企业来做。 ——张卫家

9)排除掉那些很大的噪音,你会发现对以太坊的共识比很多人想象中的都要强。——阿剑

10)Eth 2.0 能否成为第一个成功的 PoS 公链系统仍然是我最大的担忧。——杨镇

完整版如下:

以太坊2.0科普:从phrase0到phrase2

主持人:请阿剑老师为我们分享一下 phrase 0 Beacon chain(信标链)的信息。

阿剑:

信标链是 Eth2 中的主链,它将承担的职责有:维护验证者集合、为分片分配验证者(要求验证者提议区块或提交 attestation)、存储分片链的 attestation。

不同于 Eth1 的主链,信标链会用 PoS 机制来达成共识,具体而言就是 Casper + Last Message Driven GHOST。

信标链上自始至终不会有复杂的状态,但却是后续整个系统的中心

在即将到来的 Phase 0 中,Eth1 上的用户只需在保证金合约中存入 32ETH 便可获得验证者资格,参与信标链的出块过程。此外,在这个双链并行的阶段中,开发者现在还计划打造 PoW 主链和信标链的双向耦合,即:使用信标链来 finalize PoW 链上的区块。

主持人:请张卫家老师为大家讲解下phrase 1 分片链(Shard chain)的知识。

张卫家:

以太坊和其他区块链一样,存在着三元悖论问题,也就是安全性,去中心化,和可扩展性不可兼得。

以太坊2.0采用区块链分片的理念将网络的整个状态分割成一系列被称为分片的分区(1024个),每个区包含自己独立的状态及交易历史记录。 以太坊上的分片方案可以会将所有以0x00开头的地址放入一个分片,所有以0x01开头的地址放入另一个分片等。

在分片系统中,验证节点被随机地分配了创建分片块的权利。 在每个时隙期间(例如,6秒的时间段),对于每个分片k,有一个随机验证节点被选中,从而有权在“shard k”上创建区块。 对于每个k分片,另一组验证节点会被选为证明者。 块的标题以及证明节点的签名打包后可以发布在“主链”(也称为信标链)上。

以太坊2.0的节点只为特定的分片处理交易,这样就实现了并行处理,大大提高了交易吞吐量和可扩展性。

主持人: 请杨镇老师为大家讲讲以太坊2.0 phrase 2 VM的知识点。

杨镇:

Eth 2.0 的 phrase 2 目前还在 R&D 阶段,没有太多可以聊的东西。很多内容都还在讨论中,并不是最终结论。大家可以去这个地址跟踪最新消息:https://hackmd.io/UzysWse1Th240HELswKqVA?view

仅针对 VM,那么能确定的就是 Eth 2.0 会使用 Ewasm 作为执行代码标准,也就是说 Eth 2.0 里的智能合约无论是用 Solidity 写还是用 Vyper 写,最终都会编译为 Ewasm 字节码来在 Ewasm 虚拟机中执行。

具体的方式是通过一个叫做 EVMC 的 ABI(Application Binary Interface)来连接 EVM 和以太坊客户端(可以参考 ethereum/evmone 项目)。这是一种解耦的设计,将智能合约的执行和系统数据处理以及共识解耦了。Ewasm 的虚拟机是由一个叫做 ewasm/hera 的项目来维护的。

信标链验证者:至少锁定200万个ETH

主持人: 根据以太坊2.0研究者Justin Drake透露的信息显示,Beacon chain(信标链)的创始区块(MIN_GENESIS_TIME)最早将在2020年1月3日诞生(但很可能也会延期)。而在此之前,开发者们将提供一个存款合约,想要当信标链验证者的参与者可提前向该合约地址转32 ETH,那在这个阶段,从技术的角度来看,确定会发生一些什么,以及可能会发生一些什么呢?

杨镇:

据我看到的消息,这个存款合约可能会在今年9月或者10月发布到目前的主网,之后就可以开始接受验证者的注册。这跟分叉没有任何关系,只是目前主网上的一个合约而已。这个合约的代码已经有了,可以在 https://github.com/ethereum/eth2.0-specs/blob/dev/deposit_contract/contracts/validator_registration.v.py 看到。按目前的设计,这个合约需要接收至少 65536 个不同的地址作为验证者。

为什么是这个数呢?因为照目前的计划,Eth 2.0 将支持 1024 个分片链,那么 65536 个注册验证者就可以保证每个分片上都分配到至少 64 个验证者。按每个验证者需要质押 32 eth 算,这个合约将至少会锁定超过 200 万个 eth

所以这肯定是个相对漫长的过程,应该会持续数月。这期间会发生什么,谁也不知道;但这整个过程一定会很有意思。

主持人 :刚才我们谈到了32 ETH这个存款值,它是一个固定的值,为什么会设定这样一个值呢?而且在phrase 0,从以太坊1.0转到以太坊2.0的币会是单向的,也就是只能转入而不能转回,这样的设定是出于什么样的考虑呢?

张卫家:

这个32ETH存款值实际上是以太坊2.0参与权益证明节点的门槛。 从去中心化角度上看,门槛越低, 参与权益证明的节点越多, 越有利于去中心化和增加由加大随机性带来的安全性。 另一方面, 如果门槛太低,也会因节点过多造成信息传递负担和敲定时间加长。从以太坊发表的文章上看, 32 ETH 是一个技术和商业都可接受的证明节点存款值。

以太坊2.0不是一次性更新替换1.0, 而是分几个阶段进行,包括信标链、分片链、eWASM虚拟机等等。 在eWASM(执行层)更新以前,以太坊1.0和2.0的链会共存以太币在1.0链锁定并单向流动到2.0提供了可行的适合新旧链共存的转币机制。

Casper共识机制的优缺点

主持人 :我们知道,Beacon chain(信标链)是使用的 Casper共识机制,而 Casper又分为 Casper FFG和CBC Casper机制,在phrase 0,以太坊采用的是Casper FFG共识机制。关于这一机制,相对其它PoS或其它类型的共识机制有什么优点或不足吗?

阿剑:

据我所知,Casper FFG 相比于其它 PoS 共识机制,最大的优势在于其 liveness。在 Tendermint 这样的共识算法中,如果恶意验证者控制了 1/3 的权益,就可以让整条链卡死。

但在 Casper FFG 中,由于 RANDAO 和 VDF 的运行不受链运行的影响,所以可以保证即使某个验证者委员会中恶意验证者占多数,验证者混洗和出块权的发放都照常运行,链不会卡死。

不足当然是需要考虑更多细节。比如随机数生成的抗偏转性。

谈惩罚措施:有了惩罚,共识才有意义

主持人:好的,下面我们讨论下Beacon chain(信标链)的惩罚措施,目前以太坊2.0有两种惩罚措施,一种是面向不参与验证的验证者,而另一种则是面向恶意行为者,它们具体是怎样的呢?

杨镇:

据我了解,问题里说的“不参与验证的验证者”一般值得就是掉线/网络故障这种短时间无法进行工作的地址,这个惩罚相对是很轻的,只有当很多验证者(超过 1/3)同时掉线较长时间,导致信标链无法做最终确认时,才会受到较大的惩罚,且这个惩罚是随时间推移增长的,起初也不会太高。而恶意行为者(比如重复投票),则会直接收到较大的惩罚,比如直接罚没质押的若干 eth。

阿剑:

惩罚分为两种,一种是 Slashing,“罚没”,针对的是对竞争区块双重签名或者错签的验证者;罚没的最小力度是 1eth,但力度会随近期被惩罚的验证者数量而线性上升,如果近期有接近 1/3 的验证者被罚没,你就会被秒杀——罚没所有权益。

第二种是 inactivity leak,“怠惰惩罚”,即当有大量验证者都离线,使信标链无法正常敲定区块的时候,离线的验证者会被惩罚,惩罚力度也会随离线时间的上升而不断递增,最高达 60.8%

张卫家:

我理解是一个是节点不作为的惩罚,另一个是对恶意作为的惩罚。 我认为这种惩罚应该在DAO(社区自动管理系统)建立起来,有了惩罚共识以后才有意义。

随机性问题:协议并非二选一

主持人:关于PoS协议,随机性是非常重要的,目前Beacon chain选择的是RANDAO结构来实现随机性,而未来,开发者计划使用可验证延迟函数(VDF),请杨镇老师给大家讲讲RANDAO和可验证延迟函数(VDF)这两款随机抽样技术的情况。

杨镇:

RANDAO 就是 random DAO 的意思,其中的 DAO 就是 Decentralized Autonomous Organization 的缩写,也就是所谓的“去中心化自治组织”。这种方式是通过一个智能合约来使多人合作一起生成随机数的方式。它使用了智能合约开发里的所谓 commit-reveal 的设计模式。合约应该是可以反复使用的,也就是应该是一个循环状态机;每次产生一个随机数的执行过程会分为三个阶段:提交、揭示和实际计算。

第一个阶段是所有参与者各提交一个他们各自随意指定的输入数据的哈希值,等所有人都提交完或者规定时间达到时,进入第二阶段,由所有提交人提交之前哈希值对应的原始数据。

如果两次提交的数据相符,则作为一个有效的计算输入。待所有人揭示完毕或达到规定时间之后,合约将自动基于有效的计算输入(应该多于一个固定的最小数量)来计算实际的随机数。然后合约回到第一阶段的状态,可以重新开始生成随机数。

RANDAO 模式的风险就是:在揭示阶段,最后一个提交原始数据的人,是可以看到之前所有其他人的原始数据的(因为所有交易的附加数据都是公开的),可以预知最终的结果。

VDF 则是作为一种开源硬件(ASIC)设计的,目的是用来作为对通过 RANDAO 方式产生的随机数进行再计算来获得最终结果,它是要与 RANDAO 共同使用的,并不是二选一的关系。

也就是说,在 Eth 2.0 中,首先会由所有参与委员会的成员基于 RANDAO 的方式产生一个随机数,然后由 VDF 将此随机数作为输入来计算得到最终的随机数。

VDF 的计算过程是一种无法通过并行计算加速的计算过程,这也就能避免通过并行计算的方式提前获知结果而从中牟利的可能。目前这个延迟的时间(也就是计算的难度)被设定为 102 分钟,就是必须要经过 102 分钟的计算才能得到最终的随机数。

Mako:
VDF 矿机的研究,目前是以太坊基金会和 filecoin 一起在做,进展好像不是很多。

1024个分片:兼顾安全和性能

主持人:刚才,张卫家老师有提到说,以太坊的分片数量被设为了1024个,这些分片之间会互现由合约进行交流,那么为何会设置为1024这个数字,不是更多也不是更少呢?其中的权衡之道是什么?此外这也意味着会有131072(1024*128)个验证者的位置(最优),而届时如果验证者数量不够,会发生一些什么?

阿剑:

哈哈哈。这个数量咋定出来的我也不知道。可能需要是 2 的次方个吧。另外,增发率也会动态调整来激励验证者加入。
Mako:
程序员喜欢 1024。
张卫家:
二进制,肯定是二的次方。1024 不是固定的,如果验证节点不够,Vitalik 也能让基金会运行一些节点。
阿剑:
确实可能是安全和性能的权衡,验证者不能太少,不然分片就容易被攻破。
杨镇:
社区里的大神解释过这个问题,说是出于安全性的考虑,基于每个分片至少 128 个验证者这个设计来确定的 1024 个分片这个数字。我并不是算法专家,没法简单地解释为什么 128 个验证者就是安全的。大家有兴趣的话,可以去看 V 神的论文:https://vitalik.ca/files/Ithaca201807_Sharding.pdf

对于 Eth 2.0 的分片系统来说,因为每个分片都是独立的地址空间,所以如果系统中处理的所有交易都不是跨片交易,也就是不依赖于其他分片的数据,那么整体处理速度理论上确实能提高了 1000 倍;但这个整体性能是会随着跨片交易比例的提高而显著降低的。关于跨片交易的处理是分片系统中最复杂的部分,目前也还没有确定的技术方案。

最后有关验证者数量不够的问题,最简单的方案就是让各个分片排队轮流出块,保证能出块的分片的安全性,但网络整体性能就会相应降低;另外也可以允许所有分片同时出块,但减少每个分片的验证者,这样肯定就会降低每个分片的安全性。这个权衡方案也还在持续讨论中,并没有最终确定。

主持人:根据资料显示,beacon chain(信标链)与分片之间是通过一种称为交联(Crosslink)的设计进行周期性通信的,能否给大家通俗地解释一下这个设计?

杨镇:

通俗肯定是做不到了,我尝试尽量简单地解释一下。crosslink 数据中包含了以下几个字段:分片号、信标链上的父区块状态根、开始 epoch、结束 epoch 和分片链上的数据状态根。这里说的状态根,就是状态树的根节点哈希(如果你还不明白这是什么意思,那你大概需要去补补 Eth 1.0 的课了)。

epoch 是一个投票周期,大约是 6.4 分钟,也就是 64 个 slot 周期。这样就很容易理解了:crosslink 其实就是某个分片在某个 epoch 结束时的数据状态版本。

图片2

不过这里还需要多解释一点儿关于信标链的设计。crosslink 是 attestation data(大概可以译为“见证数据”,也就是由验证者提交的用来证明分片链状态的数据)的一部分,attestation data 则是信标链中区块数据的重要组成部分,所以实际上 crosslink 也就是信标链中区块数据的一部分,是用来表示系统的整体状态和用来支持跨片交易操作的关键数据。

阿剑:
应该可以简单解释成:单分片定期将自己的状态证明存到信标链上,作为跨分片通信所需的密码学证明材料。
向丹:
再通俗点是否可以理解为:分片时不时需要在信标链上报告状态,crosslink就是分片之间的通关密语。

异步交易VS同步交易

主持人:Vitalik用火车旅馆问题来解释异步transaction,并且介绍了一个称为“猛拉”(yank)的解决方案,可以大致讲讲火车旅馆问题,以及这个解决方案的原理吗?

张卫家:

火车旅馆问题的场景是用户想要购买火车票并预订酒店,并且希望确保操作是原子的,要么保留成功,要么两者都不成功。如果火车票和酒店预订应用程序在同一个分片上,这很容易:创建一个尝试同时进行预订的事务,要么两个预留成功, 要么抛出异常并恢复所有内容。但是,如果两者都在不同的分片上,那就不那么容易了;

Vitalik介绍的解决方案是让合同本身可以跨越碎片移动;其中合约可以从一个分片“拉”到另一个分片,允许通常驻留在不同分片上的两个合同临时移动到同一分片,然后进行同步操作。

主持人:说到异步交易,自然还有同步交易的概念,Vitalik提到会通过类似Plasma的方法来实现,阿剑老师为我们讲讲这大概是个什么样的思路?

阿剑:

关于同步型的跨分片交易,目前资料比较少。包括 Vitalik 说的用 Plasma 方式来实现我也不了解。

不过我听说过 Viltaik 提出过的另一种同步跨分片交易的模式,叫 Merge Block。大意是让 A 分片的区块附带状态 witness,让 B 分片的验证者可以收到区块及其 witness(技术上来说,B 分片的验证者变成了 A 分片的无状态客户端),然后可以将 A 分片的该区块与 B 分片的区块同时执行。

另一种模式是在给定时间内让某分片变成主分片,在该段时间内该分片的验证者可以任意读写其它分片,即其他分片的验证者也优先执行该分片的区块,这样也能创造同步执行。

杨镇:

补充一句,貌似是用 sparse merkle tree 来做,所以说类似于 plasma(看不懂的童鞋就无视我吧……)

状态租赁:实现起来未必容易

主持人:Phase 2阶段对于以太坊2.0平台而言是极其重要的一个阶段,其重新引入了智能合约,每个分片将基于eWASM管理一个虚拟机,此外,状态租赁方案也可能会被引入,这将会带来什么影响吗?

阿剑:

eWASM 和状态租赁方案的情形我都没有跟进,一无所知。但状态租赁会明显面临收费问题,不是个简单的问题。有一位非常棒的开发者叫 Alexey Akhunov,就在做状态租赁的研究和 EIP,大家可以关注一下。
张卫家:
对于eWASM ,我还不是很了解,还在看波卡的WASM是否和EVM比有更多优势。现在还有微软的TTI和digital asset DAML。
杨镇:
其实像以太坊这样的公共智能合约平台,都存在所谓“状态爆炸”的隐患。也就是当网络(主要是智能合约)的使用量快速增长的时候,会导致系统存储需求的爆炸式增长。

因为全节点需要维护系统中所有账户的状态、保存所有合约的状态,那么在分片实施之后,由于地址空间增大了 1000 多倍,而使“状态爆炸”问题到了不得不解决的程度。

解决的方案就是要逐步的随机丢弃历史数据。时间越久远的数据,会有更高的几率被全节点丢弃,但从全网来看,即使是久远的历史数据,仍然有一定的几率能够获取到。

那么这就产生了一种需求,也就是我希望我的历史交易数据/合约数据能够被一直保留下来,只要我能付给替我保存数据的那些全节点一些报酬。这就是所谓“状态租赁(state rent)”的大致来由。

这种租赁行为是可以通过智能合约相对简单地实现的。但这个方案目前还处在很早期,最近的更新是在去年年底。所以其具体设计和实际影响如何还不好说。

阿剑:
我主观上觉得实现起来未必容易,而且会在经济上引入过多的复杂性。

以太坊2.0未来:难言乐观但罕有其匹

主持人:好的,下面我们进入今天最后的一个问题:有人说以太坊2.0的设计太复杂了,对此Vitalik的回复是: “在过去的一年里,它已经变得相当简单了,且其规范要比黄皮书字数要少,以太坊2.0中的很多东西要比1.0简单得多……”,另外Justin Drake说phrase 0大约需要指定1024行代码,预计phrase1+phrase2的代码也是1024行。各位老师,那你们的观点是什么呢,以及是否看好以太坊2.0呢?

杨镇:

好,泼冷水的事我先来,哈哈。

目前所有以太坊客户端的代码量肯定都是以万行为单位来计算的,所以我想问题里说的 1024 行代码,大概指的是核心算法或者关键处理代码。

然后我觉得单纯以代码量来衡量系统的复杂程度是不科学的,尤其是从软件工程师的专业角度来看。因为有些数十万行代码的项目,其实可能非常简单,而一个几百行代码的项目也可能非常复杂。

此外,你说一个能处理 1000 多个区块链的系统比一个只能处理一个区块链的系统简单,或者一个投票系统比一个掷骰子系统简单;抱歉,我实在无法认同。我们这期虽然花了这么多时间来讲 Eth 2.0,但我感觉依然并没有把整个运作过程说的很清晰或者很容易看明白,这足以说明 Eth 2.0 的设计其实并不简单。

我想最大的问题在于这又是一个实验性的大项目,并且没有经过足够的验证和测试,比如惩罚机制和跨片交易到底能否运转正常、验证者不足时网络的表现如何这些问题并没有令人满意的解答;Eth 2.0 能否成为第一个成功的 PoS 公链系统仍然是我最大的担忧。从以太坊社区近一两年的工程状况来看,我本人真的乐观不起来。

张卫家:
先来点轻松的。爱因斯坦的质能方程只有一行,E=mc2, 但做出来,需要耗费很长的时间。

似乎Github上以太坊2.0的代码行数不多, 但以太坊由于规模大,节点之间又是不可信任的, 所以改动每行代码都是牵一发而动全身,影响很大。我个人认为eWASM 阶段难度大风险大,更适合大企业来做

阿剑: 我个人也认为 eth2 确实要比 eth1 复杂。客观上来说这是因为 PoS 和分片的引入,导致系统中出现了很多原本我们不太需要考虑的因素。但会这么想可能也是因为我们理解得不够深,等到它真正实现了可能也会觉得稀松平常。

不过我也认为,以太坊的研究和开发力量罕有其匹,生态是最丰富的,社区是最活跃的,所以没有理由不看好以太坊。排除掉那些很大的噪音,你会发现对以太坊的共识比很多人想象中的都要强。

主持人:好的,由于时间关系,关于以太坊2.0的技术之旅我们就到此为止了,其实还有很多重要的技术我们并没有谈及,比如BLS签名、zk-SNARKs、plasma、状态通道等技术,也正如老师们所说,这次分享其实也没法说清楚整个以太坊2.0的设计,最后推荐一下https://ethresear.ch/ 这个网站,上面会有关于以太坊研究社区的最新成果。

第三场SheKnows活动的主题《etc、bch谁能成为eth的数据层?》就是由Vitalik最近提议所引发的哦,非常期待@小别 和江卓尔老师以及Terry老师的对话。

再次感谢各位嘉宾为我们带来的精彩回答,感谢ETC亚太社区对本次活动的大力支持。

免责声明:

1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。

2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。