本文将向大家展示SUI Network 和Defi 开发的适配性,为什么创业者会选择在SUI 上构建Defi 项目?
原文:《Why DeFi on Move/Sui? A Two-Part Deep Dive.》
编译:SUI World
众所周知,SUI Network 是基于Move 语言的新L1 公链之一,它的技术发展得到了很多开发者和创业者的关注。目前已经有数十个Defi 项目在SUI 测试网运行,Defi 是区块链生态项目不可缺少的一部分。本文将向大家展示SUI Network 和Defi 开发的适配性,为什么创业者会选择在SUI 上构建Defi 项目?
Move 语言,为金融而生
Move 最初是由 Facebook 为 Diem 区块链开发的,该区块链最初设想为全球金融赋能数十亿的金融基础设施。Move 被设定为一种为运行数字资产而设计的语言,它必须能够以精确、可理解和可验证的方式表达 Libra 货币和治理规则。
从长远来看,Move 必须具备对构成金融基础设施的各种资产和相应的业务逻辑进行编码的能力。Move 对此的解决方案是将资产编程为「头等资源」, 用户可以通过资源的4种不同能力轻松定义和操作数字资产:
1. Copied copy
2. Indexed key
3. Discarded drop
4. Stored store
为了促进健壮且可扩展的 DeFi 生态系统,需要编程语言以 3 种方式提供支持:
1. 数字资产的稀缺性
2. 加强访问控制
3.资产安全
- 数字资产的稀缺性
稀缺性是有价值的实物资产的重要属性,但数字资产不存在内在的实物稀缺性,数字资产计算规则必须以编程方式强制执行稀缺性。也就是说,系统内的资产供给不能无限制的,必须完全禁止代码漏洞导致资产被复制。
对此,为了实现稀缺性,Move 规定资产永远不能被复制或隐式丢弃,只能在存储位置之间移动。(因此得名“Move”。)
- Move 如何执行此操作?
Move 有一个由字节码验证器强制执行的类型系统,每当开发人员将 Move 字节码发布到区块链以防止滥用资产价值时,该验证器就会运行。
复制——如果我编写了一些将代币作为输入的函数,然后尝试编写另一个代码来复制该代币,类型系统将产生错误。
双花——如果我有一枚代币,并且我正试图将它传递给某个接受该代币作为支付的函数,它会阻止发送该代币两次。
销毁——如果我采用某个以代币作为输入的函数,我不应该能够重新分配持有该代币的变量,因为销毁就是把代币扔掉。
Move语言的这些设计确保了数字资产的行为与实物资产一样保证稀缺性。
- 加强访问控制
在 Solidity 中,数据集中存储在合约中,当合约存在漏洞时,黑客一旦获得合约权限,所有用户数据都会被攻击。
Move 开发团队认为数据应该存储在拥有它的账户中,而不是在合约中。Move 中的模块可以是库或程序,可以创建、存储或传输资产。就像以太坊中的合约,但更像是使用面向对象编程的银行。Move 指定只有公共模块可以被其他模块访问,结构中的字段只能在其模块内访问和更改,每个资源都存储在所有者帐户控制的模块中。
此功能允许在智能合约中维护数字资产的所有权信息和特权,如果资产被发送到智能合约,所有权不会改变。一个更简单的例子是,如果黑客获得了 Move 智能合约的访问权限,他/她也将无法将资产提取到自己的钱包中。
- 资产安全
DeFi 安全风险越来越令人担忧,1 亿美元以上的黑客攻击已成为新常态。据慢雾科技统计,2022 年上半年 DeFi 安全事件约 100 起,损失超过 16亿美金,其中主要的原因是项目缺陷和合约漏洞。
作为一门专注于金融场景的语言,Move从设计上借鉴了Solidity可能存在的安全漏洞,非常重视“智能合约的安全性和正确性”。
- 字节码校验器
许多常见的错误可以通过移动字节码验证器来防止,该验证器在执行之前检查每个字节码程序,由验证者执行安全预防措施,开发人员无法通过跳过编译器并直接在字节码中编写代码来绕过它们,每当将代码发布到区块链时,它都会直接执行。
前面提到的资产稀缺性是通过字节码验证器实现的,默认强制稀缺性,开发人员依靠语言的强大支持来确保无论攻击者试图做什么,他们的代码中的不变性都将保持不变。
为什么选择在SUI 上构建Defi?
上面提到的所有属性是关于Move 语言的,而不是Sui 本身的,接下来,一起来谈谈Sui 为什么适合部署Defi 协议,主要有三个原因:
1. 共识机制
2. 平行协议
3. 存储基金代币经济学
Sui 上的共识分为两种 —— 拥有的对象和共享的对象。
拥有的对象由单个地址拥有,包括简单的 txns,如 p2p token 传输、大规模铸造 NFT 等。
简单的 txns 使用拜占庭一致性广播,这是一种绕过共识的算法。
由于验证者不需要相互通信(在传统共识的情况下),该算法允许简单的交易使用非常少的计算资源。
共享对象(复杂交易)
Sui 上的共享对象是没有特定所有者的对象,任何人都可以读取或写入,场景主要包括复杂的 DeFi 交易,如 AMM、公开竞价的拍卖或接受任意交易的中央限价订单簿。
对于复杂的交易,Sui 使用 Narwhal-Bullshark 共识引擎。该机制有两个主要组成部分:Narwhal(Sui 的内存池)和 Bullshark(确保交易顺序)。
将 Narwhal 想象成一个管家,控制未决的共识交易,它本质上需要一堆待处理的交易,并将它们形成一个无领导的批次图,这些批次被标记为集合。图结构允许在每一轮中在系统中插入更多交易,证书证明每个集合在每一轮的数据可用性。
通过 Narwhal,交易被创建到一个有向无环图 (DAG) 中,可以把它想象成一个文件树,其中活动的顺序通过图形直观地呈现出来。
Bullshark 针对 Narwhal 提供的 DAG 结构进行了优化,专注于减少网络上验证者之间的通信开销。
最初的 Narwhal 和 Tusk(Bullshark 的前身)论文指出,当 Narwhal 和 Tusk 结合使用时,它们可以达到“160,000 tx/sec,延迟大约 3 秒”。
Yuga Labs 的 Otherside NFT 推出时是历史上规模最大的NFT mints,在Mint 的过程中,由于规模太庞大对以太坊的gas 需求远远超过链上任何一个时期,导致Etherscan 崩溃,这是以太坊网络的黑暗时刻。
Solana 上发生的情况更为糟糕,由于大量铸造 NFT 的需求造成了网络拥堵,甚至造成网络多次完全宕机。
通过Sui 的共识机制,Sui 验证者不会面临与以太坊或 Solana 相同的计算压力,像 NFT 大量铸造这样的交易与涉及 DeFi 活动的交易是分开的,它绕过了共识,因此为 DeFi 释放了验证节点和共识资源——为处理和部署 DeFi 交易提供了一个不那么拥挤但却稳定的环境。
平行协议
EVM 的主要限制之一是交易的顺序执行,一次执行一个交易,所有其他交易都被搁置,直到它完成执行,该模型允许潜在有趣的用例,但不可能实现扩展或高效执行。
并行执行识别独立交易,它可以同时执行它们,然后对相关交易进行排序以供执行,并行处理的概念很简单,挑战在于识别交易之间的依赖关系。Sui 利用 Move 强大的所有权类型和它以对象为中心的数据模型来明确识别交易之间的依赖关系,由于 Sui 上的对象代表资产并且可以共享,因此很容易通过检查交易是否使用相同的对象来识别依赖关系。
正如前面在共识机制中解释的那样,拜占庭一致性广播理论上允许 Sui 无上限地水平扩展以满足应用程序需求,同时保持极低的每笔交易运营成本。
这一设计突破消除了现有区块链中的一个关键瓶颈:需要就总有序交易列表达成全球共识。
存储基金代币经济学
区块链的强大之处在于它允许我们将数据写入其中并在以后读取的能力,挑战在于从写入数据到读取数据,都会产生经济成本。
在以太坊上,写入 1MB 的数据需要花费数万至数十万美元,验证者需要存储大量数据来运行网络,并且通常会将这些成本转嫁给最终用户,这是一个迫切需要解决的市场需求。
存储的问题是时机,经济学家称之为外部性,今天将数据写入存储的用户不会将其成本内部化,而未来的用户被迫为他们不拥有的过去存储付费。一个简单的类比是:
Alice 从一开始就使用 Sui Network,虽然链上存储的数据还不多,但她享受低 gas 费用。
Bob 在 Sui Network 成熟后开始使用,因为届时链上存储了大量数据,Bob 被迫支付高额 gas 费用。
Sui 的代币经济学旨在永远解决存储成本问题。当用户在 Sui 上进行交易时,他们需要预先支付计算和存储费用,存储费存入存储基金,用于调整分配给验证者和委托者的未来股权奖励的份额。
存储基金由过去的交易提供资金,并用作跨不同时期转移GAS费的工具,它包括一个删除选项,允许用户在删除以前存储的链上数据时获得回扣,这会激励用户考虑将不必要的数据从链上删除。
这种用户通过按期付费结构为存储付费的租赁模式,引入了一种基于市场的机制,当链上数据过载的时候能够让用户主动释放存储,DeFi 协议可以删除过去已经结束的拍卖,NFT 协议可以删除不再存在的 NFT 元数据等,能有效帮助部署在SUI 上的协议降低成本。
总的来说,面向资产的编程设计使得 Move 语言非常适合部署 DeFi 应用程序,访问控制、形式化验证等技术逻辑为去中心化资产的安全提供多重保障。
Sui Move 不仅利用了 Move 的所有权/面向资产的编程设计,其基于对象的数据模型也起到了锦上添花的作用。通过设计,Sui 验证者可以有效地无限扩展网络吞吐量,以满足构建者和创作者的需求,Sui 的可扩展性不仅限于交易处理,也使存储变得低成本和水平可扩展的。