Skip to content

Solidity Global & Members API

Solidity global variables and members covering transaction context, assertions, transfers and events.

1 class · 8 methods

Global API & Members

8 methods

Solidity 全局 API 与合约成员集合。

msg.sender

当前调用的发起者地址(合约或外部账户)。

Returns

address payable,调用者地址

Example

solidity
function who() external view returns (address) {
  return msg.sender;
}
msg.value

本次调用附带的 wei 数量。

Returns

uint256,wei 数量

Example

solidity
function deposit() external payable {
  require(msg.value > 0, "no value");
  balances[msg.sender] += msg.value;
}
block.timestamp

当前区块的时间戳(秒)。

Returns

uint256,Unix 秒级时间戳

Example

solidity
function nowPlusOneHour() external view returns (uint256) {
  return block.timestamp + 1 hours;
}
require(condition, reason)

断言条件,失败时回滚交易并返回原因字符串。

Parameters

NameTypeDescription
conditionbool断言条件
reasonstring失败原因(可选)

Returns

无,失败时回滚

Example

solidity
function transfer(address to, uint256 amt) external {
  require(amt > 0, "amount must be positive");
  require(balances[msg.sender] >= amt, "insufficient");
  balances[msg.sender] -= amt;
  balances[to] += amt;
}
payable(addr).transfer(amount)

向地址转账指定 wei,失败回滚。

Parameters

NameTypeDescription
addressaddress payable收款地址
amountuint256wei 数量

Returns

无,转账或回滚

Example

solidity
function withdraw(uint256 amt) external {
  require(balances[msg.sender] >= amt, "low balance");
  balances[msg.sender] -= amt;
  payable(msg.sender).transfer(amt);
}
address(this).balance

查询当前合约的以太币余额。

Returns

uint256,合约持有的 wei

Example

solidity
function contractBalance() external view returns (uint256) {
  return address(this).balance;
}
keccak256(data)

计算 bytes 数据的 Keccak-256 哈希。

Parameters

NameTypeDescription
databytes memory待哈希数据

Returns

bytes32,32 字节哈希

Example

solidity
function hashId(uint256 id) external pure returns (bytes32) {
  return keccak256(abi.encodePacked(id));
}
emit Event(...)

触发事件,日志写入交易回执供外部监听。

Parameters

NameTypeDescription
eventevent事件名
args...事件参数

Returns

无,写入日志

Example

solidity
event Deposited(address indexed from, uint256 amount);

function deposit() external payable {
  emit Deposited(msg.sender, msg.value);
}