原文作者:Haotian(X:@tmel0211) 如何理解「图币二象性」创新代币 @Pandora_ERC 404 ?其让 FT 和 NFT 拥有共生关系,以此来解决 NFT 流动性差的难题。技术角度看,让 FT 和 NFT 两种原生矛盾 Token 能被混合应用,新奇且有趣。 ERC 404 标准有啥创新之处?是一次资产发行新范式吗?结合 @SmartLayer 的 TokenScript 会有妙用?接下来,我谈谈我的理解: 首先,需要说明 ERC 404 目前只是一个 Experiment 实验性标准,并没有纳入正式的以太坊 EIP 提案。Pandora 是基于该新实验标准创建的首个代币。ERC 404 目标要解决原先 ERC 20 同质化代币标准,和 ERC 721 非同质化代币标准二者水火不相融的问题。 举个例子,用户同时持有 FT 代币 和 NFT 代币,当用户选择要卖出 NFT 代币时,合约如何判断用户的意图是卖 NFT 而非 FT,即使判断对了,合约如何在存储数据状态区分更新不同的数据状态而不出错?是不是,很抽象? 通俗来说,智能合约在 ERC 20 代币标准下,只需要管理代币的余额状态就行,增加和减少余额的存储数据逻辑简单清晰,若让智能合约在 ERC 721 代币标准下管理状态余额也很简单,Transfer 指向哪个 Token ID 就增减哪个 NFT。 现在要让智能合约同时处理 ERC 20 和 ERC 721 就麻烦了: 合约先要判断用户 Transfer 调用的是 FT 还是 NFT,此外要改变 NFT 状态时还得判断到底选择哪个 Token ID,由于 Uniswap 等这类智能合约并无法直接处理 NFT 交易,还需要给 FT 和 NFT 之间建立一层 Mapping 映射对应关系,进而实现交易 FT 的同时也完成了 NFT 的交易。 ERC 404 (实验)标准的核心黑科技就在于此,它通过有损编码方案让 ERC 20 代币的数量和 ERC 721 代币的唯一 ID 能够在合约存储中使用相同的数据结构,同时又能保持它们的区分和独立性。 比如,假设你有 2.9 个魔法豆(ERC 20),同时又拥有 2 个魔法卡(ERC 721 ,ID 101 和 ID 102),有损编码要同时管理两种类型的数据,可以直接把魔法豆的数量 2.9 作为一个数据整体存储,同时可以给魔法卡的 ID 号加一个特殊的标记,比如 1000000000000 ,这个标记甚至远超 Token 的 Supply,这样合约在调用数据时很容易区分开 ERC 20 和 ERC 721 了。 完成这一步后,要有效管理 FT 和 NFT 的共生关系需要给合约编写一套 Mapping 逻辑关系,比如,你有 1 个 FT 代币,合约会自动向你 mint 一个 NFT,当你持有 2 个 FT 代币时,合约再自动增发 1 个 NFT,但当你 FT 余额不足 1 个时合约会将你的 NFT 销毁掉。这一套对应关系不难理解。 那么,如何实现让 NFT 代币在 Uniswap 这种只支持 FT 代币的协议中交易呢?答案:利用 Mapping 对应关系。让 Uniswap 正常处理 FT 代币就好,NFT 代币自动会跟随转变归属状态。比如,你想卖掉 NFT 代币,可直接把 FT 代币卖掉,合约会自动记录你钱包里的 FT 减少了 1 个,并销毁掉你钱包里的一个 NFT。 细心的朋友应该发现问题了,若用户持有 2.9 个 FT 代币,和 2 个 NFT 代币,当用户卖掉 1 个 FT 后,合约该销毁两个 NFT 当中的哪个呢? 这其实是个相当复杂的问题,因为合约无法判定卖掉的部分到底是哪个 FT 代币,也就无法对应其相应的 NFT,严格来说这其实算 ERC 404 实验标准的一个「缺陷」。 但技术遇上 Tokenomics 产生了神奇的化学反应。 一个讨巧的方法是,设计一套 NFT 稀有刷新机制,鼓励用户不停将叠加的 FT 代币进行转移,每转移 1 次 FT 就相当于实现了一次 NFT 代币的销毁和新增发操作,也就等同于刷新了一次稀有度,这样用户就倾向于把 FT 代币分开,然后以此来避免稀有 NFT 被销毁,同时又能刷新新 NFT 稀有度。 你看,原本是一个技术逻辑 Bug,通过一层稀有度的运营设计,还真的可以有效化解。当然,用户如果非要较真,要在一个钱包内叠加多个 FT 代币,而且又要让已有的 NFT 代币根据自己意愿(非随机)销毁,怎么做呢? 现有做法有两种, 1)根据 Token ID 顺序执行,很可能把稀有特性的 NFT 被销毁掉;2)指定 Burn 接近 floor price 的 NFT,不过这其实是一层链外逻辑,很可能会因 oracle 喂价延迟问题导致销毁非意愿。而且那个 NFT 接近地板价其实也要用户提前挂单来定义,相当于又接入了 NFT 市场的数据。 与其这样复杂,还不如直接让用户在钱包端编辑并选择。 那就必须得引入一种为 FT 代币实现可编程前端的 TokenScript 方案,这样用户可以在钱包端自主选择当交易 FT 代币的时候,优先销毁哪个 NFT 代币,保留哪个稀有度的 NFT 代币,也正是我开篇提到的 @SmartLayer 目标要实现的功能。 关于 Smartlayer,其实和 ERC 404 并没关系,只不过 ERC 404 目标要让代币具有对应 NFT 图片的基础功能,而 Smartlayer 则是一套融合了 ERC-5169 和 TokenScript 的标准,本质上是要达成 FT 代币的可编程执行属性。两者在能力层面不谋而合,后者还要更复杂一些。 简单来说:TokenScript 是一个开源框架,旨在为数字代币提供标准化的方式来定义代币的行为和交互逻辑,代币发行者可以为其代币设计一套可编程的前端。 比如,在 ERC 404 场景下,用户可以基于 Smartlayer 的前端选择优先销毁哪个 NFT,给稀有 NFT 标记避免被销毁等个性化功能,又比如在更广泛的游戏场景下,可以喂养、抚摸自己钱包中的 NFT 宠物,为其 NFT 增加升级、迭代等属性。 原本我在研究 Smartlayer 所做的事情时,一些可编程代币,智能代币,Token 外接可执行脚本等等概念着实烧脑上头,当看到 ERC 404 标准代币的出现时,有种豁然开朗的感觉,ERC 404 实验状态中最后一环的 NFT 区分问题,不正可以用 Smartlayer 的这套智能代币前端解决吗? 读完有没有,「一文双吃」的感觉,既大致明白了 Token 404 标准下的 Pandora,又深刻认识了即将 TGE 的 Smartlayer。 事实证明,围绕资产发行的创新每一次都会产生相当长时间的叙事发酵效应,无论是比特币生态的铭文,还是这次以太坊生态的混合标准代币或可编程代币,在我看来都会持续衍生出形形色色的创新和玩法。 我不确定 ERC 404 的下一步会怎么演变,以及会不会和 Smartlayer 互通有无产生一些创新火花,但这种把原先水火不容的 Token 标准放置到一套智能合约下的管理办法,确确实实称得上是一次资产发行范式创新。 Note:ERC 404 标准还处于实验阶段,可能还会存在不少逻辑迭代,本文仅做科普帮助大家初步理解,不作为该类技术标准的最终解释内容。更多内容,我会进一步跟进分析。