NFT數字藏品系統開發(開發案例)丨數字藏品系統開發(詳細及規則)丨原始碼部署

xiaofufu發表於2023-04-03

  數字藏品其實是NFT的一種應用形式,即使用區塊鏈技術,對應特定的作品、藝術品生成的weiyi數字憑證,在保護其數字版權的基礎上,實現真實可信的數字化發行、購買、收藏和使用。


  各數藏平臺一般將數字藏品定義為:一種限量發行的虛擬文化商品,包括但不限於數字畫作、圖片、音樂、影片、3D模型等各種形式,它使用區塊鏈技術記錄其鏈上確權、發行、購買、使用等流程。每一份數字藏品對應特定的作品、開發功能威:MrsFu123,藝術品,擁有鏈上獨一無二的序列號wei yi所有權憑證,不可篡改、不可拆分、不可複製。


  關於區塊鏈專案技術開發唯:MrsFu123,代幣發行、dapp智慧合約開發、鏈遊開發、單雙幣質押、多鏈錢包開發、NFT盲盒遊戲、公鏈、鏈上游戲開發


  Uniswap博餅、交易所開發、量化合約開發、合約對沖、互助遊戲開發、Nft數字藏品開發、眾籌互助開發、元宇宙開發、swap開發、DAO智慧合約、


  夾子合約、鏈上合約開發、ido開發、商城開發等,開發過各種各樣的系統模式,更有多種模式、制度、案例、後臺等,成熟技術團隊,歡迎實體參考。


  鑄造


  基本函式


  鑄造使用了_mint函式,其函式定義是:


  function _mint(address to,uint256 quantity)internal virtual


  1


  該函式規定了以下引數:


  to鑄造NFT接受地址


  quantity鑄造的NFT數量


  由於ERC721A只能鑄造固定數量的NFT,所以無法指定鑄造NFT的tokenID


  其函式的執行邏輯簡單如下:


  執行_beforeTokenTransfers,此函式應根據具體目的編寫


  設定_packedOwnerships,以方便查詢NFT的擁有者


  設定_packedAddressData,方便查詢某一使用者的所有NFT


  釋放Transfer事件


  執行_afterTokenTransfers,此函式應根據具體目的編寫


  接下來,我們將結合程式碼進行分析。


執行的_beforeTokenTransfers和最後執行的


  _afterTokenTransfers都是由使用者自定義的函式,用於實現白名單等功能。函式具體定義如下:


  function _beforeTokenTransfers(


  address from,


  address to,


  uint256 startTokenId,


  uint256 quantity


  )internal virtual{}


  function _afterTokenTransfers(


  address from,


  address to,


  uint256 startTokenId,


  uint256 quantity


  )internal virtual{}


  讀者可根據自身需求,透過繼承覆蓋的方式定義這兩個函式。


  接下來,我們設定一些核心資料,這些資料的設定是_mint函式的核心。值得注意的是,這些函式都定義在unchecked程式碼塊中,因為NFT的各個引數設定不會產生溢位情況,透過unchecked可以避免編譯過程中插入溢位檢查程式碼以減少gas消耗。


  簡而言之,在某些已經確定不會出現資料溢位的場景中使用unchecked包裹程式碼可以減少gas消耗


  最開始,我們設定表示NFT所有者的_packOwnershipData資料結構,具體設定方法如下:


  _packedOwnerships[startTokenId]=_packOwnershipData(


  to,


  _nextInitializedFlag(quantity)|_nextExtraData(address(0),to,0)


  );


  為方便讀者理解程式碼,在此處,我們給出_packedOwnerships的定義:


  //Bits Layout:


  //-[0..159]`addr`


  //-[160..223]`startTimestamp`


  //-[224]`burned`


  //-[225]`nextInitialized`


  //-[232..255]`extraData`


  mapping(uint256=>uint256)private _packedOwnerships;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2943537/,如需轉載,請註明出處,否則將追究法律責任。

相關文章