目录:
综合概述
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的资源永远不能被复制或隐式丢弃,只能在程序之间移动。
Movevssolidity
目前,区块链语言领域的主要参与者是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项目中积累的开源技术和开发经验来搭建的。其中MoShaikh和AveryChing的两个Aptos创始人,曾深度参与Meta加密钱包Novi的开发。
截止年7月27日,Aptos总共完成3.5亿美元融资,其中a16z(AndreessenHorowitz)、FTXVentures、MulticoinCapital三家机构均参与了目前为止的两轮融资。
特点
MOVE语言开发
AptosMove遵循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包括了一个类型验证器,MoveProver,能够根据给定的规范,验证Move程序的功能正确性,该类型验证功能已经集成到了Move语言中。
Move编码系统为资源提供了针对性的安全保护。Move资源不可复制,重复使用或销毁。一个资源类型仅能被定义其类型的模块创建或销毁。Move虚拟机将通过静态字节码验证,并拒绝未通过字节码验证的的程序运行,以此确保其安全性。
可验证性
Move语言具有多种验证方式。通常,最好的验证方式就是将字节码提交到链上进行真实验证,但这样很明显会加重链的负担,影响交易的速度。所以,我们在Move中尽可能多在链上做轻量级的验证,而在语言级别做线下的静态验证。
Aptos状态同步
状态同步是允许非验证节点分发、验证和持久化区块链数据并确保生态系统中所有节点同步的协议。Aptos网络中的节点,包括验证节点和全节点,必须始终同步到最新的Aptos区块链状态。运行在每个节点上的状态同步(statesync)组件负责这个同步。为了实现这种同步,状态同步从对等点识别并获取新的区块链数据,验证数据并将其持久化到本地存储。
Aptos状态同步模式
Aptos状态同步以两种模式运行。所有节点将在启动时引导(引导模式),然后持续同步(连续同步模式)。
其中引导模式有三种:
执行自创世以来的所有交易
应用自创世以来的交易输出
直接下载最新状态
连续同步模式有两种:
执行交易
应用交易输出
Aptos状态同步架构
Aptos状态同步组件由四个子组件组成,每个子组件都有特定的用途:
Driver:同步进度。它负责验证节点从对等点接收到的所有数据。数据通过数据流服务从对等方转发。数据验证后,Driver将数据持久化到本地存储中。
数据流服务:为客户端创建数据流,使客户端从对等点流式传输新的数据块,无需担心哪些对等点拥有数据,也不关心数据请求如何管理。
Aptos数据客户端:数据客户端负责处理来自数据流服务的数据请求。对于流式传输所有事务的数据流服务,发出多个请求(每个请求针对一批事务)并将这些请求发送到对等点。数据客户端接受请求,确定哪个对等方可以处理请求并将请求发送给它们。
存储服务:存储服务是每个节点提供的一个简单的存储API,对等点通过API调用获取数据。
Aptos并行执行引擎
为了实现高吞吐量和低延迟,Aptos区块链在交易处理的关键阶段采用了流水线和模块化方法。具体来说,交易传播、区块元数据排序、并行交易执行、批量存储和账本认证都同时运行。这种方法充分利用了所有可用的物理资源,提高了硬件效率,并实现了高度并行的执行。
Aptos区块链从数据模型和执行引擎两方面着手实现并行处理。由于Move语言数据模型本身支持数据和模块的全局寻址,Aptos使用Move语言实现交易的并行执行。同时设计并实现了一个高效、多线程、内存中的并行执行引擎Block-STM,依靠Rayon、Dashmap和ArcSwapcrates实现并发。
并行数据模型
Aptos区块链引入了一个新概念,deltawrites,它描述了对账户状态的修改,而不是修改后的账户状态(例如,增加一个整数而不是简单地确定最终值)。所有交易处理都可以并行完成,然后以正确的顺序对冲突值进行deltawrites操作,以确保确定性结果。
随着时间的推移,Aptos区块链将继续通过提高并发性(例如,利用读/写提示)以及改善开发体验的方式来增强数据模型,让开发人员更自然地创建、修改和组合链上值。Move为语言级别和平台特定功能上的改进提供了灵活性。
并行执行引擎
Block-STM并行执行引擎检测和管理有序交易的冲突,同时进行乐观并发控制,以实现在特定顺序下最大并行度。
批量交易采用乐观锁并行,并在执行后得到验证。验证失败会导致重新执行。Block-STM使用多版本数据结构来避免写-写冲突。所有对同一位置的写入都与它们的版本一起存储,其中包含它们的ID和被乐观重试的次数。当事务tx读取内存数据时,它会按预设顺序,从多版本数据结构中获取出现在tx之前的区块高度最高的交易,写入该交易的值及其相关版本。
Block-STM已经集成到Aptos区块链中。为了解Block-STM的性能潜力,我们使用内存数据库,将有意义(non-trival)的点对点Move交易(例如:每个交易8次读取和5次写入)作为独立的,仅执行(非端到端)的基准进行测试。
Aptos共识协议
Aptos通过AptosBFT共识算法来实现共识机制。AptosBFT沿用了DiemBFT,并在其基础上已经进行了第四次迭代。
迭代功能之一为:添加一个主动起搏器。它使用超时来同步验证器,远快于等待增加的超时,区块只需两次网络往返即可提交,从而使亚秒级的最终确定性成为常见情况。其二是Aptos添加了一个信誉系统。通过检查链上数据并自动更改领导者轮换以解决无响应的验证者。
Sui
介绍
Sui是Meta系公链中起步最早的一个项目,由MystenLabs团队开发,MystenLabs团队创始人EvanCheng等也是从Diem和Novi项目离开的。
Sui旨在创建一款环保、低成本、高吞吐量、低延迟的无权限区块链。相比传统区块链,Sui最关键的创新在于Sui的数据模型及交易处理通道。
年12月,Sui公布了W美金的A轮融资,年7月,Sui爆出正在寻求2亿美元B轮融资,估值已经达到20亿美元。其中A轮融资资方包括a16z与NFX、ScribbleVentures、Redpoint、Lightspeed、ElectricCapital、SamsungNEXT、SlowVentures、StandardCrypto、CoinbaseVentures等。
特点
1.基于CoreMove改造的SuiMove
以Sui对象为中心的全局存储:在CoreMove中,全局存储是编程模型的一部分,可以通过特殊操作访问,例如move_to、move_from和更多全局存储操作符。SuiMove中没有与全局存储相关的操作,存储只发生在Sui内,Sui显式地将所有需要访问的对象传递给Move。
地址代表对象ID:在Move中,有一种特殊的地址类型。此类型用于表示CoreMove中的地址,因为CoreMove在处理全局存储时需要知道账户地址。在SuiMove中是使用地址类型来表示对象ID。
Sui对象具有全局唯一ID:在CoreMove中,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的构架允许这些项目只