目录:
综合概述
1.基于MOVE语言的新生态调研
Aptos
Sui
Linera
2.模块化区块链与Celestia
什么是「模块化」?
区块链的架构分层
数据可用性问题
Celestia的区块链扩展方案
全模块化堆栈 --- Cevmos和递归Rollups
3.新一代隐私公链
Aztec
Aleo
4.区块链扩展解决方案
AltLayer
综合概述
近日,明星公链Aptos主网刚上线流通市值即超10亿美元,本篇我们将从基于MOVE语言的公链生态(Aptos、Sui、Linera)、模块化区块链生态(Celestia)、新一代隐私公链(Aztec、Aleo)与区块链扩展解决方案(AltLayer)来探索新公链中潜在的新机遇。
在「基于Move语言的公链生态」中,我们首先围绕Move语言特点、与solidity对比、应用进行分析,其次分别对Aptos、Sui、Linera各公链的介绍、特点、生态展开论述。
在「模块化区块链与Celestia」中,我们介绍了什么是“模块化”、区块链的架构分层以及数据可用性问题,其次针对Celestia公链讨论区块链扩展方案与全模块化堆栈,得出可共享性、简单性、共享安全、主权等方面相对于传统解决方案更有优势的结论。
在「新一代隐私公链」中,首先围绕Aztec协议的动机、票据、交互、匿名性、效率分析以及未来,表明AZTEC协议能为开发者需要的工具来创建下一代私密化去中心化金融服务设施,构建具有绝对隐私且私密化治理的数字资产,其次针对高额融资的Web3隐私赛道的龙头项目之一Aleo公链的简介、核心技术、共识机制、代币经济学以及未来阐述能为用户带来隐私保护以及数据的私有化。
在「区块链扩展解决方案」中,围绕专注于扩容的热度较高的公链之一AltLayer介绍其功能与特点,引入NFTmint场景痛点来提出解决方案与实现路径进而阐述我们为什么需要AltLayer 。
1.基于Move语言的新生态调研
Move 语言的特点
Move 语言是 Diem 项目专为表达数字资产发明的一种安全可靠的智能合约编程语言,专为数字资产设计,用于发行数字货币,处理区块链上交易及管理验证节点。
目前,Move 语言仅能在内置的智能合约使用。最早出现在 Facebook 的区块链项目 Libra (已废弃)中,最大的特点是资源 Resource 作为Move的一等公民。不同于以太坊的开发语言Solidity,Move 的资源永远不能被复制或隐式丢弃,只能在程序之间移动。
Move vs solidity
目前,区块链语言领域的主要参与者是 Solidity。作为最早的区块链语言之一,Solidity 旨在使用众所周知的数据类型(例如字节数组、字符串)和数据结构(例如哈希图)来实现基本的编程语言概念。但是,随着区块链技术的发展,可以看出区块链语言的主要目的是对数字资产进行操作,而这种语言的主要质量是安全性和可验证性。
Move 专为解决这两个问题而设计:数字资产的表示及其安全操作。EVM 和 Move 之间的一个根本区别是资产的数据模型,EVM资产不能作为参数传递、从函数返回或存储在另一个资产中。而 Move 资产是任意用户定义的类型,资产可以作为参数传递,从函数返回,并存储在其他资产中。
MOVE 的主要优势之一是数据可组合性。始终可以创建一个新的资产Y,其中包含初始资产 X。更重要的是 ,通过添加泛型,可以定义能够包装任何资产的通用包装器 Z(T),为包装的资产提供额外的属性或将其与其他资产组合。
Move语言的应用
Aptos,Sui两个公链均是基于Move语言开发,但它们的共同点不至于此:
联合创始人都是来自meta的Diem和Novi团队;
两者均是 Layer1公链;
都试图用一条链解决去中心化、安全、高性能这组「不可能三角」。
虽然linera没有明确表示用Move开发,仅阐明基于rust进行开发,但是逻辑上两者相差不大,且跟Aptos,Sui同源,创始人曾也是Diem和Novi的基础架构工程师。所以这三个公链也被称之为meta系公链。
为什么公链赛道已经百花齐放,meta系公链还是要逆流而上闯入这条拥挤的赛道?其本质在于目前的公链都没有完美的解决「不可能三角」- 用一条链同时解决去中心化、安全、高性能。而这三个meta系公链正在以区别于传统区块链的技术来解决「不可能三角」,试图创建一个能让Web3落地的强大基础设施。
Aptos
介绍
Aptos是三个meta系公链中开发最早也是发展最好的一个项目。Aptos 区块链旨在创建一个高吞吐量,低延迟的底层区块链网络,为生态中的所有参与者提供底层网络支持。
Aptos的创始人均都是来自meta的Diem和Novi团队,Aptos也是基于在Diem项目中积累的开源技术和开发经验来搭建的。其中Mo Shaikh 和 Avery Ching的两个Aptos创始人,曾深度参与Meta加密钱包Novi的开发。
截止 2022 年 7 月 27 日,Aptos 总共完成 3.5 亿美元融资,其中 a16z (Andreessen Horowitz)、FTX Ventures、Multicoin Capital 三家机构均参与了目前为止的两轮融资。
特点
MOVE语言开发
Aptos Move 遵循 Move 语言的最初设计原则:
资源优先
在区块链中,我们需要通过程序来存取数字资产,Move语言的 resource 就是特别为数字资产定义的,resource 是不能被拷贝和隐式销毁的,它只能在不同的用户之间移动。Move语言的 module 类似于以太坊中的智能合约,module 声明了 resource 类型和过程。module 中的定义的 type 和过程可以被其他的 module调用。
Aptos 团队已经进一步增加了 Move 的特性,支持更广泛的 Web3 用例,实现了细粒度的资源控制。这个特性不仅有效支持了并行执行,而且几乎固定了访问与更改数据的成本。此外,Aptos 区块链提供了建立在细粒度存储之上的表支持,这使得大规模的数据集可以在一个账户中实现。
灵活性
Move语言可以通过 transaction 脚本,自由组合各种 transaction 来实现不同的功能,一个 Move 脚本可以调用多个 transaction。
Move语言中的 module/resource/procedure 的关系,类似于面向对象程序语言中 classe/object/method 的关系。
Move 字节码可以直接执行,也可以调用其他已发布的 Modules 代码,可以在一个交易中调用多个程序,能够灵活的实现在一笔交易中给多人转账。
安全性
Move编译的字节码提交到链上后,会被字节码验证器校验,然后经由字节码解释器执行。
为有助于编写更可信的代码,Move 包括了一个类型验证器,Move Prover ,能够根据给定的规范,验证 Move 程序的功能正确性,该类型验证功能已经集成到了 Move 语言中。
Move 编码系统为资源提供了针对性的安全保护。Move 资源不可复制,重复使用或销毁。一个资源类型仅能被定义其类型的模块创建或销毁。Move 虚拟机将通过静态字节码验证,并拒绝未通过字节码验证的的程序运行,以此确保其安全性。
可验证性
Move语言具有多种验证方式。通常,最好的验证方式就是将字节码提交到链上进行真实验证,但这样很明显会加重链的负担,影响交易的速度。所以,我们在 Move 中尽可能多在链上做轻量级的验证,而在语言级别做线下的静态验证。
Aptos状态同步
状态同步是允许非验证节点分发、验证和持久化区块链数据并确保生态系统中所有节点同步的协议。Aptos 网络中的节点,包括验证节点和全节点,必须始终同步到最新的 Aptos 区块链状态。运行在每个节点上的状态同步(state sync)组件负责这个同步。为了实现这种同步,状态同步从对等点识别并获取新的区块链数据,验证数据并将其持久化到本地存储。
Aptos 状态同步模式
Aptos 状态同步以两种模式运行。所有节点将在启动时引导(引导模式),然后持续同步(连续同步模式)。
其中引导模式有三种:
执行自创世以来的所有交易
应用自创世以来的交易输出
直接下载最新状态
连续同步模式有两种:
执行交易
应用交易输出
Aptos 状态同步架构
Aptos 状态同步组件由四个子组件组成,每个子组件都有特定的用途:
Driver:同步进度。它负责验证节点从对等点接收到的所有数据。数据通过数据流服务从对等方转发。数据验证后,Driver将数据持久化到本地存储中。
数据流服务:为客户端创建数据流,使客户端从对等点流式传输新的数据块,无需担心哪些对等点拥有数据,也不关心数据请求如何管理。
Aptos 数据客户端:数据客户端负责处理来自数据流服务的数据请求。对于流式传输所有事务的数据流服务,发出多个请求(每个请求针对一批事务)并将这些请求发送到对等点。数据客户端接受请求,确定哪个对等方可以处理请求并将请求发送给它们。
存储服务:存储服务是每个节点提供的一个简单的存储 API,对等点通过API调用获取数据。
Aptos 并行执行引擎
为了实现高吞吐量和低延迟,Aptos 区块链在交易处理的关键阶段采用了流水线和模块化方法。具体来说,交易传播、区块元数据排序、并行交易执行、批量存储和账本认证都同时运行。这种方法充分利用了所有可用的物理资源,提高了硬件效率,并实现了高度并行的执行。
Aptos 区块链从数据模型和执行引擎两方面着手实现并行处理。由于Move 语言数据模型本身支持数据和模块的全局寻址,Aptos 使用Move语言实现交易的并行执行。同时设计并实现了一个高效、多线程、内存中的并行执行引擎 Block-STM,依靠 Rayon、Dashmap 和 ArcSwap crates 实现并发。
并行数据模型
Aptos 区块链引入了一个新概念,delta writes,它描述了对账户状态的修改,而不是修改后的账户状态(例如,增加一个整数而不是简单地确定最终值)。所有交易处理都可以并行完成,然后以正确的顺序对冲突值进行delta writes操作,以确保确定性结果。
随着时间的推移,Aptos 区块链将继续通过提高并发性(例如,利用读/写提示)以及改善开发体验的方式来增强数据模型,让开发人员更自然地创建、修改和组合链上值。Move 为语言级别和平台特定功能上的改进提供了灵活性。
并行执行引擎
Block-STM 并行执行引擎检测和管理有序交易的冲突,同时进行乐观并发控制,以实现在特定顺序下最大并行度。
批量交易采用乐观锁并行,并在执行后得到验证。验证失败会导致重新执行。Block-STM 使用多版本数据结构来避免写-写冲突。所有对同一位置的写入都与它们的版本一起存储,其中包含它们的 ID 和被乐观重试的次数。当事务 tx 读取内存数据时,它会按预设顺序,从多版本数据结构中获取出现在tx 之前的区块高度最高的交易,写入该交易的值及其相关版本。
Block-STM 已经集成到 Aptos 区块链中。为了解 Block-STM 的性能潜力,我们使用内存数据库,将有意义(non-trival)的点对点 Move 交易(例如:每个交易 8 次读取和 5 次写入)作为独立的,仅执行 (非端到端)的基准进行测试。
Aptos 共识协议
Aptos 通过Aptos BFT共识算法来实现共识机制。Aptos BFT沿用了Diem BFT,并在其基础上已经进行了第四次迭代。
迭代功能之一为:添加一个主动起搏器。它使用超时来同步验证器,远快于等待增加的超时,区块只需两次网络往返即可提交,从而使亚秒级的最终确定性成为常见情况。其二是 Aptos 添加了一个信誉系统。通过检查链上数据并自动更改领导者轮换以解决无响应的验证者。
Sui
介绍
Sui是Meta系公链中起步最早的一个项目,由Mysten Labs团队开发,Mysten Labs团队创始人Evan Cheng等也是从Diem和Novi项目离开的。
Sui旨在创建一款环保、低成本、高吞吐量、低延迟的无权限区块链。相比传统区块链,Sui最关键的创新在于Sui的数据模型及交易处理通道。
2021年12月,Sui公布了3600W美金的A轮融资,2022年7月, Sui 爆出正在寻求2亿美元 B 轮融资,估值已经达到20亿美元。其中A轮融资资方包括 a16z 与 NFX、Scribble Ventures、Redpoint、Lightspeed、Electric Capital、Samsung NEXT、Slow Ventures、Standard Crypto、Coinbase Ventures 等。
特点
1. 基于Core Move改造的Sui Move
以Sui对象为中心的全局存储:在Core Move 中,全局存储是编程模型的一部分,可以通过特殊操作访问,例如move_to、move_from 和更多全局存储操作符。Sui Move 中没有与全局存储相关的操作,存储只发生在 Sui 内,Sui 显式地将所有需要访问的对象传递给 Move。
地址代表对象 ID:在 Move 中,有一种特殊的地址类型。此类型用于表示Core Move 中的地址,因为Core Move 在处理全局存储时需要知道账户地址。在Sui Move中是使用地址类型来表示对象 ID。
Sui对象具有全局唯一ID:在Core Move 中,key可以用作全局存储的 key。Sui要求任何具有键能力的结构都必须以具有ID类型的id字段开头,Sui通过字节码验证器来确保 ID 字段是不可变的并且不能转移到其他对象。
Sui的模块初始化:初始化函数在模块发布时由 Sui 运行时执行,目的是预初始化特定于模块的数据。初始化函数必须具有以下属性才能在发布时执行:函数名是init;函数必须是单参数类型;没有返回值;私有函数。
Sui将对象引用作为输入:Sui 提供了可以直接从 Sui 调用的入口函数,以及可从其他函数调用的函数。
2. Sui 的数据模型及交易处理通道
Sui创始人指出:Sui 的做法是通过「对象(objects)」 来区分、组织数据。某款 NFT 、某个代币的余额、某项智能合约,这些都是不同的对象(可以理解为类型),意味着 Sui 链上的交易可以根据对象的不同来分组处理。
常规区块链所有交易都需要集体排序,然后执行。对于 Sui 来说,所有交易都会根据一定的逻辑区分、整理后再排序,然后执行。数据模型可以使不同交易之间的依赖关系更清晰,只有共享对象的交易才需要集体排序,特定对象的交易则不需要这一共识协商过程。
总结来说即Sui对于特定对象类交易可以并行执行,共享对象型交易彼此间也可并行执行,但在各个共享的对象是需要顺序执行的。这一架构可以同时解决如下产品问题:
水平扩容能力:在 Sui 之上,每组交易都是并行处理的。
可组合性:将资产作为参数传递给函数,从函数中返还某种资产,再将资产存储在一个数据结构内,或是直接存储在另一个资产内。
链上存储:类资产数据,比如游戏的种族、等级、经验等等,都可以存储在 Sui 的对象中。
部分重播能力:区块链提供了所有交易的历史记录,Sui 的构架允许这些项目只关注它们所关心的对象的演化,即部分重播。
3. Sui的两种交易共识机制
Sui的共识机制分成了两部分:Narwhal(内存池协议)和Tusk(异步共识协议),但在2022 年 8 月,Bullshark 取代了共识协议的 Tusk 组件作为默认设置,以减少延迟并支持公平性。所以可以理解为Narwhal 和 Bullshark 或 Tusk 构成了 Sui 共识引擎。
Sui共识引擎的特点(Narwhal mempool提供)
一个高吞吐量的数据可用性引擎,在一个主节点上有数据可用性的加密证明
一个结构化的图形数据结构,用于遍历这些信息
一个可扩展的架构,将磁盘I/O和网络要求分给几个工作者
共识组件提供一个零信息开销的共识算法,利用图的遍历
Sui共识引擎架构
一个Narwhal实例设置了一个消息传递系统,该系统由一组节点之间分配的利益单位组成,并假设有一个计算上受限的对手控制着网络,可以破坏持有f个利益单位的各方。验证者合作形成一个无领导的交易批次图--文献(在基于DAG的共识的背景下)将其指定为区块,我们将其标记为集合--以强调我们处于mempool数据被未指定的共识算法使用的环境中。
该图的顶点由认证集合组成。每一个由其验证者-作者签名的有效集合必须包含一个整数,并且本身必须由法定的(2f+1)验证者桩签名。我们把这2f+1个签名称为可用性证书。此外,该集合必须包含指向上一轮有效证书(即来自具有2f+1个单位股权的验证人的证书)的哈希指针,这构成了图的边。
每个集合是以下列方式形成的:每个验证人可靠地广播每一轮的集合。在规定的有效性条件下,如果拥有2f+1股权的验证者收到一个集合,他们会用各自的签名来确认它。来自2f+1个验证者的签名形成了一个可用性证书,然后在r+1轮共享并可能包括在集合中。
下图表示这样一个DAG的五轮构建(1到5),当局A、B、C和D参与其中。为简单起见,每个验证者持有1个单位的股权。在A5中,由A的最新一轮确认的集合在图中以全线表示。
图片来源Sui官网
Sui共识引擎工作机制
图形结构允许在每个机构和每一轮的系统中插入更多的交易
证书证明了每个集合或块在每一轮的数据可用性
它们的内容构成了一个DAG,可以在每个诚实节点上进行相同的遍历
虽然Bullshark或Tusk共识在几个后验中选择了一个特定的DAG遍历,但它们和外部共识算法都可以在选择区块/集合时增加更多的复杂性,以反映优先级问题。
Sui共识引擎小结
Sui将交易分为两种,一种是简单交易,即交易与区块链状态的其他任意部分没有复杂的相互依赖性,一种是复杂合约,即在这种交易下,合约可能会受益于共享对象,其中多个用户可以改变这些对象。
在简单交易中,Sui使用基于拜占庭一致广播的更简单算法,采取了只为相关数据而不是整个链锁定的方法。在这种情况下,唯一需要的信息是发件人地址,然后一次只能发送一笔交易。
在复杂合约中,Sui 使用共识协议对所有涉及共享对象的交易进行完全排序。Narwhal (内存池协议)提供了一个高吞吐量的数据可用性引擎和一个可扩展的架构,将磁盘 I/O 和网络需求分配给多个对象。Bullshark 利用图遍历提供了一种零消息开销共识算法。两者结合可以提升复杂合约的处理性能。
4. Sui的可扩展性
Sui 采用最先进的Narwhal 共识协议对涉及共享对象的交易进行完全排序。共识子系统还可以扩展,因为Sui 计划有效地对数据存储进行分片,并横向扩展其资源。
生态
Linera
介绍
Linera的创始人兼CEO是Mathieu Baudet,也曾作为基础架构工程师,深度参与Diem和Novi的开发。
目前Linera官方公布的信息非常少,且较Aptos,Sui来讲起步最晚,目前处于非常早期的开发中,公开资料仅有开发理念与创新思路。
特点
支付系统。linera公开信息中指出:“Linera 区块链旨在推广这种方法并将其投入生产,使大多数基于帐户的操作能够在几分之一秒内得到确认”。可以看出linera的定位其实是支付系统,而不是通用型公链。
低延迟。linera致力于让web3应用像web2应用一样拥有极致丝滑的体验,不再被网络延迟的问题所困扰。
线性扩展。Linera 项目将开发和推广适用于线性扩展的新执行模型,那么不通用户账户的操作可以并行执行在不同的线程中。(暂时没完)
基于Rust语言开发。linera公开资料中并未明确表示是用move语言开发,仅指出是基于Rust语言进行开发。
总结
规模化的项目往往对处理时间与稳定性的要求更高。基于web3各赛道近几年涌入大量的开发者和用户,链上交易的用户也越来越多,那么对速度的追求也愈发严格,所以就个人而言对linera还是有较大的期待,不仅仅是因为同源的Aptos和Sui的关注度。希望linera能够破局,解决当前链上排队支付的困境。
2.模块化区块链与Celestia
什么是「模块化」?
模块化区块链是区块链架构的革新,是解决区块链扩容问题的一种创新型方案。在理解模块化区块链之前,我们需要先理解:什么是「模块化」?
在软件工程开发中,「模块化」是指将程序中的代码进行解耦,使每个模块的功能独立,模块之间的耦合程度低,达到模块复用的目的。「模块化」的本质是一种「劳动分工」,而程序就是一个「组织」;不同的模块相互组合能形成不同的程序。
对于区块链,「模块化」是对于「单体化」区块链架构的一种替代,根据区块链各部分的功能对于架构进行分层;新兴的区块链只需要实现某一层的功能,为其他层的区块链提供服务,而无需像「单体化」区块链那样,包含所有层的功能。实现「模块化」的好处在于,增加区块链的去中心化程度,提升区块链的吞吐量和容量。