热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

教程丨三分钟教你制作专属NFT智能合约

本文编译自AmirSoleymani在NFT领域成为艺术家,其中一个方面是在区块链上拥有自己的出处,没有什么比拥有自己的智能合约更能证明这一点。通过拥有

本文编译自Amir Soleymani

在NFT领域成为艺术家,其中一个方面是在区块链上拥有自己的出处,没有什么比拥有自己的智能合约更能证明这一点。

通过拥有自己的智能合约,你将能够在一个收藏品系列中以自己的名义下铸造作品。

当然,当你计划在Opensea这样的开放市场上出售你的物品,你将无法在任何其他平台上出售你的智能合约中的作品。

拥有自己的智能合约和铸币的工作并不是一个容易的过程,首先你必须对区块链领域的技术和相关术语有基本的了解。

这个过程包括:

  • 编写一个智能合约,你可以在区块链上铸造无形的代币(独特的作品)

  • 将该智能合约部署在区块链上

  • 在etherscan上验证源代码

  • 创建元数据文件并将其与实际的图片(可以是图像、视频,甚至是Javascript/HTML代码)一起上传到IPFS。

  • 通过连接代币、元数据和艺术品,将它们绑定到区块链上,并在区块链上铸造作品。

对此,我编写了一个简单的智能合约,允许你铸造无限的独特作品,每个作品都有自己的元数据(tokenURI)。你也可以销毁代币,仍然能够控制智能合约的所有其他标准功能。

可以在此处查看合约源代码:

mondoir / NFT-Smart-Contract

在此源代码中,你需要更改3个部分来对其进行自定义:

第1358行 #YOURCONTRACTNAME#(你的合约名称)

无论你的合约/收藏是什么。例如,MondoirPhotographyCollection。注意,这不能有任何空格。

第1370行 #YOUR CONTRACT NAME# & #SYMBOL#

名称相同,但在这里你可以使用空格,例如:Mondoir Photography Collection。符号是代币名称。这可能有点令人困惑,但它基本上是类似ETH和BTC的东西。因此,请随意使用你的收藏品名称的某些部分,例如:MPC(代表Mondoir Photography Collection)。

这就是定制你的合约。

你现在需要到Remix去部署你的合约。Remix IDE是一个开源的 Web 和桌面应用程序。它促进了快速开发周期,并拥有丰富的插件和直观的GUI。

Remix - 以太坊 IDE

参考A1

在Remix网页的左侧,有一个文件浏览器。

点击Single Sheet(编号1),创建一个新文件。将此文件命名为你的智能合约名称,以.sol结尾。所以你的文件名应该是这样的:myContract.sol

然后复制我github页面上的合约源代码的内容,并将其粘贴到你刚刚创建的文件中。

你可以在此处更新我之前提到的那3项内容。(第1358行和1370行),并且不要忘记删除 # 符号。

下一站,转到第2项(参考A1图片)来编译你的合约。确保你的屏幕和选项和上图看起来相同,然后按编译(Compile)。

如果你选择了自动编译(Auto Compile),它可能已经编译了你的合约,但再次编译也无妨。

一旦完成,进入菜单3,将合约部署到以太坊网络上。

现在,根据你的需要,你可能想把它部署到testnet上测试你的合约,在这种情况下,你可以使用这个列表中的虚拟机(VM)。

如果你想使用末的元掩码并在主网或测试网上部署,请使用Web3提供程序并连接你的元掩码。

确保在合约部分选择了正确的合约,然后按部署(Deploy)。

部署成功后,你应该看到“部署(Deploy)”按钮下面的合约名称和地址。

通过单击合约名称和地址前面的2个堆叠文件复制合约地址,然后转到etherscan以验证你的合约。

根据你的网络,如果你选择在主网部署,你可以到https://etherscan.io/‌,如果在测试网,可以到https://rinkeby.etherscan.io/ 或 https://ropsten.etherscan.io/。

在Etherscan上,将你的合约地址粘贴到搜索栏上,然后进入你新创建的合约。

进入“合约”标签,然后点击验证和发布链接。

根据Remix选择编译器类型、版本和许可证类型。

最后,回到Remix并复制合约源代码。

根据上图,粘贴合约源代码并选择优化选项“是”。

重要提示:

在这个阶段,你可能会收到错误信息。我在Chrome浏览器上遇到了这个问题。如果你遇到这个问题,可以尝试使用Safari浏览器。

在点击验证和发布后,Etherscan应该读取你的合约源代码,找出这个合约的ABI并验证它。

验证您的合同后,你将能够在合约标签上用新增加的读写按钮与它进行交互。在写入部分,你将能够铸造新的作品。

实际铸造工作

为了铸造,你需要创建元数据json文件,并将其与图像/视频/html 文件一起上传到IPFS。此前我曾解释过这个话题:

在Opensea上的Mint HTML

一旦你的文件在IPFS上,可以获取你的metadata.json文件的链接,然后转到ethersan和你的合约页面。

在那里写入,然后是mint(铸造)。

在这里,你可以选择要将这个新创作的作品发送到哪个地址。很明显,这将是你自己的地址。然后你可以为这个作品选择一个代币ID。这是一个数字,只要它没有在你的智能合约中使用过,就完全由你来决定。为你的作品想出一个编号系统是一个很好的做法。

例如,静止图像以0001开头,然后将下一个作品添加到索引(index)中。

然后在tokenURI上,将链接粘贴到工作的metadata.json文件,并按mint。确保你的metamask已连接,并且你有足够的ETH支付gas费。一旦完成,新铸造的作品将在你的opensea帐户上可用,你可以自由选择如何出售。

这个智能合约允许你铸造无限数量的独特作品,每个作品都有自己的代币ID和tokenURI。

点击下方卡片

关注巴比特资讯

关注DeFi之道

巴比特资讯,探索区块链边界

三生万物,我们经由DAO之路,去探索DeFi之道

区块链学习第一站


推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
author-avatar
北若久
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有