玩转solidity --02合约的结构
2018-04-11 本文已影响10人
DavieKong
Solidity的合约和面向对象语言中的类的定义相似。每个合约包括了 状态变量,函数,函数修饰符,事件,结构类型 和枚举类型。另外,合约也可以从其他合约中继承 。
状态变量
状态变量是在合约存贮器中永久存贮的值
pragma solidity ^0.4.0;
contract SimpleStorage {
uint storedData; // State variable
// ...
}
函数
函数是合约中可执行单位的代码
pragma solidity ^0.4.0;
contract SimpleAuction {
function bid() public payable { // Function
// ...
}
}
函数修饰符
函数修饰符可以在声明的方式中补充函数的语义
pragma solidity ^0.4.11;
contract Purchase {
address public seller;
modifier onlySeller() { // Modifier
require(msg.sender == seller);
_;
}
function abort() public onlySeller { // Modifier usage
// ...
}
}
事件
事件是和EVM(以太虚拟机)日志设施的方便的接口
pragma solidity ^0.4.21;
contract SimpleAuction {
event HighestBidIncreased(address bidder, uint amount); // Event
function bid() public payable {
// ...
emit 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
}
``