Solidity合同的結構

Solidity中的Contracts與面嚮對象語言中的類相似。每個合約都可以包含狀態變量函數, 函數修飾符事件結構類型枚舉類型的聲明。此外,合約可以繼承其他合約

還有一些特殊的合約稱爲接口

狀態變量

狀態變量是其值永久存儲在合約存儲中的變量。

pragma solidity >=0.4.0 <0.6.0;

contract SimpleStorage {
    uint storedData; // State variable
    // ...
}

有關可見性的可能選擇,請參閱類型部分以獲取有效的狀態變量類型和 可見性和獲取者。

功能

函數是合約中可執行的代碼單元。

pragma solidity >=0.4.0 <0.6.0;

contract SimpleAuction {
    function bid() public payable { // Function
        // ...
    }
}

函數調用可以在內部或外部發生,並且 對其他合約具有不同的可見性級別。

功能修改器

函數修飾符可用於以聲明方式修改函數的語義(請參閱合同部分中的函數修飾符)。

pragma solidity >=0.4.22 <0.6.0;

contract Purchase {
    address public seller;

    modifier onlySeller() { // Modifier
        require(
            msg.sender == seller,
            "Only seller can call this."
        );
        _;
    }

    function abort() public view onlySeller { // Modifier usage
        // ...
    }
}

事件

事件是與EVM日誌記錄工具的便捷接口。

pragma solidity >=0.4.21 <0.6.0;

contract SimpleAuction {
    event HighestBidIncreased(address bidder, uint amount); // Event

    function bid() public payable {
        // ...
        emit HighestBidIncreased(msg.sender, msg.value); // Triggering event
    }
}

有關如何聲明事件以及可以在dapp中使用事件的信息,請參閱合約中的事件部分。

結構類型

結構是自定義類型,可以對多個變量進行分組(請參閱 類型中的結構部分)。

pragma solidity >=0.4.0 <0.6.0;

contract Ballot {
    struct Voter { // Struct
        uint weight;
        bool voted;
        address delegate;
        uint vote;
    }
}

枚舉類型

枚舉可用於創建具有有限“常量值”集的自定義類型(請參閱 類型部分中的枚舉)。

pragma solidity >=0.4.0 <0.6.0;

contract Purchase {
    enum State { Created, Locked, Inactive } // Enum
}

下一個  以前

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章