最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

NFT卡牌盲盒系統(tǒng)開發(fā)(開發(fā)案例)丨NFT卡牌盲盒開發(fā)源碼詳情

2023-07-08 09:59 作者:bili_36625761919  | 我要投稿

作為一種可能的Web3.0底層技術(shù),區(qū)塊鏈以去中心化、不可篡改、可溯源等特點(diǎn),構(gòu)建起數(shù)字經(jīng)濟(jì)時代的全新信任體系。


  從技術(shù)角度分析,區(qū)塊鏈讓數(shù)字資產(chǎn)價值流轉(zhuǎn)的每一個節(jié)點(diǎn)都公開透明、有跡可循且不可篡改,這將會讓W(xué)eb3.0時代的一切交易變得更加真實(shí)可信。


  同時,數(shù)據(jù)通過區(qū)塊鏈技術(shù)可以確定權(quán)屬,實(shí)現(xiàn)數(shù)據(jù)的資產(chǎn)化,這也將使得區(qū)塊鏈成為Web3.0時代的基礎(chǔ)設(shè)施。


  //SPDX-License-Identifier:MIT


  pragma solidity^0.8.10;


  import"openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";


  import"openzeppelin/contracts/access/Ownable.sol";


  import"openzeppelin/contracts/utils/Strings.sol";


  contract NftMeta is ERC721Enumerable,Ownable{


  using Strings for uint256;


  //是否準(zhǔn)許nft開賣-開關(guān)


  bool public _isSaleActive=false;


  //初始化盲盒,等到一定時機(jī)可以隨機(jī)開箱,變成true


  bool public _revealed=false;


  //nft的總數(shù)量


  uint256 public constant MAX_SUPPLY=10;


  //鑄造Nft的價格


  uint256 public mintPrice=0.3 ether;


  //鑄造的錢包最多只能有一個nft數(shù)量


  uint256 public maxBalance=1;


  //一次mint的nft的數(shù)量


  uint256 public maxMint=1;


  //盲盒開關(guān)打開后,需要顯示開箱的圖片的base地址


  string baseURI;


  //盲盒圖片的meta,json地址,后文會提到


  string public notRevealedUri;


  //默認(rèn)地址的擴(kuò)展類型


  string public baseExtension=".json";


  mapping(uint256=>string)private _tokenURIs;


  //構(gòu)造器


  constructor(string memory initBaseURI,string memory initNotRevealedUri)


  ERC721("Nft Meta","NM")//實(shí)現(xiàn)了ERC721的父類構(gòu)造器,是子類繼承的一種實(shí)現(xiàn)方式


  {


  setBaseURI(initBaseURI);


  setNotRevealedURI(initNotRevealedUri);


  }


  //外部地址進(jìn)行鑄造nft的函數(shù)調(diào)用


  function mintNftMeta(uint256 tokenQuantity)public payable{


  //校驗(yàn)總供應(yīng)量+每次鑄造的數(shù)量<=nft的總數(shù)量


  require(


  totalSupply()+tokenQuantity<=MAX_SUPPLY,


  "Sale would exceed max supply"


  );


  //校驗(yàn)是否開啟開賣狀態(tài)


  require(_isSaleActive,"Sale must be active to mint NicMetas");


  //校驗(yàn)鑄造的錢包地址中的nft的數(shù)量+本次鑄造的數(shù)量<=該錢包最大擁有的nft的數(shù)量


  require(


  balanceOf(msg.sender)+tokenQuantity<=maxBalance,


  "Sale would exceed max balance"


  );


  //校驗(yàn)本次鑄造的數(shù)量*鑄造的價格<=本次消息附帶的eth的數(shù)量


  require(


  tokenQuantity*mintPrice<=msg.value,


  "Not enough ether sent"


  );


  //校驗(yàn)本次鑄造的數(shù)量<=本次鑄造的最大數(shù)量


  require(tokenQuantity<=maxMint,"Can only mint 1 tokens at a time");


  //以上校驗(yàn)條件滿足,進(jìn)行nft的鑄造


  _mintNftMeta(tokenQuantity);


  }


  //進(jìn)行鑄造


  function _mintNftMeta(uint256 tokenQuantity)internal{


  for(uint256 i=0;i<tokenQuantity;i++){


  //mintIndex是鑄造nft的序號,按照總供應(yīng)量從0開始累加


  uint256 mintIndex=totalSupply();


  if(totalSupply()<MAX_SUPPLY){


  //調(diào)用erc721的安全鑄造方法進(jìn)行調(diào)用


  _safeMint(msg.sender,mintIndex);


  }


  }


  }


  //返回每個nft地址的Uri,這里包含了nft的整個信息,包括名字,描述,屬性等


  function tokenURI(uint256 tokenId)


  public


  view


  virtual


  override


  returns(string memory)


  {


  require(


  _exists(tokenId),


  "ERC721Metadata:URI query for nonexistent token"


  );


  //盲盒還沒開啟,那么默認(rèn)是一張黑色背景圖片或者其他圖片


  if(_revealed==false){


  return notRevealedUri;


  }


NFT卡牌盲盒系統(tǒng)開發(fā)(開發(fā)案例)丨NFT卡牌盲盒開發(fā)源碼詳情的評論 (共 條)

分享到微博請遵守國家法律
山丹县| 尼勒克县| 凤冈县| 苍梧县| 织金县| 邹平县| 大新县| 普兰店市| 阳东县| 汕尾市| 青铜峡市| 巴林右旗| 青神县| 永兴县| 麦盖提县| 随州市| 呼图壁县| 丰台区| 庆元县| 田东县| 双流县| 嘉黎县| 襄城县| 奉贤区| 达孜县| 临安市| 珠海市| 南召县| 遂溪县| 布拖县| 冕宁县| 晋宁县| 夏河县| 连南| 罗城| 竹北市| 出国| 新昌县| 沙坪坝区| 永定县| 安平县|