×

一文了解SudoSwap的NFT AMM协议

admin admin 发表于2024-11-12 08:29:41 浏览38 评论0

抢沙发发表评论

SudoSwap是一家NFT交易所,之前以点对点、无费用的资产交换而闻名,最近推出了它的NFT AMM(自动做市商)。此举产生了大量的炒作,但也带来了一些困惑,并导致人们问这样的问题:"那么为什么这不是另一个NFT市场?" 本文旨在帮助澄清一些这种困惑。


在我们开始讨论之前,关于SudoSwap的AMM模式,你应该关注:


1、买入/出售的即时流动性


2、完全在链上(没有中心化订单)


3、有时定价更便宜


只有0.5%的市场费用


没有版税费用(毫不奇怪,这一点一直有点争议)


聚合商可以利用SudoSwap的定价,即使是不熟悉SudoSwap的用户也能在有机会时获得更好的定价


4、日益增长的吸引力


你可能已经在推特上听说过了


一些亮眼的交易量:Based Ghouls 730个ETH,Webaverse 755个ETH,CloneX 245个ETH


根据Dune的数据,总交易量超过5k+ ETH


5、能够赚取交易费


6、能够自动DCA(美元成本平均法:指的是定时定额投资法,是一种程式化投资法)买入/卖出NFT系列


本文分4个部分介绍SudoSwap的NFT AMM:


NFT交易所:订单簿 vs AMM


SudoSwap AMM架构


开发者须知


如何看待SudoSwap


NFT交易所:订单簿 vs AMM

你过去可能已经习惯的大多数NFT市场,如OpenSea和LooksRare,依靠链下订单簿来促进gas高效交易。为了帮助你理解这意味着什么,让我们看一个例子:


你想以100 ETH的价格卖出一个Bored Ape(BAYC)。你去一个像OpenSea这样的交易所上架出售。


OpenSea让你用你的钱包签署一个信息,表示你想以100 ETH的价格出售你的BAYC。显然,你的订单可以变得更复杂,但我们这个例子还是保持简单明了,不详述太多细节。


你签署的订单被存储在链下订单簿中,由该交易所托管在数据库中,并显示在他们的界面上(并通过他们的API公开),供潜在买家浏览。


你的订单就在那里,直到你的BAYC售出或者你决定取消该订单:


购买:有人喜欢你的BAYC,决定花100个ETH购买它,所以他们接受了你的订单(从该交易所的链下订单簿获取),并提交了一笔交易来填补它。他们得到了NFT,你得到了100个ETH(减去交易所费用+版税费用)。


取消:你必须提交一笔交易来取消订单。由于你的订单存储在链下订单簿中,任何人都可以提交交易来填补它,除非你告诉该交易所的智能合约 "嘿,我想将这个订单标记为无效;如果有人试图填补它,不要让他们那么做"。


这种模式有几个优点,包括用户不需要支付gas费用(在最初批准交易所合约来移动他们的NFT后)来上价或竞价NFT。只有执行才需支付gas费用。缺点是,交易所在链下托管整个订单簿,这可能会使获得所有订单变得更加困难——一些开发者在获得OpenSea API密钥时遇到的问题就证明了这一点。


另一个缺点是,所有的定价必须是 "主动的";你不能指定诸如 "如果我的第一个NFT以1 ETH的价格卖出,试着以1.3 ETH的价格卖出下一个"这样的事情。在基于订单簿的交易所,你的列表需要手动调整(除非你足够信任该交易所,把你的私钥给他们,让他们为你取消/签署新的订单——鉴于BAYC持有者与他们的私钥的关系,也许交易所应该为他们研究这个问题)。


SudoSwap采取了完全不同的路线,使用链上AMM模式而不是链下订单簿。让我们举一个和上面相同的例子,以100 ETH的价格出售一个BAYC,使用AMM而不是订单簿:


你想通过AMM以100 ETH的价格卖出一个BAYC。你选择了SudoSwap。


SudoSwap让你将NFT存入一个 "池"智能合约,并指定你想卖的价格。


别人可以查询到你的池合约来获得该NFT的价格。


你的NFT就放在那里,直到它被买下或者你决定取消:


买入:有人来到SudoSwap,想要购买您的BAYC。他们提交交易来购买它,将其从池子中移除,并将100个ETH交给你(减去0.5%的交易费用,但没有版权费)。


取消:你从池子中撤回你的NFT。


虽然AMM模式需要你支付gas费用来上架你的NFT,但都是在链上的,可公开查询的。但总的来说,到目前为止,这两种模式似乎很相似。然而,基于AMM的模式允许你做一些有趣的事情,而使用订单簿则不允许。为了理解这一点,让我们看看SudoSwap的真正运作方式。


SudoSwap架构

如果你熟悉Uniswap V2,SudoSwap的NFT AMM可以被大致认为是 "Uniswap V2,但同一代币有多个自定义流动性池",其中代币=NFT系列,自定义流动性池=可选择的不同定价曲线和现货价格。鉴于NFT与ERC20的不可替代非同质化性质,这些差异是有道理的。


如果你想不通,我试着以更简单的方式来解释,我将专注于一个NFT系列在SudoSwap上的运作方式。我将使用Based Ghouls作为例子。当你在SudoSwap上调出Based Ghouls的页面时,你会看到以下内容:




上面的4个数据是什么意思?“地板价"是你能买到的最便宜的价格(0.226 ETH)。“最佳报价"是0.219,这意味着在SudoSwap上有可能以0.219 ETH的价格立即卖出一个Based Ghoul(这如何运作随后将解释)。"Offer TVL "意味着SudoSwap流动性池中有价值36.23 ETH的Based Ghouls(同样,随后将解释),而 "交易量"只是指到目前为止Based Ghouls在SudoSwap上的ETH交易量。


现在,当你看到地板价NFT时,AMM模式和订单簿模式之间的区别开始变得明显。在写这篇文章的时候,有21个Based Ghouls以0.226 ETH上市。这与OpenSea或LooksRare非常不同,在那里你通常会看到类似1-3项资产以地板价上市。


这种定价的原因是,对于在SudoSwap上交易的NFT,买入和出售是通过流动性池完成的。这些地板价资产大部分可能都在同一个流动性池子里,定价会随着NFT的买入而发生动态变化(目前你不可能进去以每个0.226的价格买下所有21个地板价NFT)。


同样,通过一个例子,可以最好地展示整个“池”情况。SudoSwap上有三种类型的流动性池——"代币"、"NFT "和 "交易"——让我们从 "NFT"流动性池开始。这种类型的交易对可以用来出售一个系列中的一个或多个NFT。我没有Based Ghoul NFT,但我有一个Tubby Cat,所以当我试图为我的Tubby Cat创建一个NFT销售池时,我会看到什么。




我设置了我的流动性池,以10 ETH的价格出售我的第一个NFT("起始价格"=10 ETH),并且,每出售一次,下一个NFT的价格将增加0.1 ETH("Delta"=0.1 ETH")。这意味着,如果有人买了我的第一个Tubby Cat NFT,他们会付给我10个ETH。如果他们还想要第二个,他们将为那个支付10.1 ETH——就像我前面提到的,价格随着NFT的出售而更新。你也可以将你的delta设为"-0.5"(以9.5 ETH的价格出售你的第二个NFT)或其他。这取决于你如何设置你的池子。


每个NFT系列可以(也会)有多个池子。当你考虑到不同的用户可能希望根据他们的NFT持有量获得不同的定价和delta时,这是合理的。


现在,所有这些可能已经给你留下了一些问题。下面是一些Q&A,应该能帮助你了解情况。


1、如果我只想以相同的价格出售我的NFT怎么办?


将你的delta设置为0,你的NFT就都可以以你的流动性池的起始价格出售。


2、如果我拥有一个稀有的NFT怎么办?我怎样才能确保我以比我的地板价NFT更高的价格出售?


你可以为你的稀有NFT创建一个单独的流动性池,并将起始价格设置为比你的地板价NFT更高的价格。


3、人们怎么知道要从我的池子里购买?


我觉得这是一个特别好的问题。SudoSwap的智能合约不会自动为你找到最便宜的池子来引导你的交易。相反,人们会通过两种方式知道从你的池子中购买:


他们想买你的NFT,而这个NFT只能来自你的池子,所以他们必须从你的池子里购买。


他们在 "清扫地板价"——比如说,以最便宜的价格一次性购买10个NFT——而你的定价符合该系列10个最便宜的NFT。如果这样,SudoSwap(或聚合商)会知道这一点,因为他们会跟踪所有系列的定价,以便给用户提供最佳定价,并通过您的池子路由部分交易。


4、如果我想购买NFT,而不仅仅只是出售呢?


你可以创建一个购买NFT的池子(称为 "代币"池),并用ETH为其提供资金。你可以设置购买NFT的价格,以及每次交易后调整报价的delta。你可以为你的第一次购买提供5个ETH,并使用-1的delta为你的下一次购买提供4个ETH;设置与出售NFT的池子非常相似。


5、我以为我可以在SudoSwap上即时出售NFT?


你可以,通过将你的NFT卖到提供最高买入报价的 "买入NFT池"("代币"池)。这实际上也解释了报价的作用;要提出0.2 ETH的报价,你只需创建一个包含0.2 ETH的池子,并指定 "我将以0.2 ETH的价格购买这个系列中的任何NFT"。然后,有人可以将他们的NFT以0.2 ETH的价格卖给你的池子,把NFT给你。


6、那么DCAing呢?


如果你想做一些类似于DCAing的事情,你可以用你的初始买入价格创建一个池子,然后按照你想DCA的方向移动delta。我想你可以说这不是DCAing,因为你不是以明确的时间间隔买入/卖出,但至少你是以明确的价格买入/卖出。如果有这方面的需求,也许将来可以部署包括买入之间的 "时间锁"的联合曲线(bonding curve)。


7、交易费用呢?


如果你创建了一个 "交易"池——既提供以特定价格购买NFT,又以稍低的价格出售NFT——你可以指定每笔交易的费用百分比。


开发者须知

如果你不是一个开发者,或者你并不真正关心SudoSwap的AMM在较低层次上是如何运作的,请跳过这一部分。


在幕后,SudoSwap的LSSVMPairFactory合约正在创建新的池子(在合约层面被称为 "Pairs"),每个池子都是一个名为LSSVMPair的合约,由池子创建者拥有,并以自定义参数创建,如pair类型(代币、NFT或交易)、联合曲线类型(目前只是线性或指数)、现货价格、delta等。然后可以监测其资产的pair和价格行情(通过调用'getBuyNFTQuote'获得,如下图所示)。




LSSVMRouter合约用于代币审批(将审批合并为一个合约)和进行交换。有多种交换类型("稳健 "和 "正常"),每一种都以不同的方式处理 "如果这笔交易由于滑点或快速的价格变动而无法执行会怎样?"——稳健类型会跳过并向用户退款,正常类型会在发生过多的滑点时恢复。另外,作为一个开发者,交换函数直接返回未花费的代币数量这一事实是值得赞赏的。


由于各种原因,如聚合器的包容性、MEV等,你可能想自己获得定价。要做到这一点,你需要:跟踪所有的池子(通过LSSVMPairFactory的NewPair事件获取),跟踪池子里的NFT(通过LSSVMPairFactory的NFTDeposit事件,或通过池子的getAllHeldIds函数),跟踪池子里的资产(通过池子的TokenDeposit &TokenWithdrawal事件),并获得定价(通过池子的getBuyNFTQuote和getSellNFTQuote函数)。我可能忘记了一些东西,但这是要点。


如何看待SudoSwap

我喜欢为新产品建立 "心智模型",以弄清它们在市场格局中的位置,以及它们可以与什么相比较。其实我不知道心智模型到底是什么,只是最近经常听到这个词,但听起来和我做的事情差不多。




把SudoSwap看作使用AMM而不是订单簿的一个NFT交易所竞争者,似乎是合适的。SudoSwap正在进行权衡,如 "增加gas费用但完全是链上的"和 "对新用户来说可以说更复杂,但增加了即时的流动性",这将由用户决定他们在不同情况下喜欢哪种交易所类型。


我也完全理解,对于许多NFT用户/交易者来说,AMM/DeFi是他们不关心的事情。也就是说,Sudowap仍然处于一个良好的位置,可以通过与聚合器的集成来获得更多的交易量(实际上我自己也在做这件事,在Flip.xyz),Sudo的低交易费用和通常集中在地板价上的流动性意味着,对于一些NFT系列来说,通过Sudowap池子路由部分或全部批量交易将为用户带来更便宜的执行价格,用户甚至不需要学习(或了解)Sudowap。


正如我之前提到的,Sudoswap还不在他们的交易中包括版税费用。这是一个有趣的选择,并引发了一些争论。"NFT系列可以在SudoSwap上为自己的藏品做LP,赚取LP费用",这普遍反驳了 "你在坑害藏品和他们的财库"。对此,我没有固定的看法;看看哪一方(支持版税的或不支持版税的)是否屈服,或者藏品是否真的试图积极避免SudoSwap,这将是很有趣的事情。


总的来说,很高兴看到一种新的协议设计——NFT AMM——获得了一些吸引力,并在现实世界中展示了NFT AMM和订单簿之间的权衡。


群贤毕至

访客