diff --git a/src/solana/SolanaEngine.ts b/src/solana/SolanaEngine.ts index 75c766ec8..c6e5139d1 100644 --- a/src/solana/SolanaEngine.ts +++ b/src/solana/SolanaEngine.ts @@ -126,9 +126,11 @@ export class SolanaEngine extends CurrencyEngine< const funcs = rpcNodes.map(serverUrl => async () => { serverUrl = this.tools.rpcWithApiKey(serverUrl) const res = await this.fetch(serverUrl, options) - if (!res.ok) { + const json = await res.json() + if (!res.ok || json.error != null) { + this.log.warn('fetchRpc error', json) throw new Error( - `fetchRpc ${options.method} failed error: ${res.status}` + `fetchRpc ${options.method} failed error: ${json.error ?? res.status}` ) } const out = await res.json() @@ -177,7 +179,9 @@ export class SolanaEngine extends CurrencyEngine< }) } - const balances: any = await this.fetchRpcBulk(requests) + const res = await this.fetchRpcBulk(requests) + this.log.warn('queryBalance res', res) + const balances: any = res const [mainnetBal, ...tokenBals]: [AccountBalance, TokenAmount[]] = balances diff --git a/src/solana/SolanaTools.ts b/src/solana/SolanaTools.ts index cda491556..8da759df0 100644 --- a/src/solana/SolanaTools.ts +++ b/src/solana/SolanaTools.ts @@ -218,11 +218,19 @@ export class SolanaTools implements EdgeCurrencyTools { } makeConnections(rpcUrls: string[]): Connection[] { - const fetchCorsBypassed: EdgeFetchFunction = async (uri, opts) => - await this.io.fetch(uri, { + const fetchCorsBypassed: EdgeFetchFunction = async (uri, opts) => { + const res = await this.io.fetch(uri, { ...opts, corsBypass: 'always' }) + // Alchemy returns status 200 (ok) for failed requests + const json = await res.json() + if (json.error != null) { + throw new Error(`fetchCorsBypassed: ${json.error}`) + } + + return res + } const connectionConfig: ConnectionConfig = { commitment: this.networkInfo.commitment, fetch: fetchCorsBypassed as FetchFn diff --git a/src/solana/solanaInfo.ts b/src/solana/solanaInfo.ts index 4f7887f02..59f996fc9 100644 --- a/src/solana/solanaInfo.ts +++ b/src/solana/solanaInfo.ts @@ -186,15 +186,16 @@ const builtinTokens: EdgeTokenMap = { const networkInfo: SolanaNetworkInfo = { rpcNodes: [ // 'https://api.mainnet-beta.solana.com', - // 'https://solana-mainnet.rpc.grove.city/v1/{{poktPortalApiKey}}', // fails to return some transactions - 'https://mainnet.helius-rpc.com/?api-key={{heliusApiKey}}' + 'https://solana-mainnet.rpc.grove.city/v1/{{poktPortalApiKey}}' // fails to return some transactions + // 'https://mainnet.helius-rpc.com/?api-key={{heliusApiKey}}' ], rpcNodesArchival: [ // 'https://api.mainnet-beta.solana.com', - // 'https://solana-mainnet.g.alchemy.com/v2/{{alchemyApiKey}}', - 'https://mainnet.helius-rpc.com/?api-key={{heliusApiKey}}' + 'https://solana-mainnet.g.alchemy.com/v2/{{alchemyApiKey}}' + // 'https://mainnet.helius-rpc.com/?api-key={{heliusApiKey}}' ], stakedConnectionRpcNodes: [ + // has some staked solana to broadcast 'https://staked.helius-rpc.com?api-key={{heliusApiKey}}' ], commitment: 'confirmed', // confirmed is faster, finalized is safer. Even faster processed is unsupported for tx querys