Setup Solana Libraries First
- @solana/web3.js
- @solana/kit
- Anchor
Copy
Ask AI
import { ParaSolanaWeb3Signer } from '@getpara/solana-web3.js-v1-integration';
import { Connection, clusterApiUrl, Commitment } from '@solana/web3.js';
import { para } from './para';
function useCustomRPC() {
// Using Solana public RPC endpoints
const mainnetConnection = new Connection(
clusterApiUrl('mainnet-beta'),
'confirmed'
);
const devnetConnection = new Connection(
clusterApiUrl('devnet'),
'confirmed'
);
// Using custom RPC endpoint (e.g., QuickNode, Alchemy, Helius)
const customConnection = new Connection(
'https://your-custom-rpc-endpoint.com',
{
commitment: 'confirmed',
wsEndpoint: 'wss://your-custom-websocket-endpoint.com',
httpHeaders: {
'Authorization': 'Bearer YOUR_API_KEY',
},
disableRetryOnRateLimit: false,
confirmTransactionInitialTimeout: 30000,
}
);
// Create signers with different connections
const mainnetSigner = new ParaSolanaWeb3Signer(para, mainnetConnection);
const devnetSigner = new ParaSolanaWeb3Signer(para, devnetConnection);
const customSigner = new ParaSolanaWeb3Signer(para, customConnection);
// Example: Get network performance metrics
const checkPerformance = async () => {
const start = Date.now();
const slot = await customConnection.getSlot();
const latency = Date.now() - start;
console.log('Current slot:', slot);
console.log('RPC latency:', latency, 'ms');
const perfSamples = await customConnection.getRecentPerformanceSamples(5);
console.log('Recent performance:', perfSamples);
};
return { mainnetSigner, devnetSigner, customSigner, checkPerformance };
}
Copy
Ask AI
import { createSolanaRpc } from '@solana/kit';
import { createHttpTransport } from '@solana/rpc-transport-http';
import { createSolanaRpcApi } from '@solana/rpc-api';
import { createRpc } from '@solana/rpc-spec';
import { createParaSolanaSigner } from '@getpara/solana-signers-v2-integration';
import { para } from './para';
function createParaRpc(url: string) {
const transport = createHttpTransport({ url });
const api = createSolanaRpcApi();
return createRpc({ api, transport });
}
function useCustomRPC() {
const mainnetRpc = createSolanaRpc('https://api.mainnet-beta.solana.com');
const devnetRpc = createSolanaRpc('https://api.devnet.solana.com');
const mainnetParaRpc = createParaRpc('https://api.mainnet-beta.solana.com');
const devnetParaRpc = createParaRpc('https://api.devnet.solana.com');
const customParaRpc = createParaRpc('https://your-custom-rpc-endpoint.com');
const mainnetSigner = createParaSolanaSigner({ para, rpc: mainnetParaRpc });
const devnetSigner = createParaSolanaSigner({ para, rpc: devnetParaRpc });
const customSigner = createParaSolanaSigner({ para, rpc: customParaRpc });
const checkHealth = async () => {
const health = await mainnetRpc.getHealth().send();
const version = await mainnetRpc.getVersion().send();
return { health, version };
};
return { mainnetRpc, devnetRpc, mainnetSigner, devnetSigner, customSigner, checkHealth };
}
Copy
Ask AI
import { ParaSolanaWeb3Signer } from '@getpara/solana-web3.js-v1-integration';
import { Connection, Transaction, VersionedTransaction } from '@solana/web3.js';
import * as anchor from '@coral-xyz/anchor';
import { para } from './para';
function useCustomAnchorProvider() {
// Configure connection with custom options
const connection = new Connection(
'https://your-custom-rpc-endpoint.com',
{
commitment: 'confirmed',
wsEndpoint: 'wss://your-custom-websocket-endpoint.com',
httpHeaders: {
'Authorization': 'Bearer YOUR_API_KEY',
},
}
);
const signer = new ParaSolanaWeb3Signer(para, connection);
// Create Anchor wallet adapter
const wallet = {
publicKey: signer.sender,
signTransaction: async <T extends Transaction | VersionedTransaction>(tx: T): Promise<T> => {
return await signer.signTransaction(tx);
},
signAllTransactions: async <T extends Transaction | VersionedTransaction>(txs: T[]): Promise<T[]> => {
return await Promise.all(txs.map((tx) => signer.signTransaction(tx)));
},
};
// Create provider with custom options
const provider = new anchor.AnchorProvider(
connection,
wallet,
{
commitment: 'confirmed',
preflightCommitment: 'confirmed',
skipPreflight: false,
}
);
// Set as default provider
anchor.setProvider(provider);
// Example: Test connection
const testConnection = async () => {
const blockHeight = await connection.getBlockHeight();
console.log('Current block height:', blockHeight);
const epoch = await connection.getEpochInfo();
console.log('Epoch info:', epoch);
const supply = await connection.getSupply();
console.log('Total supply:', supply);
};
return { provider, testConnection };
}