函数和事件
Solidity 函数修饰符、错误处理和事件日志。
发布于 2026年5月30日0 views
Solidity 函数负责执行合约逻辑,事件负责把关键行为记录到链上日志里,方便前端和索引服务读取。
函数类型
常见函数状态修饰符:
view:只读状态,不修改链上数据。pure:不读也不写链上状态。payable:可以接收 ETH。
function getCount() external view returns (uint256) {
return count;
}
function add(uint256 a, uint256 b) external pure returns (uint256) {
return a + b;
}modifier
modifier 用来复用函数前置检查逻辑。
address public owner;
modifier onlyOwner() {
require(msg.sender == owner, "Not owner");
_;
}
function withdraw() external onlyOwner {
// withdraw logic
}_ 表示继续执行原函数。
require / revert
require 常用于参数和权限检查:
require(amount > 0, "Invalid amount");revert 用于主动回滚:
if (amount == 0) {
revert("Invalid amount");
}回滚后,本次交易里的状态修改都会撤销。
event
事件用于记录链上日志。
event Transfer(address indexed from, address indexed to, uint256 amount);
function transfer(address to, uint256 amount) external {
emit Transfer(msg.sender, to, amount);
}indexed 字段方便前端或索引服务按条件过滤。
注意事项
- 重要状态变化建议 emit event。
- event 不能被合约内部直接读取,主要给链下系统使用。
require失败会回滚交易。- modifier 不要写太复杂,避免隐藏业务逻辑。
总结
函数负责执行逻辑,modifier 负责复用检查,require / revert 负责失败回滚,event 负责把关键行为记录给链下系统读取。