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售卖的时候,不需要

相关文章
|
11月前
|
人工智能 搜索推荐 Ubuntu
[AI Perplexica] 安装指南:轻松部署AI驱动的开源搜索引擎
详细讲解如何在本地环境中使用Docker部署AI驱动的开源搜索引擎Perplexica,让您快速上手体验其强大功能。
[AI Perplexica] 安装指南:轻松部署AI驱动的开源搜索引擎
|
10月前
|
SQL 负载均衡 关系型数据库
*配置MySQL集群
【8月更文挑战第16天】*配置MySQL集群
365 2
|
11月前
|
监控 NoSQL Redis
Redis性能优化问题之什么是 Swap,为什么使用 Swap 会导致 Redis 性能下降,如何解决
Redis性能优化问题之什么是 Swap,为什么使用 Swap 会导致 Redis 性能下降,如何解决
|
SQL 关系型数据库 MySQL
【错误】mysql 出现 “1067 - Invalid default value for ‘UPDATE_TIME‘ “ 错误提示的解决办法
【错误】mysql 出现 “1067 - Invalid default value for ‘UPDATE_TIME‘ “ 错误提示的解决办法
461 1
|
负载均衡 监控 Linux
LVS + keepalived
LVS + keepalived
400 1
|
小程序 网络可视化
letpub 查询期刊信息
letpub 查询期刊信息
1256 0
|
架构师 数据管理
「企业架构」什么是TOGAF?完整的介绍
「企业架构」什么是TOGAF?完整的介绍
|
存储 算法 NoSQL
[数据结构与算法(严蔚敏 C语言第二版)]第1章 绪论(章节题库+答案解析)
[数据结构与算法(严蔚敏 C语言第二版)]第1章 绪论(章节题库+答案解析)
|
存储 弹性计算 安全
阿里云ECS实例规格族详解ecs.xlarge
阿里云服务器ECS分为多种实例规则,常见的有计算型c、通用型g和内存型r等,large代表vCPU核数,re内存增强、se代表存储增强、ne代表网络增强等,阿里云百科分享阿里云服务器ECS实例命名规则及举例说明:
1409 0
阿里云ECS实例规格族详解ecs.xlarge
|
测试技术 程序员 持续交付
程序员如何高效编写简历项目经验?
如何高效编写简历项目经验?
978 1