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 }