Error Codes

Balancer uses custom errors which provide a convenient and gas-efficient way to explain why an operation failed. Comments and context for the specific errors can be found in the tables below.

governance-scripts

BalancerContractRegistryInitializer

ErrorArgumentsCommentSignature
AlreadyInitializedThe initialization can only be done once.0x0dc149f0
PermissionNotGrantedA permission required to complete the initialization was not granted.0xe5557e90
VaultMismatchThe Vault passed in as a sanity check doesn't match the Vault associated with the registry.0xc1faacc5

ProtocolFeeControllerMigration

ErrorArgumentsCommentSignature
AlreadyMigratedMigration can only be performed once.0xca1c3cbc
InvalidFeeControllerAttempt to deploy this contract with invalid parameters.0xd6f1cb05

interfaces

interfaces/oracles

ILPOracleBase

ErrorArgumentsCommentSignature
InvalidOraclePriceOracle prices must be greater than zero to prevent zero or negative TVL values.0x1f8f95a0
UnsupportedDecimalsA price feed has decimals greater than the maximum allowed.0xd4f1d302

ILPOracleFactoryBase

ErrorArgumentsCommentSignature
OracleAlreadyExists(IBasePool,bool,AggregatorV3Interface[],ILPOracleBase)pool: IBasePool, shouldUseBlockTimeForOldestFeedUpdate: bool, feeds: AggregatorV3Interface[], oracle: ILPOracleBaseOracle already exists for the given pool.0xbcb86005
OracleFactoryIsDisabledOracle factory is disabled.0xb110e99d

ISequencerUptimeFeed

ErrorArgumentsCommentSignature
SequencerDownThe uptime sequencer has returned a status of "down".0x032b3d00
SequencerResyncIncompleteA price feed was accessed while still within the resync window (e.g., after a sequencer outage).0xed1bba46

interfaces/pool-cow

ICowPoolFactory

ErrorArgumentsCommentSignature
InvalidTrustedCowRouterThe trusted CoW router cannot be address zero.0xb4d8fbf3

ICowRouter

ErrorArgumentsCommentSignature
InsufficientFunds(IERC20,uint256,uint256)token: IERC20, senderCredits: uint256, senderDebits: uint256The funds transferred to the Vault and the swap tokenOut amount were not enough to pay for the Swap and Donate operation.0x0e60796c
InvalidFeeSweeperThe caller tried to set the zero address as the fee sweeper.0x05a399e2
ProtocolFeePercentageAboveLimit(uint256,uint256)newProtocolFeePercentage: uint256, maxProtocolFeePercentage: uint256The newProtocolFeePercentage is above the maximum limit.0xe76c2b23
SwapDeadlineThe swap transaction was not validated before the specified deadline timestamp.0xe08b8af0

interfaces/pool-gyro

IGyro2CLPPool

ErrorArgumentsCommentSignature
SqrtParamsWrongThe informed alpha is greater than beta.0x0579e1da

interfaces/pool-hooks

IECLPSurgeHook

ErrorArgumentsCommentSignature
InvalidImbalanceSlopeThrown when an invalid imbalance slope is provided.0x450a9fed
InvalidRotationAngleThe rotation angle is too small or too large for the surge hook to be used.0x4988ec15

IMevCaptureHook

ErrorArgumentsCommentSignature
InvalidBalancerContractRegistryThe BalancerContractRegistry set in the constructor is invalid.0x5c84f39b
MevCaptureHookNotRegisteredInPool(address)pool: addressThe pool was not registered with the MEV Hook contract.0x7501acd8
MevSwapFeePercentageAboveMax(uint256,uint256)feePercentage: uint256, maxFeePercentage: uint256The new max MEV swap fee percentage is above the allowed absolute maximum.0x20fb3f00
MevTaxExemptSenderAlreadyAdded(address)sender: addressThe sender is already registered as MEV tax-exempt.0x106fa5a4
SenderNotRegisteredAsMevTaxExempt(address)sender: addressThe sender is not registered as MEV tax-exempt.0x01147f3f

ISurgeHookCommon

ErrorArgumentsCommentSignature
InvalidPercentageThe max surge fee and threshold values must be valid percentages.0x1f3b85d3

interfaces/pool-weighted

IFixedPriceLBPool

ErrorArgumentsCommentSignature
InvalidInitializationAmountAn initialization amount is invalid (e.g., zero token balance, or non-zero reserve).0xfc3e9be7
InvalidProjectTokenRateThe token sale price cannot be zero.0x2d889800
TokenSwapsInUnsupportedAll fixed price LBPools are "buy only;" token swaps in are not supported.0x0ad2684a

ILBPMigrationRouter

ErrorArgumentsCommentSignature
IncorrectMigrationRouter(address,address)expectedRouter: address, actualRouter: addressA router called migrate on a pool that was not the one specified on deployment.0x2a6ef7fc
NoRegisteredWeightedPoolFactoryThe Balancer Contract Registry did not return an active address for the "WeightedPool" alias.0x66d89320
SenderIsNotLBPOwnerThe caller is not the owner of the LBP.0xea37ac06

ILBPool

ErrorArgumentsCommentSignature
InsufficientRealReserveBalance(uint256,uint256)reserveTokenAmountOut: uint256, reserveTokenRealBalance: uint256The amount out of the reserve token cannot exceed the real balance.0x37153449
SeedlessLBPInitializationWithNonZeroReserveIf the LBP is seedless, the caller must initialize with 0 reserve tokens.0x26704f1c

IWeightedPool

ErrorArgumentsCommentSignature
MinWeightIndicates that one of the pool tokens' weight is below the minimum allowed.0xbd393583
NormalizedWeightInvariantIndicates that the sum of the pool tokens' weights is not FixedPoint.ONE.0x39cf114e

interfaces/solidity-utils/helpers

IAuthentication

ErrorArgumentsCommentSignature
SenderNotAllowedThe sender does not have permission to call a function.0x23dada53

interfaces/standalone-utils

IBalancerContractRegistry

ErrorArgumentsCommentSignature
ContractAddressAlreadyRegistered(ContractType,address)contractType: ContractType, contractAddress: addressA contract has already been registered under the given address.0x961be8b5
ContractAddressNotRegistered(address)contractAddress: addressAn operation that requires a valid contract specified an unrecognized address.0xf5b5d364
ContractAliasInUseAsName(ContractType,string)contractType: ContractType, contractName: stringThe proposed alias has already been registered as a contract.0xcc986f2b
ContractAlreadyDeprecated(address)contractAddress: addressContracts can only be deprecated once.0x1f118c35
ContractNameAlreadyRegistered(ContractType,string)contractType: ContractType, contractName: stringA contract has already been registered under the given name.0x0626a7b0
ContractNameInUseAsAlias(string,address)contractName: string, contractAddress: addressThe proposed contract name has already been added as an alias.0x6d4f9990
ContractNameNotRegistered(string)contractName: stringThrown when attempting to deregister a contract that was not previously registered.0xcd3599f9
InvalidContractAliasCannot add an empty string as an alias.0x907f9fd9
InvalidContractNameCannot register (or deregister) a contract with an empty string as a name.0x830c907e
ZeroContractAddressCannot register or deprecate contracts, or add an alias targeting the zero address.0xb4d92c53

IBalancerFeeBurner

ErrorArgumentsCommentSignature
BufferNotInitialized(address)wrappedToken: addressBuffer not initialized for the wrapped token.0x85f41299
BurnPathDoesNotExistBurn path not set for the fee token.0xf9aa0315
InvalidBufferTokenOut(IERC20,uint256)tokenOut: IERC20, step: uint256Invalid token out for buffer step.0x5a5e9413
TargetTokenOutMismatchThe last token in the path is not the same as the target token.0xa682e903
TokenDoesNotExistInPool(IERC20,uint256)token: IERC20, step: uint256Token does not exist in pool.0x9ef7cd5c

ICowConditionalOrder

ErrorArgumentsCommentSignature
OrderNotValid(string)reason: stringThis error is returned by the getTradeableOrder function if the order conditions are not met.0xc8fc2725
PollNever(string)reason: stringThe conditional order should not be polled again (i.e., deleted).0x981b64cd
PollTryAtBlock(uint256,string)blockNumber: uint256, reason: stringPolling should be retried at a specific block number.0x1fe8506e
PollTryAtEpoch(uint256,string)timestamp: uint256, reason: stringPolling should be retried at a specific epoch (unix timestamp).0x7e334637
PollTryNextBlock(string)reason: stringPolling should be retried at the next block.0xd05f3065

ICowSwapFeeBurner

ErrorArgumentsCommentSignature
InterfaceIsSignatureVerifierMuxerFails on SignatureVerifierMuxer due to compatibility issues with ComposableCow.0x32798566
InvalidOrderParameters(string)reason: stringThe order parameters were invalid.0x8d8a6110
OrderHasUnexpectedStatus(OrderStatus)actualStatus: OrderStatusAttempt to revert an order that had not failed.0x3ba126d8

IHyperEVMRateProviderFactory

ErrorArgumentsCommentSignature
RateProviderAlreadyExists(uint32,uint32,address)tokenIndex: uint32, pairIndex: uint32, rateProvider: addressA rate provider already exists for the given token and pair.0xf4c64ee1
RateProviderFactoryIsDisabledThe factory is disabled.0x42fb89b8
RateProviderNotFound(uint32,uint32)tokenIndex: uint32, pairIndex: uint32The rate provider was not found for the given token and pair.0xdc120e77

IPoolHelperCommon

ErrorArgumentsCommentSignature
IndexOutOfBounds(uint256)poolSetId: uint256An index is beyond the current bounds of the set.0x44945fcc
InvalidPoolSetId(uint256)poolSetId: uint256Pool set id associated with an operation is invalid.0x98592ddb
InvalidPoolSetManagerThe initial manager of a pool set cannot be zero.0x2de5256e
PoolAlreadyInSet(address,uint256)pool: address, poolSetId: uint256Cannot add a pool that is already there.0x5a17aa8d
PoolNotInSet(address,uint256)pool: address, poolSetId: uint256Cannot remove a pool that was not added.0x80145d72
PoolSetManagerNotUnique(address)poolSetManager: addressPool set managers can only manage a single pool set.0x2c35aa96
SenderIsNotPoolSetManagerPermissioned operations on pools can only be performed by the pool set manager.0xbcc08f74

IPoolSwapFeeHelper

ErrorArgumentsCommentSignature
PoolHasSwapManager(address)pool: addressCannot add a pool that has a swap manager.0xf043494a

IProtocolFeeBurner

ErrorArgumentsCommentSignature
AmountOutBelowMin(IERC20,uint256,uint256)tokenOut: IERC20, amountOut: uint256, minAmountOut: uint256The actual amount out is below the minimum limit specified for the operation.0x9eabe649
SwapDeadlineThe swap transaction was not validated before the specified deadline timestamp.0xe08b8af0

IProtocolFeeSweeper

ErrorArgumentsCommentSignature
BurnerDidNotConsumeAllowanceThe burner did not consume its entire allowance.0xc5bc8d51
InvalidFeeRecipientThe fee recipient is invalid.0x768dc598
InvalidProtocolFeeBurnerThe protocol fee burner to be added is invalid.0x31ec2736
InvalidTargetTokenThe target token is invalid.0x8562eb45
ProtocolFeeBurnerAlreadyAdded(address)protocolFeeBurner: addressProtocol fee burners can only be added to the allowlist once.0x6fe47af6
ProtocolFeeBurnerNotAdded(address)protocolFeeBurner: addressProtocol fee burners must be added to the allowlist before being removed.0xbca5ab34
UnsupportedProtocolFeeBurner(address)protocolFeeBurner: addressThe specified fee burner has not been approved.0x38553f6c
UnwrapIsNotAllowedUnwrapping is not allowed for the operation.0xca9e3a1e

ITokenPairRegistry

ErrorArgumentsCommentSignature
BufferNotInitialized(address)buffer: addressThe given buffer address does not correspond to an initialized buffer.0x85f41299
EmptyPathThe path to add cannot be empty.0x20a2d33d
IndexOutOfBoundsAttempted to remove a path at an index beyond the registered length.0x4e23d035
InvalidBufferPath(address,address,address)buffer: address, tokenIn: address, tokenOut: addressThe output token does not match the expected address in a wrap or unwrap operation.0x29198c3d
InvalidRemovePath(address,address,address)poolOrBuffer: address, tokenIn: address, tokenOut: addressThe given pool or buffer is not registered as a path for the token pair.0x3a9458d9
InvalidSimplePath(address)path: addressThe given address is not a valid pool or buffer.0xb309199b

interfaces/vault

IBasePoolFactory

ErrorArgumentsCommentSignature
DisabledAttempted pool creation after the factory was disabled.0x75884cda
IndexOutOfBoundsA pool index is beyond the current bounds of the array.0x4e23d035

ICompositeLiquidityRouterErrors

ErrorArgumentsCommentSignature
DuplicateTokenIn(address)duplicateToken: addressThe tokensIn array contains a duplicate token.0x60a054e0
WrongTokensOut(address[],address[])actualTokensOut: address[], expectedTokensOut: address[]The actual result of the liquidity removal operation does not match the expected set of tokens.0x94ae280c

IERC20MultiTokenErrors

ErrorArgumentsCommentSignature
PoolTotalSupplyTooLow(uint256)totalSupply: uint256The total supply of a pool token can't be lower than the absolute minimum.0xd38d20fc

IProtocolFeeController

ErrorArgumentsCommentSignature
CallerIsNotPoolCreator(address,address)caller: address, pool: addressError raised if the wrong account attempts to withdraw pool creator fees.0xfbecdbf4
PoolCreatorFeePercentageTooHighError raised when the pool creator swap or yield fee percentage exceeds the maximum allowed value.0x0370da74
PoolCreatorNotRegistered(address)pool: addressError raised if there is no pool creator on a withdrawal attempt from the given pool.0x8bcbf353
ProtocolSwapFeePercentageTooHighError raised when the protocol swap fee percentage exceeds the maximum allowed value.0x7e6eb7fb
ProtocolYieldFeePercentageTooHighError raised when the protocol yield fee percentage exceeds the maximum allowed value.0xa7849e8e

IProtocolFeePercentagesProvider

ErrorArgumentsCommentSignature
FactoryFeesNotSet(address)factory: addresssetFactorySpecificProtocolFeePercentages has not been called for this factory address.0xa589c09e
PoolNotFromFactory(address,address)pool: address, factory: addressThe given pool is not from the expected factory.0xf400ce63
UnknownFactory(address)factory: addressFees can only be set on recognized factories (i.e., registered in the BalancerContractRegistry).0xc2a47384
WrongProtocolFeeControllerDeploymentThe protocol fee controller was configured with an incorrect Vault address.0x1bbe95c7

IRouterCommon

ErrorArgumentsCommentSignature
OperationNotSupportedThe operation not supported by the router (e.g., permit2 operation when pre-paid).0x29a270f5

ISenderGuard

ErrorArgumentsCommentSignature
EthTransferIncoming ETH transfer from an address that is not WETH.0x0540ddf6
SwapDeadlineThe swap transaction was not validated before the specified deadline timestamp.0xe08b8af0

IUnbalancedAddViaSwapRouter

ErrorArgumentsCommentSignature
AmountInAboveMaxAdjustableAmount(uint256,uint256)amountIn: uint256, maxAdjustableAmount: uint256The amountIn for the adjustable token exceeds the maxAdjustableAmount specified.0xbe24bb39
AmountInDoesNotMatchExact(uint256,uint256)amountIn: uint256, exactAmount: uint256The amountIn for the exact token does not match the exactAmount specified.0xc1820fbb
NotTwoTokenPoolThis router only supports two-token pools.0xfc20f864

IVaultErrors

ErrorArgumentsCommentSignature
AfterAddLiquidityHookFailedThe pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert.0xe1249165
AfterInitializeHookFailedThe pool has returned false to the afterInitialize hook, indicating the transaction should revert.0x0f23dbc6
AfterRemoveLiquidityHookFailedThe pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert.0x1d3391d8
AfterSwapHookFailedThe pool has returned false to the afterSwap hook, indicating the transaction should revert.0x15a29dec
AmountGivenZeroThe user tried to swap zero tokens.0x57a456b7
AmountInAboveMax(IERC20,uint256,uint256)tokenIn: IERC20, amountIn: uint256, maxAmountIn: uint256A required amountIn exceeds the maximum limit specified for the operation.0x40e7a003
AmountOutBelowMin(IERC20,uint256,uint256)tokenOut: IERC20, amountOut: uint256, minAmountOut: uint256The actual amount out is below the minimum limit specified for the operation.0x9eabe649
BalanceNotSettledA transient accounting operation completed with outstanding token deltas.0x20f1d86d
BeforeAddLiquidityHookFailedThe pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert.0x0b2eb652
BeforeInitializeHookFailedThe pool has returned false to the beforeInitialize hook, indicating the transaction should revert.0x60612925
BeforeRemoveLiquidityHookFailedThe pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert.0x2aaf8866
BeforeSwapHookFailedThe pool has returned false to the beforeSwap hook, indicating the transaction should revert.0xe91e17e7
BptAmountInAboveMax(uint256,uint256)amountIn: uint256, maxAmountIn: uint256The required BPT amount in exceeds the maximum limit specified for the operation.0x31d38e0b
BptAmountOutBelowMin(uint256,uint256)amountOut: uint256, minAmountOut: uint256The BPT amount received from adding liquidity is below the minimum specified for the operation.0x8d261d5d
BufferAlreadyInitialized(IERC4626)wrappedToken: IERC4626The buffer for the given wrapped token was already initialized.0xee44489a
BufferNotInitialized(IERC4626)wrappedToken: IERC4626The buffer for the given wrapped token was not initialized.0x92998560
BufferSharesInvalidOwnerBuffer shares were burned from the zero address.0x586d06df
BufferSharesInvalidReceiverBuffer shares were minted to the zero address.0xdbe6b10e
BufferTotalSupplyTooLow(uint256)totalSupply: uint256The total supply of a buffer can't be lower than the absolute minimum.0x34bdbfaa
CannotReceiveEthThe contract should not receive ETH.0xf2238896
CannotSwapSameTokenThe user attempted to swap a token for itself.0xa54b181d
DoesNotSupportAddLiquidityCustomPool does not support adding liquidity with a customized input.0x4876c0bc
DoesNotSupportDonationPool does not support adding liquidity through donation.0xefe0265d
DoesNotSupportRemoveLiquidityCustomPool does not support removing liquidity with a customized input.0xcf0a95c0
DoesNotSupportUnbalancedLiquidityPool does not support adding / removing liquidity with an unbalanced input.0xd4f5779c
DynamicSwapFeeHookFailedThe pool has returned false to the beforeSwap hook, indicating the transaction should revert.0x53f976d4
FeePrecisionTooHighPrimary fee percentages result in an aggregate fee that cannot be stored with the required precision.0x833fb3ce
HookAdjustedAmountInAboveMax(IERC20,uint256,uint256)tokenIn: IERC20, amountIn: uint256, maxAmountIn: uint256A hook adjusted amountIn exceeds the maximum limit specified for the operation.0xe3758c7d
HookAdjustedAmountOutBelowMin(IERC20,uint256,uint256)tokenOut: IERC20, amountOut: uint256, minAmountOut: uint256The hook adjusted amount out is below the minimum limit specified for the operation.0xabf6c797
HookAdjustedSwapLimit(uint256,uint256)amount: uint256, limit: uint256A hook adjusted amount in or out has exceeded the limit specified in the swap request.0xcc0e4a99
HookRegistrationFailed(address,address,address)poolHooksContract: address, pool: address, poolFactory: addressA hook contract rejected a pool on registration.0xfa93d814
InvalidAddLiquidityKindAdd liquidity kind not supported.0x6c02b395
InvalidRemoveLiquidityKindRemove liquidity kind not supported.0x137a9a39
InvalidTokenInvalid tokens (e.g., zero) cannot be registered.0xc1ab6dc1
InvalidTokenConfigurationThe data in a TokenConfig struct is inconsistent or unsupported.0xdf450632
InvalidTokenDecimalsTokens with more than 18 decimals are not supported.0x686d3607
InvalidTokenTypeThe token type given in a TokenConfig during pool registration is invalid.0xa1e9dd9d
InvalidUnderlyingToken(IERC4626)wrappedToken: IERC4626A wrapped token reported the zero address as its underlying token asset.0x4c089bd4
IssuedSharesBelowMin(uint256,uint256)issuedShares: uint256, minIssuedShares: uint256Shares issued during initialization are below the requested amount.0xda0cb07e
MaxTokensThe token count is above the maximum allowed.0x707bdf58
MinTokensThe token count is below the minimum allowed.0x5ed4ba8f
NotEnoughBufferSharesThe user is trying to remove more than their allocated shares from the buffer.0x98c5dbd6
NotEnoughUnderlying(IERC4626,uint256,uint256)wrappedToken: IERC4626, expectedUnderlyingAmount: uint256, actualUnderlyingAmount: uint256A wrap/unwrap operation consumed more or returned less underlying tokens than it should.0xd5f9cbcd
NotEnoughWrapped(IERC4626,uint256,uint256)wrappedToken: IERC4626, expectedWrappedAmount: uint256, actualWrappedAmount: uint256A wrap/unwrap operation consumed more or returned less wrapped tokens than it should.0x1e04cc57
NotVaultDelegateCallThe VaultExtension contract was called by an account directly.0x9fd25b36
PauseBufferPeriodDurationTooLargeThe caller specified a buffer period longer than the maximum.0x9ea4efee
PercentageAboveMaxA given percentage is above the maximum (usually a value close to FixedPoint.ONE, or 1e18 wei).0x746e5940
PoolAlreadyInitialized(address)pool: addressA pool has already been initialized. initialize may only be called once.0x218e3747
PoolAlreadyRegistered(address)pool: addressA pool has already been registered. registerPool may only be called once.0xdb771c80
PoolInRecoveryMode(address)pool: addressCannot enable recovery mode when already enabled.0x346d7607
PoolNotInitialized(address)pool: addressA referenced pool has not been initialized.0x4bdace13
PoolNotInRecoveryMode(address)pool: addressCannot disable recovery mode when not enabled.0xef029adf
PoolNotPaused(address)pool: addressGovernance tried to unpause the Pool when it was not paused.0xfdcd6894
PoolNotRegistered(address)pool: addressA pool has not been registered.0x9e51bd5c
PoolPaused(address)pool: addressA user tried to perform an operation involving a paused Pool.0xd971f597
PoolPauseWindowExpired(address)pool: addressGovernance tried to pause a Pool after the pause period expired.0xeb5a1217
ProtocolFeesExceedTotalCollectedError raised when there is an overflow in the fee calculation.0x4c69ac5d
QueriesDisabledA user tried to execute a query operation when they were disabled.0x7a198886
QueriesDisabledPermanentlyAn admin tried to re-enable queries, but they were disabled permanently.0x069f8cbc
QuoteResultSpoofedQuote reverted with a reserved error code.0x28f95541
RouterNotTrustedAn unauthorized Router tried to call a permissioned function (i.e., using the Vault's token allowance).0xe5d185cf
SenderIsNotVault(address)sender: addressError indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).0x089676d5
SwapFeePercentageTooHighError raised when the swap fee percentage is greater than the maximum allowed value.0x7f47834b
SwapFeePercentageTooLowError raised when the swap fee percentage is less than the minimum allowed value.0xbfb20688
SwapLimit(uint256,uint256)amount: uint256, limit: uint256An amount in or out has exceeded the limit specified in the swap request.0xe2ea151b
TokenAlreadyRegistered(IERC20)token: IERC20A token was already registered (i.e., it is a duplicate in the pool).0xcbc7ea2c
TokenNotRegistered(IERC20)token: IERC20The user attempted to operate with a token that is not in the pool.0x59674a0c
TokensMismatch(address,address,address)pool: address, expectedToken: address, actualToken: addressThe token list passed into an operation does not match the pool tokens in the pool.0xffe261a1
TradeAmountTooSmallThe amount given or calculated for an operation is below the minimum limit.0x1ed4d118
VaultBuffersArePausedBuffer operation attempted while vault buffers are paused.0x0f27df09
VaultIsNotUnlockedA user called a Vault function (swap, add/remove liquidity) outside the lock context.0xc09ba736
VaultNotPausedGovernance tried to unpause the Vault when it was not paused.0xf7ff4dca
VaultPausedA user tried to perform an operation while the Vault was paused.0xda9f8b34
VaultPauseWindowDurationTooLargeThe caller specified a pause window period longer than the maximum.0xcc0e8fe5
VaultPauseWindowExpiredGovernance tried to pause the Vault after the pause period expired.0x0e4460b7
WrapAmountTooSmall(IERC4626)wrappedToken: IERC4626The amount given to wrap/unwrap was too small, which can introduce rounding issues.0x1a53f97f
WrongProtocolFeeControllerDeploymentThe ProtocolFeeController contract was configured with an incorrect Vault address.0x1bbe95c7
WrongUnderlyingToken(IERC4626,address)wrappedToken: IERC4626, underlyingToken: addressThe wrapped token asset does not match the underlying token.0xd5e7e2a6
WrongVaultAdminDeploymentThe VaultAdmin contract was configured with an incorrect Vault address.0x82cc28b6
WrongVaultExtensionDeploymentThe VaultExtension contract was configured with an incorrect Vault address.0x1ab9d9d0

IWrappedBalancerPoolToken

ErrorArgumentsCommentSignature
VaultIsUnlockedThe vault is unlocked0xbe18e309

IWrappedBalancerPoolTokenFactory

ErrorArgumentsCommentSignature
BalancerPoolTokenNotRegisteredThe Balancer pool token has not been registered.0x916f5d0e
WrappedBPTAlreadyExists(address)wrappedToken: addressBPT can only be wrapped once, and cannot be overwritten.0x957f7dce

oracles

EclpLPOracle

ErrorArgumentsCommentSignature
TokenPriceTooSmallOne of the token prices is too small.0x1d2fcef0

StableLPOracle

ErrorArgumentsCommentSignature
KDidNotConvergeThe k parameter did not converge to the positive root.0xdc95cdb4
MinPriceTooLowThe minimum price of the feed array is too low.0x478b96d8
PriceRatioTooHighThe ratio between the maximum and minimum prices is too high.0xb4c522e0

pool-gyro

Gyro2CLPPoolFactory

ErrorArgumentsCommentSignature
SupportsOnlyTwoTokens2-CLP pools support 2 tokens only.0x34e77320

GyroECLPPoolFactory

ErrorArgumentsCommentSignature
SupportsOnlyTwoTokensE-CLP pools support 2 tokens only.0x34e77320

pool-gyro/lib

Gyro2CLPMath

ErrorArgumentsCommentSignature
AssetBoundsExceeded0x03ba4186

GyroECLPMath

ErrorArgumentsCommentSignature
AssetBoundsExceeded0x03ba4186
DerivedDsqWrong0xfb154af0
DerivedTauAlphaNotNormalized0xc196e496
DerivedTauAlphaYWrong0xec13362c
DerivedTauBetaNotNormalized0x25bbd708
DerivedTauBetaYWrong0xfa40768d
DerivedTauXWrong0x4071c5a8
DerivedUWrong0xf84d4b44
DerivedVWrong0xcfb498d5
DerivedWWrong0x83446b36
DerivedZWrong0x12e3e411
InvariantDenominatorWrong0xd1c17993
MaxAssetsExceeded0x2da2a5e5
MaxInvariantExceeded0xdc10196f
RotationVectorCWrong0x658639aa
RotationVectorNotNormalized0xa26d8c2e
RotationVectorSWrong0xa9587a74
StretchingFactorWrong0x77dfa312

SignedFixedPoint

ErrorArgumentsCommentSignature
AddOverflow0xa7f965e3
DivInterval0xe03f5d57
MulOverflow0x0cde6c26
SubOverflow0x8a5d6af4
ZeroDivision0x0a0c22c7

pool-hooks

ExitFeeHookExample

ErrorArgumentsCommentSignature
ExitFeeAboveLimit(uint256,uint256)feePercentage: uint256, limit: uint256The exit fee cannot exceed the maximum allowed percentage.0x05631b5c
PoolDoesNotSupportDonationThe pool does not support adding liquidity through donation.0xdfcf485a

NftLiquidityPositionExample

ErrorArgumentsCommentSignature
CannotUseExternalRouter(address)router: addressHooks functions called from an external router.0x2f51a4f2
PoolDoesNotSupportDonationThe pool does not support adding liquidity through donation.0xdfcf485a
PoolSupportsUnbalancedLiquidityThe pool supports adding unbalanced liquidity.0x228342a4
WithdrawalByNonOwner(address,address,uint256)withdrawer: address, owner: address, nftId: uint256Attempted withdrawal of an NFT-associated position by an address that is not the owner.0x92cc6781

pool-stable

StablePool

ErrorArgumentsCommentSignature
AmplificationFactorTooHighThe amplification factor is above the maximum of the range (1 - 5000).0x9b80d390
AmplificationFactorTooLowThe amplification factor is below the minimum of the range (1 - 5000).0xab923323
AmpUpdateAlreadyStartedAmplification update operations must be done one at a time.0x2f301e7e
AmpUpdateDurationTooShortThe amplification change duration is too short.0xcd6b022a
AmpUpdateNotStartedCannot stop an amplification update before it starts.0x4673a675
AmpUpdateRateTooFastThe amplification change rate is too fast.0x1c708b92

pool-utils

BasePoolFactory

ErrorArgumentsCommentSignature
StandardPoolWithCreatorA pool creator was specified for a pool type that doesn't support it.0x61ee1764

pool-weighted

WeightedPool

ErrorArgumentsCommentSignature
WeightedPoolBptRateUnsupportedgetRate from IRateProvider was called on a Weighted Pool.0x18e79a20

pool-weighted/lbp

BaseLBPFactory

ErrorArgumentsCommentSignature
InvalidTrustedRouterThe zero address was given for the trusted router.0x0307417b

BPTTimeLocker

ErrorArgumentsCommentSignature
BPTStillLocked(uint256)unlockTimestamp: uint256The caller has a locked BPT balance, but is trying to burn it before the timelock expired.0x60489698
NoLockedBPTThe caller has no balance of the locked BPT.0x00e39db1

LBPCommon

ErrorArgumentsCommentSignature
AddingLiquidityNotAllowedThe pool does not allow adding liquidity except during initialization and before the weight update.0x3eee08c7
RemovingLiquidityNotAllowedRemoving liquidity is not allowed before the end of the sale.0xf38b5770
SwapOfProjectTokenInThe LBP configuration prohibits selling the project token back into the pool.0x1269438a
SwapsDisabledSwaps are disabled except during the sale (i.e., between and start and end times).0xfdf79845
UnsupportedOperationSingle token liquidity operations (that call computeBalance are unsupported.0x9ba6061b

LBPool

ErrorArgumentsCommentSignature
NotImplementedLBPs are WeightedPools by inheritance, but WeightedPool immutable/dynamic getters are wrong for LBPs.0xd6234725

LBPValidation

ErrorArgumentsCommentSignature
InvalidBptLockDurationThe BPT lock duration is invalid.0xc715892a
InvalidBptPercentageToMigrateThe percentage of BPT to migrate is invalid (must be between 0-100%).0x14533421
InvalidMigrationWeightsThe sum of migrated weights is not equal to 1.0x63ecd650
InvalidOwnerThe owner is the zero address.0x49e27cff
InvalidProjectTokenThe project token is the zero address.0x59977db3
InvalidReserveTokenThe reserve token is the zero address.0xaaee807a
MigrationRouterRequiredCannot create a pool with migration parameters if the migration router is not set.0xb199d1fa
TokensMustBeDifferentThe project and reserve tokens must be different.0xfbfc7a91

pool-weighted/lib

GradualValueChange

ErrorArgumentsCommentSignature
InvalidStartTime(uint256,uint256)resolvedStartTime: uint256, endTime: uint256Indicates that the start time is after the end time0xc9767706

solidity-utils

solidity-utils/helpers

CodeDeployer

ErrorArgumentsCommentSignature
CodeDeploymentFailed0xfef82207

EVMCallModeHelpers

ErrorArgumentsCommentSignature
NotStaticCallA state-changing transaction was initiated in a context that only allows static calls.0x67f84ab2

FactoryWidePauseWindow

ErrorArgumentsCommentSignature
PoolPauseWindowDurationOverflowThe factory deployer gave a duration that would overflow the Unix timestamp.0x68755a11

InputHelpers

ErrorArgumentsCommentSignature
AllZeroInputsNo valid input was given for a single token operation.0x7e46bddc
InputLengthMismatchArrays passed to a function and intended to be parallel have different lengths.0xaaad13f7
MultipleNonZeroInputsMore than one non-zero value was given for a single token operation.0x6b8c3be5
TokensNotSortedThe tokens supplied to an array argument were not sorted in numerical order.0x6e8f1947

PackedTokenBalance

ErrorArgumentsCommentSignature
BalanceOverflowOne of the balances is above the maximum value that can be stored.0x89560ca1

RevertCodec

ErrorArgumentsCommentSignature
ErrorSelectorNotFoundHandle the "reverted without a reason" case (i.e., no return data).0xa7285689
Result(bytes)result: bytesOn success of the primary operation in a quoteAndRevert, this error is thrown with the return data.0x5ab64fb8

TransientStorageHelpers

ErrorArgumentsCommentSignature
TransientIndexOutOfBoundsAn index is out of bounds on an array operation (e.g., at).0x0f4ae0e4

WordCodec

ErrorArgumentsCommentSignature
CodecOverflowFunction called with an invalid value.0xe4337c05
OutOfBoundsFunction called with an invalid bitLength or offset.0xb4120f14

solidity-utils/math

FixedPoint

ErrorArgumentsCommentSignature
ZeroDivisionAttempted division by zero.0x0a0c22c7

LogExpMath

ErrorArgumentsCommentSignature
BaseOutOfBoundsThis error is thrown when a base is not within an acceptable range.0x022701e0
ExponentOutOfBoundsThis error is thrown when a exponent is not within an acceptable range.0xd8317311
InvalidExponentThis error is thrown when an exponent used in the exp function is not within an acceptable range.0xd4794efd
OutOfBoundsThis error is thrown when a variable or result is not within the acceptable bounds defined in the function.0xb4120f14
ProductOutOfBoundsThis error is thrown when the exponent * ln(base) is not within an acceptable range.0xa2f9f7e3

StableMath

ErrorArgumentsCommentSignature
StableComputeBalanceDidNotConvergeThe iterations to calculate the balance didn't converge.0xdcbda05c
StableInvariantDidNotConvergeThe iterations to calculate the invariant didn't converge.0x010ca320

WeightedMath

ErrorArgumentsCommentSignature
MaxInRatioUser attempted to add a disproportionate amountIn of tokens to a pool.0x340a4533
MaxOutRatioUser attempted to extract a disproportionate amountOut of tokens from a pool.0x64590b9f
ZeroInvariantError thrown when the calculated invariant is zero, indicating an issue with the invariant calculation.0x26543689

solidity-utils/openzeppelin

EnumerableMap

ErrorArgumentsCommentSignature
IndexOutOfBoundsAn index is beyond the current bounds of the set.0x4e23d035
KeyNotFoundThis error is thrown when attempting to retrieve an entry that is not present in the map.0x5f3f479c

EnumerableSet

ErrorArgumentsCommentSignature
ElementNotFoundAn element that is not present in the set.0x66af5392
IndexOutOfBoundsAn index is beyond the current bounds of the set.0x4e23d035

ReentrancyGuardTransient

ErrorArgumentsCommentSignature
ReentrancyGuardReentrantCallUnauthorized reentrant call.0x3ee5aeb5

TransientEnumerableSet

ErrorArgumentsCommentSignature
ElementNotFoundAn element that is not present in the set.0x66af5392
IndexOutOfBoundsAn index is beyond the current bounds of the set.0x4e23d035

standalone-utils

BalancerContractRegistry

ErrorArgumentsCommentSignature
InconsistentState(string,address)contractName: string, contractAddress: addressA _contractRegistry entry has no corresponding _contractInfo.0x36a7ac0a

CallAndRevert

ErrorArgumentsCommentSignature
QuoteResultSpoofed0x28f95541

ERC4626CowSwapFeeBurner

ErrorArgumentsCommentSignature
AmountOutIsZero(IERC20)token: IERC20The amount out is zero.0xc609fb47

FeeBurnerAuthentication

ErrorArgumentsCommentSignature
InvalidProtocolFeeSweeperThe fee protocol is invalid.0x932c92a5
SenderNotAllowedThe sender does not have permission to call a function.0x23dada53

OwnableAuthentication

ErrorArgumentsCommentSignature
VaultNotSetThe vault has not been set.0xc8e28160

ProtocolFeeSweeper

ErrorArgumentsCommentSignature
CannotReceiveEthAll pool tokens are ERC20, so this contract should not handle ETH.0xf2238896

standalone-utils/utils

HyperSpotPricePrecompile

ErrorArgumentsCommentSignature
SpotPriceIsZeroThe spot price is zero.0x44526c24
SpotPricePrecompileFailedThe precompile had an error while fetching the spot price.0x79827df5

HyperTokenInfoPrecompile

ErrorArgumentsCommentSignature
TokenInfoPrecompileFailedThe precompile had an error while fetching the token info.0x61c18134

vault

BalancerPoolToken

ErrorArgumentsCommentSignature
ERC2612ExpiredSignature(uint256)deadline: uint256Operation failed due to an expired permit signature.0x62791302
ERC2612InvalidSigner(address,address)signer: address, owner: addressOperation failed due to a non-matching signature.0x4b800e46

BasePoolMath

ErrorArgumentsCommentSignature
InvariantRatioAboveMax(uint256,uint256)invariantRatio: uint256, maxInvariantRatio: uint256An add liquidity operation increased the invariant above the limit.0x3e8960dc
InvariantRatioBelowMin(uint256,uint256)invariantRatio: uint256, minInvariantRatio: uint256A remove liquidity operation decreased the invariant below the limit.0xe31c95be

CommonAuthentication

ErrorArgumentsCommentSignature
VaultNotSetVault cannot be address(0).0xc8e28160

ProtocolFeeController

ErrorArgumentsCommentSignature
InvalidMigrationSourceMigration source cannot be this contract.0xb82fd5bf
PoolAlreadyRegistered(address)pool: addressPrevent pool data from being registered more than once.0xdb771c80

RouterHooks

ErrorArgumentsCommentSignature
InsufficientPayment(IERC20)token: IERC20The sender has not transferred the correct amount of tokens to the Vault.0xabf6c150

VaultFactory

ErrorArgumentsCommentSignature
InvalidBytecode(string)contractName: stringThe bytecode for the given contract does not match the expected bytecode.0xc7f4796e
InvalidProtocolFeeControllerThe ProtocolFeeController cannot be the zero address.0xd8b6cbcf
VaultAddressMismatchThe given salt does not match the generated address when attempting to create the Vault.0xb4c1be7b
VaultAlreadyDeployed(address)vault: addressThe Vault has already been deployed at this target address.0xe254a88b

vault/lib

RouterWethLib

ErrorArgumentsCommentSignature
InsufficientEthThe amount of ETH paid is insufficient to complete this operation.0xa01a9df6