原文作者:Haotian,加密研究员
如何理解「图币二象性」创新代币 PANDORA?其让 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 代币的数量和 ERC721 代币的唯一 ID 能够在合约存储中使用相同的数据结构,同时又能保持它们的区分和独立性。
比如,假设你有 2.9 个魔法豆(ERC20),同时又拥有 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 的这套智能代币前端解决吗?
以上读完有没有,「一文双吃」的感觉,既大致明白了 Token404 标准下的 Pandora,又深刻认识了即将 TGE 的 Smartlayer。
事实证明,围绕资产发行的创新每一次都会产生相当长时间的叙事发酵效应,无论是比特币生态的铭文,还是这次以太坊生态的混合标准代币或可编程代币,在我看来都会持续衍生出形形色色的创新和玩法。
我不确定 ERC-404 的下一步会怎么演变,以及会不会和 Smartlayer 互通有无产生一些创新火花,但这种把原先水火不容的 Token 标准放置到一套智能合约下的管理办法,确确实实称得上是一次资产发行范式创新。
Note:ERC-404 标准还处于实验阶段,可能还会存在不少逻辑迭代,本文仅做科普帮助大家初步理解,不作为该类技术标准的最终解释内容。
本文来自投稿,不代表 BlockBeats 观点
欢迎加入律动 BlockBeats 官方社群:
Telegram 订阅群:https://t.me/theblockbeats
Telegram 交流群:https://t.me/BlockBeats_App
Twitter 官方账号:https://twitter.com/BlockBeatsAsia