1. 程式人生 > >Solidity編程 四 之 智能合約的結構

Solidity編程 四 之 智能合約的結構

以及 function imp class 以太坊 str end reat sender

  Solidity的智能合約和面向對象語言中的類很相似。每個智能合約可以包含的元素有:state變量的定義,方法,函數修改器,事件,結構類型以及枚舉類型。同時合約可以繼承於另外一個合約

state變量

Solidity裏的state變量表示的是永久的存儲在合約的存儲中。

pragma solidity ^0.4.0;

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

方法

方法是合約裏的可執行單元。方法可以被合約內部或是外部(另外一個合約)調用,對於其他合約訪問權限,可以設置不同的可見性。

pragma solidity ^0.4.0;

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

方法修改器

方法修改器通過聲明的方式來修改方法的語法。

pragma solidity ^0.4.11;

contract Purchase {
    address public seller;

    modifier onlySeller() { // Modifier
        require(msg.sender == seller);
        _;
    }

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

事件

事件是作為以太坊虛擬機上的記錄工具,提供了方便的接口,

pragma solidity ^0.4.0;

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

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

結構類型

結構是一種常用的數據結構,可以很方便的把多種變量組合在一起

pragma solidity ^0.4.0;

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

枚舉類型

枚舉用於創建一組有限的值的集合

pragma solidity ^0.4.0;

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

Solidity編程 四 之 智能合約的結構