永續合約/秒合約/合約量化/量化合約系統開發詳情/原始碼功能/成熟案例

開發MrsFu123發表於2023-04-23

  The development technology of smart contract dapps is mainly supported by the Ethereum blockchain network,which provides a series of smart contract technologies that enable developers to quickly and safely build powerful dapps.The development technology of smart contract dapp mainly includes Ethereum smart contract language Solidity,Ethereum smart contract framework Truffle,Web3.js,Ethereum blockchain browser Mist,etc


  The characteristic of Web3.0 is the use of blockchain and other enabling technologies such as AI and cryptography to create a more fair,secure,and private online ecosystem.


  The development trend of web3.0 is to create decentralized networks,protocols,and applications,promoting the exchange of value and information in a trustless and secure manner.


  1、mint功能實現


  雖然可以直接呼叫OZ的ERC721.sol的_safeMint函式來實現mint,但最好外面再封裝一層,寫自己的mint函式,你可以寫一個huhu_mint,裡面呼叫OZ的_safeMint即可。


  自己寫mint的好處是:至少可以控制鑄造NFT的價格,以及每個地址可以mint的數量。


  類似的可以考慮銷燬(burn)功能,burn就是取消某tokenID和具體地址的繫結,或者理解為把這個tokenID轉給地址0。直接用OZ的_burn函式即可。


  2、轉移功能實現


  不用自己寫,直接用OZ的ERC721.sol。


  3、查詢功能實現


  不用自己寫,用OZ的ERC721.sol及ERC721Enumerable.sol(列舉)即可。


  ERC721主要提供的查詢是:


  balanceOf函式,查詢某個地址持有的token數量。


  ownerOf函式,查詢某token的持有者地址。


  ERC721Enumerable提供瞭如下3個功能:


  注意最重要的是:totalSupply函式,呼叫它返回目前已經鑄造出來的NFT的個數。


  tokenByIndex函式用來查詢第index個token的ID是多少,也就是說透過這個函式和totalSupply函式,就可以遍歷所有鑄造出來的token。


  tokenOfOwnerByIndex函式,給它一個地址和一個編號index,可以告訴你該地址擁有的第index個token是啥。結合balanceOf函式,就可以遍歷一個地址擁有的所有token的ID。


  4、後設資料功能實現


  OZ提供了IERC721Metadata介面,但功能是在ERC721.sol中實現的。


  主要是實現了name、symbol和tokenURI函式,呼叫後分別返回NFT名、NFT的縮寫符號、token後設資料的連結。


  尤其注意tokenURI函式,給它一個tokenID,它返回該token後設資料所在的URI。


  你還需要自己實現一個外部可見的函式,用來設定baseURI(注意使用onlyOwner)。這樣,如果原先的儲存不可用了,就可以換一個地方存。


  然後,重寫_baseURI這個ERC721.sol中的內部函式,使之可以返回正確的根目錄URI。


  function setBaseURI(string memory _newBaseURI)public onlyOwner{


  baseURI=_newBaseURI;


  }


  function _baseURI()internal view virtual override returns(string memory){


  return baseURI;


  }


  比如對於BAYC這個NFT,他的baseURI在:


  ipfs://QmeSjSinHpPnmXmspMjwiXyN6zS4E9zccariGR3jxcaWtq/


  然後,第23號猿猴的tokenURI就在:


  ipfs://QmeSjSinHpPnmXmspMjwiXyN6zS4E9zccariGR3jxcaWtq/23


  讀取其中的內容,就是:


  {image:ipfs://QmadJd1GgsSgXn7RtrcL8FePionDyf4eQEsREcvdqh6eQe,attributes:[{trait_type:Mouth,value:Bored Pipe},{trait_type:Background,value:Aquamarine},{trait_type:Fur,value:Trippy},{trait_type:Eyes,value:Bored},{trait_type:Hat,value:Beanie}]}


  5、合約後設資料功能實現


  實現一個contractURI函式2,告訴OpenSea你的NFT collection(收藏集)的後設資料,比如收藏集的名字、描述、背景圖、外部連結等。


  比如可以寫成這樣:


  {


  "image":"


  "external_link":"


  "seller_fee_basis_points":100,#Indicates a 1%seller fee.


  "fee_recipient":"0xA97F337c39cccE66adfeCB2BF99C1DdC54C2D721"


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

相關文章