# 海洋发布细节与参考实现 **Published by:** [XF0707](https://paragraph.com/@xf0707/) **Published on:** 2022-02-10 **URL:** https://paragraph.com/@xf0707/KRYCBBJnISo3LqSb7L5r ## Content 2020 年 10 月,Shell Protocol 推出了 v1,这是一种从头开始构建的稳定币 AMM。 自推出以来,Shell v1 一直是 TVL 排名前 14 位的 DEX,并且已经在主网上运行了 16 个月,没有出现安全漏洞。 Shell v2 即将到来,它不仅仅是一个 DEX。 这是一种新范式,它重新构想了如何构建和组合金融原语,如 AMM、借贷池或算法稳定币。 这一成就的关键是 Ocean,这是一种新的共享会计系统,它降低了代码复杂性,并且多步交易的 gas 成本降低了四倍。 要了解这场革命以及使之成为可能的原因,我们首先需要了解一下 DeFi 的雄心壮志及其当前的局限性。可组合的乌托邦金融原语是 DeFi 的基石。 通常被描述为“金钱乐高积木”,这些简单的组件可以连接在一起(“组合”)成复杂的系统和交易。 可组合性可能是 DeFi 最重要的一个特征,它为金融创新打开了大门。 例如,考虑这个交易:将 ETH 存入铸造 DAI,然后将 DAI 换成 USDC,然后将其用作抵押品以借入更多的 ETH。 良好的可组合性使用户可以轻松地设计和进行这样的交易,释放创造性和意想不到的用例。 至少,这是承诺。 实际上,组合基元是繁重的。 通常,您必须一次与一个原语进行交互,等待每个后续交易被挖掘。 这不仅不方便且消耗大量 gas,还意味着您无法进行原子交易(在套利交易等某些用例中是必需的)。 一些小众项目提供特殊用途的智能合约,帮助用户组成某些类型的原语。 例如,1inch 等 DEX 聚合器允许用户通过多个 AMM 拆分掉期以获得最佳利率,而 InstaDapp 允许用户将 AMM 与借贷池组合以获得杠杆作用。 像这样的解决方案需要大量工作。 每当一个大而复杂的原语必须连接到另一个大而复杂的原语时,他们依靠大型开发团队不断构建新的“适配器”智能合约——更不用说连接第三个、第四个或第五个原语了。 这种策略有点像电缆适配器套件:一个用于 USB 的适配器,一个用于 HDMI,一个用于 Lightning,等等。一个纠结的适配器网络总比没有好,但与 USB-C 等通用标准相比,它并不理想。 为什么这是 DeFi 的现状,我们如何改善它?海洋的关键见解见解 #1:EVM 代币标准被打破 在引擎盖下,每个代币都只是账本上的一个数字。 当爱丽丝向鲍勃“发送”一个代币时,该代币只是从爱丽丝的余额中减去并添加到鲍勃的余额中。 然而,大多数代币分类账目前存在于专用的智能合约中。 这就像为每个令牌都有一个单独的数据库! 直观地说,为所有代币拥有一个数据库、一个分类帐会简单得多。 此外,考虑到用户每次调用新的智能合约时,他们都必须支付 2,600 gas 的固定成本。 这加起来了! 如果所有代币都存在于同一个智能合约中,这不仅会大大简化代币架构,还会显着降低 gas 成本。 见解 #2:所有基元都使用相同的会计语言 从代币账本的角度来看,所有 DeFi 原语都遵循相同的模式:它们将一个代币作为输入,并将另一个代币作为输出。 例如,在将 DAI 换成 USDC 时,AMM 原语会将 DAI 作为输入并返回 USDC 作为输出。 当质押抵押品以铸造算法稳定币时,原语将抵押品作为输入并铸造新的稳定币作为输出。 从代币账本的角度来看,记账逻辑总是一样的。 输入令牌被添加到原语的余额中并从用户的余额中减去,反之亦然输出令牌。 账本可以将原始数据视为一个黑匣子,而不关心里面发生的事情。 当 DeFi 协议可以共享一个标准化的记账框架时,为什么要各自部署自己的记账逻辑? 换句话说——为什么我们没有一个等效于 DeFi 的“USB-C”? 见解#3:不需要将临时更新保存到区块链 在组合多个图元时,不可避免地会添加和减去大量输入和输出数字。 然而,这些余额更新中的许多可能是暂时的,这意味着它们只是在交易结束时取消。 例如,考虑从 DAI 到 USDC,然后从 USDC 到 USDT 的两步交换。 在最终交换结束时,您不会留下任何 USDC,因此您在 USDC 账本上的余额应保持为零。 以太坊虚拟机 (EVM) 就像一台具有相当于硬盘驱动器的计算机,称为“存储”。 当智能合约将数据保存到存储中时,它的成本很高,因为它被复制到世界各地的数千台计算机中以 永远 。 一次“存储写入”的成本可能在 5,000 到 20,000 之间。 值得庆幸的是,EVM 还具有相当于 RAM 的功能,称为“内存”。 将数据保存到内存要便宜得多,因为在事务结束时,内存中的数据会被擦除。 将数据写入内存只需 3 个 gas! 通过在内存而不是存储中跟踪临时余额更新,我们将节省大量气体。海洋如何运作Ocean 将这三种见解综合到一个智能合约中,充当用户、代币和原语之间的管道(参见图 1)。 特别是海洋:所有代币都有一个 ERC-1155 分类帐对所有原语使用标准化的会计框架在内存而不是存储中跟踪中间余额更新作为账本,Ocean 可以支持所有主要的代币类型:ERC-20、ERC-721 和 ERC-1155。 旧代币可以包装到 Ocean 的账本中,新代币可以在账本上本地创建。 作为一个会计系统,Ocean 可以支持任何原始类型:AMM、借贷池、算法稳定币、NFT 市场,甚至还有待发明的原始类型。 使用 Ocean 框架构建的基元(即 Ocean-native 基元)将比旧的 DeFi 基元简单得多,因为它们只需要计算输入和输出令牌; 所有会计逻辑都外包给Ocean。[图 1:Ocean 的完整架构图 要组合原语,用户只需将原语交互列表发送到 Ocean。 对于每次交互,用户指定: 目标原语 输入令牌 输出令牌 输入金额 Ocean 查询每个基元,要求它计算输出量。 然后,Ocean 直接在其分类帐上更新用户和原语的余额,无论是在内存中还是在适当的存储中。 如果用户想要包装或解开外部令牌,他们可以使用相同的框架来完成。 海洋使用的气体减少了 3 倍 在编写基元时,Ocean 可节省大量气体。 事实上,组成的基元越多,海洋节省的气体就越多。 从图 2 中可以看出,在 Ocean 上与原语交互的边际成本是 27,000 气体。 换句话说,如果您已经在与一些原语进行交互,那么再添加一个只需要 27,000 个 gas。 这比一次与一个基元交互低 4 倍多。 由于 Ocean 的边际成本非常低,经过 10 次原始交互后,在 Ocean 上进行交易的总成本比其他选择低 3 倍(见图 3)。图 2:有海洋和没有海洋的边际天然气成本比较[图 3:有海洋和没有海洋的总天然气成本比较 海洋的优势 除了节省天然气之外,Ocean 还有几个优势。 一方面,开发团队以前必须编写自定义合约才能以原子方式组合 DeFi 原语。 现在任何 Web3 开发人员都可以做到这一点——不需要 Solidity! 但海洋最大的受益者可能是原始人本身。 加入生态系统的原语越多,可组合性的选择就越多,每个原语的好处就越多。 这为整个生态系统创造了积极的网络效应。 发展生态系统 没有资本高效的流动资金池,DeFi 就无法蓬勃发展。 因此,Ocean 上的第一个原语将是由 Proteus 我们的 AMM 引擎 除此之外,我们将通过吸引资本和早期建设者到海洋来实施代币激励以启动活动。 我们将从 Proteus 和 Ocean 的安全发射开始。 TVL 将在此阶段设置上限。 当我们努力克服任何缺陷时,上限将逐渐被解除。 最终,我们将部署一个旨在加速生态系统发展的治理和代币经济学模块。发射方法这是我们在 Shell v2 发布之前发布的两部分白皮书的第二部分。 第一部分介绍了 Proteus AMM 引擎,您可以在 此处 。 随着 Proteus 和 Ocean 都在公共领域,我们的风帆已经展开,为我们即将到来的安全发射做好了准备。 请继续关注我们的 Twitter 、 Discord 、 Telegram 和 Medium ,以了解 Shell v2 临近时的最新进展。 您还可以访问我们的 新网站 ,其中将发布博客文章和公告以及社区活动和有用的指南。 如果您今年 2 月在 ETHDenver,请于 2017 年 2 月 17 日 壳牌社交 星期四 即使您不能成功,我们也永远不会难找,我们保证很快会有更多重大新闻™。 ## Publication Information - [XF0707](https://paragraph.com/@xf0707/): Publication homepage - [All Posts](https://paragraph.com/@xf0707/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@xf0707): Subscribe to updates - [Twitter](https://twitter.com/XF108662631): Follow on Twitter