Summary
This release delivers a major upgrade of the app to v50, significantly extends the IRO (Initial RollApp Offering) and streamer / Pump Stream capabilities (equilibrium pricing, graduation to AMMs, gas-free flows, FDV config, OTC buybacks, discounted offers, min trade amounts, etc.), and wires in Hyperlane, KAS bridge, IBC rate limiting, and TEE-based finalization as first-class features.
On top of that, it introduces endorsement-yielding sponsorships, richer incentives & lockup economics, multiple light client and rollapp safety improvements (rollbacks, headers from state info, circuit breakers, params in module store and faster block-time.
Features
Light client & rollapp
feat(lightclient): Add tx for setting canonical light client
feat(lightclient,rollapp): allows rollapp rollback even before the genesis bridge
feat(lightclient): update IBC headers from state info
feat(rollapp): add tee-config query command
App / params / upgrades
feat(app): Upgrading to v50
feat(app): add circuit breaker module
feat(params)!: moved params to module store instead of params keeper
feat(upgrade): upgrade handler to initialize endorsements for existing rollapps
feat(upgrade): added authorized circuit breaker accounts
feat(upgrade): wired gas free whitelisted txs
feat(upgrade): add new fee exempt message types for IRO transactions
IRO (Initial RollApp Offering)
feat(iro): setting equilibrium point where the raised dym goes to the liquidity pool
feat(iro): founder can trade before start time
feat(iro): ability to send percentage of the iro raised funds directly to founder
feat(iro): add option for vesting for owner funds
feat(iro): ability to launch iro on demand
feat(IRO): ability to have iro raise against other tokens and not only dym
feat(iro): iro upgrade handler
feat(IRO): refactor IRO buy/sell events to return Coin instead of Int
feat(IRO): graduate completed IROs into amm pool
feat(IRO): migrate iro plans that pass the eq point
feat(IRO): add min trading amount requirement
feat(IRO): adding initial FDV for standard (v2) IRO
Incentives, lockup & sponsorship
feat(lockup): added min lockup duration
feat(incentives): dont distribute endorsement rewards to non active rollapps
feat(incentives): support legacy EIP712 for CreateGauge
feat(incentives): prevent multiple partial unlocks for a single lock
feat(incentives): incentives distribution based on lock age
feat(sponsorship): added endorsement yielding
feat(sponsorship): lazy accumulator for endorsement yielding
feat(sponsorship): queries to get endorsement and estimate rewards
feat(sponsorship): only allow voting on rollapp gauges
feat(sponsership): allow to clear all votes on new endorsment stream
EIBC / Hyperlane / bridges / rate limit
feat(eibc): add ability to find fulfiller on demand
feat(eibc): optimistic eibc min fee is now percent
feat: Hyperlane integration + eibc transfer completion hooks
feat: use composable, non conflicting hyperlane metadata wire format to store forward memo and kaspa gadgets
feat: kas bridge
feat(ibcratelimit): wired the module
feat(bridgingfee): fee for HL transfers
TEE (Trusted Execution Environment)
feat: TEE based finalization
feat(tee): allow owner to toggle feature (global param can still block for all rollapps)
feat(tee): add tee-toggle cli command
Streamer / Pump Stream / OTC buyback
feat(streamer): pump stream
feat(streamer): support graduation in pump streams
feat(streamer): use pump streams for buyback
feat(streamer): wire BeginBlock logic
feat(streamer): fix bad pump amounts and skip non-iro rollapps
feat(OTCBuyback): feat OTC buyback
feat(otcbuyback): invariants
feat(otcbuyback): discounted offers
feat(otcbuyback): add params query
Forwarding & CLI utilities
feat: support HL-to-HL forwarding in x/forward module
feat: print HL message field by field in utils (CLIENT ONLY)
feat: improve x/forward CLI utilities (DRY + feature complete)
Other protocol features
feat(eibc): optimistic eibc min fee is now percent
feat(ante): implemented "inner decorator" which runs logic on wrapped msgs
feat(dymns): allow alias registration fee in foreign token
feat(deps): bump ethermint to 07f1611f6247
Fixes
Rollapp / lightclient / sequencer
fix(rollapp): allow tokenless on CreateRollapp / UpdateRollapp with eip
fix(rollapp): cli update only metadata
fix(rollapp): make MinimumSequencerBond optional
fix(rollapp): fee denom validation
fix(lightclient): fixed consensus states iterator
fix(lightclient): avoid all consensus states iter
fix(sequencer): missing interface registration in sequencer module
fix(sequencer): prevent self-kick to avoid state inconsistency
IRO / incentives / lockup / sponsorship
fix(iro): missing StartTimeAfterSettlement in IRO default params
fix(iro): first sell tokens, than charge fee
fix(lockup): remove logic to unlock all locks at end blocker, or from tx
fix(eibc): authorization min fee truncating
fix(lockup): get lock creation fee from params
fix(incentives): param switch for endorsement mode
fix(incentives): set min threshold for gauge incentives distribution
fix(incentives, lockup): added missing signer annotation
fix(sponsorship): added epoch identifier
fix(lockup): charging LockCreationFee only on new lock creation
fix(sponsorship): missing total power in the endorsement migration
fix(IRO): ensure approximation converges only via under-approximation
fix(iro): increase creation fee until cost is positive
fix(iro): fixed TokensForExactInAmount with USDC
fix(iro): make graduation logic gas free
fix(IRO): fixed precision for accurate liquidity calculations
fix(ante): unblock vesting msgs from ante handler
fix(ante): block MsgSubmitMisbehaviour to ensure validation logic in …
Denoms / metadata / deps
fix(denommetadata): wrong key in paginated guery for registered denoms
fix(codec): added missing codec registrations
fix(codec): shorten and consistency in amino names
fix(proto): formatting proto files
New Contributors
@Marcofann made their first contribution in #1698
@peicuiping made their first contribution in #1694
@LesCyber made their first contribution in #1767
@tomasandroil made their first contribution in #1761
@hugehope made their first contribution in #1735
@vipocenka made their first contribution in #1773
@huochexizhan made their first contribution in #1772
@welfuture made their first contribution in #1791
@threehonor made their first contribution in #1801
@jasmyhigh made their first contribution in #1806
@dizer-ti made their first contribution in #1818
@findnature made their first contribution in #1830
@yetyear made their first contribution in #1840
@MamunC0der made their first contribution in #1900
@Angith made their first contribution in #1898
@chengehe made their first contribution in #1914
@gopherorg made their first contribution in #1917
@HenmaSab0 made their first contribution in #1928
@ianlv made their first contribution in #1920
@jingchanglu made their first contribution in #1929
@pingshuijie made their first contribution in #1934
@minxinyi made their first contribution in #1936
@kilavvy made their first contribution in #1940
@VolodymyrBg made their first contribution in #1957
@GarmashAlex made their first contribution in #1961
@rejected-l made their first contribution in #1960
@MozirDmitriy made their first contribution in #1963
@youzichuan made their first contribution in #1962
@hongmengning made their first contribution in #1965
@radik878 made their first contribution in #1972
@crStiv made their first contribution in #1974
@deepdring made their first contribution in #1976
@gap-editor made their first contribution in #1985
@Snezhkko made their first contribution in #1982
@Fibonacci747 made their first contribution in #1992
@keeghcet made their first contribution in #1995
@defiberrys made their first contribution in #2008
@zhoujiaweii made their first contribution in #2015
@quantpoet made their first contribution in #2016
@sashaodessa made their first contribution in #2006
@yajianggroup made their first contribution in #2028
@mickychang9 made their first contribution in #2031
@asttool made their first contribution in #2053
@withtimezone made their first contribution in #2058
@mdqst made their first contribution in #2060
@famouswizard made their first contribution in #2062
@wyrapeseed made their first contribution in #2068
@kindknow made their first contribution in #2082
@claudecodering made their first contribution in #2096
@sunnyraindy made their first contribution in #2097