NFT交易市场的近期颓势频现,整个市场的流动性大幅降低,而此时8月异军突起的SudoSwap则凭借一超多强的增长数据,让基于AMM机制的交易市场映入大众视野。
基于链上数据分析截至8.20日,已有上千种NFT项目进驻,涉及8.5W个NFT的交易完成,累计2000W美金的交易量。
本文将从NFT交易市场的主流模式出发,通过还原Uniswap的经典恒积公式,来深入解说SudoSwap的独特定价函数以及功能细节,最终从各点优缺来点评对交易市场发展的价值
本文4500字,阅读需7分钟
对交易市场的运作模型的分类依据3个核心方面:如何发布、如何竞价、哪里撮合成交
对此3方面的不同实现导致了其流量来源、运作成本、市场受众对象的差异
大名鼎鼎的CRYPTOPUNKS(加密朋克),其实内置了一个交易市场,集合了链上发布、链上竞价、链上成单的各类机制,均在短短230行的合约内实现详情可见:【合约解读】CryptoPunk 世界上最早的去中心化NFT交易市场
同样有项目内置的市场的项目还有:StepN、Axie Infinity、NBA Top Shot等等
纵观下来,其实实现成交不复杂,但每个环节上链非常不利于NFT核心的流动性问题,作为买方在卖家确定是否售卖之前就得锁入资金,不限制等待期的情况让punk的合约日常锁定了6400个ETH
而一个独有艺术品应该被怎样的价格销售的定价问题,是需要合理的公开拍卖机制来协助撮合,每次出价先付gas的模式只能说在高净值的Punk里还能忽略,长尾NFT只能望尘莫及
顶级蓝筹可能并不需要直接的交易流动性,因为大部分的忠实长期 Holder,想必未来顶级蓝筹将会逐渐成为金融附属品,应用在借贷、租赁等市场,交易市场上可能是有价无市,无人挂单的情况。可拓展阅读:
【源码解读】以太坊新标准EIP-4907是怎样实现NFT租赁的?
所以作为早期市场,Punk的机制探索有全环上链的高度信任优势,也有限于流动性与定价的劣势
1.2、类OpneSea、X2Y2的第三方市场
此类市场均为目前按交易总值计算下的龙头,整体运作模式则是链下发布与撮合定价,链上成单
多种多样的拍卖机制让价格的合理性得到评估,而Opensea的新协议Seaport堪称是时代最强合约设计之一,通过大量汇编优化将gas成本降低30%,且各种订单模式的灵活性拉满,在Seaport开源开放的情况下,非常利于各类垂类项目(gamefi,创作版权等等)将交易能力内置
此类平台要说其劣势,首要的是中心化程度太高,几乎都需要用户将NFT授权给平台的合约,甚至像X2Y2这种代码充斥大量代理升级的设置,完全有瞬间变卖跑路的能力
其次定价的合理性还是来源于当前的关注度,对长尾NFT项目而言似乎总处于死亡螺旋中,开启初期太依赖于项目方会不会来事,否则可能连白名单mint都会一级发售不完。而近期较火热的free mint反而是对市场信心低迷的表现
在SudoSwap之前,似乎NFT 注定就不易流通,只能借助于平台庞大的规模来实现点对点的交易,在这样的情况下
突破口一是更有使用场景的NFT,可以从提供基础的应用价值来支撑市场价格。可拓展阅读:NFT租赁提案EIP-5006步入最后审核!让海外大型游戏的链改成为可能
其次是SudoSwap通过称为“官方池”的 Based Ghouls Pool ,也为长尾NFT项目带来方便“做事”的工具平台
为何他能帮助长尾实现农村包围城市,拼多多大战淘宝 ?让我们从实现机制进一步拆分其发布、定价、成交来分析
下图为截止8.20号SudoSwap的核心数据表现
2、如何理解AMM机制
同样是发布、竞价、成交3大维度,SudoSwap是链上发布,链上依据AMM机制定价,链上成交,有较高的去中心化程度,卖给谁、多少钱由市场说了算
SudoSwap 的AMM机制其实并不复杂,雷同于Uniswap AMM V3 ,其 k=x*y 的恒积函数一直是笔者认为的Defi中最优美的曲线
在Uniswap任何人均可以创建一个流动性池,任由大家注入流动性,帮助成交的同时也赚取LP收益
每一笔交易都将改变下一笔兑换的价格,因此还有滑点的设计意为能够接受成交价格滑动范围,这点在FT的中相对好处理,因为ERC20token可以高度分割
咱们通过下图来走一遍Uniswap的生命周期,来捋一遍x*y =k的公式
2.2、创建阶段
如下图左侧,我想做LP(流动性提供者),那同时得给出希望构成交易对的Atoken和Btoken转入合约,每当流动性存入池中时,都会铸造出流动性代币给我(LP),获得量的计算方式依据提供的量占总池子量比例,这些代币就代表LP对资金池的贡献,LP可以获取到别人交易过程0.03%作为手续费分红
《Uniswap的流动性池构建机制图》
2.3、兑换阶段
如下图右侧,构建池后当任一代币被提取(购买)时,必须按”比例”存入(出售)另一个代币,以保持总量的不变,这个比例就是在K也等于是X和Y的兑换率了
K这个值虽然是理论恒定值,但是每一笔交易都会产生手续费,意味着其实在tokenAB的兑换过程K都会逐步增加缓慢上升
如下图,当已有ABtoken的交易对:Atoken-1200个,Btoken-400个则当前兑换率为3
则我通过向合约内转入3个TokenA,并且额外支付手续费,在兑换后智能合约会给我TokenB 1个
这时由于整个系统的Token池子总量变化了,导致新的兑换率变化成3.015
《Uniswap的交易对购买机制图》
由于价格完全取决于链上合约实时计算逻辑,交易对的价格只能通过交易来改变,因此一旦Uniswap 价格与外部价格有背离就会创造了套利机会,这种机制确保 Uniswap 价格始终趋向于市场价格。
笔者非常喜欢这种逻辑,让套利者帮系统变得更好且能盈利,可拓展阅读:
3、SudoSwap的AMM机制原理
其实和UniSwap类似,SudoAMM 把 NFT 充当为 TokenA,把 ETH 充当为 TokenB,允许用户在 SudoAMM 上对 NFT-ETH 在指定价格内做市。对于买卖双方而言,通过池子可以实现即时买卖的目的。
其计算公式由于NFT不可分割,所以不能直接以k=X*Y计量(否则必然有一方剩余),所以SudoSwap设计了SudoAMM,提供了线性和指数两种定价函数
在计算曲线程序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;
**若干代码**
}
在计算曲线程序-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
);
} **若干代码**
创建流动性池使用的是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:同时购买多个怎么算?会则逐个结算(按线性算)
(买入现货价格) + (买入现货价格 + 1delta) + (买入现货价格 + 2delta) + ... + (买入现货价格 + (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的亮点
Sudoswap 有强大的「即时定价」优势,市场撮合瞬间定价,通过套利者寻找合适价格。回忆下 Uniswap 的崛起历史,就是因为作为它新物种解决了中小项目方发币的难题,实现农村包围城市成为龙头。
对于长尾的NFT中会有奇效,如今NFT只有2大种蓝筹和其他,对于punk、猴子、azuki而言流动性不是核心问题,原因在前文punk部分解释了。对于“其他”,则稀有度的差分其实并不大,反而极度依赖流动性,定价的快捷优势+官方池的推出,基本等同于股票回购机制,帮助项目方会做事。
诶,并不是AMM机制,而是LP机制反而让我惊喜,AMM让卖家可以立马卖出获得即时流动性,而LP 完全掌控资金池的定价(从价格函数到 delta 值都可自定义,而且还可以随时调整参数)。
这像什么?摆摊开店呀,是平台化而非大商超,项目方自己不仅可以有交易场地,更有控制的能力,不是opensea那种读链上地址从而中心撮合,项目方自己可以依据项目发展周期,控制是否回购,涨跌价幅度,意味着权利回归用户,在机制上与收费上(项目方也算用户)。
而Lp的收入也能顶替版税,为项目方带来多元化收入平衡
按手续费排序:Punk(0%) < SudoSwap ≤ X2Y2(0.5%) < Looksrare(2%) < OS(2.5%)
优美的代码,总是让十四这样的技术型行业独立研究者感受舒适,而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市场平台,从合约出发,看其优势与局限性,有兴趣的看官,速速点赞关注,后续跟进吧~
【合约解读】CryptoPunk 世界上最早的去中心化NFT交易市场
NFT租赁提案EIP-5006步入最后审核!让海外大型游戏的链改成为可能