github osmosis-labs/osmosis v12.1.0
Osmosis v12.1.0 🧪

latest releases: v26.0.2, v26.0.1, v26.0.0...
2 years ago

This release fixes non-determinism with module "end block" ordering by tightening partial order constraints and sorting Go maps correctly.

Additional Context

We utilize a directed acyclic graph (DAG) data structure for ordering "end blocks". DAG takes a list of modules from the SDK via the app.ModuleManager().ModuleNames() function.

The `ModuleNames() function returns modules in non-deterministic order due to a map iteration. Our DAG took those modules to construct total order from a partial order. Although there was an attempt to sort the module names to prevent non-determinism, there was a really basic error, leading to an unsorted copy given to the DAG here.

The change has been live for over 5 months. Due to strict partial order constraints of the graph, the issue has not surfaced until the execution of the proposal to update staking parameters. Every other transitive relation has been asserted to hold. The proposal required the staking module's "end block" to come after gov. However, there was no partial order constraint between staking and gov. As a result, that has led to some validators executing an erroneous "end block" order and diverging from the rest of the network.

Usage

🐳 Docker

The following Docker images are available in our registry:

Image Description
osmolabs/osmosis:12.1.0 Default image. Based on Distroless image
osmolabs/osmosis:12.1.0-distroless Distroless image (same as above)
osmolabs/osmosis:12.1.0-nonroot Distroless non root image
osmolabs/osmosis:12.1.0-alpine Alpine image

Example:

docker run osmolabs/osmosis:12.1.0 version 
# v12.1.0

All the images have support for arm64 and amd64 architectures.

🔨 Build from source

git clone https://github.com/osmosis-labs/osmosis
cd osmosis && git checkout v12.1.0
make install

⚡️ Download binaries

Binaries for linux amd64 and arm64 are available below.
Darwin users should build binaries from source.

Don't miss a new osmosis release

NewReleases is sending notifications on new releases.