开发者社区> 搭建猿13z4z77z558> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

NFT商城系统开发NFT交易技术

简介:   tokenId和tokenUrl一对一关系,代表每份数据一个链上的唯一id,同时tokenUrl没要求是唯一,但在调用方,一般会把tokenUrl设置唯一,即使不唯一也没关系,冲突的时候,tokenId越小的,其当初被设置的时间就越早;
+关注继续查看

  NFT智能合约可以基于不同的公链开发,它不局限于任何一条公链。不同公链的智能合约方案实现也不同,下面以以太坊公链举例说明。

  在以太坊上面,开发NFT智能合约,已经有很多标准,比如ERC-7211155998,各有各的特点,但它们的特点是在基础属性上拓展而来的。

  如果选择ERC-721标准开发NFT智能合约,在元数据存储部分,就有tokenUrl这项,它相当于物质的唯一id,像下面的样子,_tokenURIs存储的就是通证当前计数id与其对应的tokenUrl,这里的tokenUrl是字符串格式,一般是文件url,存储在IPFS或其他服务上面的文件的链接,但不局限于链接,也可以是其它的内容。

  //伪代码

  contract MyERC721 is IERC721Metadata,...{

  ...

  mapping(uint256=>address)private _tokenOwner;

  mapping(uint256=>string)private _tokenURIs;

  uint256 public tokenCounter;//计数,当前总的NFT的数量,累增

  constructor()public ERC721("name","symbol"){

  tokenCounter=0;

  }

  //外部调用方,调用这个函数,传参数:tokenURI即物质的id,tokenURI唯一

  function createNFT(string memory tokenURI)public returns(uint256){

  uint256 tokenId=tokenCounter;

  _mint(msg.sender,tokenId);//将交易发送者和当前的tokenId绑定

  _setTokenURI(tokenId,tokenURI);//tokenId映射到tokenUrl

  tokenCounter=tokenCounter+1;//累加

  return tokenId;

  }

  //_exists函数判断tokenId是否存在,_tokenOwner[tokenId]

  //根据id读取对应的url

  function tokenURI(uint256 tokenId)external view returns(string memory){

  require(_exists(tokenId));

  return _tokenURIs[tokenId];

  }

  //根据tokenId和url建立map数据关系

  function _setTokenURI(uint256 tokenId,string memory uri)internal{

  require(_exists(tokenId));//_exists

  _tokenURIs[tokenId]=uri;

  }

  ...//省略系列接口,包含读接口

  }

  复制代码

  上面的tokenUrl是标准要求的存储数据项。整个合约具备下面约束功能:

  NFT持有者,即msg.sender(owner)和tokenId一对多关系,代表一个人可以拥有多个NFT;

  tokenId和tokenUrl一对一关系,代表每份数据一个链上的唯一id,同时tokenUrl没要求是唯一,但在调用方,一般会把tokenUrl设置唯一,即使不唯一也没关系,冲突的时候,tokenId越小的,其当初被设置的时间就越早;

  NFT持有者在将数据写入链上后,能够获取NFT的链上唯一id,后续可以根据id进行系列的读写操作。

  一般来说,我们常规的NFT有一个和数据建立关系的项就足够了,但并不局限于此,合约在实现了标准要求的接口后,完全可以自己添加自定义数据项及其读写函数。

  第三步:展示与修改

  展示NFT内容

  所谓展示,就是对NFT的数据进行读取再展示。一般的流程如下:

  根据当初设置NFT数据到链上时获得的id去智能合约读取信息;

  将获得的信息通过某介质应用还原出原始的NFT数据。

  比如将图片NFT展示出。(借助上面的721合约标准和IPFS结合为例)

  假设调用合约存储数据时候得到的tokenId是3,那么使用这个tokenId去调用合约的读数据方法;

  执行完1步骤,可以得到tokenUrl,即文件存储在IPFS中所得到的链接;

  直接将tokenUrl链接在浏览器打开,看到图片。

  修改NFT内容

  修改是一项NFT智能合约的拓展功能,可有可无,具体是怎样的方式,完全看需求的实现。比如:

  允许重置tokenId所对应的内容;

  在NFT原数据中增加其他字段内容,再允许修改这些字段;

  转让NFT,可以把某tokenId对应的NFT信息转让给其他owner,达到转让目的;

  出售NFT、拍卖NFT等操作....

  所有权共识

  目前NFT,非同质化通证。本质是想借助区块链的属性来标示一种资产的所有权证明。

  比如曾拍卖出6000多万美金的数字作品(图片)《Everydays:The First 5000 Days》,中标者能获得原图和该图的NFT。这两样东西,一样是实质的作品,一样是它的所有权者的证明。

  我们假设下,如果持有某作品的人,是一位匿名者A,过了多年后,该作品本身不小心被盗并被找回。那么如何证明A是真正的拥有者,此时A只需要展示他对该作品的NFT拥有权,就可以证明。

  那么NFT是不是类似于我们现实中的证书?不全是,分两点:

  NFT和证书都能证明某资产的所有权;

  对比的存储介质与永恒时效:

  证书可能要找个保险柜保养放着,但它终究占据一方土地,仅受一方土地容纳的保险柜保证安全,在时过境迁的影响下,持续性存储下去的时间会较短;

  NFT存储在区块链上,受整个互联网的链节点所保护。它能够存活到整个链网络垮掉那天,对于节点数量众多的公链来说,这个概率几乎等同于互联网终结那天。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
NFT铸造质押分红交易系统开发方案介绍
NFT铸造mint质押分红交易系统开发方案介绍,合约定制,功能开发
11 0
 NFT元宇宙质押挖矿系统开发<技术说明>
NFT元宇宙质押系统开发,现在出现了各种各样的区块链生态,因此必须要让这些链上环境实现互操作性。特别是一些开发者希望开发出跨链/模块化应用,在多个链上环境中维持统一的全局状态和流动性,这点尤其重要  智能合约是区块链的一种核心技术,具有自动化、去中心化、不可篡改、可执行性等特征,运用计算机代码将智能合约写入区块链,就能按时完成和执行成功一份网络合约。
11 0
数字藏品NFT商城开发NFT游戏平台开发技术(源码部署)
私有区块链(Private Block Chains):仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。传统金融都是想实验尝试私有区块链,而公链的应用例如bitcoin已经工业化,私链的应用产品还在摸索当中
49 0
NFT+DeFi链游系统开发技术
DeFi——区块链行业火热的概念之一,从 2020 年初 7 亿美元的总锁仓量一路飙升到了目前的 1216.6 亿美元,不到一年半的时间,总锁仓量扩大了 170 多倍。目前已经超过了德意志银行的资产总量。 什么是 DeFi? 让用户在无需依靠中心化机构的情况下,通过部署在智能合约平台上的去中心化应用(Dapp)完成一系列金融服务
36 0
NFT艺术品交易平台商城开发源码
从NFT的浪潮开始,我们可以清楚且直观的看到NFT的魅力,艺术品NFT、音乐NFT、奢侈品NFT……各个品牌和IP纷纷加入NFT的浪潮,切不可低估NFT的价值和未来。 艺术品NFT频频卖出高√价,有的人看中的是艺术品自身的收藏价值,有的人看中的是作为NFT的价值。NFT的出现可以说是开拓了艺术品交Y市场的新格局。
89 0
异步编程|五分钟让你学会局部刷新Ajax技术
Ajax是Asynchronous JavaScript and XML的缩写,是JavaScript、XML、CSS、DOM等多个技术的组合。Ajax的工作原理是一个页面的指定位置...
67 0
TensorFlow入门(五)多层 LSTM 通俗易懂版
前言:其实之前就已经用过 LSTM 了,是在深度学习框架 keras 上直接用的,但是到现在对LSTM详细的网络结构还是不了解,心里牵挂着难受呀!今天看了 tensorflow 文档上面推荐的这篇博文,看完这后,焕然大悟,对 LSTM 的结构理解基本上没有太大问题。
3925 0
【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(三)
【前言】别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得游手好闲,和你一样会抱怨,而只有你自己相信这些都是真的,最后,也只有你一个人继续不思进取 ……   【下载】个人结合诸多资料,总结的一些JavaEE常见面试题,主要针对初/中级程序员。想要word完整版下载的,评论里留言留下你的邮箱! 31.Spring中的BeanFactory和Applicati
1803 0
【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(五)
【前言】别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得游手好闲,和你一样会抱怨,而只有你自己相信这些都是真的,最后,也只有你一个人继续不思进取 ……   【下载】个人结合诸多资料,总结的一些JavaEE常见面试题,主要针对初/中级程序员。想要word完整版下载的,评论里留言留下你的邮箱! 51.事务的特性? 答:①原子性(Atomicity)  指
1769 0
【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(二)
【前言】别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得游手好闲,和你一样会抱怨,而只有你自己相信这些都是真的,最后,也只有你一个人继续不思进取 ……   【下载】个人结合诸多资料,总结的一些JavaEE常见面试题,主要针对初/中级程序员。想要word完整版下载的,评论里留言留下你的邮箱! 16.请写出hibernate中主键生成策略? 答:①incr
1889 0
+关注
搭建猿13z4z77z558
软件开发技术:13z4277z2558
文章
问答
文章排行榜
最热
最新
相关电子书
更多
支付商业变现解决方案
立即下载
变革:支付宝的支付进化论
立即下载
中汇技术:打造银行间市场本外币交易背后的共享服务平台
立即下载