immutable prevent modification and per-pool configuration, contradicting documented functionality in protocol READMEAll phase configuration parameters are declared as immutable:
This causes two distinct problems:
1. Parameters cannot be modified post-deployment
The README explicitly states the owner "can modify fee parameters via administrative functions" and "has full administrative control over launch configuration". However, immutable variables are set once in the constructor and cannot be changed afterward - this is enforced at the Solidity compiler level.
2. Parameters cannot be per-pool
As documented in a separate finding, the hook's state should be keyed by PoolId to support multiple pools. However, immutable variables cannot be mappings - they must be value types. This means:
All pools using this hook share identical configuration
Different token launches cannot have customized durations/limits/penalties
A hook deployment can only serve one "type" of launch
Likelihood:
This is a permanent architectural limitation from deployment
Every pool initialized with this hook inherits the same immutable configuration
Impact:
The specified administrative functions would not work even if they were implemented
Cannot support multiple token launches with different desired launch configurations
Solidity immutable variables are stored in the contract bytecode, not in storage. They are set during construction and cannot be modified:
There are two valid approaches depending on the desired trust model:
Option A: Global Config with Setters
Keep configuration global but make it mutable. This matches the documented behavior where "Owner has unrestricted access to modify parameters".
Pros:
Simpler implementation
No coordination needed for new pools
Owner can respond to bot activity mid-launch (feature per README)
Cons:
All pools share the same config
Changes affect existing pools immediately (accepted centralization risk per README)
Option B: Per-Pool Config (More Isolation)
Each pool gets its own configuration, set by owner at pool creation time.
Pros:
Different token launches can have different parameters
Pools are isolated from config changes to other pools
More granular control
Cons:
Requires owner coordination for each new pool
More complex operationally
Owner must be notified when pools are created
Then update _beforeSwap to read from poolConfig[key.toId()] instead of the immutable variables.
Note: Regardless of which option is chosen, the runtime state (currentPhase, initialLiquidity, tracking mappings) must still be per-pool as described in the "Shared state across all pools" finding - that is a separate architectural issue.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.