diff --git a/docs/README.md b/docs/README.md index e2673d8..975d3c2 100644 --- a/docs/README.md +++ b/docs/README.md @@ -25,7 +25,7 @@ npm install @qubic-js/browser ```javascript enum Network { MAINNET, - GOERLI, + HOLESKY, POLYGON, MUMBAI, BSC, diff --git a/example/src/App.tsx b/example/src/App.tsx index cf9ac11..482fb3a 100644 --- a/example/src/App.tsx +++ b/example/src/App.tsx @@ -14,9 +14,9 @@ import { compareAddressAndLog } from './utils'; const qubicWalletConnector = wrappedConnectors.qubic[0] as QubicWalletConnector; -// https://goerli.etherscan.io/address/0x022E292b44B5a146F2e8ee36Ff44D3dd863C915c -const ERC_20_EXAMPLE_CONTRACT_ADDRESS = '0x022E292b44B5a146F2e8ee36Ff44D3dd863C915c'; -const ERC_20_EXAMPLE_CHAIN_ID = 5; +// https://holesky.etherscan.io/address/0xe20c80EEf6911888D2A13FB181B476cd5E47f6B3 +const ERC_20_EXAMPLE_CONTRACT_ADDRESS = '0xe20c80EEf6911888D2A13FB181B476cd5E47f6B3'; +const ERC_20_EXAMPLE_CHAIN_ID = 17000; const ERC_20_EXAMPLE_EXPLORER_TX = NETWORK_INFO[ERC_20_EXAMPLE_CHAIN_ID].explorerUrl + '/tx'; // These are from dev/stag/prod creator contract @@ -537,11 +537,10 @@ function App() { [address, network, web3Provider], ); - // TODO: should update contractAddress when new contract deploy - const handleGoerliMint = useCallback(async () => { + const handleHoleskyMint = useCallback(async () => { handleNftMint({ - targetNetwork: Network.GOERLI, - contractAddress: '0x5BF70eA03D7747f574A30227599AE26Bc6Be5C00', + targetNetwork: Network.HOLESKY, + contractAddress: '0x3978aaae125cba044d1d2864a68bf4e77720adbf', }); }, [handleNftMint]); @@ -634,7 +633,7 @@ function App() { Smart Contract - + diff --git a/packages/core/src/constants/backend.ts b/packages/core/src/constants/backend.ts index 05e7577..5dd4ff8 100644 --- a/packages/core/src/constants/backend.ts +++ b/packages/core/src/constants/backend.ts @@ -5,7 +5,7 @@ export const WALLET_URL = 'https://wallet.qubic.app'; // https://infura.io/docs/ethereum#section/Choose-a-Network export const INFURA_NETWORK_ENDPOINTS: Record = { [Network.MAINNET]: 'mainnet', - [Network.GOERLI]: 'goerli', + [Network.HOLESKY]: 'holesky', [Network.POLYGON]: 'polygon-mainnet', [Network.MUMBAI]: 'polygon-mumbai', // [Network.OPTIMISTIC]: 'optimism-mainnet', diff --git a/packages/core/src/constants/network.ts b/packages/core/src/constants/network.ts index f777003..fcacc3f 100644 --- a/packages/core/src/constants/network.ts +++ b/packages/core/src/constants/network.ts @@ -32,11 +32,12 @@ export const NETWORK_INFO: Record = { networkType: 'ethereum', }, - [Network.GOERLI]: { - name: 'goerli', - chainId: Network.GOERLI, - ensAddress: '0x112234455c3a32fd11230c42e7bccd4a84e02010', - explorerUrl: 'https://goerli.etherscan.io', + [Network.HOLESKY]: { + name: 'holesky', + chainId: Network.HOLESKY, + // ens currently does not support holesky + ensAddress: '0x0000000000000000000000000000000000000000', + explorerUrl: 'https://holesky.etherscan.io', color: '#f6c343', nativeToken: ETHEREUM_NATIVE_TOKEN, networkType: 'ethereum', diff --git a/packages/core/src/middlewares/multiJsonRpcServerMiddleware.ts b/packages/core/src/middlewares/multiJsonRpcServerMiddleware.ts index 62497da..1066f6a 100644 --- a/packages/core/src/middlewares/multiJsonRpcServerMiddleware.ts +++ b/packages/core/src/middlewares/multiJsonRpcServerMiddleware.ts @@ -14,6 +14,9 @@ interface MultiInfuraMiddlewareOptions { const BSC_RPC_URL = 'https://bsc-dataseed1.binance.org'; const BSC_TESTNET_RPC_URL = 'https://data-seed-prebsc-1-s1.binance.org:8545'; +// infura doesn't support holesky, so we use json rpc server here +const HOLESKY_RPC_URL = 'https://1rpc.io/holesky'; + export const createMultiInfuraMiddleware = ( options: MultiInfuraMiddlewareOptions, bridge: Bridge, @@ -22,18 +25,42 @@ export const createMultiInfuraMiddleware = ( const infuraMiddlewares = new Map>(); function getCurrentMiddleware(): JsonRpcMiddleware { - const currentMiddleware = - infuraMiddlewares.get(currentNetwork) || - ([Network.BSC, Network.BSC_TESTNET].includes(currentNetwork) - ? createJsonRpcServerMiddleware({ - url: currentNetwork === Network.BSC ? BSC_RPC_URL : BSC_TESTNET_RPC_URL, - }) - : createInfuraMiddleware({ - network: INFURA_NETWORK_ENDPOINTS[currentNetwork], - projectId: options.projectId, - })); - - infuraMiddlewares.set(currentNetwork, currentMiddleware); + const existMiddleWare = infuraMiddlewares.get(currentNetwork); + if (existMiddleWare) { + return existMiddleWare; + } + + let currentMiddleware; + + switch (currentNetwork) { + case Network.BSC: + currentMiddleware = createJsonRpcServerMiddleware({ + url: BSC_RPC_URL, + }); + + break; + case Network.BSC_TESTNET: + currentMiddleware = createJsonRpcServerMiddleware({ + url: BSC_TESTNET_RPC_URL, + }); + + break; + case Network.HOLESKY: + currentMiddleware = createJsonRpcServerMiddleware({ + url: HOLESKY_RPC_URL, + }); + + break; + default: + currentMiddleware = createInfuraMiddleware({ + network: INFURA_NETWORK_ENDPOINTS[currentNetwork], + projectId: options.projectId, + }); + + break; + } + + infuraMiddlewares.set(currentNetwork, currentMiddleware as JsonRpcMiddleware); return currentMiddleware; } diff --git a/packages/core/src/types/chain.ts b/packages/core/src/types/chain.ts index 3fc3a13..c766d1e 100644 --- a/packages/core/src/types/chain.ts +++ b/packages/core/src/types/chain.ts @@ -1,6 +1,6 @@ export enum Network { MAINNET = 1, - GOERLI = 5, + HOLESKY = 17000, POLYGON = 137, MUMBAI = 80001, // OPTIMISTIC = 10, @@ -16,10 +16,10 @@ export interface Token { } export const ALL_NETWORKS_TYPES = ['ethereum', 'polygon', 'bsc'] as const; -export type NetworkType = typeof ALL_NETWORKS_TYPES[number]; +export type NetworkType = (typeof ALL_NETWORKS_TYPES)[number]; export interface NetworkInfo { - name: 'mainnet' | 'goerli' | 'polygon' | 'mumbai' | 'bsc' | 'bscTestnet'; + name: 'mainnet' | 'holesky' | 'polygon' | 'mumbai' | 'bsc' | 'bscTestnet'; chainId: Network; ensAddress: string; explorerUrl: string; // no last `/` diff --git a/packages/react/src/connector/QubicConnector.ts b/packages/react/src/connector/QubicConnector.ts index c9dd6af..2f2c166 100644 --- a/packages/react/src/connector/QubicConnector.ts +++ b/packages/react/src/connector/QubicConnector.ts @@ -37,7 +37,7 @@ export default class QubicWalletConnector extends Connector { private eagerConnection?: Promise; private supportedChainIds = [ Network.MAINNET, - Network.GOERLI, + Network.HOLESKY, Network.POLYGON, Network.MUMBAI, Network.BSC,