MilosMicun/solidity-proxy-patterns

GitHub: MilosMicun/solidity-proxy-patterns

一个专注于 Solidity 代理模式与 delegatecall 机制的实验教学项目,通过可复现的漏洞演示帮助理解 EVM 存储行为与代理架构的安全边界。

Stars: 0 | Forks: 0

# 🧠 Solidity 代理与 Delegatecall 模式 对 EVM 执行上下文、存储行为和代理架构的底层探索。 ## 📚 涵盖主题 - Delegatecall 与 Call - 执行上下文与 `msg.sender` - 存储布局与 Slot 行为 - 存储碰撞漏洞 - 代理模式 (fallback + delegatecall) - 最小代理 (EIP-1167 克隆) ## 🧪 实验 ### Delegatecall 与 Call 相同的函数调用。 不同的执行上下文。 不同的存储结果。 - `call` → 修改目标合约的存储 - `delegatecall` → 修改调用者合约的存储 ### 存储碰撞 不匹配的存储布局: - 相同的 Slot - 不同的含义 结果: - 关键状态覆盖 (`owner`) ### 代理模式 用户与代理合约交互。 - 代理合约转发 calldata - 实现合约执行逻辑 - 状态存储在代理合约中 ### 最小代理 (EIP-1167) 工厂合约部署轻量级代理实例。 - 共享实现合约 - 每个实例拥有独立的存储 - 部署成本低 ## ⚠️ 核心洞察 合约之间的存储布局必须保持一致。 ## 🧠 核心心智模型 - 代码存在于 **实现合约** 中 - 状态存在于 **代理合约** 中 - 执行上下文决定了状态变更的位置 ## 📌 总结 相同的代码。 不同的存储。 截然不同的系统行为。
标签:Delegatecall, EIP-1167, EVM, Exploit, Fallback函数, Proxy Pattern, Solidity, Storage Collision, Web3安全, 代理模式, 以太坊, 区块链安全, 去中心化应用, 合约审计, 合约漏洞, 存储布局, 存储槽, 密码学, 底层调用, 手动系统调用, 智能合约, 智能合约开发, 最小代理, 状态覆盖