区块链 以太坊 全局变量 状态变量 局部变量 是什么 区别
Posted 软件工程小施同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链 以太坊 全局变量 状态变量 局部变量 是什么 区别相关的知识,希望对你有一定的参考价值。
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。它属于全局变量。
在智能合约中,全局变量或全局方法可用于获取和当前区块、交易相关的一些基本信息,如块高、块时间、合约调用者等。
以上是关于区块链 以太坊 全局变量 状态变量 局部变量 是什么 区别的主要内容,如果未能解决你的问题,请参考以下文章
在Solana中使用固定PDA账号实现管理员权限验证和全局状态变量保存