漩涡池建造者项目进行了两周,我们已经看到了大量的海底活动!🐳
(如果你是我们社区的新人,我们将向在我们的集中流动性池Whirlpools上开发应用程序的开发者发放高达20万ORCA的资助。要了解最新情况,请点击这里查看!)
到目前为止,我们收到了大量的申请,并展示了创新的想法,这让我们很高兴。在这篇文章中,我们将与我们的联合创始人Yutaro以问答的形式探索Whirlpools智能合约和未来的计划!
在这次采访中,我们会详细介绍,所以如果你还不熟悉集中流动性,我们建议你在这里阅读我们的介绍帖子。
说到这里,让我们抛开……
Yutaro,首先:我们为什么要基于漩涡池开发?
我们相信,漩涡池的基本结构将成为在Solana生态系统中创造流动性的主要方式:它将成为Solana中占主导地位的DEX。这是我们在过去6个月里一直在开发的东西,我们在3月份发布了测试版。
与标准(或“恒定积产品”)流动性池相比,漩涡池有什么优势?
简而言之,漩涡池给用户提供了更好的交易体验:既针对大量流动性的蓝筹代币(如SOL和USDC),也针对长尾代币。
它在交易像SOL和USDC这样的蓝筹代币时为用户提供更好的体验的原因是,流动性提供者对他们提供多少流动性有更多的控制,以及当交易员想要交易该交易对时,他们想要提供什么样的滑点。最重要的是这对流动性提供者来说更有效率。所以总的来说,他们可以分配更少的资金来为用户提供更好的体验。
漩涡池是Solana生态系统的一个伟大的构建模块,它是多么的强大,没有单点故障,实际上几乎不需要维护,让我们说,为了确保它继续运行。更具体地说,它不需要管理键来确保在极端流动性事件中需要调整参数。
漩涡池是一个fork还是一个现有智能合约的修改?
所有东西都是从零开始构建的,甚至包括数学库,尽管它的灵感来自Uniswap v3引入的想法。如果你熟悉Uniswap v3,它会让你对它的工作原理有所了解,尽管基于我们的设计理念和Solana虚拟机的独特约束有一些关键的区别。
为什么一切都要从零开始?原来的数学图书馆怎么了?
在漩涡池智能合约中,我们需要做256位的计算。Rust本身或在其标准库中只支持128位的数学计算,实际上有一个256位的库是为用Rust编写的以太坊客户端编写的,叫做Parity。由于Parity已经是量产状态,所以他们编写的库本身是安全的。很多其他项目都在使用它,但我们在使用时发现它非常昂贵。所以,做长乘法或长除法,通常需要花费10,000个计算单元来做一次乘法或除法。现在,根据Solana版本的不同,每条指令或每笔交易的计算单元最多可达20万个。基本上,在用完之前你只能做10次 tick traversals ,但你通常需要分配一些预算用于其他事情。
所以,我们不能做很多我们想做的算术。我们研究了一下发现很多乘法和除法并没有优化。这对Parity来说可能并不重要,因为它基本上被编译成可以直接在计算机上运行的东西。而对于我们来说,它需要在Solana虚拟机上运行。我们自己测试重新实现它,我们发现当我们自己重新实现这个库时,成本要低5倍,效率要高5倍。这对我们来说是个有趣的弯路。256位库实际上被很多人使用,包括Solana实验室的人写的Solana程序库,所以我们肯定会开源,这样任何人都可以使用。
什么是PDA,“以PDA为中心的设计”如何使漩涡池更高效?
PDA是程序衍生地址,在某种意义上是Solana独有的。Solana中的所有数据都存储为一个帐户,帐户有一个与之关联的地址,这个地址本质上是一个指向帐户位置的指针。为帐户生成这个地址的一种方法是随机生成一个私钥,派生与之相关联的公钥,然后使用该公钥作为地址。另一种方法是使用PDA,它允许从创建帐户的程序的地址派生地址,然后种子值,这些值通常在程序本身中定义。
这里的关键是,它允许帐户(在Solana中排序的数据)从程序本身包含的值或程序本身定义的值派生。我们可以将这些用作智能合约结构中非常漂亮和干净的属性。
通常,我们假设有一个SOL/USDC池。在SOL/USDC池中,我们将有一个特定的帐户。简单的方法是由某个随机私钥生成帐户,然后丢弃该私钥,然后得到这个随机帐户。
有了漩涡池,我们可以从程序中以一种确定性的方式推导出它。所以我们可以说SOL/USDC池地址将从漩涡池程序派生,包括SOL和USDC的mint地址。这允许某人在漩涡池中确定任意一对的地址,而不需要知道除了漩涡池程序地址和配对的mint地址之外的任何东西。
这对于本质上没有权限的池特别有用,因为它强制了这种不变量,即对于任何给定的交易对,只能有一个池。你真的不需要这个集中存储每个已创建的池,或者你真的不需要扫描由程序创建的帐户。您真正需要的是代币的mint地址。你想交易,然后你得到池子地址,你可以在那里交换。
为什么要开源漩涡池智能合约?
开放源代码允许开发人员、社区成员和其他所有人首先自己审查程序并理解它,以便在其上进行构建。
我们认为漩涡池是最基本的组成部分。有很多应用程序可以在它的基础上构建,而开源是实现这一目标的第一步。我们很幸运地得到了Kudelski和Neodyme来审核我们的智能合同,所以我们很幸运地对开源合约感到满意。
请告诉我们一些关于开源SDK的事情。
好啊,我也很高兴能分享这些。
我们很幸运拥有一些出色的工程师,但我们早期的一名工程师的第一个任务便是为我们最初的AMM创造一个typescript SDK。 他把它做得很出色,很高兴看到人们对它有多喜爱,有多容易使用的一致反馈。 我们也看到了它可以给我们带来的价值,让那些对使用AMM感兴趣的人更容易使用它。 我们基本上已经加倍完成了:我们基本上包装了一个重构的漩涡池SDK和大量的文档方面,它是如何工作的,因为与我们的旧池相比,漩涡池内部更复杂。
我们的另一个工程师,他在处理交易确认逻辑,我们已经看到了这些网络拥塞问题。他开始深入调查,发现Solana SDK发送和确认交易的方式存在一些已知的问题。为此他做了一系列的改变,这非常有用。我们看到应用程序的响应性在使用它的过程中发生了巨大的变化。他还添加了一些其他的东西,比如让它在同一时间签署和发送多个交易更加有效。每个人的网络请求都有很多低效的地方。
这些东西我们也包括在我们的SDK中,所以它们不只是针对Orca:它们也是Solana生态系统中任何人都可以使用的一般改进。
在接下来的几个月里,你希望看到在漩涡池的上面建造什么?
也许我将从最可执行的想法开始,然后,也许我们可以花一点时间重复或一些更不切实际的想法。最基本的一个本质上是SOL/mSOL池和SOL/stSOL池的自动化策略。这些是Marinade和Lido的质押流动性代币。
本质上,随着时间的推移mSOL的价值应该始终以一种相当可预测的方式相对于SOL的价值增加。正因为如此,如果你在Whirlpools中提供流动性,随着时间的推移,你会得到越来越多的SOL,因为这个交易对的价值越低质押的SOL就越少。
你能做的是,建立一个过程是可能的,这样你就可以得到越来越多的纯SOL,你可以质押在Marinade或者Lido去获得流动性代币,然后把它放回池中。你可以用一种自动的方式,你总是在最小的范围内提供流动性,以最大化你赚取的费用。这似乎是一个相对简单的想法。它肯定会比目前的方法更好,目前的方法要么是在更大范围内提供流动性,要么是手动进行转换。
另一个我认为很有趣的潜在方案是,我们拿一个借贷协议,以Solend为例。当您提供USDC或USDT时,您将获得一些收益,因为您将代币借出去。作为提供USDC或USDT的交换,您将得到这个被称为C的代币。它本质上只是你提供代币作为抵押品的一个代币,你将可以持续赚取收益。
有一件可能的事情是,除了USDC/USDT漩涡池,你可以创建一个cUSDC/cUSDT漩涡池。任何想要交易USDC和USDT的人都可以使用这个池,因为您可以自动接收任何交易USDC的人,将其转换为cUSDC,将其放入池中,取回cUSDT,并在一笔交易中将其拆分成常规USDT。而对于流动性提供者而言,他们将通过出借代币获得收益同时还能获得交易费用。
为什么要启动建设者计划?
我们之前说过,我们认为漩涡池将成为Solana生态系统中的关键DEX。这也是一个相当灵活的结构,其他人也有很多机会在此基础上构建自己的想法。因此,我们将有一个建造者计划,将鼓励和支持任何想要在漩涡池之上建造的人。为此,我们计划有一定比例的Orca供应来支持它,当然,我们作为创始人和整个团队将帮助支持任何想要建造它的人。我们也可以提供反馈。我想我一定会提出越来越多的想法,关于什么可以建设。是啊,我真的很期待看到结果。
对于有兴趣申请的新晋建设者,你有什么建议吗?
我认为第一件事就是请到我们的Discord上聊一聊——我们非常重视对开发者的支持。我们会关注文档等内容,但直接与我们交谈是了解产品和你可能存在的任何问题的好方法。
我想也许就产品创意而言,一种思考方式是,“有没有什么东西可以建立起来,使可持续的收益更有效地产生?”
就像我之前提出的想法:他们有一个元素,使它更容易产生已经存在的收益,但本质上只是让它自动化。 我认为有很多事情可以做,尤其是在Solana,因为交易更便宜那里的设计空间更大。 我很期待看到人们能想出什么样的点子。
谢谢你 Yutaro!
我们希望你喜欢我们的建造者项目。
如果您想在我们的建造者项目申请拨款,或只是有兴趣了解更多,请查看我们的帖子。 一起快乐地开发! 🐳
这篇文章改编自最近一集的OrcaPod。