pragma solidity ^0.4.25; contract Sample{ //State variables address private _admin; uint private _state; //Modifier modifier onlyAdmin(){ require(msg.sender == _admin, "You are not admin"); _; } //Events event SetState(uint value); //Constructor constructor() public{ _admin = msg.sender; } //Functions function setState(uint value) public onlyAdmin{ _state = value; emit SetState(value); } function getValue() public view returns (uint){ return _state; } function stringSample() public view returns(bytes){ string memory str = "abc"; bytes memory b = bytes(str); //0x616263 return b; } }
1. 状态变量
状态变量是合约的骨髓,它记录了合约的业务信息。用户可以通过函数来修改这些状态变量,这些修改也会被包含到交易中;交易经过区块链网络确认后,修改即为生效。
如:
uint private _state;
2.局部变量
比如stringSample()函数中的
string memory str = "abc";
3. 全局变量
示例合约代码的构造函数中,包含msg.sender。它属于全局变量。
在智能合约中,全局变量或全局方法可用于获取和当前区块、交易相关的一些基本信息,如块高、块时间、合约调用者等。