1. 首页 > 创业 > 故事

7 O'Clock Capital:一文读懂SUI及其生态

引言

随着Aptos22年10月的stealth上线和大量空投,新晋公链生态再度人潮汹涌,同基于Move但尚未上线的Sui公链,Discord直接挤爆,水龙头频频维修,再次被推上风口。

Aptos和Sui的起源来自于Facebook的Diem区块链项目。在19-22年之间,Facebook在搭建自己的去中心化支付系统,虽然后期失败了,但却留下了Move语言,其中的四个联合创始人则独立门户成立Mysten Labs,开始Sui的搭建工作。

Mysten Labs在Move语言的基础上进行了修改,达成了特殊的Sui Move,并在此之上创立了Sui。

Sui 是首个完全无需许可Layer 1区块链,特点在于安全、快速。它实现了平行交易,并在交互足够简单时不需要共识而是使用更简单、快速的结算方式,因此给金融、数字商务和游戏带来了巨大的可能性。

以Evan Chang为CEO,Sui的创始人包括Adeniyi Abiodun(COO),Sam Blackshear(CTO),George Danezis(CSO)4人。该团队拥有3年高级别的加密项目工作经验,例如Diem区块链、偿付能力的加密证明、最新的高性能共识/执行策略以及Move编程语言开发。

Sui的团队Mysten Labs 于 2021 年 12 月宣布完成 3600 万美元 A 轮融资,由 a16z 领投,Coinbase Ventures等参投。22年8月,完成了3亿美元B轮融资,投资方包括a16z crypto, Jump Crypto, Binance Labs, Coinbase Ventures等。

目录

  1. 什么是Move语言,及Sui的Move
  2. Sui的运行原理
  3. Sui与Aptos的区别
  4. Sui的发展和生态情况

一、什么是Move语言,及Sui的Move

(一)什么是Move语言

Move的开发是为了服务于Diem区块链,打造全球化的金融和货币基础设施。所以Move必须有能力对构成金融基础设施的各种资产和业务逻辑进行编码。这也造就了Move编程语言的定位:安全、模块化的数字资产展示、管理和转换。

1、安全

在Solidity等语言的设计下,资产是一个数值,通过在钱包中加/减完成资产转移,而非资产真正的移动,因此容易产生漏洞。

Move的解决方式是把所有自定义资产(如Token)都视为一个资源(resource),存放在模块(类似于智能合约)中,且资源不能复制或者删除,只能移动和储存,且资源在模块内是透明的,但对模块外部的调用是不透明的。也就是说,Move通过将资产独立出来,并通过其移动来改变所有权,这也是Move(移动)的命名而来。

在此之上,Move内置字节码验证器验证,合约代码需验证后才能被执行;同时Move Prover 允许开发人员为应用程序的关键正确性属性编写一个正式规范,然后使用Prover检查这些属性是否适用于所有可能的交易和输入,在代码未发布前就能进行第一次审核。

2、模块化

因所有合约都是一个模块,因此Move天生带有模块性,资产存属于模块中,合约通过传递资产完成交互(Solidity等通过界面)。更新合约也只需更新模块,所有使用过模块的合约都会自动更新到最新版本。

Aptos和Sui都是基于Move语言,但Sui并非直接使用了Move语言,而是在Move的基础上进行了修改。

(二)Sui的Move

基于Sui的白皮书,Sui Move和Move最大的区别在于全局存储和Key能力,简单来说就是储存不在Move,而是在Sui自己的链上,赋予每个可编程对象全局唯一ID,同时对高效储存和快速调动数据进行了优化。

主要有5点不同

  1. 资源不部署在Move中,而是以对象为中心(Object-Centric)的全局存储在Sui内
  2. 地址不再代表用户账户,而是代表对象的 ID
  3. Sui 对象具Key能力,则全局唯一ID,包含id和版本序号
  4. Sui 有模块初始化器 (init),帮助模块快速部署
  5. Sui 入口点(entry point)将对象引用作为输入

总之,Sui 充分利用了 Move 的安全性和灵活性,并通过对存储的改变从而极大地提高了吞吐量,减少了最终确定的延迟,并使 Move 编程更容易。 

Move语言积淀了Sui的安全性,下面,让我们深入了解Sui的运作原理,探究它为何能大幅提升速度。

二、Sui的运作原理

Sui的TPS能达到120,000,之所以速度快,要基于它对交易的分类以及共识系统:简单的交易走简单共识,复杂的交易走全套共识,同时共识层将信息的传递和共识执行分开,完成并行交易。

(一)Sui的架构

简单说下Sui的架构,作为一个分布式账本,Sui的架构有三个组成部分:对象(Object)、交易(Transaction)、验证器(Validator)。

1、对象(Object)

Sui储存的基本单位,每个对象都有一个全球唯一的ID。每个对象都由一个地址拥有,而每个地址可以拥有任意数量的对象。分类为所属对象(地址所有)、共享对象(多人共享)、不可变对象(任何人都可使用)。

2、交易(Transaction)

账本通过地址向地址发送交易(Transaction)进行更新。一个交易可以创建、销毁和写入对象(比如Token),也可以将它们转移到其他地址。

3、验证器(Validator)

通过拜占庭一致广播同意和并行执行交易,当我们拥有了对象后,就可以通过交易转移对象的所属地址,也就是资产交互,并通过节点进行验证。

那么Sui对交易的执行以及共识系统在技术层面是如何完成。

(二)Sui对交易的分类

Sui使用DPoS进行共识证明,每个交易单独验证,而非像传统区块一样等多个交易绑在一起后验证,也就是说随着客户端发起交易马上就进行验证,因此无需等待。同时,交易分两类,简单交易和复杂合约,由不同的方式执行交易,以达到高效率和速度。

1、简单交易:拜占庭一致广播

很多时候链上交易并没有复杂的依赖关系,比如资金转账,只需要更新资金的所有者,那么交易就可以跳过共识,只用基于拜占庭一致广播的算法即可。

交易过程:

交易发起者向所有Sui验证者广播一个交易

每个Sui验证者都会对该交易进行单独投票,投票权重基于质押数量

发起者将多数投票收集到一个证书中,并将其广播给所有Sui验证者,完成交易,确定finality

2、复杂合约:Narwhal和Bullshark共识启动

复杂的智能合约通常为共享对象,则不只一个用户可以对其发起改变,因此则需要通过2次共识才能完成交易,这就涉及到Sui设计的共识协议Narwhal和Bullshark(Bullshark 22年8月代替了Tusk)。

交易过程


交易发起者向所有Sui验证者广播一个交易

每个Sui验证者都会对该交易进行单独投票,投票权重基于质押数量

发起者将多数投票收集到一个证书中,并将其广播给所有Sui验证者,但证书需要通过拜占庭协议完成共识

一旦交易成功排序,发起者再次将证书广播给验证者以结算交易


(三)Sui的共识

Sui的共识是DPoS,由基于DAG的拜占庭容错Narwhal和Bullshark(Tusk)实现,该设计能够允许Sui并行处理交易,并快速达成共识。

传统区块链的顺序是线性的,则T1链接T2链接T3直到Tn,因此必须一个一个地完成交易,速度慢,Sui通过引入DAG解决并行交易。

传统的BTF(拜占庭容错)共识数据传播和共识是同时达成的:在普通领导制的协议中,一个领导节点发出提议并广播其提议,然后将收集到的投票放到一个证书中,再将证书广播出去,从而证明交易完成。

基于这样的设计,只有领导节点的工作量是最大的,其他节点只需投票,但由于领导随机生成,每个节点都需要大量的算力储备,最终导致网络算力的浪费。

解决这个问题的关键点在mempool,内存池。如果能在池内将数据传播和共识协议拆开,内存池解决数据传播,共识协议结局数据共识,那么速度就会大幅提升。Sui的设计正是如此:Narwhal是mempool层,Bullshark是共识层,分开工作。

下面我们详细分析一下DAG和Narwhal和Bullshark(Tusk)的运作方式。

1、区块链顺序:DAG

DAG是有向无环图,由点与边组成,一个点到另一个点可能存在多种路线,但路线无法形成闭环。

传统区块链网络是线性的,每个块都要等上一个处理完毕后再进行下一个验证,且所有节点要保存所有账簿。而DAG不以区块为单位,交易各自为链上的点,由不同的节点储存和认证,没有领导,因此各自处理各自的交易,实现平行处理消息。

这样一来,交易之间的关系并非总顺序(Total Order),而是因果排序(Causal Order),只看它从哪个交易来,又被哪个交易所使用,因此大幅增加了Sui的处理速度以及实现平行交易处理。

如果DAG没有领导,我们如何确认共识?这就需要Narwhal与Bullshark。

2、区块链共识:Narwhal与Bullshark(Tusk)

简单来说,基于DAG的设计,Narwhal将mempool的信息进行拆分,完成数据可用性,让信息能够更快地传播,再发送给Bullshark进行共识确认。

3、具体运作方式

Narwhal的mempool在每个节点内运行,由无数个worker和一个primary组成(可以理解为工人和包工头)。每个worker都会从客户端收到交易,并将所有的交易捆绑一起后广播给其他节点的同序号worker,同时将digest(摘要)发给primary。在这一步,大量的冗余信息都在worker项目之间传递,pimary的工作就是从不同worker中收取各个小单位的digest,成立轮次制的DAG mempool。

这些Digest就是区块头,集合起来成为元数据(Metadata),primary再与其他节点的primary沟通区块头的信息,就能够快速完成第一次投票收集证书的共识。

Protocol Labs

基于DAG的设计,每一次的交易产生和共识传播都分轮次。Sui链上的所有节点都会与12+1个创世区块所连接,并开始第一轮验证过程。各个节点收到的信息不一定是一致的,这也就是非线性区块链的最大区别。只要节点收到交易,primary就会向所有节点里的primary广播信息,得到投票(如果这是本轮次中你看到该验证器发布的第一个的区块头,就可以投票),形成证书。而每个节点都在同时广播信息,获取其他节点的投票,因此交易确认并行执行。

上图示例是r1(轮次1),我们的视角是节点1的本地信息图。我们看到3个示例创世区块产生了交易,出现了第一个区块头节点,第一个区块头便向下面三个节点广播了信息,并得到了2个投票,只要有f值个节点投票了,就可以得到证书,然后证书广播给所有节点,节点进行储存,完成第一次共识。

除了节点1以外,节点2到节点n都在同时做同样的事情,因此把每一轮的传递连起来就会得到DAG。

 1/3    1 2 3 下一页 尾页

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.longfuchaju.com//chuangye/gushi/6176.html

联系我们

在线咨询:点击这里给我发消息

微信号:wx123456