值类型: bool public isActive = true; uint256 public number = 100; int256 public signedNumber = -50; bytes32 public hash; string public name = "Hello"; `引用类型:`solidity uint256[] public numbers; mapping(address => uint256) public balances; struct Person { string name; uint256 age; }
六、3 函数
1 2
函数类型: // 修改状态
}
1
// 只读函数(view)
}
1 2 3
// 纯函数(pure) function calculate(uint256 a, uint256 b)public pure returns(uint256) { return a + b;
}
1 2 3
// 支付函数(payable) function deposit()public payable { balances[msg.sender] += msg.value;
定义接口: interface IERC20 { function transfer(address to, uint256 amount) external returns (bool); function balanceOf(address account) external view returns (uint256); } `实现接口:`solidity contract MyToken is IERC20 { mapping(address => uint256) private balances; function transfer(address to, uint256 amount) external override returns (bool) { balances[msg.sender] -= amount; balances[to] += amount; return true; } function balanceOf(address account) external view override returns (uint256) { return balances[account]; }
十二、3 库
1 2 3 4 5 6
创建库: library SafeMath { functionadd(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c;
}
使用库:solidity
1
using SafeMath for uint256;
1 2
function add(uint256 a, uint256 b)public pure returns(uint256) { return a.add(b); // 使用库函数
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14
### 十三、4 事件
定义事件: event Transfer(address indexed from, address indexed to, uint256 value);
function transfer(address to, uint256 amount) public { // 转账逻辑 emit Transfer(msg.sender, to, amount); } `监听事件:```javascript contract.on("Transfer", (from, to, value) => { console.log(`Transfer: ${from} -> ${to}, ${value}`); });