星期四 , 3月 28 2024
首页 / 区块之心 / 以太坊2.0技术分享

以太坊2.0技术分享

01
以太坊的发展之路
这是一张2019年的以太坊路线图,我们看到从2013年底,以太坊创始人Vitalik Buterin发布了以太坊初版白皮书,启动了项目,到现在已经不知不觉走过了6个年头。
2014年7月24日起,以太坊进行了为期42天的以太币预售。到9月份,以太坊通过预售一共募集到 31,531 个比特币,根据当时的比特币价格,以太坊成功募集到了超过 1800 万美元,根据 CoinTelegraph 的报道,以太坊「作为最成功的众筹项目之一,将会被载入史册」。

到了2015年7月30日,以太坊Frontier网络发布。开发者们开始在Frontier网络上开发去中心化应用,矿工开始加入网络进行挖矿。矿工自身通过挖矿得到代币奖励,另一方面也提升了整网的算力,降低被黑客攻击的风险。

Frontier是以太坊发展过程中的第一个里程碑,它虽然在开发者心目中的定位是beta版本,但在稳定性和性能方面的表现远远超出了任何人的期望,从而吸引更多的开发者加入构建以太坊生态的行列。

2016年3月14日(π日),以太坊平台的第二个主要版本Homestead对外发布,同时也是以太坊发布的第一个正式版本。

2017年9月18日,以太坊开发团队开始测试「大都会」(Metropolis)版本的第一阶段:拜占庭分叉。2017年10月16日,主网在4,370,000区块高度成功完成拜占庭分叉。

此次硬分叉将为智能合约的开发者提供灵活的参数;同时,为后期大都会升级引入zkSnarks零知识证明等技术做了准备;延迟引爆难度炸弹,将冰河期推迟1年;挖矿难度显著降低,因此以太坊平台的交易速度会明显提高,对应的矿工们挖矿的收益从每区块5个以太币降低到3个。

2019年6月,「君士坦丁堡」硬分叉在 7080000 区块高度完成,升级中包括五项改进方案:

1)为数据存储的变更引入更公平的定价方法;2)使智能合约开发商受益;

3)更良好的促进基于状态通道和链下交易的特定可扩展性解决方案;

4)随着更多事物被转移到第二层;

5)将块采矿奖励从 3 ETH减少到 2 ETH,以及延迟以太坊的难度炸弹 12 个月。

就在上个月,以太坊正式完成了「伊斯坦布尔」分叉,包含六个以太坊改进提案(EIP),解决的主要问题是:拒绝服务(DDoS)攻击弹性,降低Gas成本,增加基于zcash的Equihash工作量证明。我们看到以太坊作为区块链2.0技术的代表,不断发展,不断创新,成为了业界数一数二的明星项目。

这张图可以看到,以太坊的项目资产规模稳居第2的位置,远远超过其他加密货币项目。这与以太坊技术的高度有着非常密切的关系。以太坊背后的开发者也是非常具有极客精神的一群人。

 

02
以太坊核心技术
回到技术层面,我们可以看到以太坊的技术架构也是一种分层架构。从上到下,依次是应用层,合约层,协议层。协议层包含了EVM虚拟机,区块管理,KV数据库,共识算法,P2P网络等基本组件。其中智能合约是以太坊最最核心的技术,它的实现基于以太坊内部的EVM虚拟机,智能合约可以完成任何代码逻辑,从而支持多样化的商业流程,以太坊中使用solidity语言编写智能合约。

智能合约构建了以太坊丰富的DApp生态,让区块链更加落地,更加能与各行各业相结合,更加方便与物联网、大数据、人工智能、云计算这些技术相结合。

这也是以太坊区别于比特币即区块链1.0系统的最大魅力所在。

03
企业以太坊
大家知道以太坊是一个公链项目,那么和我们的日常生活,还有我们开发者有什么关系呢?我们怎样利用好以太坊这个技术资源,用到自己的项目上,或者做一些传统行业的创新?这一直是困扰行业从业者最大的问题。

目前可能最成功的应用还是围绕着数字资产的金融生态,比如交易所。但是在资产交易之外,人们的探索也一直没有停止。

早在2017年,以摩根大通、芝加哥交易所集团、纽约梅隆银行、汤森路透、微软、英特尔、埃森哲等20多家全球顶尖金融机构和科技公司成立的企业以太坊联盟。

这是企业以太坊的协议栈,我们看到比以太坊公链多了不少内容,它也更偏向一种企业架构,更加符合联盟链的定义,在隐私保护、跨链通信、共识算法方面做了改进和优化。

 

04
技术改进方向
我本人也是2017年和企业以太坊EEA有过一些交流,参加过他们组织的电话讨论会议。但是由于联盟是一个松散的组织,缺少明确的发展目标和合作机制,直到今天也没有什么实质性的进展。用他们自己的话说,就是组织内有太多的politics。其实这个联盟还是以摩根大通的贡献为主,他们推出了Quorum技术框架,就是以太坊在企业应用的比较好的原型。

蚂蚁区块链的BaaS平台,微软云都是支持Quorum框架的。

那么,现在区块链的技术也遇到了瓶颈,也就是以太坊2.0概念被提出的原因。

主要的优化集中在三个方向:性能、隐私和手续费。

05
以太坊2.0
ETH 2.0将分三个阶段实现:阶段0

信标链,涉及核心部分、网络、签名方案和随机性。它在 Prysm Labs 创建的 Sapphire 测试网上运行。如果你有 Goerli ETH,则可以加入该测试网,质押gETH。

阶段1

是面向64条独立运行分片链的协议实现。每个分片都可以运行网络的一种状态。例如,你可以将 Maker 放在一个分片上,将其他 DeFi 应用放在另一个分片上,将 Eth1 链放在另一个分片上,将 Crypto Kitties 放在另一个分片上,依此类推……

阶段2

支持执行引擎,实现整个空间的交易和帐户模型。执行引擎使系统的复杂度最小。

不知道是否还会推出更多的后续阶段。尽管研究人员希望看到更多的 Eth2.0 分片链开发规划,但这一切仍处于发展的早期。

这个是以太坊2.0的分层框架,主要变化是增加了Beacon Chain和Shard Chain。Shard翻译为分片,类似于分布式操作系统,不同分片内的交易可以并行处理。

经过一段时间的开放讨论,以太坊的2.0技术也逐渐开始收敛:分片数量从之前的 1024 减少到 64,分片区块大小从(目标值 16,上限值 64)kB增加到(目标值 128,上限值 512)kB。分片总容量为 1.3-2.7 MB/s,具体值取决于时隙(slot time)

如果需要的话,分片数量和区块大小可随时间的推移而增加,比方说 10 年后最终达到 1024 个分片,以及 1 MB 区块。

在 L1 和 L2 层实施了诸多简化方案:

1)所需的分片链逻辑更少;2)因为 「原生的」 跨分片通信可以在 1 个时隙内完成,所以无需通过 Layer-2 为跨分片通信加速;

3)无需通过去中心化交易所来促进跨分片交易费手续的支付;

4)执行环境能够进一步简化;

5)无需再混合序列化和哈希。

当然,这也引入了一些问题: 

1)信标链的开销更大;2)分片区块产生时间更长;

3)对 「突增性」 带宽需求更高,但对 「平均」 带宽的需求更低。

TPS一直是区块链被关注的重要瓶颈,我们知道比特币和以太坊都采用了PoW共识算法,TPS也就10左右。最近以太坊2.0研究中引入了zk-rollup技术,它理论上可以将交易提高到3000TPS。

接近中心化系统的性能,大家知道,Visa 网络目前平均TPS为2000。

这是使用zk-rollup技术的以太坊理论性能对比每个批次(一个批次就是一个 zkRollup 区块)包含 2048 笔(简单的以太坊)交易和一个 zk 证明。但是,由于实施了 EIP 1108 和 EIP 2028 这两个提案,交易和证明的 gas 成本现在都发生了变化:每笔交易为8.125字节。

当前每笔交易只需耗费16个gas /字节,因此每笔交易 gas 花费为 8.125*16=130 gas。由于每批次有2048笔交易,因此每批次的交易成本为130 * 2048 = 266,240 gas。

如果将15个批次插入以太坊区块,由于每个批次可容纳 2048 笔交易,这意味着我们可以让每个区块打包15 * 2048 = 30,720笔交易。

30,720个交易/ 15秒=每秒2048笔交易。

当然以上知识理论推导,还存在一些实际问题需要解决:每个 zkRollup 批次都需要简短的加密证明(zk-SNARK),以证明该批次中交易的完整性。事实证明,生成此证明的计算费用十分昂贵。这才是达到理论吞吐量限制的主要瓶颈。

目前使用一个 CPU 和三个 GPU,需要几分钟时间才能生成一个这样的证明。尽管通过并行计算可以显着改善性能,但是将证明生成时间从几分钟减少到几秒钟,同时保持合理的成本,仍然是一个重要的挑战。

最后,再讲一下零知识证明,它被用于保护区块链上的数据隐私,非常适合用于医疗行业的电子病历(HDR)场景。

理解零知识证明,大家可以回顾一下阿里巴巴和四十大盗的故事: 

当强盗向阿里巴巴拷问打开山洞石门的咒语时,他对强盗说:「你们在离开我一箭远的地方,用弓箭指着我,当你们举起右手我就念咒语打开石门,举起左手我就念咒语关上石门,如果我做不到或逃跑,你们就用弓箭射死我。」
阿里巴巴证明了他知道咒语,同时也没有泄漏咒语的具体内容。zk-SNARKs, Zk-STARKs和 BulletProofs(防弹证明)是零知识证明用于区块链隐私技术的3种主要技术。对比来看:

1、Bulletproofs 和 Zk-STARKs 不需要可信设置,zk-SNARKs则需要可信设置;zk-STARKs:通过证明者与验证者之间的交互来执行,以一种有效的数学方法,使得验证者通过验证每一个步骤,最终确信证明者确实知道某个信息或者拥有某种权益。

其特点是:证明快、验证快,但证明体积大 SNARK指无需双方交互,证明人单方出具即可,不需要反复在双方之间传递信息。其特点是:证明慢、验证快,证明体积小。

2、证明速度对比:Zk-STARKs > zk-SNARKs > Bulletproofs

3、文件大小:zk-SNARKs < Bulletproofs <Zk-STARKs

简单一句话:Zk-STARKs 太大,bulletproofs太慢,优点是不用预装,zk-SNARKs最优。

目前已经有相当成熟的第三方库,可以用于零知识证明的开发和研究。

这一领域也是学术界研究的热点,最近几个月宣布了很多 zk-SNARK 构造相关的新突破。新的发现是臭名昭著的「可信设置」目前来看是多余的,意味着可以使用通用计算。然而,很难找到关于这些新构造的可以理解的信息。新的零知识证明构造解决了设置过程的限制,这意味着像智能合约这样的任意代码都可以作为 zk-SNARKs 运行。通常有两种做法:

透明设置:设置过程创建一个参考字符串,是公共的,但是并不会产生有毒废料。这类似于 zk-STARK 工作方式。Fractal、Halo 和 SuperSonic-CG 都使用了透明设置方式。这种方法的缺点是证明大小通常很大。Factal 和 zk-STARK 证明可能高达250kB大小,这对于区块链应用来说是不切实际的。

Fractal 团队告诉我,他们正在努力缩小证明的大小。Halo 和 SuperSonic 具有10kB甚至更小的证明尺寸。(注意:zk-STARK 是特定的零知识证明的名称,类似于 Groth16 或 Fractal)

通用设置:设置过程创建结构化字符串(structured reference string),会产生有毒废料,但创建不再局限于单一电路。相反,一个参考字符串可以与无限数量(具有一定上限)的任意电路一起使用。例如 Marlin、SuperSonic-RSA 和 Plonk。

仪式结束后,可以更新这三个构造的参考字符串以提高安全性:如果当前的有毒废料泄漏,则只需更新建立过程来再次保护系统。(一些通用的 zk-SNARK,例如 AuroraLight 和 Libra 使用静态不可升级的通用设置。我们不会在本篇博客中讨论这些内容)。

表中是一些zksnark算法的性能对比。在证明方方面,为每一个 zk-SNARK 构造创建证明需要O(n log n) 的时间。差异主要是证明的大小、验证时间和参考字符串的大小。综上所述,我们主要考察了以太坊2.0的三个技术点:sharding,zkrollup和zksnark。

涉及到比较多的理论知识和算法,需要花点时间才能理解。不过重点还是建议放在这些算法有什么用途,以及如何使用上面。

Q&A 

Q1:以太坊完成了分叉,那么会对后续产生什么主要影响吗?答:以太坊的分叉,就是一种软件升级。以太坊的升级方向,就是以太坊社区希望发展的方向,所以随着一次次升级,网络会更加安全,更加高效,也更加符合社区治理的思想。

这个我们平时软件开发的快速迭代是一个道理。唯一不同的是,以太坊是一个承载了千亿资产的金融系统,每次升级资产的安全性和服务的连续性没有收到丝毫的影响。这也是这个项目值得关注的原因。

Q2:方便简单介绍一下 solidity 语言吗?

答:solidity是一种语法非常类似javascript的以太坊特有的脚本语言。它有高级语言的大多数特性,最常用的操作就是对以太坊的账户,账户中的余额进行操作。

solidity非常适合用于实现数字资产,比如ERC20,ERC721,ERC777都是非常常用的数字资产类型。

之前非常热闹的币圈项目资产都是围绕ERC20在做文章,以以太猫为代表的区块链游戏则是利用了ERC721标准。

Q3:区块链平台的迭代,受到公众性的影响,不能太快太激进,比如会有分叉的问题,老师觉得这个问题未来能够解决吗?在软件平台上,通常会出现马太效应,也就是胜者通吃,现在以太坊位居平台第一,是否其他平台就没有机会了呢?非中心化,也就是DAO的理论,好像是从以太坊开始才渗透的,但实际上权力的集中会带来效率,这个问题怎么看呢?

答:首先,明确一点,区块链项目的成功不仅仅取决于技术。V神发文也提到,社区远比代码重要。代码只是实现社区治理和规则的工具。

在解决一些基本问题上,并不会用到很高深的技术。反倒是区块链中的智能合约和通证机制,是组织改进非常核心的内容。

区块链平台的迭代,现在可以说满足不少的应用场景了。但是以太坊是为全球用户服务,所以技术难度会更大。

我们研究区块链,还是更多放在如何将区块链技术落地,改造一个行业,或者解决一些核心社会问题,比如:医疗、教育等。

以太坊的DAO是非常好的思路,去中心化也是相对的,也就是多中心化。PoS的思想就是,干系人关系越大,投票的权重也越大。不是每人都可以投票。

Q4:请问王老师, 接下来以太坊生态中,对于普通的个人开发者,最大的机会在哪里呢?

答:我们面向的未来是一个可编程的社会,有大量的商业规则和逻辑需要转化为智能合约,人工智能解决了生产力的问题,区块链能够更加有效和公平地治理这些生产力。咱们开发者了解这些原理,就可以在具体的某个场景中,帮助实现这些逻辑,贡献社会价值。

当然区块链的底层也有很多技术挑战,但是这更加适合有一定学术研究基础的同学了。

技术参与建议还是放在区块链应用方向,区块链底层不太适合大多数人。

比如做区块链的工具就是很好的思路,像imtoken类似的引用。比如:etherscan这类。

Q5:DApp方向有什么好的建议吗?

答:广义上讲,我觉得有几个方向吧,一个是金融类,一个是个人信息类。金融就是数字资产的交易,投资,增值等,因为这个领域也越来越合规了,监管已经进来。个人信息的隐私保护,越来越被看重,个人信用、健康档案,个人消费画像,越来越需要恢复主权。

Comunion的DAO,这是一个非公司,但超越公司的组织。不同背景,不同角度的思想在一起碰撞,会产生非同一般的效果。

DAO的财务和人员管理,都是非常需要DApp这类工具帮助的。

BlockMania是区块链咨询智库,旨在将区块链行业最深度的认知和思考带给行业与公众。如同区块链一样,我们认为每一个idea都有成为连接另外的idea而成为节点的可能性,因此我们要搭建一个将idea从点连接成线,从线汇聚成网络的平台。在过去的一年里,围绕区块链市场、技术、应用等话题已举办多场高质量线上AMA活动,欢迎关注。

关于 冯先生失眠中

冯先生失眠中
卷而怀之

检查

区块链,只是金融发展的延续吗?

区块链诞生于 2008 年的那 …

发表评论

邮箱地址不会被公开。 必填项已用*标注