CasperLabs 依靠 Highway 协议兼顾安全性与可扩展性,同时在降低开发门槛、丰富开发工具等方面也下足功夫。

原文标题:《一文读懂 CasperLabs:智能合约平台的突围之路》
撰文: 蓝狐笔记

经常有蓝狐笔记的读者问,当前的智能合约平台(如以太坊)虽然不错,但整体来说,智能合约平台的扩展性限制了它的大规模采用,如果是这样,新的智能合约平台是否有机会?这是个好的问题。

一方面,以太坊和 EOS 等先发者已经具有了一定的开发者生态,还有不错的应用场景探索。例如以太坊的 DeFi 和 EOS 的游戏和社交,尤其是以太坊 DeFi 锁定超过 10 亿美元的资产,在这方面的探索如火如茶。但另一方面,整个加密应用的用户规模还很小。基于以太坊的 DApp 的日活用户当前不到 2 万,其他用户数相对较多的平台如 EOS,也没能超越这一级别。从目前看,所有智能合约平台,还没有出现突破百万活跃用户的 DApp,如果那一天到来,将会是整个加密领域的真正里程碑时刻。

谁能率先实现百万活跃用户的 DApp,谁就能在加密领域占据领先位置。如果说,这是加密世界的网景时刻,那么要抵达这一个时刻,需要两个方面的条件。一是 DApp 场景的继续挖掘,以寻求产品和市场的契合度,这方面当前的以太坊和 EOS 等公链一直在努力,试图找到能够引爆主流人群需求的场景和应用。二是需要真正去中心化的且是可扩展的区块链。只有满足安全和可扩展性两方面的条件,智能合约平台才能既有独特价值,也能承载主流人群规模的应用。

所以,在接下来的几年时间,加密领域最重要的命题之一依然是:如何实现安全和可扩展性兼具的智能合约平台?

虽然以太坊和 EOS 等公链是先行者,但不妨碍其他公链的探索和努力,这其中包括 Tezos、Nervos、Solana、Polkadot、Harmony 等平台从不同的技术路线和场景方向进行探索。虽然先行者已经取得了领先,不过,如果我们把视野再放大,就会发现,今天的市场规模还很小,用户数还很少。在这样的情况下,很难说已经是市场的终局。如果从技术发展和商业发展角度看,今天依然处于早期的拓荒阶段。在这一阶段,有先行者,有领先者,不过,其他后发者并非没有机会。至于什么时候格局确定?这个可能需要三年,也可能需要五年。中间什么时候杀出程咬金?谁也不知道。但可以肯定的是,今天的格局肯定不是终局。

蓝狐笔记一直关注智能合约平台,之前也介绍过一些新的平台。今天蓝狐笔记要介绍的也是新来者:智能合约平台 CasperLabs。为了方便大家记忆,CasperLabs 以下简称为 Casper。跟其他公链一样,它也有自己的大梦想,它想成为受开发者欢迎的平台,为大规模用户提供去中心化服务的平台。那么,它又有什么不同,靠什么安身立命?

Casper 如何安身立命:Highway 协议

首先,Casper 是一个智能合约平台,跟其他智能合约平台一样,为开发者提供运行协议和应用的基础设施。而另外一方面,它强调的不是单纯的高 tps,而是要安全和可扩展性兼得。

目前已经有了这么多智能合约平台,Casper 如何安身立命?有什么杀手锏?它最核心的技术选择是基于 CBC Casper PoS 的共识算法,并在此基础上扩展出 Highway 共识协议。

Casper 之所以声称自己可以真正兼顾安全和可扩展性,很大程度上源于其技术路线的选择。而这个技术路线的核心之一就是 CBC Casper PoS。CBC 英文为「correct-by-construction」,大意是按照构建逐步校正的意思,它是一种验证架构正确性的流程,通过构建数学模型推演,确保最终的正确交付。CBC Casper 是「correct-by-construction」共识协议系列,这些共识协议共享相同的异步证明以及拜占庭容错。这一系列协议通过定义其协议状态和协议状态转移来描述。

Casper 的计算模型支持检测何时可以并行合约的执行,且区块消息格式允许在链中「合并」分叉,可以避免不必要的孤块。CBC Casper PoS 跟以太坊的 Casper-FFG 不同,以太坊需要考虑从 PoW 向 PoS 的过渡,而是 CBC Casper 是纯粹的 PoS 机制,不包含任何 PoW,只有提议区块和实现区块最终性的验证者才能获得奖励。

Casper 的 Highway 共识协议是基于 CBC Casper PoS 的扩展。Highway 共识协议是 Daniel Kane、Vlad Zamfir 以及 Andreas Fackler 三人的研究成果。其中,Vlad Zamfir 是以太坊知名的核心研究人员。

Highway 共识协议最与众不同的地方在于:兼具安全和活性。它跟 PoW 不同(完全同步的协议),Highway 是部分同步的协议,可以实现更高频次的出块,换言之,具有更好的吞吐量和可扩展性。

什么是兼具安全和活性?安全就是说 Highway 共识协议的决定不会前后矛盾,活性则是说共识协议的节点会永远保持做决策,区块不断增长。

总结来说,Highway 协议对 CBC Casper 进行了两个方面的扩展:一是,通过高效方法实现对不同阀值下安全性的检测;二是,提出在 CBC Casper 框架下的活性策略,也就是针对网络参与者何时创建协议消息所制定的策略规范。

简单来说,Casper 的 Highway 协议如何运作?

1.summit 结构

Highway 协议为实现最终性,它提供了一种全新的 summit (峰顶)结构。与此同时,为了实现活性,它使用伪随机生成的领导者序列限制消息的生成来实现,这导致产生 blockdag 的可预测结构。

Casper 的共识协议采用的是 blockdag 的数据结构,如下图:

智能合约平台 CasperLabs 突围之路:Highway 协议与开发者友好策略

在上图中,消息被放置到相关的「泳道」上,也可以看到每个「泳道」上消息的创建者。由于创世区块是区块链初始化产生的,它位于「泳道」之外。每个普通区块都指向其主要父块,上图用红色箭头表示。这些区块形成了树结构,称为主树。任何普通区块都可以指向任意数量的区块作为次级父块,如上图中蓝色箭头所表示的。区块+红色箭头+蓝色箭头一起形成有向无环图,也就是 Casper 协议中的 p-dag。所有的箭头和所有的顶点一起形成有向无环图,这就是 Casper 中所谓的 j-dag。

Summit (峰顶)是指 j-dag 中某个共识值已经确定最终性的情况。为什么会有这个概念?因为它有很多层,不同层代表不同的共识程度,最后的 Summit 意味着在某个范围内所有节点都达成共识,也就是最高点,形成了峰顶。在这个最高的层面上,具有最大程度的共识。反过来理解,这也说明 Highway 是具有安全阀值的。每个轮次都有领导者,首先由领导者发送消息给每个人。其他验证者在收到领导者消息后立即发送消息给其他人。在经过一些轮次后,每个验证者都会再次向所有人发送消息。这样,第一条消息确认的投票成为 level-0 的消息,第二条确认足够数量的第一条消息,形成 level-1 消息,由此类推形成 summit (峰顶)。一旦验证者在其本地协议状态达到峰顶水平,他们知道最终每个诚实验证者将会看到所有状态。

下图是最终性的示意图,可以帮助我们理解 summit (峰顶)。

智能合约平台 CasperLabs 突围之路:Highway 协议与开发者友好策略

上图左侧的矩形代表验证者,圆点代表消息。它展示了验证者 0 的本地 j-dag,对应于 j-daglevel 的排列(消息的 X 坐标对应于 j-daglevel)。「泳道」上显示消息的 Y 坐标与创建者相同。圆点颜色则代表此消息正在投票支持的共识值。在诚实验证者的「泳道」内,0-level 消息是从上一次该验证者投票赞成的共识值改变以来的所有消息。消息的第一层投票支持同一个区块,其他层会引用第一层的消息及其哈希,参与「峰顶」的验证者越多,层次越多,这些消息投票的区块就越安全。

2. 有弹性的轮次时长

跟大多数的 PoS 机制一样,Casper 也会将时间划分为轮次。每个轮次,首先有一个伪随机选择的领导者生成消息,其他人等待领头人的消息,收到该消息之后,才生成自己的消息。在这一轮次快结束时,每个人都会再发送一条消息。也就是说,验证者为该区块发送了两次验证消息。每个轮次的时长并不固定,不是所有验证者都采用相同的轮次时长。

为实现活性,Highway 协议采用非固定轮次时长的机制。它用「高速公路」作为比喻,这也是协议名称 Highway 的来源。Highway 类似于「数字高速公路」,它有很多车道,每条车道的汽车速度恒定。不同车道的汽车相互之间会发送消息。消息在不同车辆间传递的速度不同,协议达成共识的程度也不同。

在任何给定的车道 n 中,车在 1 米距离进行 2n 频次的跳跃,信息在不同车道的汽车间的传递是动态进行的。由于跳跃频次不同,消息传递频次也不同。例如,如果消息传到左侧的车道,频次将加倍,传到右侧车道则频次将减半。这样,每次跳跃时,都可以遇到左侧车道的汽车,而右侧则需要两次跳跃才会遇到。通过这样的方式,可以保证一定的安全性,同时也可以提高达成共识的速度。

要理解 Highway 的有弹性的轮次时长,需要理解时间「滴答」、生成区块的领导者以及轮次的概念。在 Highway 共识协议中,时间划分为「滴答」,每个「滴答」相当于一毫秒。领导者从当前验证者中选出,基于领导者的系统,需要有轮次,这也是基于安全的考虑,生成区块的领导者是无法固定的。因此,不同轮次会有不同的领导者。

在这种情况下,多数 PoS 链采用的是固定轮次时长的方法。而 Highway 协议与众不同的是其可调整的轮次时长。每个验证者选择轮次指数值。随着时间的推移,将会自动调整轮次指数值(round exponent),以实现最优性能。

举个例子,假设轮次指数值为 n,验证者用于操作的轮次时长为 2^n「滴答」。具有相同轮次指数 n 的所有验证者都有相同的轮次时间表。不过,如果轮次指数 n 不同,验证者在轮次时长上也不同。

假设 A 使用的轮次指数为 n,B 使用的轮次指数为 m,其中 n 为 5,m 为 7。这意味着,A 的轮次时长是 32 个时间「滴答」(2^5),而 B 的轮次时长为 128 个时间「滴答」(2^7)。这意味着,A 的轮次时长只持续 32 毫秒,而 B 的轮次时长持续 128 毫秒。也就是说,A 的速度要快于 B,因此,A 可以参与 B 了解的所有轮次,而 B 只能了解 A 知道的部分轮次。通过调整轮次指数可以增加或减少轮次时长,以实现最佳性能。

此外,Highway 协议还提出一个「era」(时代)的概念,era 时长也用区块链的时间「滴答」来表示,例如一周(604800000 个滴答),其主要目的是在更长的一段时间内(如一周)保持验证者权重的相对恒定,由此实现所有验证者都可以同意的伪随机领导者序列,同时防止攻击者对领导者选择进行攻击。

Highway 协议跟传统的 BFT 协议不同,一般来说,拜占庭容错协议主要在交易顺序上达成共识,而 Highway 协议仅就区块的有效性和区块的权重达成共识,对区块投票的验证者越多权重越大。在这种情况下,系统可以处理同时发生的事件,因为交易顺序不重要。Highway 也支持区块合并,在合并过程中也可以检测是否有冲突的交易。

之所以可以实现这些,Highway 协议有两个核心的设计选择:

  • 没有只发给特定节点的目标消息,所有消息最终会发送给所有人,且可以验证较早的消息。所有节点看到的都是相同的,这算是不断增长的消息图 , 有点类似于哈希图。
  • 决策方式简单:投票。通过在消息图中执行防止僵持状态的特定结构,可确保网络的活性。

在这里,消息被视为是对共识值的投票,且验证者遵循多个明确的验证者最新投票。

总结来说,Highway 协议的如下特性值得关注:

  • 无须许可性,任何人都可以安装所要求的软件并作为新验证者加入网络(在平台执行绑定交易以后,并在绑定拍卖中赢得其中的 slot)。
  • 有弹性:可自动调整轮次时长,以使网络的整体性能达到最佳。
  • 部分同步:区块领导者无需收到已产生的所有消息即可生成区块,未收到的区块交易记录可在下游进行协调。
  • 广播消息:协议假定能将任何消息广播到区块链网络中的所有其他验证者,可以处理消息的延迟,而无需直接的点对点通信。
  • 可证明的最终性:协议提供「最终性检测器」的形式化计算,它可以发现由总权益大比重支持的交易。当验证者使用其「最终性检测器」,发现一些交易具有最终性,那么其他的验证者也会将其视为具有最终性的交易。
  • 可证明的活性:由于恶意验证者的总权益不超过 1/3,网络将持续产生具有最终性的区块,且共识的收敛不会停止下来。

总言之,Highway 的特色是安全和活性兼备。它区块的创建是围绕伪随机生成的领导者序列进行的,领导者负责区块的产生。同时,它还采用可变的轮次时长机制,这让 Casper 具备弹性,可自我调整网络,以获得最佳性能。

Casper 的开发者友好的整体策略

对任何智能合约平台来说,最终的价值来源于使用它的用户数量和频次。而要吸引用户进来,首先需要有 DApp 开发者构建出符合用户需求的产品和服务。

这对于 Casper 来说也一样,除了其技术路线的选择之外,Casper 最核心的策略之一就是其对开发者友好的整体策略。策略讲究聚焦和取舍。这一点从 Casper 的 Slogan 也可以看出,它的 Slogan 是「筑梦者的区块链」。换句话说,Casper 试图成为开发者构建各种美好产品和服务的坚实平台。从其目前的技术基础和运营方面看,Casper 的开发者友好的整体策略值得关注。

1. 业务开销可预测

在区块链上进行交易需要成本,用户的操作会产生费用。在 Casper 上,被选中的验证者需要从交易池中收集交易,并按照一定的次序执行,最后发布到新区块上。而用户提交的费用会按比例分配给所有验证者。

在 Casper 上,为了让 DApp 的体验更好,它试图要达成业务开销可预测。不受监管的费用市场会导致交易费用的高度波动。在 2017 年加密猫时代,以太坊的转账费用曾经高得吓人。Casper 协议内置的 gas 价格下限设置足够高,可以减轻这种波动性。可以防止 gas 跌至某个特定价格下,让价格在某个值上自由浮动。

Casper 的代币 CLX 代币可用来支付 gas 费用,而 CLX 代币价值是波动的,由此 Casper 设定了价格下限,虽然消耗的是 CLX,但设置的值是法币值,其基准是单个 CLX 账户之间的转账费用花费 0.05 美元。为了实现这一点,Casper 使用去中心化预言机来提供价格数据。

实现业务开销的可预测,有利于 DApp 开发者构建自己的商业模式,例如由 DApp 开发者负担用户的交易费用,而 DApp 通过其他方式向用户收取费用。由于交易费用的相对可预测,这样对于构建可持续的商业模式,并实现更好的用户体验都有直接帮助。

2. 绝大多数开发者无须培训即可编写 Casper 区块链应用

对于智能合约平台来说,降低开发者进入的门槛非常重要。这也是 Casper 的重要竞争策略。首先它支持 Rust 作为 Casper 智能合约的主要编程语言,用于智能合约的 Rust 开发套件包括了测试环境、合约运行环境等。

此外,Casper 对 wasm 有很好的支持。平台也支持其他编程语言进行智能合约的开发。这样对于开发者来说,无需太多的学习成本,用自己熟悉的语言即可开发 DApp。

3. 开发者所需的各种功能

除了开发门槛的降低,还有一些功能也可以帮助开发者更好的构建。例如它的 GraphQL 接口、账户结构、无限多重签名、可定制支付方式、可读性好的账户名等。

  • Casper 内置 GraphQL 接口,可用于状态查询,方便开发者随时了解合约的内部状态,降低开发和运营 DApp 的门槛。
  • Casper 的账户结构比较灵活,有多级账户结构,可以从子账户中收回丢失资金。它支持开发者所需的各类授权,其中包括针对丢失密钥恢复的账户权限模型,在账户和合约之间安全共享状态的权限模式等。
  • 加权的密钥功能和阀值,可以实现无限多重签名功能。
  • Casper 支持开发者制定交易的支付方式。普通区块链通常采用「发送人付费」模式,而 Casper 的开发者可设置支持接收人付费的模式。
  • Casper 用户名是可读性好的账户名,方便构建应用,也有更好的用户体验。
  • Casper 节点内置了遥测和监视功能,可以方便节点运营者和验证者测试系统性能。

4. 可升级的基础设施

Casper 区块链支持将合约存储在不可变的地址中,支持合约版本控制和升级。这对于开发者来说是很有用,因为合约更新几乎是必不可免的。同时,Casper 还在设计协议和虚拟机,以实现对并发执行、侧链、分片的支持。

结语

从 Casper 的整体来看,跟其他项目相比,以上的两点有其独特之处。虽然 Casper 很关心可扩展性,但它同样重视安全性和去中心化,这是它实现可扩展性的前提。Casper 的 Highway 协议是实现这一目标的关键,通过「summit」和 blockdag 结构、伪随机领导者序列(pseudorandom leader sequence)、弹性的轮次时长等多种设计,实现了安全性和活性。

为了构建生态,Casper 的开发者友好的整体策略也让人印象深刻。它在降低开发者门槛,丰富开发者工具方面、设施可升级等方面都下了不少功夫。

那么,在众多的智能合约平台中,Casper 有没有机会脱颖而出?现在还无法下定论,但由于它在共识机制设计上的特色和对开发者友好的策略,它的探索值得持续关注。

来源链接:mp.weixin.qq.com