osmosis

Prop 782: Osmosis v25 Software Upgrade

This is a proposal to do a software upgrade to the v25.0.0 software tag of the Osmosis codebase on block height 15753500, which is estimated to occur on Wednesday, May 15th, UTC 15:00. Block times have high variance, so please monitor the chain for more precise time estimates.

Upgrade Features

This upgrade primarily consists of fixes and improvements for the Osmosis codebase.

Block SDK - Top of Block Auction

Enhances Osmosis Block construction by adding Lanes within blocks via Skip’s Block SDK.

Lanes act as categorised mempools, each with its own rules and traffic flow.

The initial Lane implemented is the Top of Block Auction.

  • Users can submit a transaction bundle to a lane that takes place before all the other transactions in the block.
  • The first position within the block has value, confirming that the submitter will obtain any time-sensitive value, such as cross-chain arbitrage opportunities.
  • The transaction bundle with the highest bid in USDC will be accepted.

Revenue generated by the Top-of-Block Auction is split: 5% goes to the validator that proposed the block, and 95% is accumulated to a module address for future usage to be determined by governance.

Check out the Blog Post for more information on this feature.

Consensus Improvements

  • Gas prices are now entirely calculated by the EIP 1559-style gas market. Some validators had previously set a higher constant to combat spam, which resulted in empty blocks being produced. The default min-gas-prices parameter used by nodes has been changed to 0.
  • Target Block time of 2.5 seconds, down from the current 3-second target. Block timeout has been reduced from 2 to 1.5 seconds as part of the incremental push towards 1.5-second blocks.
  • Preparation for Comet Pruning implementation by updating consensus parameters for evidence retention periods to two weeks. This ensures all nodes retain the entire unbonding period in blocks for slashing purposes.

Smart Accounts

Smart Accounts allow transactions to be approved by multiple authentication methods.

Example usage of this feature includes functions such as

  • Automated transaction triggers, such as stop orders.
  • One-click trading.
  • Multi-device support.
  • Sub-management of assets.
  • Registration of an Osmosis address using Passkeys, Face ID, or Touch ID.
  • Personal Rate Limit setting for deposits.
  • Social recovery or anti-phishing features.

Smart Account functionality will be enabled by a future governance proposal. The Smart Account functionality includes a circuit breaker address as an additional security measure to disable the Smart Account service if any vulnerabilities are detected. This address is currently controlled by Osmosis Labs contributors.

Patches

  • V24 added functionality that incentive gauges on Classic pools would only pay out values of 0.1 OSMO or over. Some tokens have no valid ProtoRev route to identify this value, so they are not distributed. Added a check to ensure a token has a valid route for internal pricing via ProtoRev when a gauge is created.
  • The ProtoRev distribution and burn mechanism in v24 was missing Epoch hooks, which prevented it from triggering. These have been added, causing the mechanisms to begin the epoch after V25 is live.
  • Validators’ missed block counter has been reset; the minimum level for each validator was set as the state at the v24 upgrade amount during the upgrade to SDK v0.50 slashing logic.

Please see the Full Change Log for a complete list of optimizations and any API changes.

Getting Prepared for the Upgrade

Config Updates

If you utilize the --reject-config-defaults flag, please consider manually changing the following values in your config.toml: [consensus]

timeout_commit = "1.5s"

timeout_propose = "2s"

and the following values in your app.toml:

minimum-gas-prices = "0uosmo"

[osmosis-mempool]

max-gas-wanted-per-tx = "60000000"

arbitrage-min-gas-fee = "0.1"

If you don’t utilize this flag, the above values will automatically be set for you, so no action is needed.

Binary Installation

To build the binary, be sure to install Golang 1.21.4 or higher NOTE: Golang versions lower than this will not work.

As always, we recommend validators utilize 64GB of RAM. Since state migration is relatively negligible in this upgrade, it is possible to get away with less, but it is still not recommended. If you are unable to have 64GB of RAM, at a minimum, have a total of 64GB of swap set to prevent out-of-memory errors.

If using Cosmovisor, manually build & copy the osmosisd binary to /cosmovisor/upgrades/v25/bin/.

If not using Cosmovisor, wait for your node to halt at the upgrade height, then install and run the v25.0.0 binary.

Details of Upgrade Time

The proposal targets the upgrade proposal block to be 15753500, anticipated to be on Wednesday, May 15th, UTC 15:00. Note that block times have high variance, so keep monitoring the time. See the countdown HERE.

The upgrade is anticipated to take approximately 30 minutes, during which time there will be no on-chain activity on the network.

In the event of an issue at upgrade time, we should coordinate via the validators channel in Discord to come to a quick emergency consensus and mitigate any further issues.