本文是“起源”系列文章的一部分,该系列文章主要内容是关于加密货币智能合约生态的出现和演变的。今天我们来看一下Tezos,以及它将如何威胁取代以太坊,成为占主导地位的智能合约平台。

Tezos是一个智能合约平台,起源于2014年,当时的以太坊还未成型,所以Tezos最初的竞争者其实是比特币。尽管如此,在当时看来Tezos的初始设计是非常前卫的,它早就预判了比特币将来会面对的问题:治理机制及延展性方面的,所以Tezos提出了用较比特币的编辑语言C++更高级的语言来编写智能合约。

Tezos的区块联是从零开始设计的,这与比特币和以太坊完全不一样。然而,作为一个基于利益相关的,图灵完备的智能合约,Tezos可以提供更快交易,更好的治理机制以及更安全的智能合约,所以成为了以太坊的直接竞争对手。

Tezos项目有非常好的资金支持,来自传统风投和众筹。虽然现在暂时Tezos区块链还没有正式运行,但已经在最终的测试阶段了。暂时只有一个试运行的内部测试链,还未对外开放。尽管如此,Tezos有足够的技术信息去跟以太坊做比较及估值。让我们来深入探讨一下这两个项目:

交易吞吐量

新兴的智能合约平台目标大都是为了改进以太坊糟糕的交易吞吐量(在以太坊自己提高之前)。几乎所有的项目都想实现快速交易,利用Pos机制同步区块时间。以太坊有从Pow机制转变成Pos机制的路线图,但转变为Pos的进程很缓慢,当Tezos在用Pos机制上市的时候,以太坊也许还在用Pow机制。

Tezos计划实现Dpos机制(委托股权证明共识),这与以太坊的Pos机制:Casper有很多不同。这两个系统中利益相关者都可以用买卖货币以及用区块验证的形式获得更多的币来抵消通货膨胀。在以太坊中,所有的利益相关者可以直接参与共识机制的建立;而在Tezos中,大多数的用户会将币委托给节点完整和可靠性高的代理矿池,以获得相应比例的奖励。

这样的机制可能会让区块产出速度很快,并且在大的区块下,交易吞吐量会很高。高吞吐量是需要高级的硬件和带宽要求来运行验证节点,这个对许多人来说成本太高, 以至于共识的过程将更集中一些。与以太坊的去中心化Pos相比,Tezos特意的将交易集中处理,以至增加吞吐量。Tezos项目的首席开发者Arthur Breitman认为费率滴的验证是“更多地来自不合理的平等主义者的意识形态,而不是从实际经济或安全系数角度出发的”。他期望Tezos用户摸索找到并且尽可能地采用那个最适合的平衡系数。另一方面,Casper研发人员 Vlad Zamfir认为Tezos会因为大户垄断的问题(通过假设一个诚实的大多数人)而盖过有意思的激励政策和机制设计问题。

最终哲学和理论会屈服于现实,公有网络和私有网络下的中心化/吞吐量,也许会与实际的不同。在市场健康的前提下,Tezos也许能运行的更好同时又足够分散到可以抵抗公共网络的协调选择攻击,而Casper则没有这个功能。相反地,Tezos的现实体验也会考虑到以太坊的功能(例如增加区块gas限制),这两个项目可能最终汇集成公共网络的最佳组合。

单纯的去扩展共识层是不能满足有世界主导地位的智能合约平台的需求的。这两个项目的机制虽然是互补的,但它们的长期目标并不相同。以太坊,有很多的补充扩展技术例如分片技术,支付方式,支链还有链下计算等都在研究开发。而Tezos认为链下机制,以支付渠道中的小额支付为例,最大化提升链上交易扩展应该利用可循环的SNARK技术,而不是分层技术。SNARK可用于提供加密任何复杂的事务,递归地为一个交易证明区块做一个单独地证明,从而使大量的交易可以快速地在廉价的硬件上进行验证。引用Breitman 的话来说就是这个技术可以完全不需要考虑Gas,并且用户同步整个区块需要仅不到一秒的时间,从而根本不需要中心化的/吞吐量设计。但这里有两个关键障碍:一是计算递归证明的生产成本,二是对可信的要求设置。然而研究进展表明这个不通过中心化的大量扩展也许是很快就可行了。

在短期内Tezos会因为纯Pos机制,还有大区块的交易吞吐量和给力地验证计算而会比以太坊取得更明显优势。Tezos计划开始的时候设置非常大的去中心化参数,并让他们在“安全第一,扩展第二”的原则下向更高吞吐量参数的方向自我进化。这种增量方法将不用通过设置Gas Limit或分叉,而是通过Tezos的核心理念:“一个自我修正的协议机制”去做无需分叉的协议升级。

治理机制

 “Tezos意见书”里标识和解释了一些关键问题,涉及到作为创新升级机制的协议分叉。因为早就预见到了比特币和以太坊会分叉,“Tezos意见书”很有远见的预想到了协调社区共识的难度,网络分叉的经济成本,还有核心开发团队的代码集中控制的缺点。

为了解决这些问题,Tezos正在设计一个链上自我治理机制,使利益相关者在升级问题上相互协调,从而让协议可以自我进化升级。治理机制是可以自我修正的,但升级过程将基于两轮民主投票。创新可以作为升级的提议(包括代码)提出来,让利益相关者投票,基于投票结果,载入测试链测试。在测试没有问题以后,会发起第二次投票,决定是否正式并入主链。批准这项提案的代码是集成到产品体系里面的,更新后的协议代码将完整的分给每个人。整个过程完全自动化,让用户感觉类似一个民主“法治”的协议升级。

Tezos提出的这个基于持币的民主进程将更好地避免发生争议致使协议分裂,从而可以保证协议的完整,同时允许协议进行升级,跟上创新的步伐。最初, 提议只有在多数人参与投票(通过率80%)后才会部署,从理论上讲,这样应该将协议分裂最小化。然而,在现实中,我们看到了意识形态的分歧导致以太坊和比特币分生叉出了另一种可行货币(即ETC和BCH)。跟上创新步伐可以看做成对民主制度的挑战,当然其他政治因素也包含在其中(例如segwit停滞不前的主要原因是没有优点的建议)。相比之下,以太坊基金会发起的,友好硬分叉治理方式又似乎超越了比特币的去中心化社会的过程。虽然Tezos基金会在有限时间内有对提议有否决权,但它没有能力促进创新;Tezos是完全依赖民主进程快速发展的协议。

民主进程本身会带来一些问题。升级方案本质上是技术;绝大多数利益相关者不能直接评估他们的将投给谁。相反,一些懂Tezos代码的人会解释给他们听,这会将很大的权利给了解释代码的人。有足够币去投票的人给哪个提议投票会是另一个挑战。Tezos正试图用一个投票机制去解决这两个问题,那样利益相关者能自由的投票或者委托给他们认为合适的人去代投票。一个大的顾虑是基于持币多少而给协议升级投票的规则可以看作是投票权被大户垄断(比如持有很多币的交易所)从而会导致投票规则的改变,大户会选择损失他人的代价去中饱私囊。按照以太坊项目的lad zamia的话来说,“Pos机制”中基于持币占比的投票,有恶意者应将受到严厉的惩罚同时给予最小的投票权;“提议”中基于持币占比的投票,应将最大的投票权给予那些本身不需要对结果负责的人。然而大户垄断会导致重大经济损失,如果一个提议非常臭名昭著,那样就会破坏整个网路的信心,应该用一个区块链宪法枚举一系列任何提议都不可违反的内容去做整个网络的保护措施。“Tezos意见书”简述了形式化的“合法性”,要求,任何“提议”都需要有一个正式的证明,保证它们不会违反任何宪法属性。这样的机制是否可行还有待观察,还有自我修正的治理过程有多大的有效威慑力。

在那个“代码就是法律”被普遍认为是一种可行的治理政策的时期,Tezos预见了大多数区块链将会遇到的治理问题。随后在一个区块链不断创新的同时保持去中心化和其网络影响的需求变得越来越大。Tezos的自动化的,链上治理机制目前不太可能超越已经创新的以太坊基金会的治理机制,但其自我修复特性可能让它进化成更去中心化的,比硬分叉更安全的协议。然而不分叉的升级特性不一定能威胁到以太坊作为一个智能合约平台的主导地位。然而以太坊已经实现了几次硬分叉,目前为止都还不是因为协议升级导致社区分离,而反相发开对Solidity代码伤害是个很大的争论点。更好的智能合约安全机制能避免分叉带来的伤害,以太坊有义务尽快去修复它。

智能合约的安全

目前,几乎所有的以太坊智能合约都是用Solidity编写的。这个语言是由顶尖程序员使用最佳实践和工具编写的,在经过审核、同行评审的开源合约里,这种语言中易于被利用的漏洞还是存在的。Parity 多签钱包代码中的漏洞曾经使596个钱包里的所有资金(累计超过2亿美元)面临风险。只要Solidity仍然是开发智能合约的唯一编程语言,并且其基本安全缺陷不修复,那么所有以太坊合约将随时受到攻击以及有大量财务损失的风险。

Tezos计划通过Michelson这一新的智能合约语言来大幅提高安全性。Michelson专门为促进链上代码的形式验证而设计。与Solidity不同,Michelson没有被编译成任何东西; 它是Tezos虚拟机直接解释的低等级的,基于堆栈的图灵完整的编程语言。因此从技术上来说,和EVM字节码更加类似,但它包含高层次的结构,如路线图,集合,lambda表达式,加密算法和特定于合约的操作,以便人们更容易读写。它是纯函数型,同时有强类型和静态类型检查,以简化正确性证明的构造,并消除困扰Solidity智能合约的多种类型的漏洞。

正确性证明不是普遍证明,它不能保证不会发生错误,但证明所有在特定规范中枚举的认定都会被程序满足。因此,如果开发人员创建了一个包含只有授权用户可以更改合约所有者的声明的规则,那么验证者在部署之前就能捕获Parity 多重签名的漏洞。然而,为了效率,开发人员需要考虑到这种认定(仅在追溯中),并在部署代码和目睹攻击之前将其包含在规则中。

虽然在预防错误方面没有任何替代品可供人类分析和推理,但形式验证是一个强大的补充工具,适用于可能导致灾难性后果的错误,例如飞机软件和控制大量资产的智能合约。以太坊社区认识到这一点,并且有多个项目正在对智能合约和以太坊虚拟机本身的形式验证进行调研。以太坊社区也在研究新的编程语言,如Bamboo和Viper,它们更适合形式验证,且对代码缺陷更有约束力,因此编译器可以比黑客更快发现这些缺陷。由于这些语言也是编译成EVM代码,因此有必要形式验证高级代码以及生成的EVM字节代码(和/或生成字节代码的编译器)。相比之下,Michelson由Tezos VM直接解释执行,因此只需要一个合约代码的正确就可以了。

一旦Tezos区块链启动后,Michelson很可能会提供一个编程环境,使比具有低于专家级能力的开发人员更好地开发比Solidity更安全的智能合约。目前,只有少数几位Michelson专家程序员,并且作为一种新的基于堆栈的语言,没有很多程序员习惯此语言,对开发人员带来说需要一个适应过程。然而,Michelson提供了一个地基,在这个地基上程序员可以开发出更高层次,对开发人员更友好的功能语言,以促进“全栈式”形式验证的实现。目前Michelson提供了一种类似于OCaml的语法与之互相转换,它正在积极研究和开发Liquidity编程语言

相传Michelson是以著名的Michelson-Morley实验命名的,它反驳了宇宙是由以太构成的流行理论。这种“顽皮”的放纵预示着它会终结一个盛行的理论,即用Ethereum的Solidity语言编写的智能合约不会出现代价昂贵的漏洞。 高调攻击Solidity代码都是将这种观点置于疑问之中的实验,每一项新的攻击都会进一步削弱这一理论。虽然形式验证不可以算高招,但Michelson可以对Solidity合约中发现的漏洞类型表现出显著的免疫力,并提高智能合约安全性的标准。

结论

Tezos项目既具有远见卓识,也具有前景,并且正在解决当今区块链面临的关键性问题。它提出了一个可治理代码但模版,可以提供足够的结构来防止社区分裂。虽然我们尚不知道,链上利益相关者对提案的投票是否能阻止类似以太坊经典和比特币现金分叉这样复杂问题的产生。实现协议更新的自动化可以促进协议性能和可扩展性的演进和优化,在大规模扩容解决方案得到部署之前,去提供小而有意义的改进(在纯PoS共识的背景下)。自动更新还允许将创新直接整合到Tezos协议中。这种“胖协议”理念可能会比以太坊的瘦协议更好地保留网络效果,因为以太坊中的新功能常作为单独的应用程序并入其中,并发布自己的token。哲学的这种对立让人联想到操作系统的Microsoft Windows和Linux Kernel,并且像Linux一样,以太坊的网络效应和创新步伐似乎并没有因新的应用程序和token的激增而受到影响。

由自我修正账本和纯PoS共识机制带来的改进是否将威胁以太坊的主导地位,这一点仍有待观察。然而,如果具有形式验证的Michelson可以提供一种更加安全的方式来编写智能合约,真正防止人们损失资金,参与者不担心会丢失资产(即所有智能合约),那么仅靠这种改进就可以动摇以太坊作为智能合约之首的位置。但智能合约平台只能尽可能让其最薄弱的环节变得安全。如果Tezos落地,其新的DPoS和链上治理机制将进行测试,对任何一个子系统的一次重大攻击都可能轻易破坏Tezos的声誉并使其远离主导地位。

*感谢Klas Harrysson,Zero-Hour-Zulu和Evan Van Ness对早期草稿的意见。

作者:Ed Posnak
原文链接

翻译:Tezos中文社区成员/Nancy & Weifeng