1. 三种低级调用方式对比
| 调用方式 | 是否切换上下文(storage/msg.sender/msg.value) | 是否能改状态 | 特点与用途 |
|:-------------- |:------------------------------------- |:------ |:----------------------- |
| call | ✅ 切换到被调用合约 | ✅ | 最通用的外部调用,可带 ETH,可调用任意函数 |
| delegatecall | ❌ 保持当前合约上下文 | ✅ | 代理模式核心,让当前合约执行别人的代码 |
| staticcall | ✅ 切换到被调用合约 | ❌ | 安全读取外部数据,不改状态 |