参考文章:HowToCreateNFTsWithSolidity
作者:PatrickCollins
编译整理:ChenZou
NFT是智能合约领域中最耀眼的星之一,是一种类似于ERC20的代币标准。如果说2020年是DeFi年,那么至少2021年的很大一部分都是属于NFT的。
非同质化意味着它是独一无二的,这与ERC20代币截然不同,后者都是同质化代币。举个同质化的例子,无论你用什么美元钞票,你的美元钞票都将价值1美元。一元纸币上的序列号可能不同,但这些纸币是可以互换的,因为它们无论如何都是价值1美元。
这些NFT可以通过编程来完成几乎任何你想做的事情,就像普通的智能合约一样,但它们具有链上加密的真实性,因为它们的部署历史将随着区块链的存在而得到几乎永久的保证。这解决了许多问题,特别是对于那些在艺术界摸爬滚打的人来说,NFT所创造的数字稀缺性和真实性简直就是灵丹妙药。这也可以解决版税的问题,创造数字地位的象征,让游戏应用程序可以加强交互,等等。
火币全球站现已暂停XTZ充提业务:据官方公告,由于XTZ主网升级,火币全球站现已暂停XTZ(Tezos XTZ)的充提业务,恢复时间将以公告另行通知。[2021/7/2 0:23:09]
AxieInfinity以888.25ETH的价格出售了9块地。
NFT是由区块链和智能合约的出现所碰撞出的全新的火花,而现在有大量的开发者和机构团队正在其上勾线各种奇思妙想。
标准
正如上文所提到的,NFT以ERC721代币标准为起点,它的语法与ERC20相似,只是有一些调整。
为了使你的合同能被系统认定是一个NFT,它所要做的就是遵循这个标准。我们把这个标准导入到我们的合约中,这样我们就不必每次想做一个新的合约时都要重新造轮子。
NFT有一个tokenURI变量,我们将在一分钟内讨论,他们有一个tokenId到其所有者的映射,每个token有自己的"所有者"。这与ERC20不同,后者只有一个地址与余额的映射。ERC721仍然允许人们转让代币,在代币上设置权限等等。按照惯例,这是一个轻量级的标准,所以我们可以用它们建立任何我们想要的东西。
XTZ突破6美元关口 日内涨幅为3.49%:火币全球站数据显示,XTZ短线上涨,突破6美元关口,现报6.0029美元,日内涨幅达到3.49%,行情波动较大,请做好风险控制。[2021/5/4 21:23:26]
这里是事情开始变得真正不同的地方——Metadata。当你进入OpenSea,你可以看到一堆图片。那么既然NFT是在区块链上,那么他们的所有数据都应该在链上,对吗?嗯,不尽然。
在链上存储数据可能会非常昂贵,而且艺术品的文件体积往往并不会太小。以太坊和智能合约的开发者意识到,即使是上传1MB的图片也会让他们迅速破产,所以他们必须创造一个不必存储大量数据,却依旧能展示他们作品的途径。
作为一种变通方法,大多数NFT都有一个所谓的tokenURI。这是一个全球唯一的标识符,用于NFT的可视性领域。这使得给NFT添加视觉效果更容易。URI是一个统一资源标识符,它可能是一个HTTPSAPI调用,通过IPFS的东西,或其他类型的唯一标识符。这个元数据看起来像这样。
它们的JSON文件结构是这样的:
name
description
image
attributes
这些文件通常存储在API或IPFS上。
现在,你可能会突然蹦出一个疑虑,"等等……这意味着NFT的可视化内容来自一个中心化存储设施?这违背了我将它部署到区块链上的最初目的!"
链上元数据VS链外元数据
如果你想让你的NFT所有你能想象到的有趣的事情,它的链上属性是必须的。举几个例子,如果你想给他们像口袋妖怪那样的战斗状态,某种类型的稀有性统计,或者让他们有链上加密的稀缺性。这些属性必须是链上的。
目前NFT平台没有很好的方法来让链上的属性可视化,所以你只需要用你铸造的NFT创建一个tokenURI。
对于tokenURI,最流行的方法之一是使用IPFS来存储你的数据。你会把你的数据上传到那里,然后使用pinning服务来确保数据永远留在那里。我很期待智能合约平台和存储端之间能有更多的交互性。
提示:下面开始属于我的自说自话时间。智能合约平台在前面,Chainlink在中间,dStorage在后面……但这是另一个话题。
说实话,我一开始觉得NFT很蠢。除此以外,我曾经还认为艺术是白痴玩的东西……但考虑到我喜欢音乐、电影和具有良好视觉效果的游戏,我说那种话就很虚伪。NFT解决了艺术界在版税和真实性方面长期以来所面临的痛点。我们现在有一个去中心化的审计服务。如果你想使用某人的艺术作品,你可以在链上看到关于那件作品的一切。
Nyan猫的原创作者以300ETH的价格出售了其NFT版本。这证明了,数字稀缺性是有价值的。
如果你创造了令人惊奇的东西,那么它就有其独特的价值。这就是为什么我认为拥有ChainlinkVRFNFT是件非常重要的事情,因为你可以创造出非常罕见的收藏品。我很期待有人在这些平台上制作一个口袋妖怪类型的游戏。这些NFT将永远存在下去。
现在有一堆NFT项目的价值都在呈指数级飙升,而我们可以围绕它们做一些特别的事情。
这是最简单的玩转NFT合约的方式。其中包含了Truffle、Hardhat和Brownie的语法。我喜欢使用OpenZepplin合约,因为结构非常完善,而且有我们通常需要的所有工具,可以直接开始工作。确保提前安装好它们:
npminstall@openzeppelin/contracts
我们创建一个带有DOG符号的代币,名字是Dogie。然后我们可以用createCollectible函数来铸造我们想要的DOG,每次都会给我们存储一个新的tokenId。我们需要做的就是传递一个tokenURI,它只是任何指向元数据JSON格式的东西的URL/URI。
在这个NFT合约中,我们使用ChainlinkVRF来给我们的NFT提供随机状态。在这种情况下,我们正在使用随机性来给我们的狗一个随机的品种。当我们这次调用createCollectible时,我们实际上是向ChainlinkOracle发送了一个请求,以返回一个经过加密证明的随机数。这样,就不会有任何可能破坏游戏公平性的“暗箱操作”行为发生。这个请求是异步的,我们必须等待Chainlinkoracle用随机数进行第二次交易。
一旦Chainlinkoracle完成,它就会用它的随机数调用fulfillRandomness函数,这就是对NFT进行开采。这些映射被用来确保最初调用createCollectible函数的人可以成为NFT的所有者。这就是我们如何开始制作具有难以置信的强大功能和真正稀缺性的动态NFT。
总结:
创造NFT并非一个难于登青天的事情,只需要简单的代码,引入适当的API即可创造出属于自己的NFT。但作为艺术衍生品,NFT真正的价值依旧来源于点子、社区、风格、艺术创作品味等等,NFT仅仅是从技术上解决了艺术品的诸多历史遗留痛点,但它并未根本改变一个艺术品的价值产生方式。大家可以尝试根据这个教程学习创作自己的NFT。
本文来自比推Bitpush.News,星球日报经授权转载。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。