专访资深以太坊技术专家杨镇:分片技术能否破解以太坊寒冬之危?

image

4月30日V神发布的分片技术使2018年成为以太坊之年;随着ICO寒冬到来,以太坊价格暴跌,截至9月7日以太坊(ETH)下跌超过70%;而继而传出的芝加哥期权交易所(CBOE)将要在2018年底推出以太坊(ETH)期货的消息,或许会给低迷的以太坊带来转机。

一波三折的以太坊面临的“归零”争议,又将如何突围?为此,有声音指出,以太坊效率低下,解决这一关乎整个社群生死存亡问题,或将为以太坊带来新的转机。而分片技术正是着眼于改进主链本身的协议来提高它的性能的一项技术。

矩阵数字经济智库有幸专访了资深以太坊技术专家杨镇,矩阵数字经济智库常驻专家,从以太坊所面临的问题到解决方案,再到片技术以及区块链应用等多方面解构以太坊技术突围之路。

1

杨镇:“老程序员”的以太坊技术布道之路

性格上循规蹈矩,执着于精益求精的杨镇在大学毕业后先后从事过软件外包行业、企业内部业务系统的全生命周期工程实践以及工程过程标准(CMMI)软件质量管理等工作。

在经过了接近十年的软件开发、软件工程实践和工程方法论的积累之后,在2011年入职联想在其内部 IT 团队任一线技术经理。希望能在所谓的“大公司”里寻求发展。尽管在两年的大公司生涯中表现还算出色,但他一直没有放弃追寻适合自己的生活和工作方式。

image

在不到三年的创业经历之后,杨镇在 2016 年初重新回归企业 IT 服务领域,加入一家做企业资产证券化业务的创业公司任 CTO,在不到两年的时间里帮公司打造了一个 ABS 业务的 SaaS 产品。如果说这是一次对成熟技术产品平台的追寻;那么 2017 年初评估用区块链技术来支撑公司相关业务的可能性,就是一次对全新技术方案的勇敢尝试。

虽然最终因为种种原因并没有实际在公司业务中应用区块链技术,但在不断的技术探索中杨镇看到了以太坊的价值,也就是“智能合约”平台的潜力,也发现了个人发展的另一种可能。本着学习的目的,他花了7个月的时间用业余时间逐字逐句翻译了 Homestead 官方文档。以此为契机,他开始接触区块链(以太坊)技术社区,对以太坊黄皮书的中文版进行了独立校订,并作为 Solidity 官方文档中译项目的贡献者、管理员和主要的校订人参与到中文社区贡献中。在今年七月份,他还与一个旨在打造高质量的区块链技术课程的重运营模式在线技术教育社区/平台合作,制作了一个以太坊智能合约高级开发的在线课程(https://www.jianshu.com/p/19781df7af93)

同时,杨镇表示在未来会将主要精力用在区块链技术的布道/技术推广上,也希望能用自己的力量帮助国内有志于从事区块链技术的同行节省一些从入门到精通的时间,希望能逐步培养出真正“靠谱”的区块链/智能合约开发者。

杨镇目前主要参与的 Hiblock 区块链社区,已经进行了两个区块松(区块链技术黑客马拉松),多次线上、线下技术分享/见面会,同时也有自媒体渠道、网站、很多项目方和合作伙伴,日前也已经完成了自己的第一个产品,目前来说进展顺利。

只是,真正沉淀下来的有质量、也有兴趣参与社区的开发者还很少,这也是目前各个社区所面临的共同的问题,也需要一些积累的时间;毕竟做技术还是没法速成的,几个月就成为“专家”的天才实在是凤毛麟角。

2

“以太坊之年”驳议

有人认为今年以太坊的分布式应用 DApps 将主要解决扩展规模障碍,2018年将是“以太坊”之年。但醉心以太坊技术的“老程序员”杨镇表示并不同意这种说法:

以太坊目前的版本拜占庭(BYZANTIUM)在 2017 年 9 月就已经上线。2018 年里以太坊没有任何大的修改或者增强,Solidity 编译器有小版本升级,但没有太大区别。

image

以太坊从诞生开始就可以认为是一个理想主义的实验性的平台:不过多地人为干预,让生态中的参与者自发地去进化;重大决策过程也会考虑普通参与者的意见;以太坊社区对理想的坚持,应该得到尊重和赞许。以太坊是世界上第一个智能合约平台,也是目前对开发者最友好的、生态最健全的智能合约平台,所以它的地位,短时间内依然不会被撼动。

不过以太坊团队自身工程能力的欠缺也已经不是什么秘密了;从 2016 年 Gavin Wood 博士的离开开始,以太坊早期的核心开发团队绝大多数已经离开了以太坊社区。而把所有计算都放到一个单线程(单进程)的“世界计算机”上是不是一个正确的、有效的方法,恐怕也已经早有定论(从软硬件工程的角度,分层架构是必然选择,这也已经是业内共识)。只是以太坊已经成为一个成熟的生态,要修改它,代价过高,所以需要格外谨慎。

杨镇认为 V 神对于以太坊的坚守大概是外界看好它的最主要的原因,而以太坊的 research 团队的水平也是可以期待的。这也让我们有理由相信以太坊社区在未来一两年之内能拿出真正革命性的主链扩容方案,但工程实践上的表现仍然有待观察。

3

以太坊的问题及解决方案

以太坊发展至今,已经暴露出一系列的问题和矛盾,主要存在着性能不足、治理结构不全面、存储空间剧增等方面的问题,对此杨镇基于对以太坊的深入研究给我们做出了解答。

(1)性能方面的不足,是基础技术决定的。一个分布式全球共识系统,一个单线程的“世界计算机”,性能当然不可能与成熟的中心化技术相比;但就目前的整体计算量和应用普及程度来讲,大概也还并不是致命伤。不过这个性能问题也是目前以太坊社区在主要解决的 layer1 扩容问题,具体地说,就是指正在设计中的 Shasper(Casper+Sharding)协议的实施。

(2)治理方面,一般可以分为链上治理(on-chain governance)和链外治理(off-chain governance)。以太坊社区的风格是不过多地人为干预,除了 EIP(Ethereum Improvement Proposal)之外,并没有成体系链外治理设计。而链上治理,目前以太坊是没有这样的技术机制的;未来基于 PoS 的共识协议(Shasper)实施之后,就可能有一些相应的技术方案来支持所谓的链上治理,但目前这还是未知数。区块链治理的问题也可以看作是一种权衡,我们要选择更相信技术还是更相信人性。

**(3)节点数据存储方面。**基于区块链系统本身的技术特性,像以太坊这样基于账户模型所构建的基础数据结构,所有账户状态和合约状态都必须要保存在所有矿工节点和全节点上,并通过在网络间传输的区块数据进行验证以达成全网共识,这种设计造成的极度冗余的数据存储方式是必然的,也是必须的;其中确实存在全节点的存储压力问题,而这在最新的轻节点协议中已有相关设计。

未来以太坊在处理大量的历史数据时,会采取一种混合方案。一方面,允许全节点对历史数据(超过 1 年以上的交易/区块数据)进行随机丢弃,具体的算法将保证时间越近的数据被丢弃的几率越低;从全网状态来看,时间越久远的数据才有更大的几率在所有节点上都找不到;以此来降低全节点存储的压力,同时会给予全节点一定的奖励以鼓励它们保留历史数据(这个设计在目前是没有的)。

另一方面,也允许用户向全节点“租用”存储空间以保存与用户指定的账户相关的历史数据;即用户可以定期向全节点支付数据存储费用以保证自己账户的历史数据不被丢弃,这可以很简单的通过智能合约实现。通过这样的一种混合方案,以太坊网络将可以逐渐降低/稳定全节点的存储压力。这个方案目前也还只是 draft 阶段,计划中它将会根据 Shasper(Casper+Sharding)协议的实施情况具体排定上线时间。

以太坊社区始终在致力于解决这些已知的问题,但实际进展确实不尽如人意;对此,杨镇也认为应该对社区保持信心和耐心,改进方案的最终结果也值得我们共同期待。

4

“分片时代到来”,分片技术原理

以太坊性能问题一直为人所诟病,而就在2018年4月,V神发布了一个新的概念验证,演示了如何把分片扩展解决方案“栓在”以太坊主链上,并在Twitter发帖称“分片即将到来”,将大幅提升以太坊交易处理能力。以太坊分片技术意味着区块链技术现在发展得更加多元,其可扩展性带宽问题可以在2020年之前得到解决。

有人称“分片”是智能合约发明以来的最大突破。对此,杨镇也做了技术性的解读。

所谓分片,是指以太坊主网扩容的技术方案,英文是 Sharding。请注意这是主网扩容,也就是 layer1 扩容。

目前的以太坊主网,其实是相当于一个单线程(单进程)的在所有矿工和全节点上都会运行来达成共识的一个“世界计算机”,它目前的平均 TPS(Transactions Per Second)大概是在 10 这个量级。

分片(sharding)就是把这个单线程的计算机,扩展为多线程(目前的设定为 1024 个线程)计算机,也就是同时可以有 1024 个 shard 链来处理交易;当然,地址/账户状态也就将会分别保存在这 1024 个 shard 链上。

这样做之后,就会产生一个很明显的问题:因为地址/账户已经分散到不同的 shard 链上了,那么不同的 shard 链上的地址之间如何进行交易呢?(这里需要理解的是:Sharding 方案中的某一个用户的账户/地址仅会存在于某一个 shard 链上,而并不是把目前的所有账户/地址拷贝 1024 份)。

目前是设计了一种叫做 CrossLink(可以译为“交叉链接”)的数据结构来把 shard 链的状态变动通知 PoS 主链 beacon 链(大概可以译为“信标链”)。Beacon 链是所有 shard 链的公共主链,同时也是一个基于 PoS 算法的与目前的 PoW 主链协同工作的新主链;而 beacon 链,就是基于大名鼎鼎的 Casper 协议设计实现的。

Casper 有两个版本,一个是 V 神和 Virgil Griffith 做的 Casper the Friendly Finality Gadget,简称 Casper FFG,它是一个 PoW+PoS 的混合共识算法,也是从目前的 PoW 主链向 PoS 主链的过渡时期会采用的技术方案;另一个是 Vlad Zamfir 做的 Casper the Friendly GHOST: Correct-by-Construction,简称 Casper CBC,这大概是未来以太坊最终会实施的链上治理方案(包含了经济模型的重新设计)。

Casper 和 Sharing(分片)在很长一段时间内都是两个独立的项目,由不同的团队在进行研究。在今年 7 月份,以太坊社区做了一个重大决定:将 Casper 和 Sharding 项目合二为一。这是因为在研究的过程中,开发者们逐渐发现它们的相关性其实是非常强的,很多技术细节需要一并考虑设计,所以最终做出了这个决定。这样,以太坊的 layer1 扩容方案,就变成了所谓的 Shasper(Sharding+Casper)协议。

Shasper 协议是一个非常大的改进(创新),本身的技术难度也非常高。目前,其协议设计仅完成了大概 70% 左右,很多技术细节也还没有最终确定。

Shasper 协议目前的设计,已经与原始的 Casper FFG 协议有了一些差别;对此,杨镇也做了概念性的解读。

首先要介绍的是在 Shasper 协议中的一些关键角色和术语,比如validator(验证者)、active validator set(活跃验证者集合)、committee(委员会、活跃验证者集合的一个伪随机子集)、proposer(提案者、生成区块的 validator)、attester(证明人、签发区块的 validator)以及 slot(一个 8 秒的时间周期,供提案者和证明人签发一个区块)、dynasty transition(朝代更迭、即更新验证者集合)、dynasty(朝代、自创世区块开始的朝代更迭次数、也就是朝代序号)、cycle(周期、所有验证者都有机会做出一个证明的的区块跨度)、finalized(定稿)、justified(确定)等等。

Shasper 协议需要在目前的 PoW 主链上创建一个用于锁定 validator 的权益和管理 validator(比如挑选 committee、进行 dynasty transition 等等)的 casper 合约,这是唯一必须的对目前既有主链的修改。

然后,希望成为 validator 的用户,可以从自己的账户向这个 Casper 合约发送 32 Eth 来“注册”,这是个相对民主化的设计(也就是每个地址仅允许、且最多允许用 32 Eth 来进行注册,而不是像最初的设计那样不限制这个权益数额,会使某些拥有大量 Eth 的地址有过大的收益)。之后 Casper 合约会把这些“注册的”地址作为备选 validator 保存,作为当前 dynasty 的验证者集合。当然,Casper 合约里锁定的这部分权益,也可能会基于一定的规则进行扣减,也就是协议级的惩罚机制,比如被证明在“作恶/造假”或者长时间“离线/不做签名”等等。

Casper 合约会为每个 shard 链选择一个 committee 用来在这个 shard 链上签发区块,由 shard 链上的区块所导致的状态变动会通过 crossLink 记录到 beacon 链上。

显然,因为所有 shard 链是并行工作的,它们会各自生成自己的区块来记录交易数据和状态变动;当交易双方的地址不在同一个shard 链上的时候,这个交易就将影响两个 shard 链的状态,而因为它们是并行处理的,交易的打包顺序并不确定,所以与它们关联的 beacon 链上的区块就一定会“分叉”(即在同一时间产生多个 parentHash 一样的区块)。

这里可能不太容易理解,不过我们可以参考目前的 PoW 主链末端的抖动问题:在 PoW 算法里,因为所有矿工是并行进行挖矿运算的,那么由于网络延迟的原因,在一个区块时间(16 秒)内就很有可能会产生多个 parentHash 相同的“合法区块”;在分片的情况下也是类似的,1024 个 shard 链是并行进行交易执行/打包的,目前设定的 slot(也就是区块时间)是 8 秒,所以因为网络延迟的原因,必然会在它们的公共主链 beacon 链上产生 parentHash 相同的合法区块。

**Casper 协议,本质上是一个“提案算法(proposal mechanism)”,是用来在同时发生的多个提案所组成的区块树中选择主分支或者“权威链(canoncial chain)”的一种共识算法,它也是一种对 BFT(拜占庭容错)算法的改进。**当然,实际的算法比这里描述的要复杂的多,其中的技术细节同样也非常多。

总体来看,Shasper(Sharding+Casper)方案的实现难度是很高的,目前也还有很多的技术细节没有最终确定,可能会有一些变数,包括经济模型的设计(各个参与方的奖励比例、具体的惩罚机制、PoW 链奖励的削减方案等等)。按照目前的计划,该方案将于 2020 年上主网,但两年的时间可能会发生很多事情,社区的工程能力也是令人担心的。另外这个方案本身的实际效果如何,大概也只能等到上线之后才能进行评估。

今年6月3日,V神在2018年以太坊技术及应用大会上,发表了题为《Casper与分片技术最新进展》的演讲。以太坊Casper以及以太坊分片技术(Sharding)的最新进展,以及首次透露了作为Casper节点的奖惩机制。演讲当天,以太坊一波强势拉升,回到600美元上方,短期几个小时涨幅达到5%。可见,分片技术,得到了诸多以太坊信仰者的认可。分片技术未来是否会成为改变以太坊低迷期的关键,让我们拭目以待。

杨镇

资深软件工程师、架构师;区块链技术布道者,Solidity 官方文档中译项目的贡献者、校订人和项目管理员。

有 17 年的软件行业从业经验。2017 年开始参与以太坊技术社区贡献;独立中译了以太坊 Homestead 官方文档;对以太坊黄皮书中文版进行了独立校订和增补更新;独立中译了以太坊分片技术说明。

目前专注于区块链技术推广、中文技术社区贡献以及智能合约开发和安全审计方向。

扩展阅读:杨镇老师的分享

【众说区块链】以太坊分片技术提升100倍处理效率,有多大作用?

众说区块链:区块链中的侧链技术

干货|以太坊全景介绍及入门学习路径(分享实录)

内容来源:矩阵数字经济智库

本文作者:熊佰祥

image

猜你喜欢

转载自blog.csdn.net/HiBlock/article/details/82818061
今日推荐