Abstract
Perform a governance upgrade of the Wormhole Core contract on Solana Mainnet to fix an issue with guardian set expiration handling.
The upgrade enables setting a non-zero guardian set TTL (24 hours), allowing upcoming Wormhole guardian key rotations to be executed without downtime.
Rationale
Wormhole guardians will be rotating keys in multiple batches over the coming weeks, with a final update on Ethereum requiring downstream chains to update within a 24-hour window to avoid message verification downtime.
Our Solana deployment of the Wormhole Core contract contains a bug where the previous guardian set expiration is set to zero, which prevents safe, zero-downtime guardian set updates.
Because this value cannot be modified in the existing program, a contract upgrade is required.
Executing this upgrade via governance ensures continuity for all Pyth Core users on Solana during the guardian rotation process.
Description
This proposal emits a single Wormhole governance message targeting the Solana chain to upgrade the Wormhole Core contract in place.
The upgraded contract hardcodes the guardian set expiration to 24 hours and adds support for updating the guardian set TTL.
No changes are made to the Wormhole address, preserving compatibility with existing client integrations and SDKs.
Implementation plan
Wormhole Core program changes:
https://github.com/guibescos/wormhole/commit/472a4f39f80344104dc6c3a92ea0f947efcf1813
Governance and CLI tooling updates:
https://github.com/pyth-network/pyth-crosschain/pull/3418
Build requirements:
-
anchor-cli 0.29.0
-
solana-cli 1.17.34
-
UNIX system running ARM-64 architecture
Build instructions:
cd solana/
NETWORK=mainnet make build
Expected artifact:
artifacts-mainnet/wormhole_core_bridge_solana.so
Verified SHA256:
ce1706e6ca3256f18be8c4f49bed162014eace06bea16899e82de591617f8017
Proposal ID
9stw4GeNBgxasLdiEdK41W39jm6h8uDJKCa3gjgBwjgt
Proposal verification
Reproduce the Wormhole Core program build using the commit referenced above and verify that the resulting binary matches the expected SHA256 hash.
Proposal link: Pyth Network