Repository navigation
v2.0.0
v2.0.0 (latest)
Major release with breaking changes to the auction constructor, factory constructor, sweep authorization, the factory's distribution interface, and a number of interface renames. Adds supply rollover settlement math, a protocol fee controller, and new lens contracts for offchain reads. Integrators must redeploy and update integrations.
Changed
- Breaking: Moved
ClaimBlockIsBeforeEndBlock,NotClaimable, andAuctionIsNotOvererrors out ofIContinuousClearingAuctionand intoIStepStorage. Integrators importing these from the auction interface must update imports. (#321) - Added
CCALensandTickDataLensperiphery contracts for offchain reads of auction state and initialized tick data. Non-breaking addition. (#325) - Breaking:
sweepCurrency()is now restricted toFUNDS_RECIPIENTandsweepUnsoldTokens()is now restricted toTOKENS_RECIPIENT. Adds newNotAuthorized(address authorized, address caller)error. Callers other than the configured recipients will revert. (#329) - Breaking: Reworked auction settlement to support supply rollover so that demand above the clearing price carries forward over the remaining schedule. Adds new getters
remainingSupplyQ96X7,remainingSupply,requiredDemandQ96, andrequiredDemandQ96AtNextActiveTick. Final clearing prices, per-block fills, and bid economics may differ from v1.x for the same inputs. (#327) - Removed obsolete DoS test. Non-breaking. (#333)
- Breaking: Renamed
ITokenCurrencyStoragetoIAuctionStorageand movedcurrencyRaised,currencyRaisedQ96X7,sumCurrencyDemandAboveClearingQ96,totalCleared,totalClearedQ96X7,remainingSupply, andremainingSupplyQ96X7into that interface. RenamedcurrencyRaisedQ96_X7→currencyRaisedQ96X7andtotalClearedQ96_X7→totalClearedQ96X7. (#332) - Fixed an edge case where the clearing price could be incorrectly advanced when rounding caused
remainingSupplyto reach zero before the schedule completed. New bids submitted with zero remaining supply now revert. (#331) - Breaking: Tightened
MIN_FLOOR_PRICEfrom2^32to2^32 + 1so that its Q96 reciprocal fits in auint160for downstream LBP / v4 initialization math. Auctions configured with floor price exactly2^32are no longer accepted. (#336) - Internal refactor to call
CheckpointAccountingLibhelpers directly fromContinuousClearingAuction, removing thin wrappers fromCheckpointStorage. Non-breaking. (#338) - Breaking: Added an owner-controlled
IProtocolFeeControllerand threaded it through the factory and auction.ContinuousClearingAuctionFactoryconstructor now takesaddress _protocolFeeControllerand exposes aprotocolFeeController()getter;ContinuousClearingAuctionconstructor takes an additionaladdress _protocolFeeControllerargument.sweepCurrency()now transfers the protocol fee to the controller and sweepscurrencyRaised − protocolFeeto the funds recipient.currencyRaised()no longer subtracts protocol fees, andlbpInitializationParams()returns the post-feecurrencyRaised.ILBPInitializeris now imported from theliquidity-launchersubmodule rather thansrc/interfaces/external. (#340) - Updated
TickDataLensto use the rollover-awarerequiredDemandQ96helper so tick data reflects the remaining supply over the remaining issuance schedule. (#334) - Breaking:
lbpInitializationParams()now reverts withNotGraduatedif the auction did not graduate. Previously it returned stale values for unsuccessful auctions. (#342) - Expanded stateful invariant test coverage. Test-only, non-breaking. (#337)
sweepCurrency()no longer reverts for auctions that did not graduate; it now performs a no-op sweep (sweeping zero currency) rather than revertingNotGraduated. (#343)- Breaking: Standardized the factory's distribution interface to the
liquidity-launchersubmodule'sIDistributorFactory.initializeDistribution()is renamed tocreate()andgetAuctionAddress()is renamed togetAddress()(now returningIDistributor); the localIDistributionStrategyandIDistributionContractinterfaces are removed. (#356) - Fixed bid submission to take the block checkpoint before invoking the validation hook. (#346)
- Fixed
requiredDemandQ96AtNextActiveTick()to return zero when there is no next active tick. (#345) - Prevented same-block
forceIterateOverTicks()from changing bid admission: bid admission now uses the checkpoint clearing price, and force iteration reverts with the newCheckpointAlreadyExistsForBlockerror when a checkpoint already exists for the current block. (#355)