探索隋的以对象为中心的模型和移动编程语言
嗨,区块链圈的新星, sui 出道啦!不是那种蹩脚的小李子,而是一条全新的第一层(L1)协议。它巧妙地整合了先进技术,解决了一般 L1 协议的难题。Cointelegraph 研究部为你拆解这条新人的背后秘密。
Sui 用的是 Move 编程语言,人家可是含着金钥匙出生,专为资产表示和访问控制量身定制。这篇文章将深入探讨 Sui 的以对象为中心的数据存储模式,分析它对交易处理的影响,以及它相较于传统基于账户的方案的潜在优势。
咱们 SUI 的面向对象范式
Sui 从 Diem 区块链那里得到了很大的启发,尤其在智能合约方面,用了 Move 编程语言。Move 专门针对资产管理以及访问控制进行了类型系统设计。Sui Move 则在此基础上,采用以对象为中心的数据存储模式,用对象取代账户作为基本单元。
和传统的账户模型不同,那种动不动就改余额的交易模型,或者 UTXO 模型(输入输出简单直接),Sui 的对象模型把资产(还有智能合约)看作复杂对象。Sui 的交易就是以对象为输入,将其转变为输出对象。每个对象都会记录最后产生它的交易哈希。这方法听起来有点像 UTXO 模型,但更广泛、更有力。下面是这两种模型的对比图。

Move 里的线性逻辑和对象模型紧密相连,使得开发安全软件变得容易起来。这种逻辑(有时被称为资源逻辑),能给代表数字资产的资源贴上不能复制或意外毁坏的标签。当执行涉及资产的交易时,Sui Move 的语义保证资产的现有状态能反映出交易结果,消费掉原来的状态,生成新的状态。
Sui 里的对象还可以设置访问控制和权限,这提高了交易后对资产使用的控制和安全性。这减少了基于账户的链上常见的漏洞,比如重新进入攻击。在重新进入攻击中,一个函数在更新自己的状态之前,就会对外部合同进行外部调用,让攻击者能够多次执行那些本该只发生一次的动作。
这可能导致合同状态的未授权改变,比如取出比应允的更多资金。因为 Sui 的所有权转移是明确且原子的,所以这种情况不会发生。Move 的线性类型系统保证,一旦资源被转移,就无法再次使用,除非明确重新分配。
而像 Solidity 这样的传统账户模型,却需要开发者额外加持,防止这种错误。例如,需要遵循检查-效果-交互(checks-effects-interactions)模式,来避免重新进入攻击。所有改变状态的操作(效果)都要在有检查之后、在交互(外部调用)之前发生。这个模式,通常被称为乐观会计,确保在执行任何外部交互之前,状态变量已被更新。
虽然对象中心模型本身并不能直接提高安全性,但它能简化开发流程,也能让编写安全代码变得更简单。虽然以太坊上的智能合约可以进行形式化验证,从而实现高安全性,但这个过程既复杂又昂贵。
Solidity 因为它的语义异常难懂而出名,让开发者很难推断代码的行为。这增加了引入隐蔽错误和安全漏洞的可能性。
SUI Move 属于一个尝试通过将合理的金融原语嵌入到语言语义中,从一开始就简化安全智能合约开发的语言家族。另一个例子是 Algorand 区块链的“事务执行批准语言”(TEAL),它使用无状态执行模型,确保事务原子化和安全。
Sui 的以对象为中心模型对于管理复杂资产,比如非同质化代币(NFT),特别有利。在以太坊上,NFT 和智能合约地址绑定,而且交互常常需要复杂的合同调用和状态更新,从而增加了成本和潜在的安全风险。例如,在以太坊上转移 NFT,就涉及到调用 ERC-721 智能合约的函数,这将更新状态并触发事件。
这个过程涉及到多个步骤,并为每个操作支付交易费。相比之下,Sui 的对象模型允许每个 NFT 被当作一个独特的对象,具有固有的属性和权限。NFT 的行为与 Move 语言的基本原理紧密一致,而在以太坊上,需要实施这些行为,这增加了开销,也创造了错误的空间。

对象导向与区块链性能
面向对象模型让 SUI 区块链上的分区和并行化更容易。结合最近更新的 Sui 共识机制,因此 SUI 实现了大约 390 毫秒的最终确认时间。
这可能导致每秒超过 100,000 笔的交易吞吐量。下面是 Sui 与其他著名第一层区块链的比较图。

基于账户的链数据库分区与 SUI
区块链面临的最紧迫的问题是可扩展性、安全性和去中心化的三角难题。分区,也就是把区块链数据库进行分割,被认为是这个问题的解决方案之一。
在基于账户的架构中,分区是通过账户地址来分割状态的。每个分区管理一个特定的地址范围,交易由持有相关账户数据的分区来处理。
但是,这也会产生一些问题。例如,Polkadot 要求每个账户的余额和状态必须在各个分区(Parachains)上更新和同步。在多个分区之间保持一致性是具有挑战性的,因为每个分区必须定期与全局状态同步,这会导致延迟和复杂性。
涉及到不同分区的账户的交易需要跨分区消息和协调,这会增加计算开销和延迟交易最终确认的时间。在过去,这一问题曾导致某些区块链出现宕机,比如 Zilliqa。
Sui 的对象中心模型通过把每个对象当作独立的单元状态,避免了这些问题。对象可以独立处理和管理,不需要全局状态同步,并且可以并行处理多个交易,而无需跨分区同步。这减少了复杂跨分区通信的需要,同时也简化了单个节点上的并行化处理。

SUI 上并行化处理事务
并行化指的是同时执行多个操作,通过利用并发执行线程来提高处理速度。
有两种主要的并行化方法:状态访问方法(或确定性执行)和乐观执行。Sui 和 Solana 所使用的状态访问方法中,事务会声明要访问的状态部分,这样系统就能识别出可并行执行的独立事务。
这种方法确保了可预测的结果,避免了重新执行事务的需要,还使得能够处理动态的气费市场,以管理拥堵的状态热点。
另一方面,乐观执行,正如被 Monad 和 Aptos 等网络使用的那样,最初假设所有交易都是独立的,并通过追溯重新执行冲突事务。虽然对开发者来说更简单,但这可能导致计算上的低效。
Sui 通过它的对象中心模型实现了状态访问的并行化。一个对象上的操作不会影响或延迟另一个对象上的操作,这使得它们可以并行处理。同样的结构优势也简化了事务数据库的分区,从而也简化了单个节点上的并行化处理。

结论
总的来说,Sui 区块链的对象中心模型,结合 Move 编程语言,解决了传统第一层区块链的几个关键限制。并行处理事务的能力显著提高了可扩展性,减少了延迟。
使用线性逻辑和能力基础安全,确保了强大的资源管理和访问控制,降低了错误和安全漏洞的风险。此外,Sui 在管理复杂资产,如 NFT,的方法比传统基于账户的模型更简化,并提高了效率。这些特性让 Sui 在区块链技术中占据了显著的地位。
在下一篇文章中,我们将探讨 Sui 区块链的共识机制,探索其演变及其带来的好处。Sui 采用了与对象中心模型相匹配的共识协议。
我们将分析 Sui 共识机制的具体细节,包括其容错性和吞吐量优化方法,以了解这些元素如何为其基础设施做出贡献。
此外,我们还将比较 Sui 的共识方法与其他著名区块链,如以太坊、Polkadot 和 Solana 的方法,以确定其独特特征以及它在哪些方面可能表现出色或面临挑战。
杂志:随着以太坊钓鱼变得越来越难,盗取者转向 TON 和比特币
杂志:随着以太坊钓鱼变得越来越难,盗取者转向 TON 和比特币