主页 > imtoken官网下载教程 > 教程:三分钟了解如何使用 Solidity 创建您自己的 NFT

教程:三分钟了解如何使用 Solidity 创建您自己的 NFT

imtoken官网下载教程 2023-09-19 05:12:10

编译、编曲:陈邹

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

Non-fungible 意味着它是唯一的,这与 ERC20 代币非常不同,后者都是可替代的代币。 作为同质化的一个例子,无论你使用什么美元钞票,你的美元钞票都将价值 1 美元。 美元钞票上的序列号可能不同,但钞票是可以互换的,因为它们无论如何都值 1 美元。

这些 NFT 可以被编程为做任何你想做的事情,就像常规的智能合约一样,但它们具有链上加密的真实性,因为它们的部署历史在区块链保证下几乎是永久性的。 这解决了很多问题,特别是对于艺术界的人来说以太坊智能合约的工作流程,NFT所创造的数字稀缺性和真实性简直就是一剂灵丹妙药。 这还可以解决版税问题、创建数字状态符号、允许游戏应用程序增强交互等等。

NFT的发展历程

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

以太坊智能合约的工作流程_以太坊智能合约取款_以太坊智能合约原理

NFT是区块链和智能合约的出现所产生的全新火花,现在大量的开发者和机构团队都在其上勾搭出各种奇思妙想。

以太坊智能合约原理_以太坊智能合约取款_以太坊智能合约的工作流程

标准

前文提到,NFT 以 ERC721 代币标准为起点,其语法与 ERC20 类似,只是做了一些调整。

为了让你的合约被系统识别为 NFT,它所要做的就是遵循这个标准。 我们将这个标准导入到我们的合同中,这样我们就不必在每次想要签订新合同时都重新发明轮子。

NFT 有一个 tokenURI 变量,我们将在一分钟内讨论它,并且它们有 tokenIds 到其所有者的映射,每个令牌都有自己的“所有者”。 这与 ERC20 不同,ERC20 只有地址到余额的映射。 ERC721 仍然允许人们转移代币、设置代币权限等。按照惯例,这是一个轻量级标准,因此我们可以用它们构建任何我们想要的东西。

这是事情开始变得真正不同的地方——元数据。 当你进入(顶级 NFT 市场之一)时,你可以看到一堆图片。 那么既然 NFT 上了区块链,那么它们的数据应该都上链了吧? 好吧,不完全是。

在链上存储数据可能非常昂贵,而且艺术品的文件大小通常不会太小。 以太坊和智能合约的开发人员意识到,即使上传 1 MB 的图像也会很快让他们破产,因此他们必须创建一种方式来展示他们的作品,而无需存储大量数据。

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

以太坊智能合约的工作流程_以太坊智能合约原理_以太坊智能合约取款

以太坊智能合约的工作流程_以太坊智能合约原理_以太坊智能合约取款

它们的JSON文件结构如下:

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

现在,你可能会冒出一个问题,“等等……这意味着 NFT 的视觉内容来自一个中心化存储设施?这违背了我将其部署在区块链上的初衷!”

链上元数据 VS 链下元数据

如果你想让你的 NFT 拥有所有你能想象到的有趣的东西,它的链上属性是必须的。 举几个例子,如果你想给他们像口袋妖怪这样的战斗统计数据,某种稀有统计数据,或者让他们有链上加密的稀缺性。 这些属性必须在链上。 (因为这些都需要可追溯、可证伪、并向公众公开)

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

以太坊智能合约取款_以太坊智能合约原理_以太坊智能合约的工作流程

以太坊智能合约取款_以太坊智能合约原理_以太坊智能合约的工作流程

对于 tokenURI,最流行的方法之一是使用 IPFS 来存储您的数据。 您可以将数据上传到那里,然后使用固定服务来确保数据永远保留在那里。 期待智能合约平台和存储端的更多交互。

提示:以下是我自言自语的时间。 智能合约平台在前面,在中间,dStorage 在后面……但那是另一个话题。

以太坊智能合约的工作流程_以太坊智能合约原理_以太坊智能合约取款

老实说,一开始我觉得 NFT 很蠢。 除此之外,我曾经认为艺术是白痴所做的事情......但是考虑到我喜欢音乐,电影和具有良好视觉效果的游戏,我会说这种话是虚伪的。 NFT 解决了艺术界长期以来围绕版税和真实性的痛点。 我们现在有一个去中心化的审计服务。 如果你想使用某人的艺术品,你可以在链上看到关于该艺术品的所有信息。

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

以太坊智能合约的工作流程_以太坊智能合约原理_以太坊智能合约取款

以太坊智能合约的工作流程_以太坊智能合约原理_以太坊智能合约取款

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

现在有很多 NFT 项目的价值都呈指数级增长,我们可以围绕它们做一些特别的事情。

以太坊智能合约原理_以太坊智能合约取款_以太坊智能合约的工作流程

一个简单的 NFT 合约

以太坊智能合约原理_以太坊智能合约取款_以太坊智能合约的工作流程

这是玩 NFT 合约最简单的方法。 它包括 Truffle、Hardhat 和 Brownie 的语法。 我喜欢使用 OpenZepplin 合约,因为它的结构非常好,并且拥有我们通常立即开始工作所需的所有工具。 确保提前安装它们:

我们创建一个代币,代币符号为 DOG,名称为 Dogie。 然后我们可以使用 createCollectible 函数来铸造我们想要的 DOG以太坊智能合约的工作流程,它每次都会为我们存储一个新的 tokenId。 我们需要做的就是传递一个 tokenURI,它只是指向元数据 JSON 格式的内容的任何 URL/URI。

以太坊智能合约的工作流程_以太坊智能合约原理_以太坊智能合约取款

以太坊智能合约原理_以太坊智能合约取款_以太坊智能合约的工作流程

NFT合约进阶版

以太坊智能合约原理_以太坊智能合约取款_以太坊智能合约的工作流程

在这个 NFT 合约中,我们使用 Chainlink VRF 为我们的 NFT 提供随机状态。 在这种情况下,我们使用随机性为我们的狗提供随机品种。 当我们这次调用 createCollectible 时,我们实际上是在向 Chainlink Oracle 发送一个请求,以返回一个经过加密验证的随机数。 这样就不会出现有损游戏公平性的“暗箱操作”。 这个请求是异步的,我们必须等待 Chainlink 预言机用 nonce 进行第二笔交易。

Chainlink 预言机完成后,它会调用带有随机数的 fulfillRandomness 函数,这就是挖掘 NFT 的原因。 这些映射用于确保最初调用 createCollectible 函数的人可以成为 NFT 的所有者。 这就是我们开始制作功能强大且真正稀缺的动态 NFT 的方式。

总结:

创建 NFT 并不是一件难事。 您只需要简单的代码和引入合适的 API 就可以创建您自己的 NFT。 然而,作为一种艺术衍生品,NFT真正的价值还是来自于艺术创作中的理念、社区、风格、品味等。NFT只是在技术上解决了艺术品的诸多历史痛点,并没有从根本上改变一种艺术品的生成方式。价值。 您可以尝试根据本教程学习创建自己的 NFT。

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