MilosMicun/solidity-libraries-demo

GitHub: MilosMicun/solidity-libraries-demo

演示 Solidity 库架构模式的 ETH Vault 示例项目,展示可复用逻辑与协议状态的分离设计。

Stars: 0 | Forks: 0

# Solidity 库示例 关于 Solidity 中**基于库的协议架构**的简单演示。 该项目展示了如何使用**库**将可复用的守卫逻辑与协议状态分离,同时保持安全的状态转换和可测试的行为。 使用 **Foundry** 构建。 ## 概述 本仓库实现了一个支持以下功能的最小化 **ETH Vault**: - 存款 - 取款 - 通过可复用库守卫进行余额验证 旨在演示以下架构模式: 合约 → 协议状态 库 → 可复用逻辑 测试 → 状态转换验证 这种分离提高了**代码复用性、可读性和可审计性**。 ## 架构 ### BalanceLib 协议使用的可复用守卫逻辑。 ``` function requireBalance(uint256 available, uint256 required) internal pure The function reverts with a custom error if a user attempts to withdraw more than their balance. Key properties: implemented as an internal Solidity library uses custom errors for gas efficiency reusable across multiple contracts Vault Protocol contract responsible for: holding ETH custody tracking user balances executing deposits and withdrawals State: mapping(address => uint256) public balances; Conceptual invariant: sum(balances) == address(vault).balance Withdrawals follow the Checks → Effects → Interactions pattern to prevent reentrancy. Testing Tests are written using Foundry. Covered scenarios: deposit increases user balance withdraw decreases user balance and transfers ETH withdraw above balance reverts with InsufficientBalance Run tests with: forge test -vv Project Structure src/ BalanceLib.sol Vault.sol test/ Vault.t.sol Key Concepts Demonstrated Solidity libraries using for pattern custom errors protocol accounting vs EVM balance checks-effects-interactions Foundry testing workflow Build & Test forge build forge test forge fmt Why Libraries? Libraries allow protocol logic to be reused safely across contracts without duplicating code. Benefits: smaller attack surface easier audits consistent validation logic cleaner contract architecture License MIT ```
标签:Checks-Effects-Interactions, DeFi, EVM, Foundry, Gas优化, Solidity, Using-for, Web3, 代码复用, 以太坊, 余额验证, 区块链开发, 协议架构, 单元测试, 存款取款, 安全模式, 库模式, 智能合约, 自定义错误, 金库协议, 防重入攻击