货币通常是指区块链的原生代币或与 ERC20 协议类似的可互换代币,如 BTC、ETH、USDT 等。
图像则是指符合 ERC721 协议的非互换代币(NFT),如 CryptoPunks、Bored Apes、mfers 等。国内数字收藏平台(如 Whale Explorer)发布的 3D 模型资产也被视为图像。
代币和 NFT 各有其局限性,例如,代币具有良好的流动性,但本身缺乏投机价值,而 NFT 具有稀缺性和独特性,但通常流动性较差,通常要么是蓝筹项目,要么集中于地板价格。
某NFT项目流动性深度图
这NFT-FT二元性指以某种方式,将代币和 NFT 混合在一起的标准。
以以太坊为例,支持 NFT-FT 二元性的项目应该既可互换又不可互换。它既能享受代币带来的高流动性,又能实现稀缺性和唯一性,具有投机价值。
但这种东西真的存在吗?NFT 的价格与它的稀有性息息相关;如何才能让它成为可替代品?
2024年春节期间,一个名为ERC404的实验协议及其第一个项目潘多拉(Pandora)迅速引起轰动。
ERC404 开创了一种混合图像货币的方法,可以简单地描述为:
下面用一张图来说明目前ERC404的混合逻辑:
ERC404游戏规则
以下是目前潘多拉魔盒的5种类型,每种都有不同的稀有度。根据合同执行方式,我们可以计算出概率:
ERC404 代码的第一个版本写得很差劲,或者说得好听一点,它不理想。不过,它解决了主要问题—如何在一个合约中同时实现 ERC20 和 ERC721 接口。
三种协议比较
我们筛选出两个接口定义中不相关的部分,并比较哪些接口重叠或冲突:
interface IERC20 {
// Query the balance based on an address
function balanceOf(address account) external view returns (uint256);
// Transfer to a certain address
function transfer(address recipient, uint256 amount) external returns (bool);
// Transfer to a certain address on behalf of a third party (based on authorization)
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
// Authorize token allowance
function approve(address spender, uint256 amount) external returns (bool);
}
interface IERC721 is IERC165 {
// Query the NFT quantity based on an address
function balanceOf(address owner) external view returns (uint256 balance);
// Transfer within the NFT standard is included in transferFrom
// Transfer an NFT to a certain address on behalf of a third party (based on authorization)
function transferFrom(address from, address to, uint256 tokenId) external;
// Authorize NFT
function approve(address to, uint256 tokenId) external;
}
可以看出,四个冲突的接口都与转账相关。在 ERC20 中,语义上最后一个参数是 amount
,这是代币的限额,而在ERC721中,参数的语义是 tokenId
,代表NFT的数量。
在ERC404的合约实现中,该参数的语义改为 amountOrId
。辨别是否是的方法amount
或一个 tokenId
非常简单:基于值的大小。
如同 1 比特币 =10^9 聰,在ERC404的世界里,我们说1个Token实际上对应的值是10^18,而 NFT 的 tokenId
一般是从1开始依次递增的整数。因此,虽然 amount 和 tokenId 都是整数,但实际数量级却大不相同。
例如,Pandora 合约记录了当前已铸造了多少 NFT(目前 68180)。如果值 amountOrId
小于或等于这个,它被认为是tokenId
; 否则,它被认为是 amount
。
这个逻辑有用吗?有。它合理吗?
此外,当转账 >= 1 Token 时,NFT 的逻辑不是转账,而是原账户销毁,新账户铸币。这种方法的优点是流动性匹配,实现简单(考虑转账少于1个代币的场景),但会导致gas消耗过大。
以这个交易为例,转让 4 个代币导致销毁 4 个 NFT,并铸造 4 个新的 NFT:
该交易消耗了 64 美元的 GAS
ERC404的玩法引入了几条隐形规则:
如果我掌握了持续铸造 “红色潘多拉魔盒 “的魔法,我是否可以在交易所买入代币,然后在 NFT 市场高价卖出,进行无限套利?
我们来看看潘多拉的价格;这些数据为套利提供了理论基础:
以 4.7 ETH 购买代币
过去一周,NFT 的底价已超过 5 ETH
上述数据没有按照 NFT 的稀有程度进行筛选;在此条件下,扣除损耗后的利润约为 0.2 ETH。根据上述隐含规则,如果我们总能铸造出像红色潘多拉魔盒这样高稀有度的 NFT,岂不是会有更大的利润空间?
我们来看看 Pandora 合约,看看KOL们常说的“随机生成”到底是如何实现的:
pragma solidity ^0.8.0;
contract Pandora is ERC404 {
function tokenURI(uint256 id) public view override returns (string memory) {
// Hash the id once, taking the first digit as the random number
uint8 seed = uint8(bytes1(keccak256(abi.encodePacked(id))));
string memory color;
// Determine the rarity based on the range of values for a uint8 [0, 255]
if (seed <= 100) {
color = "Green";
} else if (seed <= 160) {
color = "Blue";
} else if (seed <= 210) {
color = "Purple";
} else if (seed <= 240) {
color = "Orange";
} else if (seed <= 255) {
color = "Red";
}
}
}
通过阅读合约,我们可以看到潘多拉魔盒的稀有度是伪随机的,类似于我们之前的 CryptoFish 项目,其中 tokenId
正在逐渐增加,因此下一个铸造的 NFT 的稀有性是完全可以预测的。
我们可以用一段JavaScript代码进行纯粹的本地猜测,经过验证,这个逻辑是完全正确的:
const ethers = require('ethers');
const calcSeed = (id) =>
parseInt(ethers.solidityPackedKeccak256(['uint256'], [id]).substr(2, 2), 16);
const getColorBySeed = (seed) => {
let color;
if (seed <= 100) {
color = 'Green';
} else if (seed <= 160) {
color = 'Blue';
} else if (seed <= 210) {
color = 'Purple';
} else if (seed <= 240) {
color = 'Orange';
} else if (seed <= 255) {
color = 'Red';
}
return color;
};
console.log(calcSeed(1)); // 177
console.log(getColorBySeed(calcSeed(1))); // Purple
目前Pandora铸造增量值为 68180,这意味着我们可以预测以下 100 个将达到红色稀有度的 NFT ID:68186/68201/68213/68227/68228/68257/68259/68262
如果我们忽略当前潘多拉项目流动性的下降,这可能是一种非常受欢迎的金融行为。
ERC404 和 Pandora 并不是第一个探索 NFT 流动性协议的公司。之前已经有过关于 NFT 分片化的讨论,包括 ERC1155 作为 NFT 的创新方法。
但为什么这次 ERC404 的情绪如此高涨呢?我相信是因为这个好名字。
不幸的是,第一版ERC404合约执行得并不顺利,因此官方正在积极推动V2版本,并且社区也有第三方实现DN404。有些人甚至创建了一个名为 ERC911 的新协议,该协议的命名充满了各种功能。
流动性在新年期间达到顶峰,此后出现大幅下降。
潘多拉V1的故事可能很快就会结束;目前的版本有无数的缺陷足以让它垮掉,流动性和持有者也大幅下降。不过,目前越来越多的项目团队正在尝试ERC404模型,已有25个项目团队在CoinMarketCap上市。
相信未来会有更多NFT流动性问题的解决方案,ERC404可能真正带来下一个NFT之夏。
货币通常是指区块链的原生代币或与 ERC20 协议类似的可互换代币,如 BTC、ETH、USDT 等。
图像则是指符合 ERC721 协议的非互换代币(NFT),如 CryptoPunks、Bored Apes、mfers 等。国内数字收藏平台(如 Whale Explorer)发布的 3D 模型资产也被视为图像。
代币和 NFT 各有其局限性,例如,代币具有良好的流动性,但本身缺乏投机价值,而 NFT 具有稀缺性和独特性,但通常流动性较差,通常要么是蓝筹项目,要么集中于地板价格。
某NFT项目流动性深度图
这NFT-FT二元性指以某种方式,将代币和 NFT 混合在一起的标准。
以以太坊为例,支持 NFT-FT 二元性的项目应该既可互换又不可互换。它既能享受代币带来的高流动性,又能实现稀缺性和唯一性,具有投机价值。
但这种东西真的存在吗?NFT 的价格与它的稀有性息息相关;如何才能让它成为可替代品?
2024年春节期间,一个名为ERC404的实验协议及其第一个项目潘多拉(Pandora)迅速引起轰动。
ERC404 开创了一种混合图像货币的方法,可以简单地描述为:
下面用一张图来说明目前ERC404的混合逻辑:
ERC404游戏规则
以下是目前潘多拉魔盒的5种类型,每种都有不同的稀有度。根据合同执行方式,我们可以计算出概率:
ERC404 代码的第一个版本写得很差劲,或者说得好听一点,它不理想。不过,它解决了主要问题—如何在一个合约中同时实现 ERC20 和 ERC721 接口。
三种协议比较
我们筛选出两个接口定义中不相关的部分,并比较哪些接口重叠或冲突:
interface IERC20 {
// Query the balance based on an address
function balanceOf(address account) external view returns (uint256);
// Transfer to a certain address
function transfer(address recipient, uint256 amount) external returns (bool);
// Transfer to a certain address on behalf of a third party (based on authorization)
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
// Authorize token allowance
function approve(address spender, uint256 amount) external returns (bool);
}
interface IERC721 is IERC165 {
// Query the NFT quantity based on an address
function balanceOf(address owner) external view returns (uint256 balance);
// Transfer within the NFT standard is included in transferFrom
// Transfer an NFT to a certain address on behalf of a third party (based on authorization)
function transferFrom(address from, address to, uint256 tokenId) external;
// Authorize NFT
function approve(address to, uint256 tokenId) external;
}
可以看出,四个冲突的接口都与转账相关。在 ERC20 中,语义上最后一个参数是 amount
,这是代币的限额,而在ERC721中,参数的语义是 tokenId
,代表NFT的数量。
在ERC404的合约实现中,该参数的语义改为 amountOrId
。辨别是否是的方法amount
或一个 tokenId
非常简单:基于值的大小。
如同 1 比特币 =10^9 聰,在ERC404的世界里,我们说1个Token实际上对应的值是10^18,而 NFT 的 tokenId
一般是从1开始依次递增的整数。因此,虽然 amount 和 tokenId 都是整数,但实际数量级却大不相同。
例如,Pandora 合约记录了当前已铸造了多少 NFT(目前 68180)。如果值 amountOrId
小于或等于这个,它被认为是tokenId
; 否则,它被认为是 amount
。
这个逻辑有用吗?有。它合理吗?
此外,当转账 >= 1 Token 时,NFT 的逻辑不是转账,而是原账户销毁,新账户铸币。这种方法的优点是流动性匹配,实现简单(考虑转账少于1个代币的场景),但会导致gas消耗过大。
以这个交易为例,转让 4 个代币导致销毁 4 个 NFT,并铸造 4 个新的 NFT:
该交易消耗了 64 美元的 GAS
ERC404的玩法引入了几条隐形规则:
如果我掌握了持续铸造 “红色潘多拉魔盒 “的魔法,我是否可以在交易所买入代币,然后在 NFT 市场高价卖出,进行无限套利?
我们来看看潘多拉的价格;这些数据为套利提供了理论基础:
以 4.7 ETH 购买代币
过去一周,NFT 的底价已超过 5 ETH
上述数据没有按照 NFT 的稀有程度进行筛选;在此条件下,扣除损耗后的利润约为 0.2 ETH。根据上述隐含规则,如果我们总能铸造出像红色潘多拉魔盒这样高稀有度的 NFT,岂不是会有更大的利润空间?
我们来看看 Pandora 合约,看看KOL们常说的“随机生成”到底是如何实现的:
pragma solidity ^0.8.0;
contract Pandora is ERC404 {
function tokenURI(uint256 id) public view override returns (string memory) {
// Hash the id once, taking the first digit as the random number
uint8 seed = uint8(bytes1(keccak256(abi.encodePacked(id))));
string memory color;
// Determine the rarity based on the range of values for a uint8 [0, 255]
if (seed <= 100) {
color = "Green";
} else if (seed <= 160) {
color = "Blue";
} else if (seed <= 210) {
color = "Purple";
} else if (seed <= 240) {
color = "Orange";
} else if (seed <= 255) {
color = "Red";
}
}
}
通过阅读合约,我们可以看到潘多拉魔盒的稀有度是伪随机的,类似于我们之前的 CryptoFish 项目,其中 tokenId
正在逐渐增加,因此下一个铸造的 NFT 的稀有性是完全可以预测的。
我们可以用一段JavaScript代码进行纯粹的本地猜测,经过验证,这个逻辑是完全正确的:
const ethers = require('ethers');
const calcSeed = (id) =>
parseInt(ethers.solidityPackedKeccak256(['uint256'], [id]).substr(2, 2), 16);
const getColorBySeed = (seed) => {
let color;
if (seed <= 100) {
color = 'Green';
} else if (seed <= 160) {
color = 'Blue';
} else if (seed <= 210) {
color = 'Purple';
} else if (seed <= 240) {
color = 'Orange';
} else if (seed <= 255) {
color = 'Red';
}
return color;
};
console.log(calcSeed(1)); // 177
console.log(getColorBySeed(calcSeed(1))); // Purple
目前Pandora铸造增量值为 68180,这意味着我们可以预测以下 100 个将达到红色稀有度的 NFT ID:68186/68201/68213/68227/68228/68257/68259/68262
如果我们忽略当前潘多拉项目流动性的下降,这可能是一种非常受欢迎的金融行为。
ERC404 和 Pandora 并不是第一个探索 NFT 流动性协议的公司。之前已经有过关于 NFT 分片化的讨论,包括 ERC1155 作为 NFT 的创新方法。
但为什么这次 ERC404 的情绪如此高涨呢?我相信是因为这个好名字。
不幸的是,第一版ERC404合约执行得并不顺利,因此官方正在积极推动V2版本,并且社区也有第三方实现DN404。有些人甚至创建了一个名为 ERC911 的新协议,该协议的命名充满了各种功能。
流动性在新年期间达到顶峰,此后出现大幅下降。
潘多拉V1的故事可能很快就会结束;目前的版本有无数的缺陷足以让它垮掉,流动性和持有者也大幅下降。不过,目前越来越多的项目团队正在尝试ERC404模型,已有25个项目团队在CoinMarketCap上市。
相信未来会有更多NFT流动性问题的解决方案,ERC404可能真正带来下一个NFT之夏。