为何在Move/Sui建设DeFi

这篇深度探索希望向大家阐述Move语言和Sui Move语言的一些核心概念,从而解释为何我们认为Sui是部属DeFi的最佳选择。我们希望篇文章能提供开发人员或其他项目方一些洞见。

在我们正式谈论Sui Move之前,先来了解原始的Diem-style Move语言。

第一部分:为何在Move上建设DeFi?

Move语言是为DeFi而生

Move最初是由Facebook为Diem区块链开发的,旨在打造一个全球金融基础设施,以支持数十亿用户。

Move设计初衷是成为一种用于操作数字资产的语言。它必须能够以精确、易懂和可验证的方式来阐述Libra货币和治理规则。

长远来看,Move必须可以将各种资产及对应的商业逻辑代码化,从而建立金融基础设施。

Move的解决方案是「头等资源」 — — 将资产视为程式语言界的头等公民。用户可以通过资源的四种不同能力来轻松定义和操作数字资产:

  1. 复制
  2. 索引
  3. 丢弃
  4. 储存

为了打造强大且可拓展的DeFi生态系统,我们需要从程式语言的三个方面来提供支持:

  1. 数字资产的稀缺性
  2. 强制存取控制
  3. 资产安全性

1.数字资产的稀缺性

稀缺性是有价值的实物资产的重要属性,但数字资产本身没有内建稀缺性的特质。因此,我们必须通过程式来强制为数字资产赋予稀缺性。

也就是说,资产供给量不应是无限的。程式设计上,必须可以防止人们复制资产,并且应该要把创建新资产设为一种特权。

为实现稀缺性,Move规定资产永远不能被复制或丢弃,只能在不同的储存场所之间移动。(Move的名称由此而来)

Move如何实现这一点呢?
Move有一个类型系统(type system),由字节代码验证器(bytecode verifier)来强制执行。当开发人员将Move字节代码(bytecode)发布到区块链时,该系统将可以用来防范资产价值整个失控。

重复使用— — 如果我编写了一段以硬币(coin)作为某函数的输入项(input),然后再编写另一段代码,试图复制该硬币(译:从而影响该函数的输出结果),那么类型系统将会纠错,并回传错误(译:让开发者知道该操作不可被执行)。

双重支付— — 如果我拥有一枚硬币,并尝试将其传递给某个接受硬币作为付款的函数,它会防止同一枚硬币被重复传递。

销毁— — 如果我有一些以硬币作为输入项的函数,那么我不应该有能力去重新指定该硬币的存量,因为凭空让硬币的存量减少代表有硬币被丢弃。

上述设定都是为了让数字资产的特性类似于实体资产。使用Move,开发人员可以通过上述设计来让数字资产满足资产该有的特性。

2.强制存取控制

在Solidity中,数据集中储存在合约里。当合约中存在漏洞时,一旦骇客获得合约权限,所有用户数据都会受到攻击。

Move 开发团队认为数据应该储存在拥有者的账户中,而不是储存在合约中。在Move 中,有模组的概念,模组可以是一个程式库,也可以是一个允许创建、储存或转移资产的程序。类似于以太坊中的合约,但更像是一间采用物件导向程式语言(object-oriented programming)的银行。

Move 限定只有公共模组可以被其他模组调动。同样,结构中的栏位只能在其模组内访问和更改。每个资源都储存在由所有者账户控制的模组中。

该功能让所有权资讯和数字资产的特殊权限得以在智能合约下被维护。即使某个数字资产被发送到智能合约,该资产的所有权也不会改变。

更直白的例子是,如果骇客获得了Move 智能合约的访问权限,他/她也无法将资产提取到自己的钱包中。

3.资产安全

DeFi 的安全风险越来越令人担忧,我们屡屡听到造成超过1 亿美元损失的骇客攻击。据SlowMist 统计,2022 年上半年就发生了约100 起DeFi 安全事件,损失超过16.3 亿美元,其中项目缺陷和合约漏洞是常见原因。

作为一种专注于金融场景的语言,Move 从Solidity 可能存在的安全漏洞中获得了经验教训,并高度重视「智能合约安全和正确性」。

字节码验证器(bytecode verifier)
Move 的字节码验证器可以在执行每个字节码程序之前检查它们,防止许多常见的漏洞。安全预防措施由验证器强制执行,开发者不能绕过编译器,直接使用字节码编写代码。它在代码被发布到区块链时直接强制执行。

先前提到的资产稀缺性功能是通过字节码验证器实现的,它可以预设强制执行稀缺性。开发者依赖语言的强大支持,确保代码中的不变性,无论攻击者尝试什么都不会改变其代码特性。

第二部分:为何在Sui上建设DeFi?

我们已经解释完为何我们认为Move对DeFi而言是最佳的开发语言,接下来让我们谈谈为什么我们优先选择在Sui上部属我们的项目。

这个决策背后的三大支柱是:

  1. 共识机制— — 释放验证者和共识资源,让区块链更有余裕处理DeFi交易。
  2. 平行协议— — 没有上限的横向可扩展性,以满足DeFi的需求。
  3. 「存储基金」的代币经济学设计— — 为DeFi应用提供更具资本效率的模型,以将数据储存在链上。

1.共识机制

Sui的共识机制和处理简单/复合交易(simple/complex transactions)的能力被认为是其最有价值的创新,也是提供更稳定的DeFi交易环境的关键。Sui的共识取决于为两种物件(object)设定— — 自有物件(owned object)和共享物件(shared object)。

自有物件(owned object)对应简单交易(simple transactions)
在Sui上,自有物件是由单个地址拥有的,例如代币或NFT。这种场景包括像P2P代币转移、大量铸造NFT、投票、在dApp上发送消息等简单交易。

对于简单交易,Sui使用了一种称为拜占庭一致广播(Byzantine Consistent Broadcast)的演算法,这是一种比传统共识方法更简单的演算法,可以消除过多的开销。Sui指出,它「针对单写物件(single-writer object)进行优化,允许放弃共识的这种设计以处理简单交易」。

因为验证者不需要像传统共识一样相互沟通,所以这种演算法让简单交易只需消耗比较少的运算资源。

共享物件(shared objects)对应复合交易(complex transactions)
在Sui 上,共享物件是没有特定所有者的物件,任何人都可以读取或写入。这些场景主要包括像自动化造市(AMMs)、开放大众竞标的拍卖或接受任意交易的中央限价单簿(central limit orderbook, CLOB) 等复杂的DeFi 交易。

在复杂交易方面,Sui采用了Narwhal-Bullshark共识引擎。这个机制有两个主要组件:Narwhal(Sui的记忆体池)和Bullshark(用来确保交易的排序)。

将Narwhal比喻成一个管家,它会将待处理的交易打包成一个无人领导的图(leaderless graph)并标记为「集(collection)」。整个图形结构允许系统在每一轮(round)中插入交易。最后会生成证书(certificates),用以证明各轮次每个「集」当中的资料的可用性。

透过Narwhal,交易被建立成一个有向无环图(directed acyclic graph, DAG),就像一个档案树,其中活动的顺序以图形方式呈现。

Bullshark优化了Narwhal提供的DAG结构,着重于减少网络验证者之间的通讯开销。

原始的Narwhal和Tusk(Bullshark的前身)论文指出,当Narwhal和Tusk一起使用时,它们可以实现「每秒160,000笔交易,延迟约3秒钟」的效果。

当Yuga Labs 的Otherside NFT 推出时,它曾一度使以太坊网络出现问题。它是史上最大的NFT 发行之一,数量是其他NFT项目的好几倍。根据用于进行此次发行的gas 数据,需求远远超出了所有人的预期。这次发行的规模非常大,最终导致Etherscan 网站无法正常运行。

在Solana 上发生过更糟糕的情况,由于大量NFT 的创建导致网络断线好几次。

透过这种共识机制,Sui 的验证者不会像以太坊或Solana 那样面临运算压力。像NFT 大量铸造等交易被分离出来,把它们与DeFi 活动相关的交易区隔开来,因此不需要共识(译:也就是不需要全局排序(global ordering)),释放了验证者和共识资源,为DeFi 提供了一个不那么拥挤、稳定的环境,以处理和部署DeFi 交易。

2.平行协议

EVM 的主要限制之一是交易必须依序执行(sequential execution) — — 一次只能执行一笔交易,其他交易必须等待其完成执行。这个模型可能有潜在的有趣用途,但缺乏可扩展性和效率。

平行执行(parallel execution)指的是识别独立的交易,并同时执行它们。然后,按照执行顺序来对相依交易(dependent transactions)进行排序并将其序列化(sequentialize)。平行处理的概念很简单,但其困难点通常在于识别交易之间的相依关系。

Sui 利用Move 的强大所有权类型和其自身的物件中心数据模型,明确识别交易之间的相依关系。由于Sui 上的物件代表可共享的资产,因此可以通过检查交易是否使用相同的物件来识别相依关系。

正如前面在共识机制段落中所解释的,拜占庭一致广播理论上允许Sui水平扩展以满足应用需求,同时保持每笔交易极低的运营成本。

这种设计突破了现有区块链的一个关键瓶颈— — 它消除了在一系列交易的总排序列表(total-ordered list of transactions)上达成全局共识的需求。

3.存储基金的代币经济学设计

在区块链上,写入资料和读取资料之间需要承担财务成本,这是一个具有挑战性的问题。以以太坊为例,写入1MB的数据成本可能高达数万至数十万美元。区块链存储的市场机制还没有成熟的解决方案,所以它急需一种可行的商业模式。验证者需要储存大量数据才能运营区块链网络,通常这些成本将会被转嫁给终端用户。

存储的问题在于时间,这是经济学家所称的外部性(externality)。在其他的一些区块链上,旧用户没有将存储成本内部化(internalize),导致新用户间接要为旧用户先前存放的数据买单。因此,Sui提出了存储基金代币经济模型来解决这一问题。

举例而言,
Alice从Sui网络刚开始使用时,链上存储的数据量不大,她可以享受较低的gas费用。
而Bob等到Sui网络成熟后才开始使用,由于此时链上存储的数据量较大,他被迫支付较高的gas费用。

Sui的代币经济模型旨在永久解决存储成本的问题。当用户在Sui上进行交易时,他们要提前支付计算和存储的费用。存储费用会存入一个存储基金,用于调整未来奖励给予验证者和委托人的份额。

存储基金是由过去的交易所资助的,并作为在不同时期转移gas费用的工具。它包括删除的这个选项— — 当用户删除先前储存的链上数据时,用户可以获得退款。这鼓励用户不停思考自己在链上储存的数据是否有必要继续储存。

租赁模型通过按期支付结构来让用户支付存储费用,这种设计有利于那些打算在Sui上部署的项目。它引入了一个市场机制,让用户依照经济效益去决定是否释放存储空间。具体来说,DeFi协议可以删除过去已经结束的拍卖纪录,NFT协议可以删除不再使用的NFT元数据等。

总而言之

资产导向的程式设计使得Move语言很自然地成为部署DeFi项目的好选择。技术逻辑方面的各种设计,如存取控制、形式验证等,为去中心化资产的安全提供了多重保障。

资产和所有权是智能合约的基础和DeFi的关键支柱,但现有的其他程式语言没有办法很好地描绘它们。Move是第一种解决这个问题的智能合约语言。

Sui Move不仅利用了Move的所有权/资产导向程式设计,其基于物件的资料模型设定也为其锦上添花。根据设计,Sui验证者可以有效地无限扩展网络吞吐量,以满足开发者的需求。Sui的可扩展性不仅限于交易处理。存储也是低成本和水平可扩展的。

本文链接地址:https://www.wwsww.cn/DeFi/17916.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。