Abstract
This proposal: Pyth Network
-
Upgrades the Pyth Core contracts on Cronos zkEVM, IOTA EVM, and Etherlink to v1.4.6, which includes the
WithdrawFeegovernance action. -
Withdraws the remaining Pyth Core fee balances from five EVM chains to the corresponding Pythian Council multisigs.
Cronos zkEVM, IOTA EVM, Etherlink, and Flow EVM were not included in the WithdrawFee portion of OP-PIP-128 because the Pythian Council did not have Safe multisigs deployed on those chains at the time.
The Flow EVM contract is already running v1.4.6 and only requires the withdrawal action. HyperEVM was included in OP-PIP-128, but the previous withdrawal did not recover the full balance, leaving 47.3 HYPE available for withdrawal.
Rationale
OP-PIP-128 upgraded older Pyth Core contracts to v1.4.6 where necessary, set protocol fees to zero, and repatriated accumulated balances to Pythian Council multisigs where Safe coverage existed.
The WithdrawFee governance action was added after the v1.4.3 contract version.[8][9][10] A live check of the five relevant Pyth Core proxies found the following versions:
| Chain | Pyth Core contract | Current version | Required action |
| ------------ | -------------------------------------------- | --------------- | ------------------------------------- |
| HyperEVM | `0xe9d69CdD6Fe41e7B621B4A688C5D1a68cB5c8ADc` | `1.4.6` | `WithdrawFee` |
| Cronos zkEVM | `0x056f829183Ec806A78c26C98961678c24faB71af` | `1.4.3` | `UpgradeContract`, then `WithdrawFee` |
| IOTA EVM | `0x8D254a21b3C86D32F7179855531CE99164721933` | `1.4.3` | `UpgradeContract`, then `WithdrawFee` |
| Etherlink | `0x2880aB155794e7179c9eE2e38200202908C17B43` | `1.4.3` | `UpgradeContract`, then `WithdrawFee` |
| Flow EVM | `0x2880aB155794e7179c9eE2e38200202908C17B43` | `1.4.6` | `WithdrawFee` |
The three v1.4.3 contracts must therefore be upgraded before they can process the withdrawal instruction. HyperEVM and Flow EVM do not require the upgrade portion.
OP-PIP-128 already addressed fee zeroing. This proposal does not repeat the SetFee action; it is limited to the missing contract upgrades and balance withdrawals.
Proposed Actions
Part 1: Upgrade Pyth Core contracts to v1.4.6
Execute GovernanceAction.UpgradeContract — action 0 — on:
- Cronos zkEVM
- IOTA EVM
- Etherlink
The final governance payloads will specify the v1.4.6 implementation address deployed for each chain. Those implementation addresses must be included and verified before proposal submission.
Part 2: Withdraw fee balances to Pythian Council multisigs
Execute GovernanceAction.WithdrawFee — action 9 — on all five chains:
| Chain | Asset | Exact withdrawal amount | Payload `(value, expo)` | Pythian Council multisig |
| ------------ | ----- | --------------------------------- | -------------------------- | -------------------------------------------- |
| HyperEVM | HYPE | `47.368500000000000030 HYPE` | `(4736850000000000003, 1)` | `0xD879B2c9e70CA8e4bED04223D95f45F87F33B935` |
| Cronos zkEVM | zkCRO | `20,954.760000000000000000 zkCRO` | `(2095476000000000000, 4)` | `0x9eB6D388f982FC3099D64eFDCB112B83c60C9693` |
| IOTA EVM | IOTA | `48,401.800000000010210000 IOTA` | `(4840180000000001021, 4)` | `0x2Da927bdFe9D2D1A6c077Fda697A854F133110D4` |
| Etherlink | XTZ | `19,464.760000000119260000 XTZ` | `(1946476000000011926, 4)` | `0x543FE3fEa9568CA4A40adFcA45C6cD34151cE724` |
| Flow EVM | FLOW | `30,040.700000000001060000 FLOW` | `(3004070000000000106, 4)` | `0x1736Ff121d01AAcE816a88Bb454934F324a207D2` |
The amounts above are expressed in display units for readability. The balances must be rechecked immediately before proposal creation, and the final payloads must encode the exact available amounts in base units.
Implementation
The proposal uses the existing Pyth Core governance actions:
GovernanceAction.UpgradeContract // action 0
GovernanceAction.WithdrawFee // action 9
For Cronos zkEVM, IOTA EVM, and Etherlink, the instructions must execute in this order:
UpgradeContractto the verified v1.4.6 implementation.WithdrawFeeto the relevant Pythian Council multisig.
For HyperEVM and Flow EVM, only the WithdrawFee instruction is required.
All instructions will execute through the existing Wormhole governance process. The WithdrawFee payload will specify the recipient address and the exact chain-specific amount using the required value/exponent encoding.
Scope
This proposal authorizes:
- Three Pyth Core contract upgrades to v1.4.6.
- Withdrawal of the listed accumulated fee balances to the Pythian Council multisigs.
This proposal does not authorize:
- Any additional changes to Pyth Core fee settings
- Fee zeroing beyond the actions already authorized by OP-PIP-128
- Swaps or bridging transactions
- Transfers from the Pythian Council multisigs to the DAO Treasury
- Any other contract upgrades
Any subsequent swap, bridge, or treasury transfer remains subject to the applicable DAO and Pythian Council authorities under OP-PIP-125.
Verification
Before proposal submission and execution:
-
Deploy the v1.4.6 implementation contracts for Cronos zkEVM, IOTA EVM, and Etherlink.
-
Verify that each implementation matches the intended v1.4.6 source bytecode.
-
Confirm the Pyth Core proxy addresses and current implementation addresses on all five chains.
-
Confirm that each listed recipient is the intended Pythian Council Safe multisig.
-
Recheck the available native-token balances and decimals.
-
Generate the governance payloads with the exact base-unit amounts.
-
Decode the completed proposal and verify:
-
Chain targets
-
Upgrade implementation addresses
-
Upgrade-before-withdrawal ordering
-
Withdrawal recipient addresses
-
Withdrawal amounts
- After execution, publish the transaction hashes and actual withdrawn amounts for each chain.
References
- OP-PIP-128: Pyth Core Sunset — Fee Zeroing & Balance Repatriation
- OP-PIP-125: Cross-Chain Fee Repatriation Framework
- Commit adding
WithdrawFee - Pyth Core EVM contract addresses
Proposal ID: Pyth Network