{"content":{"title":"解读UniSwap NFT市场协议不仅仅是聚合器","body":"作为日交易量达 7.7 亿美元、拥有 400 多万用户的 UniSwap 来说，进军 NFT 市场赛道也意味着新一轮攻防战的开始，众多平台一时都担忧对方是否会抛出类似SudoSwap那样初始即王炸的好牌。\r\n\r\n然而上线三天市场数据却让人唏嘘不已，在有500WUSDC空投+GAS优惠的情况下，仅仅获得了2%的交易份额。一时之间平庸与无奇的聚合器，成了UniswapNFT市场的代名词。\r\n\r\n真的只是如此吗？其实当前推出的市场及合约都不是完全版，甚至诸多功能并非开放\r\n\r\n请跟随十四君，本文将从NFT交易市场运作以及聚合器原理出发，结合Uniswap最新推出的Permit2和Universal Router 两份协议，深入理解最大的Dex平台是如何思考FT与NFTSwap的困境！\r\n\r\n## 1、背景\r\n\r\n### 1.1、什么是聚合器？\r\n\r\n传统意义上，聚合器主要用于数据聚合，它可以跨各个网站收集数据，再将信息分门别类呈现在一个平台，以满足不同用户的需求。而专业的NFT聚合器需要从不同的公链与应用收集所有NFT交易订单信息，并将它们整合到一个平台。这为用户提供了流畅的交易体验，并提高了交易效率。\r\n\r\n因此聚合器的侧重点是：\r\n\r\n- 工具属性：提供单一NFT市场并未具备的功能，更侧重用户侧体验\r\n- 交易体验：下文会梳理各种交易系统架构，可以显著感受到交易过程的割裂，无法一步到位完成一键交易的体验\r\n\r\n那为什么NFT购买会有聚合的需求呢？让我们先概述下主流NFT市场的运作模式\r\n\r\n### 1.2、交易市场主流模式\r\n\r\n分类的依据是交易流转生命周期的3个核心方面，如何发布、如何竞价、哪里撮合成交，而这3方面的不同实现会导致了其流量来源、运作成本、市场受众对象的差异，其典型是：\r\n\r\n![Untitled.png](https://img.learnblockchain.cn/attachments/2022/12/z4seg4Hc638c7ba321e02.png)\r\n\r\n- 链上订单：\r\n    - 垂类内置市场：[【合约解读】CryptoPunk 世界上最早的去中心化NFT交易市场](https://learnblockchain.cn/article/4546)\r\n    - AMM撮合市场：[一文讲清-NFT市场新秀SudoSwap的AMM机制-创新挑战与局限](https://learnblockchain.cn/article/4577)\r\n- 链下订单：\r\n    - 第三方市场：[抓完X2Y2十万NFT订单，分析版税可以不收后多少用户真这么做了？](https://learnblockchain.cn/article/4685)\r\n\r\n\r\n链上订单的优势是：安全，信息公开，去中心化，但是缺点则是成本高，流量匮乏\r\n\r\n链下订单的优势是：成本低，流量易于聚集，但缺点是：中心化，信任成本和取消成本\r\n\r\n以上是单一NFT交易平台的模式，而聚合器则是一个调用上述单一平台的系统并完成交易的工具。\r\n\r\n目前Uniswap已然集成了头部Top10的交易平台：OpenSea、X2Y2、LooksRare、Sudoswap、Larva Labs、X2Y2、Foundation、NFT20和NFTX。\r\n\r\n目前链下订单的第三方市场模式就是主流，最大的竞争力在于流量与用户习惯，这点即和合约系统设计息息相关，也和用户认知习惯结合。\r\n\r\n从卖家角度出发哪儿有买家，易于交易成单自然乐意在哪里挂单，而买家也自然会寻找更多卖家订单的平台来快速成交，而目前虽有巨头OS，也并非是竞争的终局，因为OS虽然妥妥占据80%的交易量，但他一直心中期望走web2的上市路线，所以迟迟不发币也不与用户分享收益，从而在今年逐步被x2y2和其他聚合器蚕食部分市场。但其他平台又困于本身流量较小，且新用户多数首选大平台从而发展平平。\r\n\r\n### 1.3、聚合器的工作原理\r\n\r\n而聚合器天然是工具属性，他是在调用其他平台的交易系统，而非自建交易协议。\r\n\r\n在Uniswap集成的9个平台中，类似os，x2y2等都是开放订单池系统的，这个开放的目的是提供程序化实现订单交易的系统，这方面多数是给机器人用的，对平台而言能快速成交就是好平台，开放订单池是个生态共建的互利初衷。\r\n\r\n而链上订单系统，则是对主流的sudoswap,nftx等链上协议做解析。\r\n\r\n聚合是如何替代第三方市场完成成单的呢？举个栗子来看，如下图\r\n\r\n前置流程是\r\n\r\n- 一份订单的可以是卖方或者卖方发起，甚至平台方（含聚合器）发起撮合\r\n- 首先卖方对NFT合约做授权（操作0），从而许可代扣。而这时，其实`x2y2：Exchange`可以任何时候直接转移NFT合约中卖方的资产，这也是为什么第三方平台中心化过高的原因。\r\n- 采用链上验签的方式来确定交易意愿，如`x2y2：Exchange`或者是 `os:Seaport`协议都是如此\r\n- 订单是源于第三方市场的web2系统，聚合器拿到的是用户签名以及售卖条件（比如1个猴子，50个ETH才可成交）\r\n\r\n执行流程是：\r\n\r\n1. 在聚合器平台构建好买卖单参数（含签名与金额）\r\n2. 用户发送交易到聚合器的链上合约\r\n3. 聚合器合约则替代了下图中1的部分，发送给第三方市场链上的合约\r\n4. 由于经过了聚合器合约，所以可以实现多笔购买同一笔交易完成\r\n\r\n\r\n![Untitled (1).png](https://img.learnblockchain.cn/attachments/2022/12/IoZbjn1g638c769cdbeb1.png)\r\n\r\n### 1.4、为什么聚合器可以节约Gas？\r\n\r\n从上述流程来看，聚合器本质还是调用第三方的合约，但是并不意味着交易的下限就是第三方的系统，因为一笔链上交易的成本组成是由3个方面的构成\r\n\r\n1. 单笔交易本身的消耗：21000 Gas\r\n2. 交易的附带参数消耗：每个非零字节需支付68 Gas\r\n3. 交易执行合约时消耗：依据对存储槽的修改使用与EVM工作量来计算Gas成本\r\n\r\n所以能够被节约部分则是：N笔交易合成1笔的过程，节约的N-1笔交易本身费用\r\n\r\n拓展阅读：[【源码解读】你买的NFT到底是什么？](https://learnblockchain.cn/article/4228)\r\n\r\n结合下图，具体计算下效率\r\n\r\n聚合成交是越多越划算：如果该平台完成单NFT交易成交所需的是20WGas，则10笔作1笔成交，可以节约9*21000的Gas，大概占各自成交10笔的`9.45%`  \r\n\r\n聚合本身也有不少消耗：比如Gem单笔成交需要28W，批量成交2个则需要50W，大致上每个NFT需要均摊6W的聚合损耗，因此在批量成交3个以上的时候，才会开始划算\r\n\r\n\r\n![Untitled (2).png](https://img.learnblockchain.cn/attachments/2022/12/SAzMsdxw638c78f41266b.png)\r\n\r\n上图交易类型与Gas表（属于随机单独抽取，非统计结果）\r\n\r\n### 1.5、聚合器的价值在哪？\r\n\r\n批量交易的功能在一段时间内迎合了项目方炒作，投资客抢购，散户易用工具赛选等诉求，所以具有较好的流量带来订单成交，实际上x2y2的半数订单源于聚合器。\r\n\r\n相比于传统交易市场，NFT聚合器有一些明显的优势，包括：\r\n\r\n- 信息高度聚合：如交易量、地板价、交易价格、数量、顶级持有者、顶级买家等。\r\n- 操作高度聚合：用户可以通过一个平台在所有市场上查看、交易和购买NFT。\r\n- 提高交易效率：信息与操作聚合，易于比价决策\r\n- 支付方式多样化：理想情况下（第三方市场协议本身支持），则可以在NFT聚合平台上用任何代币进行支付。\r\n\r\n综合看，是对于项目方本身批量买卖做市，对大户批量扫货交易，对散户观测数据信息各类用户都有所收益和触达，所以聚合器就在工具属性的路上越走越远，竞争点也越发的激烈，即考验合约实现中如何降低那6W的损耗，也考验工具化平台如何更好的呈现数据，\r\n\r\n但是笔者认为Uniswap的NFT市场的主打价值与目标，并非是做一个好用的好工具，而是期望实现一个统一的链上交互协议，针对的正是在支付方式非理想情况下，如何实现更顺滑的交易过程。\r\n\r\n## 2、UniSwap的NFT交换协议\r\n\r\n别急，先别用当前低迷的交易量来反击，笔者不是在为项目背书或者写软文，而是从其源码实现中，看到更多的功能点预留，而并非只是当前已开放的功能。\r\n\r\n作为日交易量突破 7.7 亿美元、拥有 400 多万用户的 UniSwap 来说，并不存在合约开发能力的不足以及投入资金的不足，更多的问题在于，**用户需要的到底是一个怎样的NFT交易协议?**\r\n\r\nUniSwap本次并非仅仅发布一个聚合器平台和调度协议，而是发布了2个相辅相成的协议**Permit2，和[Universal Router](https://github.com/Uniswap/universal-router)**\r\n\r\n### 2.1、**Permit2 - 高效且安全的新一代授权协议**\r\n\r\n#### 2.1.1、传统授权机制的局限性\r\n\r\n还记得上文中x2y2的架构图吗？新用户期望完成一次nft交易，对于如此简单的诉求，首先需要的就是，置换Weth和对Weth以及对应NFT合约做代扣授权。\r\n\r\n少则一笔多则两笔交易的成本，还会存在无限代扣风险以及被盗风险。之前的os就出现因为挂单不会自动失效，比如上链设置的问题，导致用户从冷钱包转回高净值NFT被低价成交的损失。\r\n\r\n#### 2.1.2、代扣授权，是ERC20的通病\r\n\r\n虽然有已经步入final的Eip-**2612:《通过 EIP-712 secp256k1 签名获得 EIP-20 批准》**，但从协议的角度来看，ERC20的地位仍然是二等代币，因为用户在不持有任何 ETH 的情况下是没有与以太坊交互的能力\r\n\r\n\r\n![Untitled (3).png](https://img.learnblockchain.cn/attachments/2022/12/qWlOp1x5638c7c223bb5b.png)\r\n\r\n上图表示的是如何使用Eip-2612来实现无授权扣款\r\n\r\n1. 爱丽丝签署了链下“许可”消息msg和sig，表明她的授权许可 (基于EIP-2612) 代币。\r\n2. 爱丽丝提交的msg和sig，作为她的协议合约交互的一部分。\r\n3. 该合约调用`permit()`，基于2612的Token合约则验证许可消息和签名，授予许可。\r\n4. 这时该合约获得基于EIP-2612代币的授权，可代扣爱丽丝的Token了\r\n\r\n是对 ERC20 标准的改进，解决了这些缺点（额外approve支出与无限代扣风险），但只能适用于集成了Eip-2612的新代币合约\r\n\r\n#### 2.1.3、uniSwap的**Permit2 的授权优化机制**\r\n\r\n为了解决基于Eip-2612就必须集成到代币合约层导致的往前兼容性问题（即老token无法使用）\r\n\r\npermit2则是一种任意token都可兼容的设计，等于是一个统一的授权管理合约\r\n\r\n\r\n![Untitled (4).png](https://img.learnblockchain.cn/attachments/2022/12/NRywb23s638c7c43da6cd.png)\r\n\r\n1. 上半部：爱丽丝调用`approve()`让基于ERC20 合约给 Permit2 合约授予无限授权。\r\n2. 下半部：爱丽丝签署链下“permit2型”消息 msg和sig，表示签名许可。\r\n3. Alice 在协议合约上调用交互函数，带有msg和sig\r\n4. 协议合约调用Permit2 合约，在验证msg和sig后，从其授权中控制erc20转移\r\n\r\n**总体来看**\r\n\r\n虽然要求用户先授权许可似乎是一种倒退。但是，用户不是直接将其授予某个协议，而是将其授予规范的 Permit2 合约（可以是该公链唯一的）。用户只需进行一次授权，则可以跳过后续所有的协议与其交易的授权操作，改用链下签名替代。等于用户再也无需为与各类协议交互而单独发起的这份交易了\r\n\r\n这里还能实现更多极具场景的能力，比如签名授权的自动有效期，从而再也无需担忧长期授权的风险，批量的审批（多笔扣款签名可一笔实现，批量取消代扣授权的签名也可一笔实现）\r\n\r\n自动有效期类似：[【源码解读】以太坊新标准EIP-4907是怎样实现NFT租赁的？](https://learnblockchain.cn/article/4323)\r\n\r\n\r\n![Untitled (5).png](https://img.learnblockchain.cn/attachments/2022/12/2YbboFBF638c7c64acd1a.png)\r\n\r\n一旦成型，或者基于uniswap本身用户量的普及，**一个完全去中心化的，只能通过用户签名来控制授权的协议**就会成为人人必备品（谁会拒绝又安全又便宜呢）。\r\n\r\n那，这与NFT交易市场的合约推出有什么关系呢？\r\n\r\n有，当前Permit2 已经集成到 Uniswap同期发布的Universal Router中即NFT市场的底层协议，代码集成但功能尚未开放（因为NFT版的Permit2还未发布），目前也仅小范围在测试ERC20版本的Permit2。\r\n\r\n### 2.2、**Universal Router - 统一的FT和NFT互换协议**\r\n\r\n此协议的定位是：Uniswap的下一代路由器，它将代币和 NFT 的swap交易统一为一个高度灵活、gas 优化、安全和可扩展的交换路由器\r\n\r\n这也意味着后续400W用户所默认使用的swap路由功能都将由此协议执行。\r\n\r\n他的应用场景是聚合器，但并不只是聚合器，定位的目标是多资产的swap协议，可以对（例如 Uniswap 池、NFT 市场）执行交换。\r\n\r\n#### 2.2.1、Universal 协议价值在哪？\r\n\r\n价值源于当前执行NFT购买的流程上的复杂。\r\n\r\n- 任意ERC20购买NFT鲜有协议层支持（除了opensea的Seaport协议天然支持），导致现在如想实现任意ERC20（如USDC）直接进行NFT购买，则至少需要2次交易从USDC→ETH，从ETH→NFT，\r\n- NFT购买与卖出都需要一笔授权，跨平台交易需要多次授权，导致协议兼容与升级成本高。他可以天然集成uniswapV2与V3，先执行多次代币交换（如下图），并在一次交易中从多个市场购买 NFT。\r\n\r\n其实OS集大成之作Seaport协议也是实现了任意资产组合之间的互换。而完全链上协议层的支持，则可以让更多应用天然集成了链上FT与FT，FT与NFT直接的互换。\r\n\r\n\r\n![Untitled (6).png](https://img.learnblockchain.cn/attachments/2022/12/OWWWukJR638c7cae64b9b.png)\r\n\r\n多代币支付的最终价值，在于让用户无需常备ETH做手续费。再次缩减交易链路，当然这点恐怕还有赖于未来基于ERC-4337的蓝图得以实现。\r\n\r\n拓展阅读：[以太坊账户抽象万字研报：拆解 10 个相关 EIP 提案与冲击千万级日活用户瓶颈的七年之路](https://learnblockchain.cn/article/5060)\r\n\r\n当然，目前你并不能在链上交易看到这样的多代币支付的实际操作，因为他并没有完全发布完整（还需 permit2的NFT版 ），还处于一个等待漏洞计划修改的优化的阶段。\r\n\r\n#### 2.2.1、approve究竟占据了多少资源？\r\n\r\n基于链上数据统计，截止1597W区块高度，以太坊累计的17.57亿总交易量中，执行ERC20的approve功能交易的合计有 4770W笔，单笔消耗gas平均值为84699，历史平均gasPrice为73Gwei，最后按ETH换算后，累计的ETH消耗为`295345`个ETH，按时价达3.8亿美金。\r\n\r\n## 总结\r\n\r\n虽然本文看着软，甚至在显著的链上数据（交易量不足）的情况下，还在分析这样交易协议的优缺，归根究底是笔者更看好这样不可升级的无owner的协议，完全开放代码与sdk，任意应用与协议可以集成，正如虽然os的Seaport协议需要庞大的链下中心化系统协同才能运作，但是那样高度优化，功能拉满的多元订单系统链上完全开源，对无数需要自建内部交易平台的dapp（如gamefi）等提供了巨人的肩膀，web3的世界也才能在一个个去中心化的协议之上逐步建立其价值。\r\n\r\n- **目前其协议确实存在局限性**\r\n\r\n目前想要通过集成该协议来实现NFT交互功能的话，**核心问题还是太依赖于中心化订单池**。如今订单信息是通过uniswap官方网站本身对os，x2y2等的查询，除了类似SudoSwap这样完全链上支持的合约直接查询之外（sudoswap初始概念惊人，但运营惨淡，发布的token分配协议太倾斜于开发团队，渐渐地无人问津了）。交易聚合的gas优化效果，还是大幅依赖于成交NFT的数量，这样一来工具化（针对项目方投资客）的属性定位依旧不变。\r\n\r\n虽然Uniswap其协议的定位是致力于构建推动加密货币向前发展的公共基础设施，采用的是更易于被开发者和其他dapp集成的模式，但目前看产品本身的功能还是以聚合器的起始点，**却并没有更多适合聚合器用户需求的工具集成**。自然一开始是不受待见，哪怕是用500WUSDC做空投。\r\n\r\nUniswap Labs 自收购 Genie 已长达半年，而今日上线的 Uniswap NFT 市场和半年前的 Genie 几乎一样。如今是因为X2Y2、Blur 等懂用户需求的 NFT 市场的出现，原来用户不得不忍耐产品体验辣鸡，而使用产品的时代已经过去。\r\n\r\n而Uniswap NFT 产品负责人 Scott 曾在推特表示，Uniswap 会通过继承 Sudoswap 实现 NFT 交易。期望后续推出的基础设施不能再如此胖协议，而瘦应用了。\r\n\r\n欢迎你从公众号后台留言作者探讨web3行业问题\r\n点赞关注十四，用技术视角带给你价值"},"author":{"user":"https://learnblockchain.cn/people/6626","address":null},"history":"QmVNSyAduPosE7oJGykD4eZuz43HEmPffY7BgdXXpk8yWJ","timestamp":1670201840,"version":1}