nft数藏系统开发功能(源码Demo)

简介: 本文介绍了NFT(数字藏品)APP的开发注意事项。在开发过程中,关键修改包括添加Token ID与IPFS文件哈希的映射,以存储NFT的图片和元数据;实现mint()方法用于铸造NFT,并在isApprovedForAll()中检查转账发起者是否为OpenSea代理合约,确保在OpenSea上交易的便捷性。代码示例展示了ERC1155智能合约的相关改动。

随着区块链的发展,NFT也逐渐传入国内(数字藏品),大家都很好奇数藏APP是怎样开发出来的。今天就数藏APP开发过程中容易遇到的细节问题来简单说一下数藏APP开发过程中的注意点。  The full name of the digital collection is Non-FungibleToken,abbreviated as NFT,which is a non-homogeneous token.The concept of NFT comes from foreign countries.It is a customized work using blockchain technology.The artwork forms a separate digital certificate.The authorization code is the information that protects copyright,and completes digital distribution,purchase,collection and use.The one-key digital collection of works is like a commodity,which is independent,indivisible,tamper-proof,verifiable and scarce.  我们做的主要修改是增加一个Token ID到URL的映射。因为我们准备将NFT的图片和Metadata数据都放到IPFS上,所以增加一个Token ID到IPFS文件哈希的映射:  contract ERC1155{  mapping(uint256=>string)private _metadataHashes;  string private _uriPrefix=“”;  //返回”QmasWH…re2Ych?filename=metadata.json”  //如果使用服务器API返回则可以固定uri为”{id}”  function uri(uint256 id)public view returns(string memory){  return _concat(_uriPrefix,_metadataHashes[id],“?filename=metadata.json”);  }  }  第二个修改是增加一个mint()方法来铸造NFT:  function mint(uint256 amount,string memory metadataHash)public returns(uint256){  //如果只允许合约部署者铸造,加上判断:  //require(msg.sender==owner,“Not contract owner”);  nextTokenId++;  uint256 tokenId=nextTokenId;  _metadataHashes[tokenId]=metadataHash;  _mint(msg.sender,tokenId,amount,“”);  return tokenId;  }  最后一步是在isApprovedForAll()中判断下当前转移操作的发起者是不是OpenSea的代理合约:  function isApprovedForAll(address account,address operator)public view returns(bool){  //Whitelist OpenSea proxy contract for easy trading.  ProxyRegistry proxyRegistry=ProxyRegistry(proxyRegistryAddress);  if(address(proxyRegistry.proxies(account))==operator){  return true;  }  return _operatorApprovals[account][operator];  }  这么做的目的是将来在OpenSea售卖的时候,不需要

相关文章
|
消息中间件 RocketMQ
这个RocketMQ节点似乎是在正常工作,但是它不能接收或者处理消息
这个RocketMQ节点似乎是在正常工作,但是它不能接收或者处理消息
937 0
|
SQL Java 数据库连接
在mybatis中,使用map传递参数和进行模糊查询的方法
在mybatis中,使用map传递参数和进行模糊查询的方法
778 0
|
人工智能 弹性计算 自动驾驶
阿里云张献涛:云原生计算基础设施助力汽车行业数字化升级
汽车行业在变化中积极拥抱数字化,阿里云帮助众多的汽车企业实现数字化升级,为汽车企业的电动化、数字化和智能化全面提速提供助力。2023年阿里云云峰会北京站《云上智能汽车》论坛中,阿里云智能基础产品部副总裁、阿里云智能弹性计算&无影产品线总经理张献涛,发表了《云原生计算基础设施助力汽车行业数字化升级》的主题演讲。
|
消息中间件 Java 大数据
RocketMQ
【8月更文挑战第29天】RocketMQ
372 15
|
网络协议 Ubuntu Linux
在IPad Pro上怎么实现代码自由,如何让IPad Pro变成你的生产力工具?
如何让IPad Pro变成你的生产力工具?在IPad上用Vscode写代码搞开发
665 1
在IPad Pro上怎么实现代码自由,如何让IPad Pro变成你的生产力工具?
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的在线摄影预约管理系统
基于Java+Springboot+Vue开发的在线摄影预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的在线摄影管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
267 8
基于Java+Springboot+Vue开发的在线摄影预约管理系统
|
前端开发 JavaScript 应用服务中间件
终极 Nginx 配置指南
本文介绍了Nginx的基本配置及其优化方法。首先,通过删除注释简化了Nginx的默认配置文件,使其更易于理解。接着,文章将Nginx配置文件分为全局块、events块和http块三部分进行详细解释。此外,还提供了如何快速上线网站、解决前端history模式404问题、配置反向代理、开启gzip压缩、设置维护页面、在同一IP上部署多个网站以及实现动静分离的具体配置示例。最后,附上了Nginx的基础命令,包括安装、启动、重启和关闭等操作。
464 3
|
前端开发 IDE 数据库连接
ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD
本文详细介绍了ThinkPHP6中模型层的使用,包括模型属性设置、表映射关系、以及如何在控制层中使用模型层进行CRUD操作。
ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD
|
测试技术 数据库 数据安全/隐私保护
推荐一个牛逼的开源在线文档系统,支持Markdown和富文本编辑模式!
推荐一个牛逼的开源在线文档系统,支持Markdown和富文本编辑模式!
4263 0
推荐一个牛逼的开源在线文档系统,支持Markdown和富文本编辑模式!
|
缓存 数据安全/隐私保护 虚拟化
windows端口被占用,无法通过netstat找到进程,占用的端口又不能修改,该怎么办?
项目运行时服务器8080端口被占用,常规`netstat`命令找不到占用进程。解决方法包括:1) 强制关机重启释放端口;2) 使用`netstat -anobq`或Windows 10的`Get-NetTCPConnection` PowerShell命令查找BOUND状态的进程;3) 调整Windows动态端口范围,避免冲突。注意,强制关机可能影响数据安全。
5064 2