Repository navigation
release: dev -> staging (dac.wasm v0.9.5, spec_version 80023) - #761
Merged
Merged
Conversation
Advances the DDC deps onto their staging tips carrying the shared-resource cutoff split, and bumps spec_version 80022 -> 80023 in both runtimes so testnet validators take the new payout arithmetic. A node used by several providers no longer has its whole cutoff deducted from whichever claim was recorded last — the behaviour that made a provider's reward depend on the order the EHD listed providers in, split the payout quorum on testnet era 497221 and stopped payouts at era 497220. Deliberately excludes the frame_metadata_hash_extension change that dev carries; it is unrelated to this fix and alters the signed-extension set. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Final step of the staging cascade. Advances the DDC deps onto their staging tips and bumps
spec_version80022 -> 80023 in both runtimes.ddc-dac-host9363d5a629191f00(v0.9.5dac.wasm)pallet-ddc-verification9a70698c2ed3a812pallet-ddc-payouts15bec04902f28a16ddc-primitives(c2e2ee05) andddc-api(efec317c) are unchanged.Why
This is what reaches testnet — it runs the staging line, currently
spec_version80022.The defect. A node can serve several providers at once; in era 497221 one GPU machine was shared by ten of them, each reporting its own slice. The wasm's owner map modelled that as one-to-one, so nine claims were silently dropped and the node's entire cutoff was deducted from the single survivor. Which one survived depended on the order the EHD listed providers in — collectors serve that order differently, and the EHD merkle hash does not bind it, so the difference reached each validator with every integrity check satisfied.
The consequence. Six distinct
payees_rootvalues across seven validators, against a quorum threshold of four.begin_payoutrejected withInvalidTransaction::Custom(11)every pass; payouts stopped atlast_paid_era497220 and are ~45 eras behind.The fix. A shared resource's cutoff now divides across its claimants in proportion to what each reported, with claimants sorted by owner id so the outcome cannot depend on input order.
Scope — what this deliberately does not bring
dev also carries a
frame_metadata_hash_extensionchange (CheckMetadataHashcommented out, "coupled to hyperbridge for now"). That is unrelated to this fix and alters the runtime's signed-extension set, so it is not ported here. staging keepsCheckMetadataHashenabled.This is why the release is a curated port rather than a dev -> staging merge: staging has also diverged in its own right, with 11 staging-only commits in ddc-api, 20 in ddc-verification and 28 in ddc-payouts.
Verification
cargo build --release --locked -p cere-runtime— cleancargo build --release --locked -p cere-dev-runtime— cleanbranch=staging, one copy of each in the lockfileCheckMetadataHashconfirmed still present in both runtimesspec_version80023 in bothUpstream on this line: ddc-verification 64 tests pass unchanged; ddc-payouts 86 pass including two end-to-end tests that fail against the previous blob with
reversing the provider order changed the payout.Cascade (staging line)
ddc-dacv0.9.5 ✅ ->ddc-dac-host#30 ✅ ->ddc-verification#88 ✅ ->ddc-payouts#97 ✅ ->blockchain-nodeAfter deploy — era 497221 needs one manual step
The upgrade alone will not unstick it.
fetch_era_payable_usageis cache-first, so every validator keeps serving the payable usage it computed under the old wasm and re-commits the same divergent fingerprint. Clear on all 7 testnet validators:(procedure in the
testnet-ocw-lock-stateskill). They then recompute identically, commit one shared fingerprint, 7 >= 4 quorum forms, and the backlog drains.🤖 Generated with Claude Code