ERC-721协议发行的货币是非同质化代币,以前搞ICO发的货币,是使用ERC-20发的区块链货币、同质化货币。
2.
ERC-721只是NFT稚嫩合约必须实现的最小接口,它包括代币管理、持有和交易功能。然而它并不包括代币元数据的相关内容,也缺少对一些实用的功能支持。也就是说,单纯的ERC-721上面只记录了一个TOKENID(NFT编号)的归属者,并不具体指明这个TOKENID所指向的物品是个什么东西,它的内容是什么,元数据是什么。一般的NFT合约都要加上其它功能。
因此常用的组合为:
ERC721标准+ IERC721Enumerable + IERC721Metadata,再加上自定义的mintable。

IERC721标准的合约方法:
balanceOf(): 返回由_owner 持有的NFTs的数量。

ownerOf(): 返回tokenId代币持有者的地址。approve(): 授予地址_to具有_tokenId的控制权,方法成功后需触发Approval 事件。setApprovalForAll(): 授予地址_operator具有所有NFTs的控制权,成功后需触发ApprovalForAll事件。getApproved()、isApprovedForAll(): 用来查询授权。safeTransferFrom(): 安全转移NFT所有权,一次成功的转移操作必须发起 Transer 事件。transferFrom(): 用来转移NFTs, 方法成功后需触发Transfer事件。调用者自己确认_to地址能正常接收NFT,否则将丢失此NFT。此函数实现时需要检查上面条件的前4条。

approve()和 transferFrom()的意义是什么?
approve()是授权控制权,比如A要卖它的NFT给C,他可以通过transferFrom(from:A,to:C)函数来执行。但是A一般比较忙,他只负责创作NFT,不想参与销售相关,他就可以可以先把这个NFT的控制权使用approve()函数交给B,这样B就可以转给C了。

可选接口IERC721Enumerable的主要合约方法:

totalSupply(): 返回NFT总量
tokenByIndex(): 通过索引返回对应的tokenId,比如获取NFT列表中第五个位置的NFT编号,如果是顺序编号,那tokenld也是5,但是tokenid得是一个uint265标识。
tokenOfOwnerByIndex(): 所有者可以一次拥有多个的NFT, 此函数返回_owner拥有的NFT列表中对应索引的tokenId。

可选接口ERC721Metadata的主要合约方法:

name(): 返回合约名字,尽管是可选,但强烈建议实现,即便是返回空字符串。
symbol(): 返回合约代币符号,尽管是可选,但强烈建议实现,即便是返回空字符串。
tokenURI(): 返回_tokenId所对应的外部资源文件的URI(通常是IPFS或HTTP(S)路径)。外部资源文件需要包含名字、描述、图片,其格式的要求如下:

{
“title”: “Asset Metadata”,
“type”: “object”,
“properties”: {
“name”: {
“type”: “string”,
“description”: “Identifies the asset to which this NFT represents”,
},
“description”: {
“type”: “string”,
“description”: “Describes the asset to which this NFT represents”,
},
“image”: {
“type”: “string”,
“description”: “A URI pointing to a resource with mime type image/* representing the asset to which this NFT represents. Consider making any images at a width between 320 and 1080 pixels and aspect ratio between 1.91:1 and 4:5 inclusive.”,
}
}
}

奇怪的是,ERC-721里面并没有给出铸币的函数!,铸币方法难道不是必须的吗?必须的为什么不写到接口里边呢?搞不懂了。IERC-720也没有铸币的方法,可能是太简单了。
那么该如何铸币呢?
好像需要自己实现。
一个简单的铸币函数:如何创建 ERC-721 NFT?

openzepplin是以太坊开发者的宝库,OpenZeppelin代码库包含了经过社区审查的ERC代币标准、安全协议以及很多的辅助工具库,这些代码可以帮助开发者专注业务逻辑的,而无需重新发明轮子。它提供了 ERC20 和 ERC721 等ERC标准的实现。

一个完整合约的实现,基于openzepplin的。来自于崔棉大师,讲得非常好。bilibili无敌!

花式发币法21-发行NFT非同质化虚拟货币
openzepplin提供了IERC(I指的是接口),ERC721Metadata,IERC721Enumerable。
在21:50,可以看到,铸币的方法。

这个铸币并没有涉及到NFT的URL?
答:在27:12处有设置URI的。

参考:剖析非同质化代币ERC721-全面解析ERC721标准

全面理解ERC721的实现机制

ERC721关于NFT的学习和理解相关推荐

  1. 《C++应用程序性能优化::第五章动态内存管理》学习和理解

    <C++应用程序性能优化::第五章动态内存管理>学习和理解 说明:<C++应用程序性能优化> 作者:冯宏华等 2007年版. 2010.8.29 cs_wuyg@126.com ...

  2. 【赠书】新手速递!深度学习视频理解!

    ‍‍ 视频理解是当前计算机视觉研究领域中备受学术界和工业界关注的方向,随着视频行业的高速发展,如何利用 AI 技术更好地对视频内容进行理解变得越来越重要.今天要给大家介绍的书是<深度学习视频理解 ...

  3. 9月21日云栖精选夜读 | 如何优雅地从四个方面加深对深度学习的理解

    在今年的 ICML 上,深度学习理论成为最大的主题之一.会议第一天,Sanjeev Arora 就展开了关于深度学习理论理解的教程,并从四个方面分析了关于该领域的研究:非凸优化.超参数和泛化.深度的意 ...

  4. 《C++应用程序性能优化::第二章C++语言特性的性能分析》学习和理解

    <C++应用程序性能优化::第二章C++语言特性的性能分析>学习和理解 说明:<C++应用程序性能优化> 作者:冯宏华等 2007年版.最近出了新版,看了目录,在前面增加了一章 ...

  5. 如何优雅地从四个方面加深对深度学习的理解

    在今年的 ICML 上,深度学习理论成为最大的主题之一.会议第一天,Sanjeev Arora 就展开了关于深度学习理论理解的教程,并从四个方面分析了关于该领域的研究:非凸优化.超参数和泛化.深度的意 ...

  6. [机器学习]正则化项L1和L2的学习与理解

    正则化项L1和L2的学习与理解 一,正则化(Regularization) 稀疏模型与特征选择的关系 二, 为什么L1产生稀疏模型而L2可以防止过拟合 1, L1和L2正则化的直观理解 正则化和特征选 ...

  7. 递归求全排列的学习与理解

    递归求全排列 全排列: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列. 例题: 输出自然数 1 到n所有 ...

  8. Faster RCNN原理篇(一)——Bounding-Box Regression边界框回归的学习和理解

    Bounding-Box Regression边界框回归的学习和理解 引言 1. (Why?)为何要做边框回归? 2. (What?)什么是边框回归? 3. (How?)如何实现边框回归? 4. 边框 ...

  9. 物联网方面用哪种计算机语言,物联网学习及理解 - 编程语言

    物联网学习及理解(来自一个物联网专业学生的心得)什么是物联网 物联网能做什么一.物联网运用领域 二.物联网发展趋势 物联网怎么实现一.局域网内的物联网 二.广域网内的物联网 总结 在开始写这篇博客之前 ...

最新文章

  1. Python3中typing模块介绍
  2. 中原银行签约神策数据 数据驱动构建智能服务体系
  3. 爱创课堂每日一题第四十天- 说说你对语义化的理解?
  4. 自适应 幻灯片代码 app_字节跳动 To B 再添一员,将推出飞书文档独立App | 36氪独家...
  5. 流媒体视频质量评价(单刺激连续质量评价方法)
  6. 号外号外~~OSS监控服务上线啦!!
  7. Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
  8. linux没找到unzip命令,linux中提示没有unzip命令解决方法如果你如法使用unzip命令解压.zip文件,可能是你没有安装unzip软件,下面是安装方法命令: yum li...
  9. 超详细带你用Java实现QQ的聊天功能
  10. vue中使用富文本编辑器
  11. 达人评测 华为watch gt2和gt选哪个好
  12. iOS PDF 添加图片
  13. python艺术签名_用 Python 制作一个艺术签名小工具,给自己设计一个优雅的签名...
  14. 虚拟机ping通主机步骤_6在购买虚拟主机服务之前,请按照操作步骤进行操作
  15. SAP BASIS ADM100 中文版 Unit 2(1)
  16. 春节快乐,iPhone11 抱回家!
  17. 【计算机毕业设计】328学生就业管理系统设计与实现
  18. 微信QQ域名防封防红防屏蔽系统源码
  19. discuz mysql查询_Discuz!X/数据库 DB:: 函数操作方法
  20. 实战linux内核精简

热门文章

  1. 答“我们的团队项目是否有大泥球?”
  2. POWERPCB常用技巧
  3. 中国电信计划构建安全新平台
  4. cygwin 在 windows 下的安装
  5. Apache如何将HTTP重定向到HTTPS
  6. 国内外常用Linux服务器控制面板介绍
  7. winform 打包
  8. 电力电子技术学习笔记
  9. 2016012086+杨岚青+散列函数应用及安全性
  10. GoAhead2.5源代码分析之6-访问验证(security.c)