NFT發行鑄造合集交易平臺系統開發原始碼部署

Lyr96246466發表於2023-04-17

  當一個智慧合約需要在區塊鏈上開發+18I鏈上合約-259l開發系統3365儲存資料或被其它智慧合約呼叫

(透過syscall System.Contract.Call)時,需要部署。而僅由合約賬戶鑑權觸發的合約,如鎖倉合約、多方簽名合約,不會被

其它合約呼叫,所以無需部署。像return 1+1這樣的合約,因為沒有任何需要輸入的引數,也無需部署。


  從程式語言的角度來說,當智慧合約要作為一個類庫使用時,才需要被部署。比如以下情況:


  當一個智慧合約有可變的傳入引數,此時它必須作為一個類庫,由呼叫者或者其它的智慧合約提供引數。


  當一個智慧合約使用儲存區(Storage)時,必須作為一個類庫。


  當一個智慧合約實現了NEP-17(合約資產)時,需要將該合約部署到區塊鏈上。


  智慧合約的部署是透過交易呼叫API來部署。通常的做法是透過Neo-CLI或Neo-GUI的智慧合約釋出功能來部署合約。


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 複製貼上一份新的。


NFT 代表非同質化代幣。 非同質化是一個經濟術語,您可以用它來描述傢俱、歌曲檔案或您的電腦等物品。 這些東西不能與其他物品互換,因為它們具有獨特屬性。


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

相關文章