数字藏品NFT商城开发NFT游戏平台开发技术(源码部署)

简介: 私有区块链(Private Block Chains):仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。传统金融都是想实验尝试私有区块链,而公链的应用例如bitcoin已经工业化,私链的应用产品还在摸索当中

私有区块链(Private Block Chains):仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。传统金融都是想实验尝试私有区块链,而公链的应用例如bitcoin已经工业化,私链的应用产品还在摸索当中
 NFT智能合约可以基于不同的公链开发,它不局限于任何一条公链。不同公链的智能合约方案实现也不同,下面以以太坊公链举例说明。
  在以太坊上面,开发NFT智能合约,已经有很多标准,比如ERC-7211155998,各有各的特点,但它们的特点是在基础属性上拓展而来的。
  如果选择ERC-721标准开发NFT智能合约,在元数据【180-系统3831-开发9724薇】存储部分,就有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存储在区块链上,受整个互联网的链节点所保护。它能够存活到整个链网络垮掉那天,对于节点数量众多的公链来说,这个概率几乎等同于互联网终结那本文由系统开发对接威:lovei130908编辑整理发布天。
去中心化。区块链技术不依赖额外的第三方管理机构或硬件设施,没有中心管制,除了自成一体的区块链本身,通过分布式核算和存储,各个节点实现了信息自我验证、传递和管理。去中心化是区块链最突出最本质的特征

相关文章
|
机器学习/深度学习 人工智能 数据可视化
文心千帆大模型测评分享,效果超出预期
文心千帆大模型测评分享,效果超出预期
354 1
|
人工智能 自然语言处理 数据处理
AIGC塑造大模型时代的数据标注新生态
AIGC塑造大模型时代的数据标注新生态
569 3
AIGC塑造大模型时代的数据标注新生态
|
7月前
|
弹性计算 自然语言处理 Ubuntu
从0开始在阿里云上搭建基于通义千问的钉钉智能问答机器人
本文描述在阿里云上从0开始构建一个LLM智能问答钉钉机器人。LLM直接调用了阿里云百炼平台提供的调用服务。
从0开始在阿里云上搭建基于通义千问的钉钉智能问答机器人
|
SQL 人工智能 自然语言处理
如何诱导AI犯罪-提示词注入
我们用到的大模型基本把政治类信息、犯罪相关信息都已屏蔽。但是,黑客依旧可以使用提示词诱导和提示词注入的方式对大模型进行攻击。
如何诱导AI犯罪-提示词注入
|
9月前
|
Windows
电脑网络图标消失了怎么办?3步教你找回,简单快捷!
当电脑网络图标消失,宽带和WiFi图标变成一个球时,可通过以下步骤解决:1. 使用快捷键`Win+R`输入`services.msc`进入服务管理器;2. 找到并启动Wired AutoConfig、WLAN AutoConfig和WLAN Direct服务,设置启动类型为自动;3. 重启电脑验证问题是否解决。此方法可恢复网络功能。
1037 0
|
负载均衡 监控 网络协议
玩核心交换机,必须掌握的6个知识点!
玩核心交换机,必须掌握的6个知识点!
1010 1
一文教会你如何在论文中插入参考文献的角标
这篇文章介绍了在撰写论文时如何添加参考文献编号,并在文中插入这些参考文献的角标,以及如何通过点击文献编号跳转到对应的参考文献列表。
一文教会你如何在论文中插入参考文献的角标
|
SQL 存储 NoSQL
MongoDB和MySQL的区别
前言: MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。它们各有各的优点,关键是看用在什么地方。
10813 23
|
NoSQL Go 开发工具
Go 语言开发工具Eclipse
Go 语言开发工具Eclipse
199 0