From dca4ac9a474fc509f4bdcffa3f29d03a8bda6513 Mon Sep 17 00:00:00 2001 From: Adam Zellers Date: Fri, 5 Dec 2025 14:16:28 -0600 Subject: [PATCH 1/3] Deploy Pyth on Celo Sepolia testnet --- .../core/contract-addresses/evm.mdx | 1 + contract_manager/scripts/common.ts | 2 +- .../src/store/chains/EvmChains.json | 7 +++ .../contracts/EvmPriceFeedContracts.json | 5 ++ .../store/contracts/EvmWormholeContracts.json | 5 ++ .../packages/xc_admin_common/src/chains.ts | 1 + pnpm-lock.yaml | 4 ++ pnpm-workspace.yaml | 50 ++++++++++--------- target_chains/ethereum/contracts/deploy.sh | 2 +- target_chains/ethereum/contracts/package.json | 3 +- 10 files changed, 54 insertions(+), 26 deletions(-) diff --git a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/evm.mdx b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/evm.mdx index 76932a65d8..e3db6e81c5 100644 --- a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/evm.mdx +++ b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/evm.mdx @@ -101,6 +101,7 @@ Pyth is currently available on the EVM networks below using Pyth Stable price so | Ble testnet | | | Boba Sepolia (testnet) | | | Celo Alfajores (testnet) | | +| Celo Sepolia (testnet) | | | Chiado (Gnosis testnet) | | | Chiliz testnet | | | Conflux eSpace testnet | | diff --git a/contract_manager/scripts/common.ts b/contract_manager/scripts/common.ts index 2e4f74ab57..bcf8e93ed1 100644 --- a/contract_manager/scripts/common.ts +++ b/contract_manager/scripts/common.ts @@ -14,7 +14,7 @@ import { existsSync, readFileSync, writeFileSync } from "node:fs"; import path from "node:path"; import Web3 from "web3"; -import { Contract } from "web3-eth-contract"; +import type { Contract } from "web3-eth-contract"; import type { InferredOptionType } from "yargs"; import type { PrivateKey } from "../src/core/base"; diff --git a/contract_manager/src/store/chains/EvmChains.json b/contract_manager/src/store/chains/EvmChains.json index 680556f271..b4141292b4 100644 --- a/contract_manager/src/store/chains/EvmChains.json +++ b/contract_manager/src/store/chains/EvmChains.json @@ -1384,5 +1384,12 @@ "rpcUrl": "https://subnets.avax.network/orange/mainnet/rpc", "networkId": 1510, "type": "EvmChain" + }, + { + "id": "celo_sepolia_testnet", + "mainnet": false, + "rpcUrl": "https://forno.celo-sepolia.celo-testnet.org", + "networkId": 11142220, + "type": "EvmChain" } ] diff --git a/contract_manager/src/store/contracts/EvmPriceFeedContracts.json b/contract_manager/src/store/contracts/EvmPriceFeedContracts.json index 27df5c5ff4..8a1dac1c31 100644 --- a/contract_manager/src/store/contracts/EvmPriceFeedContracts.json +++ b/contract_manager/src/store/contracts/EvmPriceFeedContracts.json @@ -913,5 +913,10 @@ "chain": "orange", "address": "0x2880aB155794e7179c9eE2e38200202908C17B43", "type": "EvmPriceFeedContract" + }, + { + "chain": "celo_sepolia_testnet", + "address": "0x2880aB155794e7179c9eE2e38200202908C17B43", + "type": "EvmPriceFeedContract" } ] \ No newline at end of file diff --git a/contract_manager/src/store/contracts/EvmWormholeContracts.json b/contract_manager/src/store/contracts/EvmWormholeContracts.json index 2d79485ca9..34e33d34b7 100644 --- a/contract_manager/src/store/contracts/EvmWormholeContracts.json +++ b/contract_manager/src/store/contracts/EvmWormholeContracts.json @@ -923,5 +923,10 @@ "chain": "orange", "address": "0xb27e5ca259702f209a29225d0eDdC131039C9933", "type": "EvmWormholeContract" + }, + { + "chain": "celo_sepolia_testnet", + "address": "0xb27e5ca259702f209a29225d0eDdC131039C9933", + "type": "EvmWormholeContract" } ] \ No newline at end of file diff --git a/governance/xc_admin/packages/xc_admin_common/src/chains.ts b/governance/xc_admin/packages/xc_admin_common/src/chains.ts index ee767504ba..9da975939c 100644 --- a/governance/xc_admin/packages/xc_admin_common/src/chains.ts +++ b/governance/xc_admin/packages/xc_admin_common/src/chains.ts @@ -266,6 +266,7 @@ export const RECEIVER_CHAINS = { hoodi: 50134, // Ethereum hoodi, the new Ethereum testnet taiko_hoodi: 50135, morph_hoodi: 50136, + celo_sepolia_testnet: 50137, }; // If there is any overlapping value the receiver chain will replace the wormhole diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1743627efc..5f3c1862ac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2844,6 +2844,9 @@ importers: ts-node: specifier: 'catalog:' version: 10.9.2(@swc/core@1.15.3)(@types/node@22.14.0)(typescript@5.9.3) + tsx: + specifier: 'catalog:' + version: 4.20.6 web3: specifier: ^1.2.2 version: 1.10.4(bufferutil@4.0.7)(encoding@0.1.13)(utf-8-validate@6.0.3) @@ -17758,6 +17761,7 @@ packages: next@15.5.7: resolution: {integrity: sha512-+t2/0jIJ48kUpGKkdlhgkv+zPTEOoXyr60qXe68eB/pl3CMJaLeIGjzp5D6Oqt25hCBiBTt8wEeeAzfJvUKnPQ==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + deprecated: This version has a security vulnerability. Please upgrade to a patched version. See https://nextjs.org/blog/CVE-2025-66478 for more details. hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 0da644a6ad..b1ab5f0e75 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,16 +1,3 @@ -packageManagerStrict: true -packageManagerStrictVersion: true -engineStrict: true -strictDepBuilds: true -managePackageManagerVersions: true - -overrides: - "@solana/web3.js@1.77.4>rpc-websockets": 7.11.0 - -patchedDependencies: - "eccrypto@1.1.6": patches/eccrypto@1.1.6.patch - "@ton/blueprint": patches/@ton__blueprint.patch - packages: - apps/* - packages/* @@ -187,17 +174,21 @@ catalog: zod-search-params: ^0.1.6 zod-validation-error: ^3.4.0 +engineStrict: true + +managePackageManagerVersions: true + onlyBuiltDependencies: - - "@apollo/protobufjs" - - "@injectivelabs/networks" - - "@injectivelabs/sdk-ts" - - "@injectivelabs/token-metadata" - - "@injectivelabs/utils" - - "@parcel/watcher" - - "@scarf/scarf" - - "@swc/core" - - "@tailwindcss/oxide" - - "@trufflesuite/bigint-buffer" + - '@apollo/protobufjs' + - '@injectivelabs/networks' + - '@injectivelabs/sdk-ts' + - '@injectivelabs/token-metadata' + - '@injectivelabs/utils' + - '@parcel/watcher' + - '@scarf/scarf' + - '@swc/core' + - '@tailwindcss/oxide' + - '@trufflesuite/bigint-buffer' - bigint-buffer - blake-hash - bufferutil @@ -222,3 +213,16 @@ onlyBuiltDependencies: - web3 - web3-bzz - web3-shh + +overrides: + '@solana/web3.js@1.77.4>rpc-websockets': 7.11.0 + +packageManagerStrict: true + +packageManagerStrictVersion: true + +patchedDependencies: + '@ton/blueprint': patches/@ton__blueprint.patch + eccrypto@1.1.6: patches/eccrypto@1.1.6.patch + +strictDepBuilds: true diff --git a/target_chains/ethereum/contracts/deploy.sh b/target_chains/ethereum/contracts/deploy.sh index 0f2880bc18..1f7469add9 100755 --- a/target_chains/ethereum/contracts/deploy.sh +++ b/target_chains/ethereum/contracts/deploy.sh @@ -44,7 +44,7 @@ pnpm turbo build --filter @pythnetwork/pyth-evm-contract echo "=========== Deploying the contracts ===========" -pnpm --filter=@pythnetwork/contract-manager exec ts-node scripts/deploy_evm_pricefeed_contracts.ts --std-output-dir $stdoutputdir --private-key $PK --chain "$@" +pnpm --filter=@pythnetwork/contract-manager exec tsx scripts/deploy_evm_pricefeed_contracts.ts --std-output-dir $stdoutputdir --private-key $PK --chain "$@" echo "=========== Cleaning up ===========" if [ -n "${tmpdir:-}" ]; then diff --git a/target_chains/ethereum/contracts/package.json b/target_chains/ethereum/contracts/package.json index ee5b3a45bd..eb7e38ac80 100644 --- a/target_chains/ethereum/contracts/package.json +++ b/target_chains/ethereum/contracts/package.json @@ -30,11 +30,11 @@ "@matterlabs/hardhat-zksync": "^1.1.0", "@matterlabs/hardhat-zksync-deploy": "^0.6.6", "@matterlabs/hardhat-zksync-solc": "^0.3.14", + "@nomad-xyz/excessively-safe-call": "^0.0.1-rc.1", "@nomiclabs/hardhat-etherscan": "^3.1.7", "@openzeppelin/contracts": "=4.8.1", "@openzeppelin/contracts-upgradeable": "=4.8.1", "@openzeppelin/hardhat-upgrades": "^1.22.1", - "@nomad-xyz/excessively-safe-call": "^0.0.1-rc.1", "@pythnetwork/contract-manager": "workspace:*", "@pythnetwork/entropy-sdk-solidity": "workspace:*", "@pythnetwork/pulse-sdk-solidity": "workspace:*", @@ -49,6 +49,7 @@ "lodash": "^4.17.21", "solc": "0.8.4", "ts-node": "catalog:", + "tsx": "catalog:", "web3": "^1.2.2", "web3-eth-abi": "^1.2.2", "web3-utils": "^1.2.2", From cd0137ebe6c04c3f35fcf770a87bffcea9155177 Mon Sep 17 00:00:00 2001 From: Adam Zellers Date: Fri, 5 Dec 2025 15:34:58 -0600 Subject: [PATCH 2/3] Revert formatting change to pnpm-workspace.yaml --- pnpm-workspace.yaml | 50 +++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b1ab5f0e75..0da644a6ad 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,16 @@ +packageManagerStrict: true +packageManagerStrictVersion: true +engineStrict: true +strictDepBuilds: true +managePackageManagerVersions: true + +overrides: + "@solana/web3.js@1.77.4>rpc-websockets": 7.11.0 + +patchedDependencies: + "eccrypto@1.1.6": patches/eccrypto@1.1.6.patch + "@ton/blueprint": patches/@ton__blueprint.patch + packages: - apps/* - packages/* @@ -174,21 +187,17 @@ catalog: zod-search-params: ^0.1.6 zod-validation-error: ^3.4.0 -engineStrict: true - -managePackageManagerVersions: true - onlyBuiltDependencies: - - '@apollo/protobufjs' - - '@injectivelabs/networks' - - '@injectivelabs/sdk-ts' - - '@injectivelabs/token-metadata' - - '@injectivelabs/utils' - - '@parcel/watcher' - - '@scarf/scarf' - - '@swc/core' - - '@tailwindcss/oxide' - - '@trufflesuite/bigint-buffer' + - "@apollo/protobufjs" + - "@injectivelabs/networks" + - "@injectivelabs/sdk-ts" + - "@injectivelabs/token-metadata" + - "@injectivelabs/utils" + - "@parcel/watcher" + - "@scarf/scarf" + - "@swc/core" + - "@tailwindcss/oxide" + - "@trufflesuite/bigint-buffer" - bigint-buffer - blake-hash - bufferutil @@ -213,16 +222,3 @@ onlyBuiltDependencies: - web3 - web3-bzz - web3-shh - -overrides: - '@solana/web3.js@1.77.4>rpc-websockets': 7.11.0 - -packageManagerStrict: true - -packageManagerStrictVersion: true - -patchedDependencies: - '@ton/blueprint': patches/@ton__blueprint.patch - eccrypto@1.1.6: patches/eccrypto@1.1.6.patch - -strictDepBuilds: true From d9ca6c1d479308e1c79ecebf129ca91006437b7a Mon Sep 17 00:00:00 2001 From: Adam Zellers Date: Mon, 8 Dec 2025 08:44:10 -0600 Subject: [PATCH 3/3] Fix developer-hub doc formatting --- .../docs/price-feeds/pro/payload-reference.mdx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/developer-hub/content/docs/price-feeds/pro/payload-reference.mdx b/apps/developer-hub/content/docs/price-feeds/pro/payload-reference.mdx index b9519ad37d..ac9ddc1bee 100644 --- a/apps/developer-hub/content/docs/price-feeds/pro/payload-reference.mdx +++ b/apps/developer-hub/content/docs/price-feeds/pro/payload-reference.mdx @@ -239,13 +239,13 @@ Based on the [API documentation](https://pyth-lazer.dourolabs.app/docs), you can Pyth Pro offers multiple delivery channels to match your latency and frequency requirements: -| Channel | Description | Use Cases | -| ------------------ | ---------------------------------------------------------------------------------------------- | ------------------------------------------- | -| `real_time` | Updates sent immediately when new price is available (no faster than 1ms, no slower than 50ms) | High-frequency trading, real-time analytics | -| `fixed_rate@1ms` | Updates every 1 millisecond | Ultra-low latency applications | -| `fixed_rate@50ms` | Updates every 50 milliseconds | Low-latency trading systems | -| `fixed_rate@200ms` | Updates every 200 milliseconds | Standard trading applications | -| `fixed_rate@1000ms` | Updates every 1 second | General applications, dashboards | +| Channel | Description | Use Cases | +| ------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------- | +| `real_time` | Updates sent immediately when new price is available (no faster than 1ms, no slower than 50ms) | High-frequency trading, real-time analytics | +| `fixed_rate@1ms` | Updates every 1 millisecond | Ultra-low latency applications | +| `fixed_rate@50ms` | Updates every 50 milliseconds | Low-latency trading systems | +| `fixed_rate@200ms` | Updates every 200 milliseconds | Standard trading applications | +| `fixed_rate@1000ms` | Updates every 1 second | General applications, dashboards | ## Signature Schemes and Binary Formats