Security
All contracts are immutable and not upgradable!
Balancer V2 uses an authorization mechanism which allows fine grained access control on a function level. At its core is the Authorizer contract which manages access to all protected function calls.
The default admin role does not give permission to execute any protected function but allows granting or revoking roles to other entities (or himself).
All entities which are granted the default admin role can grant and revoke execution roles on a function level. For singleton contracts like the Vault, all roles granted on it are bound to its contract address. So if we would deploy another Vault contract, roles granted on the 'old' Vault would not apply on the new one. For contracts deployed via a factory like the pools, roles are bound to all pools created by the same factory address. So if a role is granted on a StablePool created by the StablePoolFactory contract, then the role applies to all other StablePools created by this factory. It's bound to the StablePoolFactory address. So if we were to deploy another StablePoolFactory, pools created by it would not share the same access roles.
The MasterChef is the owner of the BeethovenX Token (BEETS) and is behind a 6h minimum delay timelock.
- minimum delay - 6h
- maximum delay - 30days
- delay - 6h
Beethoven X uses Balancer V2 contracts verbatim, which have completed several full audits and have a comprehensive bug bounty program; a program the Beethoven X financially contributes to.
We created a script which compares all deployed contracts from beethovenx against balancer. Make sure to enter your ftmscan & etherscan api keys
balancer-beethovenx-diff.py
3KB
Text
Output:
COMPARING 'vault' CONTRACT
contracts/vault/Vault.sol ✅
contracts/vault/interfaces/IAuthorizer.sol ✅
contracts/vault/interfaces/IWETH.sol ✅
contracts/vault/VaultAuthorization.sol ✅
contracts/vault/FlashLoans.sol ✅
contracts/vault/Swaps.sol ✅
contracts/lib/openzeppelin/IERC20.sol ✅
contracts/lib/helpers/BalancerErrors.sol ✅
contracts/lib/helpers/Authentication.sol ✅
contracts/lib/helpers/TemporarilyPausable.sol ✅
contracts/lib/helpers/SignaturesValidator.sol ✅
contracts/lib/openzeppelin/ReentrancyGuard.sol ✅
contracts/vault/interfaces/IVault.sol ✅
contracts/lib/helpers/IAuthentication.sol ✅
contracts/lib/helpers/ITemporarilyPausable.sol ✅
contracts/lib/helpers/ISignaturesValidator.sol ✅
contracts/lib/openzeppelin/EIP712.sol ✅
contracts/vault/interfaces/IAsset.sol ✅
contracts/vault/interfaces/IFlashLoanRecipient.sol ✅
contracts/vault/ProtocolFeesCollector.sol ✅
contracts/lib/helpers/InputHelpers.sol ✅
contracts/lib/openzeppelin/SafeERC20.sol ✅
contracts/vault/Fees.sol ✅
contracts/lib/math/FixedPoint.sol ✅
contracts/lib/math/LogExpMath.sol ✅
contracts/lib/math/Math.sol ✅
contracts/lib/openzeppelin/EnumerableMap.sol ✅
contracts/lib/openzeppelin/EnumerableSet.sol ✅
contracts/lib/openzeppelin/SafeCast.sol ✅
contracts/vault/PoolBalances.sol ✅
contracts/vault/interfaces/IPoolSwapStructs.sol ✅
contracts/vault/interfaces/IGeneralPool.sol ✅
contracts/vault/interfaces/IMinimalSwapInfoPool.sol ✅
contracts/vault/balances/BalanceAllocation.sol ✅
contracts/vault/PoolTokens.sol ✅
contracts/vault/UserBalance.sol ✅
contracts/vault/interfaces/IBasePool.sol ✅
contracts/vault/AssetManagers.sol ✅
contracts/vault/PoolRegistry.sol ✅
contracts/vault/balances/GeneralPoolsBalance.sol ✅
contracts/vault/balances/MinimalSwapInfoPoolsBalance.sol ✅
contracts/vault/balances/TwoTokenPoolsBalance.sol ✅
contracts/vault/AssetTransfersHandler.sol ✅
contracts/lib/helpers/AssetHelpers.sol ✅
contracts/lib/openzeppelin/Address.sol ✅
ALL SOURCES EQUAL
-------------------------------------------
COMPARING 'protocolFeesCollector' CONTRACT
contracts/vault/ProtocolFeesCollector.sol ✅
contracts/lib/openzeppelin/IERC20.sol ✅
contracts/lib/helpers/InputHelpers.sol ✅
contracts/lib/helpers/Authentication.sol ✅
contracts/lib/openzeppelin/ReentrancyGuard.sol ✅
contracts/lib/openzeppelin/SafeERC20.sol ✅
contracts/vault/interfaces/IVault.sol ✅
contracts/vault/interfaces/IAuthorizer.sol ✅
contracts/lib/helpers/BalancerErrors.sol ✅
contracts/vault/interfaces/IAsset.sol ✅
contracts/lib/helpers/IAuthentication.sol ✅
contracts/vault/interfaces/IWETH.sol ✅
contracts/vault/interfaces/IFlashLoanRecipient.sol ✅
contracts/lib/helpers/ISignaturesValidator.sol ✅
contracts/lib/helpers/ITemporarilyPausable.sol ✅
ALL SOURCES EQUAL
-------------------------------------------
COMPARING 'authorizer' CONTRACT
contracts/vault/Authorizer.sol ✅
contracts/vault/interfaces/IAuthorizer.sol ✅
contracts/lib/openzeppelin/AccessControl.sol ✅
contracts/lib/helpers/InputHelpers.sol ✅
contracts/lib/helpers/BalancerErrors.sol ✅
contracts/lib/openzeppelin/EnumerableSet.sol ✅
contracts/lib/openzeppelin/IERC20.sol ✅
contracts/vault/interfaces/IAsset.sol ✅
ALL SOURCES EQUAL
-------------------------------------------
COMPARING 'weightedPoolFactory' CONTRACT
contracts/pools/weighted/WeightedPoolFactory.sol ✅
contracts/vault/interfaces/IVault.sol ✅
contracts/pools/factories/BasePoolFactory.sol ✅
contracts/pools/factories/FactoryWidePauseWindow.sol ✅
contracts/pools/weighted/WeightedPool.sol ✅
contracts/lib/openzeppelin/IERC20.sol ✅
contracts/vault/interfaces/IWETH.sol ✅
contracts/vault/interfaces/IAsset.sol ✅
contracts/vault/interfaces/IAuthorizer.sol ✅
contracts/vault/interfaces/IFlashLoanRecipient.sol ✅
contracts/vault/ProtocolFeesCollector.sol ✅
contracts/lib/helpers/ISignaturesValidator.sol ✅
contracts/lib/helpers/ITemporarilyPausable.sol ✅
contracts/lib/helpers/InputHelpers.sol ✅
contracts/lib/helpers/Authentication.sol ✅
contracts/lib/openzeppelin/ReentrancyGuard.sol ✅
contracts/lib/openzeppelin/SafeERC20.sol ✅
contracts/lib/helpers/BalancerErrors.sol ✅
contracts/lib/helpers/IAuthentication.sol ✅
contracts/vault/interfaces/IBasePool.sol ✅
contracts/vault/interfaces/IPoolSwapStructs.sol ✅
contracts/lib/math/FixedPoint.sol ✅
contracts/pools/BaseMinimalSwapInfoPool.sol ✅
contracts/pools/weighted/WeightedMath.sol ✅
contracts/pools/weighted/WeightedPoolUserDataHelpers.sol ✅
contracts/lib/math/LogExpMath.sol ✅
contracts/pools/BasePool.sol ✅
contracts/vault/interfaces/IMinimalSwapInfoPool.sol ✅
contracts/lib/helpers/TemporarilyPausable.sol ✅
contracts/lib/openzeppelin/ERC20.sol ✅
contracts/pools/BalancerPoolToken.sol ✅
contracts/pools/BasePoolAuthorization.sol ✅
contracts/lib/openzeppelin/SafeMath.sol ✅
contracts/lib/math/Math.sol ✅
contracts/lib/openzeppelin/IERC20Permit.sol ✅
contracts/lib/openzeppelin/EIP712.sol ✅
ALL SOURCES EQUAL
-------------------------------------------
COMPARING 'weightedPool2TokensFactory' CONTRACT
contracts/pools/weighted/WeightedPool2TokensFactory.sol ✅
contracts/vault/interfaces/IVault.sol ✅
contracts/pools/factories/BasePoolFactory.sol ✅
contracts/pools/factories/FactoryWidePauseWindow.sol ✅
contracts/pools/weighted/WeightedPool2Tokens.sol ✅
contracts/lib/openzeppelin/IERC20.sol ✅
contracts/vault/interfaces/IWETH.sol ✅
contracts/vault/interfaces/IAsset.sol ✅
contracts/vault/interfaces/IAuthorizer.sol ✅
contracts/vault/interfaces/IFlashLoanRecipient.sol ✅
contracts/vault/ProtocolFeesCollector.sol ✅
contracts/lib/helpers/ISignaturesValidator.sol ✅
contracts/lib/helpers/ITemporarilyPausable.sol ✅
contracts/lib/helpers/InputHelpers.sol ✅
contracts/lib/helpers/Authentication.sol ✅
contracts/lib/openzeppelin/ReentrancyGuard.sol ✅
contracts/lib/openzeppelin/SafeERC20.sol ✅
contracts/lib/helpers/BalancerErrors.sol ✅
contracts/lib/helpers/IAuthentication.sol ✅
contracts/vault/interfaces/IBasePool.sol ✅
contracts/vault/interfaces/IPoolSwapStructs.sol ✅
contracts/lib/math/FixedPoint.sol ✅
contracts/lib/helpers/TemporarilyPausable.sol ✅
contracts/lib/openzeppelin/ERC20.sol ✅
contracts/pools/weighted/WeightedMath.sol ✅
contracts/pools/weighted/WeightedOracleMath.sol ✅
contracts/pools/weighted/WeightedPool2TokensMiscData.sol ✅
contracts/pools/weighted/WeightedPoolUserDataHelpers.sol ✅
contracts/pools/BalancerPoolToken.sol ✅
contracts/pools/BasePoolAuthorization.sol ✅
contracts/pools/oracle/PoolPriceOracle.sol ✅
contracts/pools/oracle/Buffer.sol ✅
contracts/vault/interfaces/IMinimalSwapInfoPool.sol ✅
contracts/pools/IPriceOracle.sol ✅
contracts/lib/math/LogExpMath.sol ✅
contracts/lib/openzeppelin/SafeMath.sol ✅
contracts/lib/math/Math.sol ✅
contracts/lib/helpers/WordCodec.sol ✅
contracts/pools/weighted/WeightedPool.sol ✅
contracts/pools/BaseMinimalSwapInfoPool.sol ✅
contracts/pools/BasePool.sol ✅
contracts/lib/openzeppelin/IERC20Permit.sol ✅
contracts/lib/openzeppelin/EIP712.sol ✅
contracts/pools/oracle/Samples.sol ✅
contracts/pools/oracle/IWeightedPoolPriceOracle.sol ✅
ALL SOURCES EQUAL
-------------------------------------------
COMPARING 'stablePoolFactory' CONTRACT
contracts/StablePoolFactory.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IVault.sol ✅
@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol ✅
@balancer-labs/v2-pool-utils/contracts/factories/FactoryWidePauseWindow.sol ✅
contracts/StablePool.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/IERC20.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/ISignaturesValidator.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/ITemporarilyPausable.sol ✅
@balancer-labs/v2-solidity-utils/contracts/misc/IWETH.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IAsset.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IAuthorizer.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IFlashLoanRecipient.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IProtocolFeesCollector.sol ✅
@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/WordCodec.sol ✅
@balancer-labs/v2-pool-utils/contracts/BaseGeneralPool.sol ✅
@balancer-labs/v2-pool-utils/contracts/BaseMinimalSwapInfoPool.sol ✅
contracts/StableMath.sol ✅
contracts/StablePoolUserDataHelpers.sol ✅
@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/BalancerErrors.sol ✅
@balancer-labs/v2-pool-utils/contracts/BasePool.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IGeneralPool.sol ✅
@balancer-labs/v2-solidity-utils/contracts/math/Math.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IBasePool.sol ✅
@balancer-labs/v2-pool-utils/contracts/BalancerPoolToken.sol ✅
@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol ✅
@balancer-labs/v2-asset-manager-utils/contracts/IAssetManager.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IPoolSwapStructs.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/IERC20Permit.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/IAuthentication.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IMinimalSwapInfoPool.sol ✅
ALL SOURCES EQUAL
-------------------------------------------
COMPARING 'liquidityBootstrappingPoolFactory' CONTRACT
contracts/BaseWeightedPool.sol ✅
@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol ✅
@balancer-labs/v2-pool-utils/contracts/BaseMinimalSwapInfoPool.sol ✅
contracts/WeightedMath.sol ✅
contracts/WeightedPoolUserDataHelpers.sol ✅
@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/BalancerErrors.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/IERC20.sol ✅
@balancer-labs/v2-pool-utils/contracts/BasePool.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IMinimalSwapInfoPool.sol ✅
@balancer-labs/v2-solidity-utils/contracts/math/Math.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/WordCodec.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IVault.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IBasePool.sol ✅
@balancer-labs/v2-asset-manager-utils/contracts/IAssetManager.sol ✅
@balancer-labs/v2-pool-utils/contracts/BalancerPoolToken.sol ✅
@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/ITemporarilyPausable.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/ISignaturesValidator.sol ✅
@balancer-labs/v2-solidity-utils/contracts/misc/IWETH.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IAsset.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IAuthorizer.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IFlashLoanRecipient.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IProtocolFeesCollector.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IPoolSwapStructs.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/IERC20Permit.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/IAuthentication.sol ✅
contracts/WeightedPool.sol ✅
contracts/WeightedPoolNoAMFactory.sol ✅
@balancer-labs/v2-pool-utils/contracts/factories/BasePoolSplitCodeFactory.sol ✅
@balancer-labs/v2-pool-utils/contracts/factories/FactoryWidePauseWindow.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol ✅
contracts/WeightedPoolFactory.sol ✅
@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol ✅
contracts/WeightedPool2Tokens.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/LogCompression.sol ✅
@balancer-labs/v2-pool-utils/contracts/interfaces/IPriceOracle.sol ✅
@balancer-labs/v2-pool-utils/contracts/oracle/PoolPriceOracle.sol ✅
@balancer-labs/v2-pool-utils/contracts/oracle/Buffer.sol ✅
contracts/WeightedOracleMath.sol ✅
contracts/WeightedPool2TokensMiscData.sol ✅
@balancer-labs/v2-pool-utils/contracts/interfaces/IPoolPriceOracle.sol ✅
@balancer-labs/v2-pool-utils/contracts/oracle/Samples.sol ✅
@balancer-labs/v2-pool-utils/contracts/test/oracle/MockSamples.sol ✅
@balancer-labs/v2-pool-utils/contracts/test/oracle/MockPoolPriceOracle.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol ✅
contracts/smart/LiquidityBootstrappingPool.sol ✅
contracts/smart/WeightCompression.sol ✅
contracts/smart/LiquidityBootstrappingPoolFactory.sol ✅
@balancer-labs/v2-solidity-utils/contracts/test/MockLogCompression.sol ✅
contracts/test/MockWeightedOracleMath.sol ✅
contracts/test/MockWeightedPool2Tokens.sol ✅
contracts/test/MockWeightedMath.sol ✅
ALL SOURCES EQUAL
-------------------------------------------
COMPARING 'metaStablePoolFactory' CONTRACT
contracts/meta/MetaStablePoolFactory.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IVault.sol ✅
@balancer-labs/v2-pool-utils/contracts/factories/BasePoolSplitCodeFactory.sol ✅
@balancer-labs/v2-pool-utils/contracts/factories/FactoryWidePauseWindow.sol ✅
contracts/meta/MetaStablePool.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/IERC20.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/ISignaturesValidator.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/ITemporarilyPausable.sol ✅
@balancer-labs/v2-solidity-utils/contracts/misc/IWETH.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IAsset.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IAuthorizer.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IFlashLoanRecipient.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IProtocolFeesCollector.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/BalancerErrors.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol ✅
@balancer-labs/v2-pool-utils/contracts/oracle/PoolPriceOracle.sol ✅
@balancer-labs/v2-pool-utils/contracts/interfaces/IRateProvider.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/LogCompression.sol ✅
@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol ✅
contracts/StablePool.sol ✅
contracts/meta/OracleMiscData.sol ✅
contracts/meta/StableOracleMath.sol ✅
@balancer-labs/v2-pool-utils/contracts/interfaces/IPriceOracle.sol ✅
@balancer-labs/v2-pool-utils/contracts/interfaces/IPoolPriceOracle.sol ✅
@balancer-labs/v2-pool-utils/contracts/oracle/Buffer.sol ✅
@balancer-labs/v2-pool-utils/contracts/oracle/Samples.sol ✅
@balancer-labs/v2-pool-utils/contracts/oracle/QueryProcessor.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/WordCodec.sol ✅
@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol ✅
@balancer-labs/v2-pool-utils/contracts/BaseGeneralPool.sol ✅
@balancer-labs/v2-pool-utils/contracts/BaseMinimalSwapInfoPool.sol ✅
contracts/StableMath.sol ✅
contracts/StablePoolUserDataHelpers.sol ✅
@balancer-labs/v2-pool-utils/contracts/BasePool.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IGeneralPool.sol ✅
@balancer-labs/v2-solidity-utils/contracts/math/Math.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IBasePool.sol ✅
@balancer-labs/v2-asset-manager-utils/contracts/IAssetManager.sol ✅
@balancer-labs/v2-pool-utils/contracts/BalancerPoolToken.sol ✅
@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IPoolSwapStructs.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/IERC20Permit.sol ✅
@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol ✅
@balancer-labs/v2-solidity-utils/contracts/helpers/IAuthentication.sol ✅
@balancer-labs/v2-vault/contracts/interfaces/IMinimalSwapInfoPool.sol ✅
ALL SOURCES EQUAL
-------------------------------------------
Last modified 11mo ago