From 67d9ac9d8d4429e2838259fd9c15d9db7f11ece2 Mon Sep 17 00:00:00 2001 From: Amin Moghaddam Date: Thu, 26 Jun 2025 10:45:44 -0700 Subject: [PATCH 1/2] feat(entropy-tester): accept custom endpoint --- apps/entropy-tester/config.sample.json | 3 ++- apps/entropy-tester/package.json | 2 +- apps/entropy-tester/src/index.ts | 12 ++++++++++++ contract_manager/src/core/chains.ts | 4 ++-- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/apps/entropy-tester/config.sample.json b/apps/entropy-tester/config.sample.json index 7ceb05dd28..f92cca16e1 100644 --- a/apps/entropy-tester/config.sample.json +++ b/apps/entropy-tester/config.sample.json @@ -9,6 +9,7 @@ }, { "chain-id": "blast", - "interval": "10m" + "interval": "10m", + "endpoint": "https://rpc.blast.io" } ] diff --git a/apps/entropy-tester/package.json b/apps/entropy-tester/package.json index 33d46ce646..29116077a7 100644 --- a/apps/entropy-tester/package.json +++ b/apps/entropy-tester/package.json @@ -1,6 +1,6 @@ { "name": "@pythnetwork/entropy-tester", - "version": "1.0.2", + "version": "1.1.0", "description": "Utility to test entropy provider callbacks", "private": true, "type": "module", diff --git a/apps/entropy-tester/src/index.ts b/apps/entropy-tester/src/index.ts index 815812c8f1..f72267a3a7 100644 --- a/apps/entropy-tester/src/index.ts +++ b/apps/entropy-tester/src/index.ts @@ -2,6 +2,7 @@ import fs from "node:fs/promises"; import type { PrivateKey } from "@pythnetwork/contract-manager/core/base"; import { toPrivateKey } from "@pythnetwork/contract-manager/core/base"; +import { EvmChain } from "@pythnetwork/contract-manager/core/chains"; import { EvmEntropyContract } from "@pythnetwork/contract-manager/core/contracts/evm"; import { DefaultStore } from "@pythnetwork/contract-manager/node/store"; import type { Logger } from "pino"; @@ -44,6 +45,7 @@ async function loadConfig(configPath: string): Promise { z.strictObject({ "chain-id": z.string(), interval: z.string(), + endpoint: z.string().optional(), }), ); const configContent = (await import(configPath, { @@ -66,6 +68,16 @@ async function loadConfig(configPath: string): Promise { `Multiple contracts found for chain ${config["chain-id"]}, check contract manager store.`, ); } + if (config.endpoint) { + const evmChain = firstContract.chain; + firstContract.chain = new EvmChain( + evmChain.getId(), + evmChain.isMainnet(), + evmChain.getNativeToken(), + config.endpoint, + evmChain.networkId, + ); + } return { contract: firstContract, interval }; }); return loadedConfigs; diff --git a/contract_manager/src/core/chains.ts b/contract_manager/src/core/chains.ts index 78df53a4c1..8b2f91b6ea 100644 --- a/contract_manager/src/core/chains.ts +++ b/contract_manager/src/core/chains.ts @@ -429,8 +429,8 @@ export class EvmChain extends Chain { id: string, mainnet: boolean, nativeToken: TokenId | undefined, - private rpcUrl: string, - private networkId: number, + public rpcUrl: string, + public networkId: number, ) { // On EVM networks we use the chain id as the wormhole chain name super(id, mainnet, id, nativeToken); From 7247b250ad51cec137e949c40af19916d7886c55 Mon Sep 17 00:00:00 2001 From: Amin Moghaddam Date: Thu, 26 Jun 2025 11:49:51 -0700 Subject: [PATCH 2/2] address comments --- apps/entropy-tester/config.sample.json | 2 +- apps/entropy-tester/src/index.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/entropy-tester/config.sample.json b/apps/entropy-tester/config.sample.json index f92cca16e1..f9cd1dc434 100644 --- a/apps/entropy-tester/config.sample.json +++ b/apps/entropy-tester/config.sample.json @@ -10,6 +10,6 @@ { "chain-id": "blast", "interval": "10m", - "endpoint": "https://rpc.blast.io" + "rpc-endpoint": "https://rpc.blast.io" } ] diff --git a/apps/entropy-tester/src/index.ts b/apps/entropy-tester/src/index.ts index f72267a3a7..ecadcf90d8 100644 --- a/apps/entropy-tester/src/index.ts +++ b/apps/entropy-tester/src/index.ts @@ -45,7 +45,7 @@ async function loadConfig(configPath: string): Promise { z.strictObject({ "chain-id": z.string(), interval: z.string(), - endpoint: z.string().optional(), + "rpc-endpoint": z.string().optional(), }), ); const configContent = (await import(configPath, { @@ -68,13 +68,13 @@ async function loadConfig(configPath: string): Promise { `Multiple contracts found for chain ${config["chain-id"]}, check contract manager store.`, ); } - if (config.endpoint) { + if (config["rpc-endpoint"]) { const evmChain = firstContract.chain; firstContract.chain = new EvmChain( evmChain.getId(), evmChain.isMainnet(), evmChain.getNativeToken(), - config.endpoint, + config["rpc-endpoint"], evmChain.networkId, ); }