缘起于“谜恋猫”游戏的NFT,经过佳士得拍卖事件的发酵,引来了越来越多的目光和讨论,但外界的认知大都停留在应用层面。知道创宇区块链安全实验室通过具象化的概念分解和实践演示,带你多角度地进入NFT的世界。前言
2021年3月11日,佳士得历史上首次拍卖以NFT形式展现的纯数字艺术品,这幅底价100美元的作品最终以6934.6万美元成交,一举成为在世艺术家成交作品第三高价。这一事件,将越来越多的目光吸引向NFT的世界。对于区块链行业外的人士而言,NFT还是一个新鲜事物。但实际上,NFT很早就已经出现了——即在2017年末以太坊上兴起的谜恋猫游戏。“谜恋猫是世界首款区块链游戏。‘区块链’是支持类似比特币这样的加密货币的运作技术基础。尽管谜恋猫不是数字货币,但它也能提供同样的安全保障:每一只谜恋猫都是独一无二的,而且100%归您所有。它无法被复制、拿走、或销毁。”当时这款游戏推出后便风靡一时,一度导致了以太坊网络的堵塞。不过相信大多数人还是对NFT停留在应用上的认知,今天我们来尝试从新的角度来认识它。什么是NFT
NFT是Non-FungibleToken的缩写,中文称为「非同质化代币」,通常是指开发者在以太坊平台上根据ERC721标准/协议所发行的代币。既然NFT被称作「非同质化代币」,那么相应的肯定有「同质化代币」,下图是二者一个形象的举例。
Cardano生态DEX AdaSwap推出NFT市场ADANFT:3月30日消息,基于Cardano的DEX AdaSwap宣布推出NFT市场ADANFT,旨在解决其他NFT市场中存在的管理不善问题,并为用户铸造和交易NFT提供更低的Gas费,并让持有其原生Token ASW的用户投票决定上架哪些NFT项目。[2022/3/31 14:28:10]
同质化代币同质化代币的典型代表就是以ERC20标准/协议发行的token。在ERC20标准/协议我们中可以知道,ERC20的token是指定小数位数的,也就是token可以任意分割,token与token之间是等价的。简单来说同质化代币就是一种能够相互替换、具有统一性、可被拆分的代币。就像美元之间可以进行交换,即使序号不同,价值却保持一致。非同质化代币非同质化代币的典型代表就是以ERC721标准/协议发行的token。而在ERC721标准/协议中则定义的是一种不可分割的token,每个token都是独一无二的,我们可以追踪每个token的转移和其价值的变动的。可以认识到非同质化代币就是由于包含了记录在其智能合约中的识别信息使得每种代币都具有独一无二的特性,因此不能被另一种代币直接取代。NFT铸造
去中心化衍生品交易所dFuture首枚身份类NFT已支持合成:今日dFuture的NFT合成活动上线,同时推出了首枚身份类NFT——Genesis创世星。该NFT是由三张不同类型NFT合成,合成之后原NFT销毁。Genesis创世星铸造数量非常少,火币生态链Heco共6枚,币安智能链BSC共2枚。
dFuture NFT 7月22日正式上线后,陆续上线了多种权益类NFT卡和NFT盲盒。作为与业务场景有深度结合的NFT,目前dFuture NFT的应用场景包括:在dFuture平台合约交易使用、在NFT商城买卖、赠送给好友、用来合成更有价值的NFT。[2021/7/30 1:24:52]
说了NFT的独特,那我们再来谈谈它是怎么被铸造的,以及基于什么逻辑实现它的独一无二。以下非同质化代币的铸造分析,原始代码参考以太坊ERC721提案。首先非同质化代币的铸造会执行_safeMint函数,该函数存在两个参数,他们分别的作用是:to:新铸的代币接受地址tokenId:新铸代币的id序列
可以看到接下来调用三参数同名_safeMint函数,
CryptoC创始人唐晗:NFT赋予了虚拟世界商品在互联网世界的所有权:金色财经现场报道,4月10日,金色财经主办的共为创新大会“DeFi的创新进阶”专场于上海举办,会上CryptoC创始人唐晗分享表示,区块链和现实本身有分离,在沉寂于虚拟世界里后,用户需要一个虚拟的身份,这是NFT的一个需求,此外,如今加密艺术的出现,和疫情出现有一些关系,疫情让更多用户沉浸在虚拟世界,NFT赋予了虚拟世界的商品在互联网世界真正的所有权。我们目前正在经历一个迁移,有很多的商品都在逐渐虚拟化,但不代表不具备价值,用户已经花费了大量时间和其他价值在虚拟世界里面。[2021/4/10 20:05:54]
最后调用_mint函数进行铸币:
就这样一个独一无二的NFT被铸造出来了。总体过程如下:合约中使用_safeMint函数调用铸币函数并检查函数的ERC721函数接口合法性,该函数在ERC721中有所体现,代码如下:
NFT收藏家WhaleShark以22 ETH的价格购入一双球鞋NFT:NFT收藏家WhaleShark以22 ETH的价格购入一双带有AI设计的球鞋The X Evolutions。WhaleShark希望将此球鞋NFT展示在办公室的数字屏幕上。WhaleShark还会在明年年初获得该球鞋的精确副本。(Coindesk)[2020/12/22 16:09:02]
在_mint函数中首先检查了地址是否是0地址,还有tokenId是否已存在。该tokenId在ERC721标准中生成规则是一个不可互换的通证。检测通过后为to地址铸币(相应的tokenId),同时记录余额与该NFT艺术品的归属者。
NFT铸造示例
看到这,相信你也了解到什么是NFT了,来让我们通过部署一个ERC721智能合约来进行铸造演示。需要用到的工具有remix,metamask和IPFS。将图片上传到IPFS我选择制成NFT的是一张可爱的猫猫图片。
Conflux首款NFT+DEFI游戏ConDragon NFT首发MoonSwap两小时内售罄:12月16日12点,Conflux首款DeFi+NFT+RPG游戏 ConDragon NFT开启盲盒预售活动,NFT售卖首发上架Conflux生态平台MoonSwap,并同步开启质押恐龙NFT进行挖矿。
此次ConDragon首发预售第一期共1857只恐龙NFT。在2小时内完成售罄。并完成462只恐龙NFT质押,其余进入MoonSwap NFT资产交易平台挂单交易。盲盒售卖后50%的金额全部通过合约自动兑换成cMOON注入奖池,总奖池达到46900.48 cMOON。[2020/12/17 15:30:10]
在使用这张图片前我们需要对它进行一些处理,这里要用到IPFS工具:1.打开终端初始化IPFSrepo;
2.再打开一个终端开启daemon服务;
3.在第一个终端中输入以下命令将图片加入到IPFS中,并复制下生成的hash;
4.向IPFS添加JOSN文件,同样复制下生成的hash。
JSON文件格式
合约代码我们直接通过模拟合约在remix上测试。NFT模拟测试合约如下,为了方便和安全,我们使用了0xcert/ethereum-erc721合约来创建我们的NFT合约。
铸造NFT使用InjectedWeb3进行部署。编译合约前一定要在Metamask上选择测试网络,我选择的是Kovan测试网络。
现在进入Remix中的DeployedContracts部分,展开部署的合约。你会看到一堆函数/方法。展开mint函数并添加以下参数:在_to中添加你的Kovan地址。在tokenIdPre中输入任何数字值。在_uri字段中,添加获得的JSON文件的URI。点击交易,并从metamask确认交易。
接下来在我们的钱包就可以看到一个名叫MMN的NFT已经生成了。
拓展&NFT随机数安全
在仔细阅读了测试合约代码后,大家会发现,我并没有直接使用传参tokenIdPre作为代币的标识,而是将它作为依据由算法生成的随机数来作为代币标识。为什么要这样呢?不知道大家有没有玩过盲盒——指消费者不能提前得知具体产品款式的玩具盒子,具有随机属性。很明显NFT同样适用于盲盒属性,只要适当的使用随机数就能有各种各样的NFT盲盒玩法。现实玩法如在BlindBoxesdApp中,创作者通过主智能合约在xDai生成空的收藏品盒,创作者将NFT存入NFTHolder;NFTHolder将其状态通过AMB同步到xDAI上的主智能合约;创作者通过主智能合约往收藏品盒中添加一个或多个NFT,之后可以选择发布。这些发布的NFT会通过RandomAura引入随机性,确保盲盒的随机性。但是盲盒也可能不"盲",因为盲盒的随机性是由随机数生成器生成的,一旦随机数生成器被破解,如各类预言机被破解事件,足以提醒我们要使用安全的随机数生成器。以下让我们来分析一些简单的盲盒随机化规则,谈谈其安全性:
首先我们可以看到该函数仅允许被个人地址调用,就可以杜绝黑客使用其它方法来调用该函数。接着就是最关键的抽奖结果的生成,一共涉及两个变量一个常量:变量1:index由调用该函数的个人决定变量2:block.timestamp由当前的区块决定常量:TOTAL_ROLE总量53不会改变这时问题就出现了,作为该函数的调用者一共能控制变量index和常量TOTAL_ROLE,那如果黑客能控制最后一个变量,是不是他就能操作抽奖结果?而这并非不能办到。因为链上的数据都是可以计算和预测的,甚至矿工还可以提前计算结果。而当黑客能预测block.timestamp值时,也就相当于他控制了该变量。所以盲盒真的会不"盲",使用安全的随机数极为重要。总结
无论什么时代都会有人追求独一无二,数字化的世界里同样如此。NFT的出现既是对人们追求独一无二欲望的满足,也是数字化时代认证方式的开拓。相信在不断完善的未来世界,NFT一定能发挥出举足轻重的作用,但同时我们也不能对其安全掉以轻心。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。