Jelajahi Sumber

chore: env variables for rpcs (#1407)

* chore: env variables for rpcs

* Remove console log
guibescos 1 tahun lalu
induk
melakukan
a888ba318c

+ 3 - 3
governance/xc_admin/packages/xc_admin_frontend/hooks/useMultisig.ts

@@ -12,7 +12,7 @@ import {
   UPGRADE_MULTISIG,
 } from 'xc_admin_common'
 import { ClusterContext } from '../contexts/ClusterContext'
-import { pythClusterApiUrls } from '../utils/pythClusterApiUrl'
+import { deriveWsUrl, pythClusterApiUrls } from '../utils/pythClusterApiUrl'
 
 export interface MultisigHookData {
   isLoading: boolean
@@ -69,9 +69,9 @@ export const useMultisig = (): MultisigHookData => {
 
   const connection = useMemo(() => {
     const urls = pythClusterApiUrls(multisigCluster)
-    return new Connection(urls[urlsIndex].rpcUrl, {
+    return new Connection(urls[urlsIndex], {
       commitment: 'confirmed',
-      wsEndpoint: urls[urlsIndex].wsUrl,
+      wsEndpoint: deriveWsUrl(urls[urlsIndex]),
     })
   }, [urlsIndex, multisigCluster])
 

+ 3 - 3
governance/xc_admin/packages/xc_admin_frontend/hooks/usePyth.ts

@@ -13,7 +13,7 @@ import { Connection, PublicKey } from '@solana/web3.js'
 import assert from 'assert'
 import { useContext, useEffect, useRef, useState } from 'react'
 import { ClusterContext } from '../contexts/ClusterContext'
-import { pythClusterApiUrls } from '../utils/pythClusterApiUrl'
+import { deriveWsUrl, pythClusterApiUrls } from '../utils/pythClusterApiUrl'
 
 const ONES = '11111111111111111111111111111111'
 
@@ -67,9 +67,9 @@ const usePyth = (): PythHookData => {
   useEffect(() => {
     let cancelled = false
     const urls = pythClusterApiUrls(cluster)
-    const connection = new Connection(urls[urlsIndex].rpcUrl, {
+    const connection = new Connection(urls[urlsIndex], {
       commitment: 'confirmed',
-      wsEndpoint: urls[urlsIndex].wsUrl,
+      wsEndpoint: deriveWsUrl(urls[urlsIndex]),
     })
 
     connectionRef.current = connection

+ 32 - 72
governance/xc_admin/packages/xc_admin_frontend/utils/pythClusterApiUrl.ts

@@ -1,88 +1,40 @@
-import { PythCluster } from '@pythnetwork/client/lib/cluster'
+import {
+  PythCluster,
+  getPythClusterApiUrl,
+} from '@pythnetwork/client/lib/cluster'
 
-const CLUSTER_URLS: Record<PythCluster, any> = {
+const CLUSTER_URLS: Record<PythCluster, string[]> = {
   'mainnet-beta': [
-    {
-      rpcUrl: 'http://mainnet.xyz.pyth.network',
-      wsUrl: 'ws://mainnet.xyz.pyth.network',
-    },
-    {
-      rpcUrl:
-        'https://pyth-network.rpcpool.com/' +
-        (process.env.NEXT_PUBLIC_RPC_POOL_TOKEN || ''),
-      wsUrl:
-        'wss://pyth-network.rpcpool.com/' +
-        (process.env.NEXT_PUBLIC_RPC_POOL_TOKEN || ''),
-    },
-    {
-      rpcUrl: 'http://pyth-rpc1.certus.one:8899/',
-      wsUrl: 'ws://pyth-rpc1.certus.one:8900/',
-    },
-    {
-      rpcUrl: 'http://pyth-rpc2.certus.one:8899/',
-      wsUrl: 'ws://pyth-rpc2.certus.one:8900/',
-    },
-    {
-      rpcUrl: 'https://api.mainnet-beta.solana.com/',
-      wsUrl: 'wss://api.mainnet-beta.solana.com/',
-    },
+    process.env.NEXT_PUBLIC_MAINNET_RPC || getPythClusterApiUrl('mainnet-beta'),
+    'https://pyth-network.rpcpool.com/' +
+      (process.env.NEXT_PUBLIC_RPC_POOL_TOKEN || ''),
+    'http://pyth-rpc1.certus.one:8899/',
+    'http://pyth-rpc2.certus.one:8899/',
+    'https://api.mainnet-beta.solana.com/',
   ],
   devnet: [
-    {
-      rpcUrl: 'http://devnet.xyz.pyth.network',
-      wsUrl: 'ws://devnet.xyz.pyth.network',
-    },
-    {
-      rpcUrl: 'https://api.devnet.solana.com/',
-      wsUrl: 'wss://api.devnet.solana.com/',
-    },
+    process.env.NEXT_PUBLIC_DEVNET_RPC || getPythClusterApiUrl('devnet'),
+    'https://api.devnet.solana.com/',
   ],
   testnet: [
-    {
-      rpcUrl: 'http://testnet.xyz.pyth.network',
-      wsUrl: 'ws://testnet.xyz.pyth.network',
-    },
-    {
-      rpcUrl: 'https://api.testnet.solana.com/',
-      wsUrl: 'wss://api.testnet.solana.com/',
-    },
+    process.env.NEXT_PUBLIC_TESTNET_RPC || getPythClusterApiUrl('testnet'),
+    'https://api.testnet.solana.com/',
   ],
   'pythtest-conformance': [
-    {
-      rpcUrl: 'http://pythtest.xyz.pyth.network',
-      wsUrl: 'ws://pythtest.xyz.pyth.network',
-    },
-    {
-      rpcUrl: 'https://api.pythtest.pyth.network/',
-      wsUrl: 'wss://api.pythtest.pyth.network/',
-    },
+    process.env.NEXT_PUBLIC_PYTHTEST_RPC ||
+      getPythClusterApiUrl('pythtest-conformance'),
+    'https://api.pythtest.pyth.network/',
   ],
   'pythtest-crosschain': [
-    {
-      rpcUrl: 'http://pythtest.xyz.pyth.network',
-      wsUrl: 'ws://pythtest.xyz.pyth.network',
-    },
-    {
-      rpcUrl: 'https://api.pythtest.pyth.network/',
-      wsUrl: 'wss://api.pythtest.pyth.network/',
-    },
+    process.env.NEXT_PUBLIC_PYTHTEST_RPC ||
+      getPythClusterApiUrl('pythtest-crosschain'),
+    'https://api.pythtest.pyth.network/',
   ],
   pythnet: [
-    {
-      rpcUrl: 'http://pythnet.xyz.pyth.network',
-      wsUrl: 'ws://pythnet.xyz.pyth.network',
-    },
-    {
-      rpcUrl: 'https://pythnet.rpcpool.com/',
-      wsUrl: 'wss://pythnet.rpcpool.com/',
-    },
-  ],
-  localnet: [
-    {
-      rpcUrl: 'http://localhost:8899/',
-      wsUrl: 'ws://localhost:8900/',
-    },
+    process.env.NEXT_PUBLIC_PYTHNET_RPC || getPythClusterApiUrl('pythnet'),
+    'https://pythnet.rpcpool.com/',
   ],
+  localnet: ['http://localhost:8899/'],
 }
 
 export function pythClusterApiUrls(cluster: PythCluster) {
@@ -92,3 +44,11 @@ export function pythClusterApiUrls(cluster: PythCluster) {
     return []
   }
 }
+
+export function deriveWsUrl(httpUrl: string) {
+  if (httpUrl.startsWith('https://')) {
+    return 'wss://' + httpUrl.slice(8)
+  } else {
+    return 'ws://' + httpUrl.slice(7)
+  }
+}