Skip to content

fix(pyth): accept signed router governance rotations - #2082

Merged
troian merged 1 commit into
mainnet/mainfrom
chalabi/pyth-governance-emitter-fix
Sep 23, 2026
Merged

troian merged 1 commit into
mainnet/mainfrom
chalabi/pyth-governance-emitter-fix

Conversation

@chalabi2

Copy link
Copy Markdown
Contributor

Separates router-rotation governance emitter checks from Pyth price emitter checks. Uses Pyth's unchanged production set-0 to set-1 VAA as a regression fixture. Keeps quorum, signature, sequential-index, target-chain, and replay checks intact. Migration preserves both legacy and already-converted router state.

Validation: 61 contract tests, verifier clippy, optimized Wasm build. On a sandbox-snapshot local fork, the old verifier rejected the authentic VAA; after migration, Hermes automatically submitted it and retried a live AKT price successfully. Replay was rejected. The historical VAA was served through a local HTTP endpoint; a future live rotation has not been observed.

Sandbox proposal 36 passed with the tested Wasm. No mainnet migration performed.

Separate signed router governance from price emitter validation and test
the unchanged published production set-1 VAA. Preserve existing router
state when migrating an already-converted verifier.

Signed-off-by: Joseph Chalabi <chalabi.joseph@gmail.com>
@chalabi2
chalabi2 requested a review from a team as a code owner September 23, 2026 15:47
@coderabbitai

coderabbitai Bot commented Sep 23, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository: akash-network/node/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 6a79eff8-272c-420d-8408-72c4205cc6ed

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@chalabi2

Copy link
Copy Markdown
Contributor Author

Sandbox validation completed for the contract: proposal 36 migrated the live verifier to code 9, checksum 89c12c7596b7500073423ffe0c386d1c9b8484d8484591acf25d8bf3fc2fce05. Configuration and active set 1 were preserved; prices continued advancing.

A separate sandbox instance using that code was initialized at production set 0. A non-admin successfully submitted Pyth's unchanged published set-1 rotation VAA (tx 6229DDF8122A38E73CF8F51D39B42A372E346A420E7CA324D0F737490F404DD3). Tampering failed with RouterSignatureError; replay failed with InvalidRouterSetIndex; rejected messages left state unchanged. The standalone instance is not connected to the live oracle.

No mainnet transaction was submitted.

@troian
troian merged commit 328f51d into mainnet/main Sep 23, 2026
15 checks passed
@troian
troian deleted the chalabi/pyth-governance-emitter-fix branch September 23, 2026 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants