NFT 鑄造交易 OpenSea 平臺系統開發案例技術介紹

Lyr96246466發表於2023-04-15

  NFT是一種數字化代幣或者資產,開發+18I鏈上合約-259l開發系統3365-+可以把它理解為一種數字交易代幣或者數字藝

術品,每當你購買一個NFT,實際上你買的是這個數字資產的所有權。


  NFT翻譯為非同質化代幣,每個NFT生成以後不能更改,它一定是和其他的數字資產不一樣,例如一個比特幣一定是和另

一個比特幣是完全一樣,而每個NFT都是不一樣的,實際上一個NFT的背後只是一串隨機生成的程式碼,NFT擁有者只是擁有了一

串永遠不變並且性的程式碼,那麼在技術層面的NFT到底是什麼?


pragma solidity ^0.8.4;


import '@openzeppelin/contracts/token/ERC721/ERC721.sol';

import '@openzeppelin/contracts/access/Ownable.sol';


// 繼承ERC721, Ownable

contract SimpleMintContract is ERC721, Ownable {

    // mint 價格

    uint256 public mintPrice = 0.05 ether;

    // 總共曾經被mint數量

    uint256 public totalSupply;

    // 能夠mint的最大數量

    uint256 public maxSupply;

    // 是否開啟mint

    bool public isMintEnabled;

    // 每個地址mint => 數量

    mapping(address => uint256) public mintedWallets;


    // 建構函式,部署合約的時候,設定最大數量為2

    constructor() payable ERC721('Simple Mint', 'SIMPLEMINT') {

        maxSupply = 2;

    }


    // 內部呼叫函式,開啟mint

    function toggleIsMintEnabled() external onlyOwner {

        isMintEnabled = !isMintEnabled;

    }


    // 設定最大mint數量

    function setMaxSuppley(uint256 _maxSupply) external onlyOwner {

        maxSupply = _maxSupply;

    }


    // mint函式

    function mint() external payable {

        // require判斷函式,前半部判斷為false,則丟擲後半區域性資訊

        // 判斷是否開啟mint

        require(isMintEnabled, 'minting not enabled');

        // 判斷地址是否曾經mint

        require(mintedWallets[msg.sender] < 1, 'exceeds max per wallet');

        // 判斷髮送到合約的eth數量是否跟mint價格一樣

        require(msg.value == mintPrice, 'wrong value');

        // 判斷是否還有能夠mint的數量

        require(maxSupply > totalSupply, 'sold out');


        mintedWallets[msg.sender]++;

        totalSupply++;

        uint256 tokenId = totalSupply;

        _safeMint(msg.sender, tokenId);

    }

}


NFT實際上就是一串程式碼指向到一個數字地址,誰獲得了這串程式碼的密碼,誰的地址就擁有了這串程式碼,這串程式碼可以被買賣交易到不同的數字地址,這串程式碼是被區塊鏈所認證,你可以檢視每一個NFT的歷史記錄。舉個例子,比如一個數字貓咪賣了六十萬美元,實際上就是一個數字地址擁有的一串程式碼,這個人只是擁有了那一小串程式碼,這串程式碼放到了某個儲存圖片的伺服器裡。


技術上來講,誰擁有這個伺服器,誰還能更改這張圖片,所以你必須要知道你買來的NFT其實只是一串放在某個伺服器上的程式碼,這個程式碼被賦予了某張圖片音訊或者影片,你也必須知道這個伺服器可以被更改,這個圖片音訊或者影片可以被更改,你只是在區塊鏈上擁有了這小串程式碼,你沒有這個伺服器的管理權,也沒有這張圖片的管理權,你只是擁有了一串指向這個伺服器的程式碼,而這串程式碼被賦予了一張圖片。


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

相關文章