#13 – Upgrade Proposal: v0.2.5
Passed
Proposal ID: 13
Type: Software Upgrade
Submit: 2025-11-21 09:13 UTC
Voting: 2025-11-21 09:13 UTC → 2025-11-22 09:13 UTC
Upgrade Proposal: v0.2.5
Full Proposal
Full proposal — click to expand · Open in separate page →
Upgrade Proposal: v0.2.5
This document outlines the proposed changes for on-chain software upgrade v0.2.5. The Changes section details the major modifications, and the Upgrade Plan section describes the process for applying these changes.
Upgrade Plan
This PR updates the code for the api and node services and introduces the new service bridge for the native bridge with Ethereum. The PR modifies the container versions in deploy/join/docker-compose.yml.
The binary versions will be updated via an on-chain upgrade proposal. For more information on the upgrade process, refer to /docs/upgrades.md.
Existing hosts are not required to upgrade their api and node containers. The updated container versions are intended for new hosts who join after the on-chain upgrade is complete.
Proposed Process
- Active hosts review this proposal on GitHub.
- Once the PR is approved by a majority, a
v0.2.5release will be created from this branch, and an on-chain upgrade proposal for this version will be submitted. - If the on-chain proposal is approved, this PR will be merged immediately after the upgrade is executed on-chain.
Creating the release from this branch (instead of main) minimizes the time that the /deploy/join/ directory on the main branch contains container versions that do not match the on-chain binary versions, ensuring a smoother onboarding experience for new hosts.
The bridge container can be started any time after upgrade by:
-
Pulling the latest changes from
mainbranch (afterupgrade-v0.2.5merged) -
Start
It'll take some time to synchronize.
New MLNode container v3.0.11 is fully compatible with v3.0.10 and can be updated asynchronously at any time.
Additionally, the version v3.0.11-blackwell is introduced for Blackwell GPUs (CUDA 12.8+ required).
Further Steps
The PR introduces 3 contracts: - liquidity pool - wrapped token - Ethereum contract
All contracts might be proposed for voter approval via separate proposals.
Testing
Testnet
The on-chain upgrade from version v0.2.4 to v0.2.5 has been successfully deployed and verified on the testnet.
We encourage all reviewers to request access to our testnet environment to validate the upgrade. Alternatively, reviewers can test the on-chain upgrade process on their own private testnets.
Migration
The on-chain migration logic and default values for new parameters are defined in upgrades.go.
Specific data migrations are implemented in:
- migrations_confirmation_weight.go: Initializes confirmation weights for the current epoch.
- migrations_bridge.go: Removes legacy bridge state and artifacts.
Note on Inactive Participant Exclusion: The parameters for the continuous exclusion of inactive participants (SPRT) are initialized with values that effectively disable the mechanism (requiring ~32k consecutive failures). This ensures the feature remains inactive until explicitly enabled via governance.
Note on Confirmation PoC: The Confirmation PoC parameters are initialized to require 1 Confirmation PoC per Epoch.
Changes
Native Bridge
Commit: f7470c1eab3ebdda30dda90b0d81131b7b472a64.
This commit introduces primitives for native bridge for the Ethereum blockchain and contracts for its integration. Details can be found here.
BLS Signature fix
Commit: f7470c1eab3ebdda30dda90b0d81131b7b472a64.
This commit fixes a bug in BLS Group Public Key generation.
Participant Status Update
Commit: 101062297948f9a9574266adaf6439500502d6ba
This commit fixes the procedure for removing invalid and unavailable hosts from the EpochGroup.
It also introduces a mechanism for continuously excluding inactive participants using SPRT.
Details: here
Confirmation PoC
Commit: e9dbf137b0fbb050c724877b4b607da88ab1dc64
This commit introduces Random Confirmation PoC - a new layer to verify inference-serving nodes maintain computational capacity during the whole epoch.
Details: here
New Schedule for POC_SLOT=true (nodes who serves inference during PoC)
Commit: 9ce1b6099529e69cdfd792f966efedb077c4ad86
The chain automatically assigns a portion of MLNodes to serve inference during the next PoC phase to keep inference working. The initial version assigned 50% of weight per participant per model.
To raise security, this commit proposes allocation of POC_SLOT=true by model weight percentages instead of per-participant halves, using a random subset of participants who served this model in the previous epoch.
Details: here
Blackwell Support for MLNode and Fixes
Commit: b77dcaca528ccfcf74e5f02d2bc90d55229a22f5
Fix for vLLM to support Blackwell GPUs (tested on B200).
Account transfer fix
Commit: 4228a70579c195fcb7b989ddf19006d0ddf1e8ae
The commit fixes the bug which used the full account balance to transfer instead of the spendable amount. Now locked coins and spendable are transferred separately.
Paginator fix for GetMembers
Commit: bbce9f4f296c4df9b722367f47b162c9cb6f6d46
The commit fixes a bug with a missed paginator for the GetMembers function. This caused the selection of only a subset of miners. That might cause "unknown" status of validator.
MLNode status check fixes, retry mechanism
Commit: 1352c131aff8713578033362b7dc2c3e22684277
The commit fixes the MLNode status check to assign status "FAILED" if the node is not responding. Additionally, it adds a retry mechanism when a host has multiple MLNodes for the model.
Recalculate total weight after punishment
Commit: cf2d3931d2a1f8f9205194d12a4d7aa9b1d43980
The commit fixes a bug where undistributed rewards paid to the first host included rewards for invalid participants.
BLS Signature Fixes: Aggreagation and format
Commit: e4bbb293f79ed0f368900092c9e65393ca25bfdf
This commit fixes aggregation of partial signatures and align format with Etherium pre-compiled.
Changing default MLNode state to INFERENCE
Commit: deefc869249c873377ae0feb0336aee3ac5034f1
This commite changes default state for ML nodes from STOPPED to INFERENCE. This allows to validate missed inferences for claming a reward even if a node is disabled for the next epoch
Fixed a bug: ML node host and port updates are now correctly propagated, previously old addresses were cached and even after editing them via admin API PoC start requests would be sent to the old address
--
Final Tally
Messages
| # | Type |
|---|---|
| 1 | /cosmos.upgrade.v1beta1.MsgSoftwareUpgrade |
Contract Details
[
{
"@type": "/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade",
"authority": "gonka10d07y265gmmuvt4z0w9aw880jnsr700j2h5m33",
"plan": {
"name": "v0.2.5",
"time": "0001-01-01T00:00:00Z",
"height": "1404000",
"info": "{\n \"binaries\": {\n \"linux/amd64\": \"https://github.com/gonka-ai/gonka/releases/download/release%2Fv0.2.5/inferenced-amd64.zip?checksum=sha256:fab7be9bcdb4e21f058e6d19cfd698b6862bf6f5a8aeecbf9165907fc7edcc64\"\n },\n \"api_binaries\": {\n \"linux/amd64\": \"https://github.com/gonka-ai/gonka/releases/download/release%2Fv0.2.5/decentralized-api-amd64.zip?checksum=sha256:6fd12cd92e8226866be76a5e63a57e1b0041c7679db047af75e764e98668cb91\"\n }\n }",
"upgraded_client_state": null
}
}
]