天天看點

深入了解Solidity——合約結構合約結構

合約結構

在 Solidity 中,合約類似于面向對象程式設計語言中的類。 每個合約中可以包含

狀态變量

函數

函數修飾器

事件

結構類型

、 和

枚舉類型

的聲明,且合約可以從其他合約繼承。

狀态變量

狀态變量是永久地存儲在合約存儲中的值。

pragma solidity ^;

contract SimpleStorage {
    uint storedData; // 狀态變量
    // ...
}
           

有效的狀态變量類型參閱 類型 章節, 對狀态變量可見性有可能的選擇參閱 Visibility and Getters 。

函數

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

pragma solidity ^;

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

Function Calls 可發生在合約内部或外部,且函數對其他合約有不同程度的可見性( Visibility and Getters)。

函數修飾器

函數修飾器可以用來以聲明的方式改良函數語義(參閱合約章節中 Function Modifiers)。

pragma solidity ^;

contract Purchase {
    address public seller;

    modifier onlySeller() { // 修飾器
        require(msg.sender == seller);
        _;
    }

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

事件

事件是與以太坊虛拟機日志工具的友善接口。

pragma solidity ^;
contract SimpleAuction {
    event HighestBidIncreased(address bidder, uint amount); // 事件

    function bid() public payable {
        // ...
        HighestBidIncreased(msg.sender, msg.value); // 觸發事件
    }
}
           

有關如何聲明事件和如何在 dapp 中使用事件的資訊,參閱合約章節中的 Events。

結構類型

結構是可以将幾個變量分組的自定義類型(參閱類型章節中的 Structs)。

pragma solidity ^.0;

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

枚舉類型

枚舉可用來建立有一定數量的值的自定義類型(參閱類型章節中的 Enums)。

pragma solidity ^.;

contract Purchase {
    enum State { Created, Locked, Inactive } // 枚舉
}
           

上一篇:深入了解Solidity——Solidity源檔案結構

下一篇:深入了解Solidity——值類型

繼續閱讀