Sui区块链作为一种新兴的一层协议(L1),采用先进技术来解决常见的一层协议权衡问题。Cointelegraph Research详细剖析了这一区块链新秀。
Sui使用Move编程语言,该语言专注于资产表示和访问控制。本文探讨了Sui的对象中心数据存储模型、其对交易处理的影响以及相较于传统账户模型的潜在优势。
Sui的面向对象范式
Sui在很大程度上受到了Diem区块链的启发,特别是在智能合约使用Move编程语言方面。Move的设计目标是为资产管理和访问控制执行量身定制一个类型系统。Sui Move在此基础上构建了一个对象中心数据存储模型,使用对象而非账户作为原语。
不同于传统的账户模型(交易更改余额)或UTXO模型(交易具有简单的输入和输出),Sui的对象模型将资产(以及智能合约)视为复杂对象。Sui中的交易以对象作为输入,并将这些输入对象转变为输出对象。每个对象记录了生成它的上一个交易的哈希值。这种方法在概念上类似于UTXO模型,但更为通用和强大。以下可以看到这些模型的比较。
Move语言对线性逻辑的使用与面向对象模型相关,有助于开发安全的软件。线性逻辑,有时也被称为资源逻辑,确保表示数字资产的资源不能被复制或意外销毁。当涉及资产的交易被执行时,Sui Move的语义确保资产的状态以反映交易结果的方式更新,消耗其先前状态中的资产,并在其新状态中生成它。
Sui中的对象还可以定义访问控制和权限,这增强了交易后对资产使用的安全性和控制。这减少了基于账户链中常见的漏洞,如重入攻击。在重入攻击中,一个函数在更新自身状态之前对另一个合约进行外部调用,使得攻击者可以重复执行本应只发生一次的操作。
这可能导致合约状态的未经授权更改,例如提取超过应允许的资金。由于在Sui中所有权的转移是明确和原子性的,这种错误不会发生。Move的线性类型系统确保一旦资源被移动,就不能被重复使用,除非明确重新分配。
另一方面,传统的基于账户的模型(如Solidity所使用的)要求开发人员实施额外的检查来防止此类错误。例如,重入攻击需要通过遵循检查-效果-交互模式来避免。所有改变状态的操作(效果)必须在所有检查之后但在任何交互(外部调用)之前进行。这种模式,通常被称为乐观计算,确保状态变量在执行任何外部交互之前更新。
虽然对象中心模型本身并没有固有地增强安全性,但它可以简化开发过程,使编写安全代码变得更容易。尽管以太坊上的智能合约可以通过形式化验证来实现高水平的安全性,但这一过程可能复杂且成本高昂。
Solidity因其众所周知地非直观语义,使得开发人员难以推理代码行为,这增加了引入细微错误和安全漏洞的可能性。
Sui Move属于一个尝试通过在语言语义中从一开始就嵌入合理的金融原语来简化安全智能合约开发的语言家族。另一个例子是Algorand区块链的交易执行批准语言(TEAL),它使用无状态执行模型来确保交易的原子性和安全性。
Sui的对象中心模型在管理复杂资产(如非同质化代币,NFT)方面特别有优势。在以太坊中,NFT绑定到智能合约地址,交互通常需要复杂的合约调用和状态更新,导致更高的成本和潜在的安全风险。例如,在以太坊中转移NFT涉及调用ERC-721智能合约的一个函数,该函数更新状态并发出事件。
这个过程涉及多个步骤和每个操作的gas费用。相比之下,Sui的对象模型允许每个NFT被视为具有内在属性和权限的独特对象。NFT的行为与Move语言的原语紧密对齐,而在以太坊中,这种行为需要实现,这增加了开销和错误的可能性。
面向对象和区块链性能
面向对象模型使Sui区块链上的分片和并行化更容易。结合最近对Sui共识机制的更新,Sui因此实现了大约390毫秒的确认时间。
这可能允许每秒超过100,000笔交易的吞吐量。以下是Sui与其他主要第一层区块链的比较。
基于账户的链上数据库分片与Sui
区块链最紧迫的担忧之一是可扩展性、安全性和去中心化之间的权衡。分片被认为是解决这一问题的方法,它有助于区块链数据库的分区。
在基于账户的架构中,分片涉及按账户地址分区状态。每个分片管理一系列不同的地址,交易由持有相关账户数据的分片处理。
然而,这面临许多问题。例如,Polkadot要求每个账户的余额和状态在分片(平行链)之间更新和同步。维护多个分片之间的一致性具有挑战性,因为每个分片必须定期与全局状态同步,这会引入延迟和复杂性。
涉及不同分片上账户的交易需要跨分片消息传递和协调,这增加了计算开销并延迟了交易确认。在过去,这导致了某些区块链的停机,如Zilliqa所遇到的情况。
Sui的面向对象模型通过将每个对象视为独立的状态单元,避免了许多这些问题。对象可以独立处理和管理,而无需全局状态同步,多个交易可以在不需要跨分片同步的情况下并行处理。这减少了复杂的跨分片通信的需求,并允许更简单高效的并行处理。
Sui上的并行交易处理
并行化指的是同时执行多个操作,并通过利用并发执行线程来提高处理速度。
有两种主要的并行化方法:状态访问方法(或确定性执行)和乐观执行。在Sui和Solana中使用的状态访问方法中,交易声明它们将访问的状态部分,使系统能够识别可以同时执行的独立交易。这种方法确保了可预测的结果,避免了重新执行交易的需要,支持动态的gas费用市场来管理拥堵的状态热点。
另一方面,乐观执行(如Monad和Aptos网络所使用的)初始假设所有交易都是独立的,随后重新执行冲突的交易。尽管对开发人员来说更简单,但它可能导致计算效率低下。
Sui通过其面向对象的模型实现了状态访问并行化。对一个对象的操作不会影响或延迟对另一个对象的操作,自然地允许它们同时处理。同样的结构特性简化了交易数据库的分区,从而也简化了单节点上的并行处理。
结论
总之,Sui区块链的面向对象模型结合Move编程语言,解决了传统一层区块链的若干关键限制。并行处理交易的能力显著提高了可扩展性并减少了延迟。
使用线性逻辑和基于能力的安全性确保了稳健的资源管理和访问控制,潜在地降低了错误和安全漏洞的风险。此外,Sui对复杂资产(如NFT)的管理方法简化了交互并提高了效率,相比传统的基于账户的模型更为优越。这些特点使Sui成为区块链技术中的一个显著进步。
在我们的下一篇文章中,我们将探讨Sui区块链的共识机制,研究其演变及其提供的优势。Sui采用了一种旨在与其面向对象模型配合的共识协议。
我们将分析Sui共识机制的具体细节,包括其容错和吞吐量优化方法,以了解这些元素如何贡献于其基础设施。
此外,我们将把Sui的共识方法与其他主要区块链(如Ethereum、Polkadot和Solana)的共识方法进行比较,以确定其独特功能以及可能的优势和挑战。
关于Sui Network
Sui是基于第一原理重新设计和构建而成的L1公有链,旨在为创作者和开发者提供能够承载Web3中下一个十亿用户的开发平台。Sui上的应用基于Move智能合约语言,并具有水平可扩展性,让开发者能够快速且低成本支持广泛的应用开发。获取更多信息:https://linktr.ee/sui_apac