# 一文讲清-NFT市场新秀SudoSwap的AMM机制-创新挑战与局限

By [shisi.eth](https://paragraph.com/@shisi-eth) · 2022-09-15

---

NFT交易市场的近期颓势频现，整个市场的流动性大幅降低，而此时8月异军突起的SudoSwap则凭借一超多强的增长数据，让基于AMM机制的交易市场映入大众视野。

基于链上数据分析截至8.20日，已有上千种NFT项目进驻，涉及8.5W个NFT的交易完成，累计2000W美金的交易量。

本文将从NFT交易市场的主流模式出发，通过还原Uniswap的经典恒积公式，来深入解说SudoSwap的独特定价函数以及功能细节，最终从各点优缺来点评对交易市场发展的价值

1、NFT交易市场的主流模式
--------------

对交易市场的运作模型的分类依据3个核心方面：如何发布、如何竞价、哪里撮合成交

对此3方面的不同实现导致了其流量来源、运作成本、市场受众对象的差异

### 1.1、类Punk的内置市场

大名鼎鼎的CRYPTOPUNKS（加密朋克），其实内置了一个交易市场，集合了链上发布、链上竞价、链上成单的各类机制，均在短短230行的合约内实现详情可见:[【合约解读】CryptoPunk 世界上最早的去中心化NFT交易市场](http://mp.weixin.qq.com/s?__biz=MzIyMTQ5MTg5Mw==&mid=2247483924&idx=1&sn=30a642fa1acec069e31b40937e2d7de4&chksm=e83aa5cedf4d2cd861d3cf09c555720d7e6b89febb909ee88853d88f86ca913d3a1d701c1c00&scene=21#wechat_redirect)

同样有项目内置的市场的项目还有：StepN、Axie Infinity、NBA Top Shot等等

纵观下来，其实实现成交不复杂，但每个环节上链非常不利于NFT核心的流动性问题，作为买方在卖家确定是否售卖之前就得锁入资金，不限制等待期的情况让punk的合约日常锁定了6400个ETH

![](https://storage.googleapis.com/papyrus_images/3651d754c2f1074b1012fdcd30212256ddc6fb2f240b6979bff484a11d797813.jpg)

而一个独有艺术品应该被怎样的价格销售的定价问题，是需要合理的公开拍卖机制来协助撮合，每次出价先付gas的模式只能说在高净值的Punk里还能忽略，长尾NFT只能望尘莫及

顶级蓝筹可能并不需要直接的交易流动性，因为大部分的忠实长期 Holder，想必未来顶级蓝筹将会逐渐成为金融附属品，应用在借贷、租赁等市场，交易市场上可能是有价无市，无人挂单的情况。可拓展阅读:[【源码解读】以太坊新标准EIP-4907是怎样实现NFT租赁的？](http://mp.weixin.qq.com/s?__biz=MzIyMTQ5MTg5Mw==&mid=2247483830&idx=1&sn=9f0002c75b0168b44cba7331a0f115e0&chksm=e83aa66cdf4d2f7af04313b44143f23b1874b851a079cd793f6837346279d26cbf035602b33e&scene=21#wechat_redirect)

所以作为早期市场，Punk的机制探索有全环上链的高度信任优势，也有限于流动性与定价的劣势

### 1.2、类OpneSea、X2Y2的第三方市场

此类市场均为目前按交易总值计算下的龙头，整体运作模式则是链下发布与撮合定价，链上成单

多种多样的拍卖机制让价格的合理性得到评估，而Opensea的新协议Seaport堪称是时代最强合约设计之一，通过大量汇编优化将gas成本降低30%，且各种订单模式的灵活性拉满，在Seaport开源开放的情况下，非常利于各类垂类项目（gamefi，创作版权等等）将交易能力内置

![](https://storage.googleapis.com/papyrus_images/fc021f3151666c0ba97ccd0484408b38975f88d14ffb3cd278f4f30a5b315719.png)

此类平台要说其劣势，首要的是中心化程度太高，几乎都需要用户将NFT授权给平台的合约，甚至像X2Y2这种代码充斥大量代理升级的设置，完全有瞬间变卖跑路的能力

其次定价的合理性还是来源于当前的关注度，对长尾NFT项目而言似乎总处于死亡螺旋中，开启初期太依赖于项目方会不会来事，否则可能连白名单mint都会一级发售不完。而近期较火热的free mint反而是对市场信心低迷的表现

### 1.3、小结

在SudoSwap之前，似乎NFT 注定就不易流通，只能借助于平台庞大的规模来实现点对点的交易，在这样的情况下

突破口一是更有使用场景的NFT，可以从提供基础的应用价值来支撑市场价格。可拓展阅读：[NFT租赁提案EIP-5006步入最后审核！让海外大型游戏的链改成为可能](http://mp.weixin.qq.com/s?__biz=MzIyMTQ5MTg5Mw==&mid=2247483863&idx=1&sn=5c8c4d3b28f806b4140a59b9baa2b944&chksm=e83aa60ddf4d2f1b25ebe94cdc2c99ca5704bdf1edef580a894129994fe3aac395cc2d6ec03a&scene=21#wechat_redirect)

其次是SudoSwap通过称为\*\*“官方池”的 Based Ghouls Pool\*\* ，也为长尾NFT项目带来方便“做事”的工具平台

为何他能帮助长尾实现农村包围城市，拼多多大战淘宝 ？让我们从实现机制进一步拆分其发布、定价、成交来分析

下图为截止8.20号SudoSwap的核心数据表现

![](https://storage.googleapis.com/papyrus_images/3420b3197609627d0bbcfcab89ac318a93ba73665cca4c916c493a096af7cb33.png)

![](https://storage.googleapis.com/papyrus_images/e7cc415852e3caf9c20309986ff0c6b1e49966e7f7fd1095dc5e8b3934349599.png)

2、如何理解AMM机制
-----------

同样是发布、竞价、成交3大维度，SudoSwap是链上发布，链上依据AMM机制定价，链上成交，有较高的去中心化程度，卖给谁、多少钱由市场说了算

SudoSwap 的AMM机制其实并不复杂，雷同于Uniswap AMM V3 ，其 k=x\*y 的恒积函数一直是笔者认为的Defi中最优美的曲线

### 2.1、简述Uniswap机制

在Uniswap任何人均可以创建一个流动性池，任由大家注入流动性，帮助成交的同时也赚取LP收益

**每一笔交易都将改变下一笔兑换的价格**，因此还有滑点的设计意为能够接受成交价格滑动范围，这点在FT的中相对好处理，因为ERC20token可以高度分割

咱们通过下图来走一遍Uniswap的生命周期，来捋一遍x\*y =k的公式

### 2.2、创建阶段

如下图左侧，我想做LP（流动性提供者），那同时得给出希望构成交易对的Atoken和Btoken转入合约，每当流动性存入池中时，都会铸造出流动性代币给我（LP），获得量的计算方式依据提供的量占总池子量比例，这些代币就代表LP对资金池的贡献，LP可以获取到别人交易过程0.03%作为手续费分红

![《Uniswap的流动性池构建机制图》](https://storage.googleapis.com/papyrus_images/a56b1b2c8118628f8f520bb9ee2764d95af4830526e6f6dd069c19e0131f4d4a.png)

《Uniswap的流动性池构建机制图》

### 2.3、兑换阶段

如下图右侧，构建池后当任一代币被提取（购买）时，必须按”比例”存入（出售）另一个代币，以保持总量的不变，这个比例就是在K也等于是X和Y的兑换率了

K这个值虽然是理论恒定值，但是每一笔交易都会产生手续费，意味着其实在tokenAB的兑换过程K都会逐步增加缓慢上升

如下图，当已有ABtoken的交易对：Atoken-1200个，Btoken-400个则当前兑换率为3

则我通过向合约内转入3个TokenA，并且额外支付手续费，在兑换后智能合约会给我TokenB 1个

这时由于整个系统的Token池子总量变化了，导致新的兑换率变化成3.015

![《Uniswap的交易对购买机制图》](https://storage.googleapis.com/papyrus_images/5ba16c1e127154a973e1f834a690cd24c0fefe95217c3b9bc350e132029657fd.png)

《Uniswap的交易对购买机制图》

由于价格完全取决于链上合约实时计算逻辑，交易对的价格只能通过交易来改变，因此一旦Uniswap 价格与外部价格有背离就会创造了套利机会，这种机制确保 Uniswap 价格始终趋向于市场价格。

笔者非常喜欢这种逻辑，让套利者帮系统变得更好且能盈利，可拓展阅读：[一文讲清-DeFI王者AAVE最新的稳定币GHO提案](http://mp.weixin.qq.com/s?__biz=MzIyMTQ5MTg5Mw==&mid=2247483897&idx=1&sn=d052091332adde0babaab636d6c9eee2&chksm=e83aa623df4d2f358321afe974548569f1137003324773a049c1550f2eafc5f5a793112c5172&scene=21#wechat_redirect)

3、SudoSwap的AMM机制原理
------------------

其实和UniSwap类似，**SudoAMM 把 NFT 充当为 TokenA**，把 ETH 充当为 TokenB，允许用户在 SudoAMM 上对 NFT-ETH 在指定价格内做市。对于买卖双方而言，通过池子可以实现即时买卖的目的。

其计算公式由于NFT不可分割，所以不能直接以k=X\*Y计量（否则必然有一方剩余），所以SudoSwap设计了SudoAMM，提供了线性和指数两种定价函数

### 3.1、线性定价函数（Linear Curve）

在计算曲线程序`LinearCurve.sol` 中，新价格是依据**梯度累加制计算**的

假设 delta 值是 0.1，意味着每次买入（或卖出）都会将价格加上（或者减去）0.1 ETH。

平时（1E）→买入（1.1E)→买入（1.2E)→卖出(1.1E)，由此类推

    
    // 线性函数是累加制
    function getBuyInfo(uint128 delta,**若干参数){
    // 新价格是，每件购买的商品的现货价格 加上 delta
        uint256 newSpotPrice_ = spotPrice + delta * numItems;
        **若干代码**
    }
    

### 3.2、指数定价函数（Exponential Curve）

在计算曲线程序-`ExponentialCurve.sol` 中，是依据购买次数来每次累乘增加

假设 delta 值是 1.1，意味着每次买入（或卖出）都会将价格乘以（或者除以）1.1倍。

平时(1E)→买入4次(1.46E)→卖出3次(1.1E)→卖出3次(0.75E)，由此类推

    // 指数函数是累乘制
    function getBuyInfo(uint128 delta,**若干参数){
    // 新价格是，每件购买的商品的现货价格 乘以 delta
        uint256 newSpotPrice_ = uint256(spotPrice).fmul(
                deltaPowN,
                FixedPointMathLib.WAD
            );
     }   **若干代码**
    

### 3.3、创建流动性池的LP权利有多大？

创建流动性池使用的是LSSVMPairFactory.sol 程序中的createPairETH 函数方法，非常夸张的是，对比uniswap他可以设置的核心参数很多，执行创建会采用EIP-1167 的标准，也部署一个mini proxy合约，可以说即有独立合约的安全性（资产存于新部署的合约地址），LP有超级管理员权限，对定价函数，增量阈值，初始费用，全局手续费均可以控制

    
    function createPairETH(
            IERC721 _nft, 
            ICurve _bondingCurve,//  对 NFT 定价的联合曲线
            address payable _assetRecipient,
            LSSVMPair.PoolType _poolType,
            uint128 _delta,//  定价曲线使用的增量值。
            uint96 _fee,//  在每笔交易中收取的手续费
            uint128 _spotPrice,//  初始销售现货的价格
            uint256[] calldata _initialNFTIDs
    ) external payable returns (LSSVMPairETH pair) {
    

**问题1：同时购买多个怎么算？会则逐个结算（按线性算）**

(买入现货价格) + (买入现货价格 + 1_delta) + (买入现货价格 + 2_delta) + ... + (买入现货价格 + (n-1)_delta)，所以这等于是 n_(买入现货价格) + (delta)_(n_(n-1))/2

**问题2：买的NFT是哪个？会由用户指定的池子中的任意NFT**

通过对以太坊上合约地址调用方法的审查，可以发现将 ETH 交换 NFT的操作为：`0x11132000`

`对应合约方法swapETHForSpecificNFTs` 需要4个参数

*   `swapList` 要交易的token列表以及要对应购买的 NFT ID。
    
*   `Recipient` 将接收未使用的 ETH 输入的地址
    
*   `nftRecipient` 接收 NFT 输出的地址
    
*   `deadline`   时间戳，超时则订单不执行
    

由此可见，稀有度的概念在这被磨平了，因为定价与稀有度无关了。

除了在AMM机制外，还有2个额外功能或者说是限制

1：每个流动性池只能有一个LP，多数是项目方自己。

2：限价单功能，用户在存入 NFT 时就可以设定地板价等待成交。

参与者的权利至少不会低于自己理性价格成交，等同于OpenSea 挂单

4、总结-SudoSwap的亮点
----------------

### 4.1、从功能出发

Sudoswap 有强大的「即时定价」优势，市场撮合瞬间定价，通过套利者寻找合适价格。回忆下 Uniswap 的崛起历史，就是因为作为它新物种解决了中小项目方发币的难题，实现农村包围城市成为龙头。

### 4.2、从场景出发

对于长尾的NFT中会有奇效，如今NFT只有2大种蓝筹和其他，对于punk、猴子、azuki而言流动性不是核心问题，原因在前文punk部分解释了。对于“其他”，则稀有度的差分其实并不大，反而极度依赖流动性，定价的快捷优势+官方池的推出，基本等同于股票回购机制，帮助项目方会做事。

### 4.3、从机制出发

诶，并不是AMM机制，而是LP机制反而让我惊喜，AMM让卖家可以立马卖出获得即时流动性，而LP 完全掌控资金池的定价（从价格函数到 delta 值都可自定义，而且还可以随时调整参数）。

这像什么？摆摊开店呀，是平台化而非大商超，项目方自己不仅可以有交易场地，更有控制的能力，不是opensea那种读链上地址从而中心撮合，项目方自己可以依据项目发展周期，控制是否回购，涨跌价幅度，意味着权利回归用户，在机制上与收费上（项目方也算用户）。

而Lp的收入也能顶替版税，为项目方带来多元化收入平衡

按手续费排序：Punk(0%) < SudoSwap ≤ X2Y2(0.5%) < Looksrare(2%) < OS(2.5%)

### 4.4、从代码出发

优美的代码，总是让十四这样的技术型行业独立研究者感受舒适，而sudoswap代码的设计有了不少优化点，整体实现成交的GAS费用属于行业一流水平，单NFT购买仅需14WGAS，多笔成交也优于os，x2y2等。

按成交GAS排序：Punk < SudoSwap < opensea < GEM < Genie < X2Y2 < Looksrare

项目整体有2家审计公司背书，虽然审出一堆风险问题，但几乎不威胁到核心机制。笔者整理了相关资料（源码审计报告）可通过公众号后回复”sudoswap”获取。

**_最终_**

通过梳理本文逻辑，确实，sudoswap的异军突起是有一定市场价值的

其AMM机制引入NFT做市商天然的可以用金融的玩法来量化套利，只要流动性池子大了后随买随卖便能为NFT的价格形成支撑，进一步延伸到NFT租赁借贷等场景，立足于帮助长尾项目成功，高度吻合当年Uniswap的发家史，未来有可能成长为一个真正的协议。

但是，其sudoswap也失去了稀有度的差异，同一系列的 NFT 的价值都是趋同的，NFT 又演变成了另一种意义上的 FT，因此，sudoswap也场景有局限，只能适用于部分偏长尾的项目，或者同质化较高的应用型NFT。

看~~

同质化高、长尾、数量众多，是不是每一个词都完全匹配Gamefi中的NFT？没错，好的游戏生态里屠龙刀是必要的，而树枝长剑也是必要的。

笔者认为完全上链的sudoswap虽然只支持721，但未来将会是众多GameFi或者创作者经济中优质交易市场模型。易于项目方做事，易于创作者传播，更易于低价高数量的商品通过AMM寻找到合理价格。

后续笔者将继续研究OpenSea，X2Y2，Looksrare，Gem等头部NFT市场平台，从合约出发，看其优势与局限性，有兴趣的看官，速速点赞关注，后续跟进吧~

![](https://storage.googleapis.com/papyrus_images/b48f70bbbea572ee015d69b3cc0cb9b004349b41bd23b1e91ba285c352944d08.png)

---

*Originally published on [shisi.eth](https://paragraph.com/@shisi-eth/nft-sudoswap-amm)*
