世链nft数藏网  /  NFT资讯  /  教程:三分钟学会如何使用 Solidity 创建属于自己的NFT

教程:三分钟学会如何使用 Solidity 创建属于自己的NFT

参考文章:How To Create NFTs With Solidity

编译整理:Chen Zou

NFT(Non-Fungible Tokens,非同质化代币)是智能合约领域中最耀眼的星之一,是一种类似于 ERC20 的代币标准。如果说 2020 年是 DeFi 年,那么至少 2021 年的很大一部分都是属于 NFT 的。

非同质化意味着它是独一无二的,这与 ERC20 代币截然不同,后者都是同质化代币。举个同质化的例子,无论你用什么美元钞票,你的美元钞票都将价值1美元。一元纸币上的序列号可能不同,但这些纸币是可以互换的,因为它们无论如何都是价值1美元。

这些 NFT 可以通过编程来完成几乎任何你想做的事情,就像普通的智能合约一样,但它们具有链上加密的真实性,因为它们的部署历史将随着区块链的存在而得到几乎永久的保证。这解决了许多问题,特别是对于那些在艺术界摸爬滚打的人来说,NFT 所创造的数字稀缺性和真实性简直就是灵丹妙药。这也可以解决版税的问题,创造数字地位的象征,让游戏应用程序可以加强交互,等等。

NFT 的发展进度

首先要明确的是,NFT 具有无限的潜力。今年2月,以888.25 的价格出售了9块地。(目前价值约 391 万美元 )

教程:三分钟学会如何使用 Solidity 创建属于自己的NFT

NFT是由区块链和智能合约的出现所碰撞出的全新的火花,而现在有大量的开发者和机构团队正在其上勾线各种奇思妙想。

标准

正如上文所提到的,NFT 以 ERC721 代币标准为起点,它的语法与 ERC20 相似,只是有一些调整。

为了使你的合同能被系统认定是一个 NFT ,它所要做的就是遵循这个标准。我们把这个标准导入到我们的合约中,这样我们就不必每次想做一个新的合约时都要重新造轮子。

NFT 有一个 tokenURI 变量,我们将在一分钟内讨论,他们有一个 tokenId 到其所有者的映射,每个 token 有自己的 "所有者"。这与 ERC20 不同,后者只有一个地址与余额的映射。ERC721 仍然允许人们转让代币,在代币上设置权限等等。按照惯例,这是一个轻量级的标准,所以我们可以用它们建立任何我们想要的东西。

这里是事情开始变得真正不同的地方 —— Metadata(元数据)。当你进入 (一个顶级 NFT 市场),你可以看到一堆图片。那么既然 NFT 是在区块链上,那么他们的所有数据都应该在链上,对吗?嗯,不尽然。

在链上存储数据可能会非常昂贵,而且艺术品的文件体积往往并不会太小。以太坊和智能合约的开发者意识到,即使是上传 1 MB的图片也会让他们迅速破产,所以他们必须创造一个不必存储大量数据,却依旧能展示他们作品的途径。

作为一种变通方法,大多数 NFT 都有一个所谓的 tokenURI 。这是一个全球唯一的标识符,用于 NFT 的可视性领域。这使得给 NFT 添加视觉效果更容易。URI 是一个统一资源标识符,它可能是一个 HTTPS API 调用,通过 的东西,或其他类型的唯一标识符。这个元数据看起来像这样。

教程:三分钟学会如何使用 Solidity 创建属于自己的NFT

它们的 JSON 文件结构是这样的:

name

description

image

attributes

这些文件通常存储在 API 或 IPFS 上。

现在,你可能会突然蹦出一个疑虑,"等等……这意味着 NFT 的可视化内容来自一个中心化存储设施?这违背了我将它部署到区块链上的最初目的!"

链上元数据 VS 链外元数据

如果你想让你的 NFT 所有你能想象到的有趣的事情,它的链上属性是必须的。举几个例子,如果你想给他们像口袋妖怪那样的战斗状态,某种类型的稀有性统计,或者让他们有链上加密的稀缺性。这些属性必须是链上的。(因为这些都需要可追溯,可证伪,公众开放)

目前 NFT 平台没有很好的方法来让链上的属性可视化,所以你只需要用你铸造的 NFT 创建一个 tokenURI 。

教程:三分钟学会如何使用 Solidity 创建属于自己的NFT

对于 tokenURI ,最流行的方法之一是使用 IPFS 来存储你的数据。你会把你的数据上传到那里,然后使用 pinning 服务来确保数据永远留在那里。我很期待智能合约平台和存储端之间能有更多的交互性。

提示:下面开始属于我的自说自话时间。智能合约平台在前面, 在中间, dStorage 在后面……但这是另一个话题。

教程:三分钟学会如何使用 Solidity 创建属于自己的NFT

说实话,我一开始觉得 NFT 很蠢。除此以外,我曾经还认为艺术是白痴玩的东西…… 但考虑到我喜欢音乐、电影和具有良好视觉效果的游戏,我说那种话就很虚伪。NFT 解决了艺术界在版税和真实性方面长期以来所面临的痛点。我们现在有一个去中心化的审计服务。如果你想使用某人的艺术作品,你可以在链上看到关于那件作品的一切。

Nyan 猫的原创作者以 300 ETH的价格出售了其 NFT 版本。这证明了,数字稀缺性是有价值的。

教程:三分钟学会如何使用 Solidity 创建属于自己的NFT

如果你创造了令人惊奇的东西,那么它就有其独特的价值。这就是为什么我认为拥有 Chainlink VRF( Chainlink 的随机数生成服务) NFT 是件非常重要的事情,因为你可以创造出非常罕见的收藏品。我很期待有人在这些平台上制作一个口袋妖怪类型的游戏。这些NFT将永远存在下去。

现在有一堆 NFT 项目的价值都在呈指数级飙升,而我们可以围绕它们做一些特别的事情。

教程:三分钟学会如何使用 Solidity 创建属于自己的NFT

一个简单的NFT合约教程:三分钟学会如何使用 Solidity 创建属于自己的NFT

这是最简单的玩转 NFT 合约的方式。其中包含了 Truffle 、 Hardhat 和 Brownie 的语法。我喜欢使用 OpenZepplin 合约,因为结构非常完善,而且有我们通常需要的所有工具,可以直接开始工作。确保提前安装好它们:

npm install @openzeppelin/contracts

我们创建一个带有 DOG 符号的代币,名字是 Dogie 。然后我们可以用 createCollectible 函数来铸造我们想要的 DOG ,每次都会给我们存储一个新的 tokenId 。我们需要做的就是传递一个 tokenURI ,它只是任何指向元数据 JSON 格式的东西的 URL/URI 。

教程:三分钟学会如何使用 Solidity 创建属于自己的NFT

进阶版本的NFT合约教程:三分钟学会如何使用 Solidity 创建属于自己的NFT

在这个 NFT 合约中,我们使用 Chainlink VRF 来给我们的 NFT 提供随机状态。在这种情况下,我们正在使用随机性来给我们的狗一个随机的品种。当我们这次调用 createCollectible 时,我们实际上是向 Chainlink Oracle 发送了一个请求,以返回一个经过加密证明的随机数。这样,就不会有任何可能破坏游戏公平性的“暗箱操作”行为发生。这个请求是异步的,我们必须等待 Chainlink oracle 用随机数进行第二次交易。

一旦 Chainlink oracle 完成,它就会用它的随机数调用 fulfillRandomness 函数,这就是对 NFT 进行开采。这些映射被用来确保最初调用 createCollectible 函数的人可以成为 NFT 的所有者。这就是我们如何开始制作具有难以置信的强大功能和真正稀缺性的动态 NFT 。

总结:

创造 NFT 并非一个难于登青天的事情,只需要简单的代码,引入适当的 API 即可创造出属于自己的 NFT。但作为艺术衍生品,NFT 真正的价值依旧来源于点子、社区、风格、艺术创作品味等等,NFT 仅仅是从技术上解决了艺术品的诸多历史遗留痛点,但它并未根本改变一个艺术品的价值产生方式。大家可以尝试根据这个教程学习创作自己的 NFT。

本文来自比推Bitpush.News,星球日报经授权转载。

免责声明:
世链NFT作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链NFT无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:
本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
相关阅读