探索 Sui 以对象为中心的模型
Sui 使用 Move 编程语言,该语言的设计重点是资产表示和访问控制。本文探讨了 Sui 以对象为中心的数据存储模型、其对交易处理的影响以及它相对于传统基于账户的范式的潜在优势。
一键发币: SUI | SOL | BNB | ETH | BASE | ARB | OP | POLYGON | AVAX | FTM | OK
Sui 区块链已成为一种新颖的 1 层 (L1) 协议,它采用了先进的技术来解决常见的 1 层权衡问题。Cointelegraph Research 揭秘了这一区块链领域新人的细节。
Sui 使用 Move 编程语言,该语言的设计重点是资产表示和访问控制。本文探讨了 Sui 以对象为中心的数据存储模型、其对交易处理的影响以及它相对于传统基于账户的范式的潜在优势。
1、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 语言的原语紧密相关,而在以太坊中,需要实现此行为,这会增加开销并为错误创造空间。
2、面向对象和区块链性能
面向对象模型使 SUI 区块链上的分片和并行化变得更容易。结合 Sui 共识机制的最新更新,SUI 实现了约 390 毫秒的最终时间。
这可以允许每秒超过 100,000 笔交易的吞吐量。下面是 Sui 与其他著名的第 1 层区块链的比较。
3、基于账户的链与 SUI 上的数据库分片
区块链最紧迫的问题之一是可扩展性、安全性和去中心化之间的权衡。分片有助于对区块链数据库进行分区,被认为是解决此问题的方法。
在基于账户的架构中,分片涉及按帐户地址对状态进行分区。每个分片管理不同范围的地址,交易由保存所涉及帐户数据的分片处理。
然而,这面临许多问题。例如,Polkadot 要求每个账户的余额和状态在分片(平行链)之间进行更新和同步。保持多个分片之间的一致性具有挑战性,因为每个分片必须定期与全局状态同步,这会带来延迟和复杂性。
涉及不同分片上的账户的交易需要分片间消息传递和协调,这会增加计算开销并延迟交易的最终性。在过去,这会导致此类区块链停机,Zilliqa 就是这种情况。
Sui 的对象中心模型通过将每个对象视为独立的状态单元来避免许多此类问题。可以单独处理和管理对象,而无需全局状态同步,并且可以同时处理多个交易,而无需跨分片同步。这减少了对复杂的跨分片通信的需求,并允许更直接、更高效的并行处理。
4、SUI 上的并行交易处理
并行化是指同时执行多个操作并通过利用并发执行线程来提高处理速度。
并行化主要有两种方法:状态访问方法(或确定性执行)和乐观执行。在 Sui 和 Solana 使用的状态访问方法中,交易声明它们将访问状态的哪些部分,从而允许系统识别可以并发执行的独立交易。
这种方法可确保可预测的结果并避免重新执行交易的需要,从而实现管理拥塞状态热点的动态 gas 费用市场。
另一方面,乐观执行,正如 Monad 和 Aptos 等网络所使用的那样,最初假设所有交易都是独立的,并追溯性地重新执行冲突的交易。虽然对开发人员来说更简单,但它可能导致计算效率低下。
Sui 通过其以对象为中心的模型实现状态访问并行化。对一个对象的操作不会影响或延迟对另一个对象的操作,自然允许它们并发处理。相同的结构特征简化了交易数据库的分区,从而也简化了单个节点上的并行处理。
5、结束语
总之,Sui 区块链的对象中心模型与 Move 编程语言相结合,解决了传统第 1 层区块链的几个关键限制。并行处理交易的能力显著提高了可扩展性并降低了延迟。
使用线性逻辑和基于能力的安全性可确保强大的资源管理和访问控制,从而可能降低错误和安全漏洞的风险。此外,与传统的基于账户的模型相比,Sui 管理复杂资产(如 NFT)的方法简化了交互并提高了效率。这些功能使 Sui 成为区块链技术中值得注意的进步。
在我们的下一篇文章中,我们将研究 Sui 区块链的共识机制,探索其演变及其提供的好处。Sui 采用了一种旨在与其对象中心模型配合使用的共识协议。
我们将分析 Sui 共识机制的具体内容,包括其容错能力和吞吐量优化方法,以了解这些元素如何为其基础设施做出贡献。
此外,我们将比较 Sui 的共识方法与其他知名区块链(如以太坊、Polkadot 和 Solana)的共识方法,以确定其独特之处以及可能擅长或面临挑战的领域。
原文链接:Exploring Sui’s Object-Centric Model and the Move Programming Language
DefiPlot翻译整理,转载请标明出处
免责声明:本站资源仅用于学习目的,也不应被视为投资建议,读者在采取任何行动之前应自行研究并对自己的决定承担全部责任。