NFT盲盒鑄造質押借貸dapp系統開發合約定製詳情

nice1022發表於2023-03-07

寫NFT合約要實現哪些功能

比如你要發行一套NFT,系統開發I34-案例I633-演示53I9,你要怎麼寫合約呢?


這個合約要實現至少以下幾個功能:

1、“鑄造”(mint)功能。

NFT是非同質化代幣,也就是一種“幣”(token)了。

根據我前面的NFT科普文章,所謂鑄造,就是在區塊鏈上記載了一個token的ID和其擁有者的地址。


2、轉移功能。

要能讓擁有者把一個token轉移給另外一個人。


3、查詢功能。

要能查詢某個token在誰手裡,一個人有多少token,等等這種類似功能。


4、後設資料功能。

後設資料這個術語,其實就是描述某事物各種屬性的資訊。由於圖片一般比較大,所以圖片本身都不放在以太坊上,而是放在web上或者IPFS上,鏈上只是儲存了一個連結資訊。


合約有了後設資料功能,提供了tokenURI函式,人們就可以透過該函式的呼叫,獲取某個token的後設資料連結,然後讀取後設資料,並最終取得其影像。


5、合約後設資料功能。

如果你想把你的NFT放在OpenSea上作為一個Collection(收藏集)出現,就要讓OpenSea能獲取關於你Collection的一些基本設定。


6、其他功能

比如團隊分賬功能(團隊成員按一定的比例獲取收益)、白名單預售功能(只有白名單裡的人才能在預售階段mint)等等。


import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
……
contract MyNFT is Ownable, ERC721Enumerable, PaymentSplitter {
……
function setBaseURI(string memory _newBaseURI) public onlyOwner {
    baseURI = _newBaseURI;
  }
function _baseURI() internal view virtual override returns (string memory) {
    return baseURI;
  }
  {
  "name": "",
  "description": "NFT",
  "image": "
  "external_link": "
  "seller_fee_basis_points": 100, # Indicates a 1% seller fee.
  "fee_recipient": "0xA97F337c39cccE66adfeCB2BF99C1DdC54C2D721" 
}
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
pragma solidity ^0.4.22;contract SimpleStorage{
    uint storedDate;
    
    function set (uint x) public{
        storedDate = x;
    }
    function get() public view returns(uint){
        return storedDate;
    }}
pragma solidity ^0.4.22;contract SolidityTest{
    constructor() public{
    } 
    function getResult() public view returns(uint){
    
   	//這是單行註釋
   	/*
   	*這是多行註釋
   	*類似其他語言的註釋
   	*/
        uint a = 1;
        uint b = 2;
        uint result = a + b;
        return result;
    }}


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

相關文章