放长眼,走出君士坦丁堡一小步,以太坊还有大未来
什么是以太坊君士坦丁堡的真正意图,以及我们为什么相信它为 Plasma 铺路,最终会加速扩容时代的到来。
原定于 2019 年 1 月 16 日进行的以太坊君士坦丁堡升级因为被曝出代码存在安全漏洞,再次被迫推迟。
「唱空以太坊」的声音再次甚嚣尘上,ETH 价格随即下跌。
高涨的社区热情却总是遭遇一而再再而三的延误,确定的发展路线每每搭配着绵绵无期的交付时间,理想的去中心开发模式伴随着低下的开发效率和无穷尽的争议扯皮,君士坦丁堡升级的过程可以说是以太坊这个明星项目所有槽点的完美集合。
这些都是残酷的现实。
不过,当市场一边倒向质疑之时,我们何不把目光拉长远。
为众多加密资产投资机构提供区块链项目投资研究报告的 Digital Asset Research 首席执行官 Greg Cipolaro 接受链闻采访时表示,市场对于以太坊开发进展频频延误、去中心化模式效率低下的批评到处可见,但是从长远角度,他更看好以太坊这种「市集式」的开发模式。
Digital Asset Research 首席执行官 Greg Cipolaro
Greg Cipolaro 说,这种「市集式」的开发模式同一小支核心团队开发项目的「教堂式」模式完全不同,更符合开源项目的开发,可以让更多开发者合作开发并审核软件,让更多人参与发现漏洞并且贡献想法,当然也会产生更多观点,导致开发过程的延误和争议。
在市场积聚的消极声音不断被放大的时候,是时候从更长远的眼光,重新审视一下这场尽管被再次推迟、但是注定会到来的君士坦丁堡升级究竟会给以太坊带来什么影响?
在这次以太坊君士坦丁堡升级中,被公众讨论最多的话题是区块奖励从 3 ETH 降至 2 ETH。道理很简单,这个议题决定了矿工的区块奖励数量,让挖矿成本相对增加,会影响到矿工、开发者、投资者等利益相关方,从而直接影响以太坊价格。
但究其根本,导致这种变化的原因是以太坊从 PoW 过渡到 PoS 没有预期中顺利,因而不得不再一次延迟难度炸弹,可延迟又让 ETH 的增发率超过早先计划,所以最后,不得不通过减产来平衡增发效应。
包含延迟难度炸弹和调整区块奖励的 EIP 1234 是一种被动的权宜之计,不涉及以太坊的技术升级本身。
实际上,真正值得人们重视的,也即君士坦丁堡对以太坊本身最大的改变其实在于:它让以太坊可以更容易、更便宜地使用 Plasma,从而为即将到来的这一 Layer 2 扩容方案铺路。
Plasma 是目前看来以太坊可以最快和最易实现的提升可扩展性的方法,它的顺利实施有可能帮助以太坊化解掉目前所面临的困境和尴尬。
如无意外,Plasma 将在 2019 年第一季度上线测试网,紧跟在为它荡平障碍的君士坦丁堡升级之后。
这才是此次君士坦丁堡升级最有价值的部分。
什么是 Plasma
Plasma 是由 Joseph Poon 和 Vitalik Buterin 提出的一种以太坊扩容方案,由一系列的智能合约组成。
Plasma 核心开发者 Joseph Poon
该方案允许在以太坊上创建子链,而子链还可以继续创建它们自己的子链,这构建出了一种区块链上的区块链,它们以树结构存在。
子链上可以执行复杂的操作,可以运行包含众多用户的应用,它只需要与以太坊主链进行很少的交互。这种方式可以极大的提高以太坊的吞吐量以及降低运行的成本。
Plasma 使用子链向主链报告的方式来保障整个网络的安全,它可以被看作是一个法庭系统:以太坊是最高法院,子链是下级法院。
当情况正常时,网络运行由下级法院 子链 负责,但需要定期提交子链的区块根到主链上。但如果某个子链怀有恶意,所有在该子链上存有价值或状态的用户都可以通过向上级法院 以太坊 提交交易来保护自己的资产,以太坊将在此时充当仲裁者。
在 Plasma 架构下,每个子链都是自主运行。它们可以有自己的代币,以激励这条链的验证者;它们也可以有自己的共识机制。
君士坦丁堡如何为 Plasma 铺路
君士坦丁堡升级将实现 5 个 EIP Ethereum Improvement Proposal,其中 3 项与 Plasma 有关,分别是 EIP
1014、EIP 1052、EIP 1283。
EIP 1014:Skinny CREATE2
提案内容:
EIP 1014 是由 Vitalik Buterin 本人提出的一种新的创建合约的方法,该方法名为 CREATE2。
Vitalik Buterin
CREATE2 在 0xf5 上添加了一个新的操作码,其完成的功能与 CREATE 相同,但改变了合约的地址。之前 CREATE 的新合约创建地址需要与创建者地址的哈希值相关联,但改变后的 CREATE2 的新合约创建地址是可以由参与各方在合约尚未建立时提前确定的。
提案目的:
CREATE2 是实现以太坊 off-chain 技术的基石,它对需要进行合约交互的 off-chain 应用来讲非常重要。
它意味着参与各方能够在合约生成前就认同合约,能够与尚不存在但可信赖的合约地址交互,从而可以像合约已经被部署一样先在链下去完成工作,最后只需在链上进行签署和验证。
EIP 1014 让使用 Plasma 在链下完成大量工作成为一种可行的方案。此外,CREATE2 允许在合约中生成合约,这是子链需要具备的重要功能。
EIP 1052:EXTCODEHASH opcode
提案内容:
EIP 1052 由 Nick Johnson 和 Pawe? Belic 提出,建议新增一个操作码 EXTCODEHASH,编号为 0x3F,并用它取代之前的操作码 EXTCODECOPY 来完成合约代码的检查工作。
EXTCODEHASH 返回的是合约代码的 keccak256 哈希值,EXTCODECOPY 返回的是合约代码本身。
提案目的:
我们常常需要检查某个合约代码,比如为了避免与恶意合约来往。以太坊过去使用的方法是通过 EXTCODECOPY 获得合约代码,它会产生两笔费用,一是 EXTCODECOPY 本身耗费的 700 gas,二是把合约代码复制到內存中的存储费用,若合约代码庞大,则 gas 花费也会巨大。
但我们检查合约并不一定需要合约代码本身,因此 EXTCODEHASH 采用的方法是返回合约代码基本数据的哈希值。它完成的功能与 EXTCODECOPY 一样,但花费仅为 400 gas。
EIP 1052 提高了代码效率,降低了 gas 成本,虽然对主链合约同样有利,但这一变化带来的优势尤其体现在当一个合约对另一个合约进行调用时。最大的应用场景在哪儿?在 Plasma 上。
EIP 1052 使得在 Plasma 上进行大规模的合约调用成为可能。通过 EXTCODEHASH,子链可以更方便地找到合约,也可以更便宜地找到和检查合约。
EIP 1283:Net gas metering for SSTORE without dirty maps
提案内容:
EIP 1283 由 Wei Tang 提出,它改变了 SSTORE 的 gas 计算方法,让它更为合理,同时还不需要引入额外的 dirty maps。
SSTORE 的改变影响的是以太坊上的存储价格。在目前的 gas 计算方法下,如果一个交易对同一个 storage slot 做了多次改动,每一次改动都会被收费,即便改动的结果是在交易完成后才被一次性写入磁盘里的。
而 EIP 1283 通过判断 storage slot 是处于 Fresh 状态还是 Dirty 状态来决定是否需要对某一次改动收费。Fresh 是指 storage slot 保持在初始状态或被重置为初始状态,Dirty 是指 storage slot 的初始状态已被更改。
如果 storage slot 保持在 Dirty 状态,也就是说这次的 SSTORE 操作是属于改动中的一次,则不被收取 5000 gas 的存储费用,只需缴纳最基本的 200 gas。如果从 Fresh 到 Dirty,则收取 20000 gas 的存储费用,如果从 Dirty 到 Fresh,则退还 19800 gas 的存储费用。
举个例子,如果对某初始状态为 0 的 storage slot 做了 5 次修改,在之前的计算方法下,使用者将需要缴纳 20000 + 4 × 5000 = 40000 gas,而在 EIP 1283 下,只需要缴纳 20000 + 4 × 200 = 20800 gas。
提案目的:
EIP 1283 极大地降低了以太坊上的存储价格。谁对存储价格最为敏感?子链。
Plasma 作为子链,存储消耗巨大,如果没有这项提案,Plasma 方案将会因为费用问题而难以被广泛使用。另外,SSTORE 放开内存不存表,也说明在未来以太坊会比较多的处理树结构,也就是链上走链。
Plasma 为何重要
以太坊需要尽快解决扩容问题。
长远来看,以太坊旨在成为世界的计算机,但其目前的吞吐量显然不支撑它实现这一目标;短期来看,包括 EOS 在内的诸多公链生态正在快速地发展中,尤其在 DApp 的带动之下。虽然在众多开发者和用户眼中,以太坊仍然是最值得信赖的公链,但这种信心也会因其性能问题迟迟不能解决而被损耗,人们或许会离开。
以太坊主要有两种扩容方式。一种是基于 Layer 1 的分片技术,一种是基于 Layer 2 的 off-chain 技术。
分片技术发展太慢,短期内难以突破,因此在 Layer 1 取得重大进展前,以太坊需要要依靠 Layer 2 来解决扩容。Layer 2 包括状态通道、Plasma、Truebit 等诸多技术,这其中又以 Plasma 具备更多的应用场景。
此次的君士坦丁堡升级,虽然也是为以太坊平稳过渡到 PoS 做准备,但其更主要的意图是推 off-chain 以及复杂智能合约的使用,这正是 Plasma 发展所需要的。
Plasma 发展起来意味着什么?就像上文中提到的,每个子链都是自主运行的,可以有自己的代币和共识机制,那在这种情况下,人们甚至可以设计出一个以 EOS 方式运作的 Plasma 链。
Plasma 能带来的,不仅仅是提高吞吐量,让 DApp 良好运转这么简单。
可以预测的是,在不久的将来,会有一大批基于 Plasma 的项目出现。「我们是 XX 场景下的 Plasma」,会是他们介绍自己的第一句话。
所以,在大多数人高呼以太坊正在「坠落」,我们更希望大家看到,通过这次升级,以太坊正一边坚守安全性与去中心化的特性,一边为未来起的跑道做足了准备。以太坊最终是开发者的以太坊,最终需要的,还是所有开发者们最终可以通过协同努力,共同建设这条跑道。
至于以太坊社区中不同的意见表达、各种复杂利益间的博弈,都是这样一个开放社区必然出现的副产品。既来之,则安之。