balancer/balancer-v2-monorepo

GitHub: balancer/balancer-v2-monorepo

Balancer V2核心智能合约仓库,提供通用AMM协议的完整实现,包括Vault架构、多种流动性池类型和流动性挖矿系统。

Stars: 353 | Forks: 364

# Balancer # Balancer V2 Monorepo [![文档](https://img.shields.io/badge/docs-%F0%9F%93%84-blue)](https://docs.balancer.fi/) [![CI 状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/7a5ee9c1f7213324.svg)](https://github.com/balancer-labs/balancer-v2-monorepo/actions) [![许可证](https://img.shields.io/badge/License-GPLv3-green.svg)](https://www.gnu.org/licenses/gpl-3.0) 本代码仓库包含 Balancer Protocol V2 的核心智能合约,包括 `Vault` 和标准 Pool,以及它们的测试。 部署配置和信息可以在 [`balancer-deployments repository`](https://github.com/balancer/balancer-deployments) 中找到。 有关 Balancer V2 的高层介绍,请参阅 [Introducing Balancer V2: Generalized AMMs](https://medium.com/balancer-protocol/balancer-v2-generalizing-amms-16343c4563ff)。 ## 结构 这是一个 Yarn monorepo,旨在 [`pkg`](./pkg) 目录中发布的包。新开发的包可能尚未发布。 积极的开发工作在本代码仓库中进行,这意味着其中的某些合约可能尚未达到生产就绪状态。请谨慎使用。 ### 包 - [`v2-interfaces`](./pkg/interfaces):所有合约的 Solidity 接口。 - [`v2-vault`](./pkg/vault):[`Vault`](./pkg/vault/contracts/Vault.sol) 合约和所有核心接口,包括 [`IVault`](./pkg/interfaces/contracts/vault/IVault.sol) 和 Pool 接口:[`IBasePool`](./pkg/interfaces/contracts/vault/IBasePool.sol)、[`IGeneralPool`](./pkg/interfaces/contracts/vault/IGeneralPool.sol) 和 [`IMinimalSwapInfoPool`](./pkg/interfaces/contracts/vault/IMinimalSwapInfoPool.sol)。 - [`v2-pool-weighted`](./pkg/pool-weighted):[`WeightedPool`](./pkg/pool-weighted/contracts/WeightedPool.sol) 和 [`LiquidityBootstrappingPool`](./pkg/pool-weighted/contracts/lbp/LiquidityBootstrappingPool.sol) 合约,以及它们关联的工厂。 - [`v2-pool-linear`](./pkg/pool-linear):[`LinearPool`](./pkg/pool-linear/contracts/LinearPool.sol) 合约及其关联的工厂。衍生的 Linear Pool 可以在 [Orb Collective repo](https://github.com/orbcollective/linear-pools) 中找到。 - [`v2-pool-utils`](./pkg/pool-utils):用于开发 Pool 合约的 Solidity 工具。 - [`v2-solidity-utils`](./pkg/solidity-utils):用于许多不同合约的各种 Solidity 辅助工具和实用程序。 - [`v2-standalone-utils`](./pkg/standalone-utils):各种独立的实用程序合约。 - [`v2-liquidity-mining`](./pkg/liquidity-mining):构成流动性挖矿 系统的合约。 - [`v2-governance-scripts`](./pkg/governance-scripts):执行复杂治理操作的合约。 ## 前置条件 使用 Node 18,下面的构建和测试说明应该可以直接运行。具体来说,建议使用 LTS 版本 18.15.0;不支持 Node 19 及更高版本。Node 18.16.0 有一个[已知问题](https://github.com/NomicFoundation/hardhat/issues/3877),会导致构建不稳定。 可以在同一系统中安装多个 Node 版本,可以手动安装,也可以使用版本管理器安装。 快速选择建议的 Node 版本的一种方法是使用 `nvm`,并运行: ``` $ nvm use ``` ## 克隆 本代码仓库使用 git submodules;克隆时请使用 `--recurse-submodules` 选项。例如,使用 https: ``` $ git clone --recurse-submodules https://github.com/balancer/balancer-v2-monorepo.git ``` ## 构建和测试 在运行任何测试之前,需要准备代码仓库: ### 首次构建 ``` $ yarn # install all dependencies $ yarn workspace @balancer-labs/balancer-js build # build balancer-js first ``` ### 常规构建 ``` $ yarn build # compile all contracts ``` 大多数测试是独立的,只需要安装依赖项并进行编译。 为了运行所有测试(包括那些有额外依赖项的测试),请运行: ``` $ yarn test # run all tests ``` 要改为运行单个包的测试,请运行: ``` $ cd pkg/ # e.g. cd pkg/v2-vault $ yarn test ``` 您可以在[此处](./audits/test-report.md)查看测试运行的示例报告。 ### Foundry (Forge) 测试 要运行 Forge 测试,首先[安装 Foundry](https://book.getfoundry.sh/getting-started/installation)。下面的安装步骤适用于 Linux 或 MacOS。请访问链接了解更多选项。 ``` $ curl -L https://foundry.paradigm.xyz | bash $ source ~/.bashrc # or open a new terminal $ foundryup ``` 然后,要运行单个包中的测试,请运行: ``` $ cd pkg/ # e.g. cd pkg/v2-vault $ yarn test-fuzz ``` ## 安全性 [Certora](https://www.certora.com/)、[OpenZeppelin](https://openzeppelin.com/) 和 [Trail of Bits](https://www.trailofbits.com/) 进行了多次独立审查和审计。这些工作的最新报告位于 [`audits`](./audits) 目录中。 漏洞赏金计划适用于本代码仓库中托管的大多数智能合约:请前往 Immunefi 上的 [Balancer V2 Bug Bounty](https://immunefi.com/bug-bounty/balancer/information/) 了解更多。 所有核心智能合约都是不可变的,无法升级。请参阅 [Trail of Bits audit](https://github.com/balancer-labs/balancer-v2-monorepo/blob/master/audits/trail-of-bits/2021-04-02.pdf) 的第 6 页: ## 许可 大多数 Solidity 源代码根据 GNU General Public License Version 3 (GPL v3) 授权:请参阅 [`LICENSE`](./LICENSE)。 ### 例外 - [`v2-solidity-utils`](./pkg/solidity-utils) 包的 `openzeppelin` 目录中的所有文件均基于 [OpenZeppelin Contracts](https://github.com/OpenZeppelin/openzeppelin-contracts) 库,因此根据 MIT License 授权:请参阅 [LICENSE](./pkg/solidity-utils/contracts/openzeppelin/LICENSE)。 - [`v2-solidity-utils`](./pkg/solidity-utils) 包中的 `LogExpMath` 合约根据 MIT License 授权。 - 所有其他文件,包括测试和 [`pvt`](./pvt) 目录均未授权。
标签:AMM, Balancer, DeFi, DEX, MITM代理, Solidity, Vault, Web3, WeightedPool, 代币交换, 以太坊, 加密货币, 区块链, 去中心化交易所, 去中心化金融, 智能合约, 流动性池, 自动做市商, 自动化攻击, 自动化攻击