- @solana/kit
- @solana/web3.js
- Anchor
import { useParaSolanaSigner } from '@getpara/react-sdk';
import { createSolanaRpc } from '@solana/kit';
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
function ConfigureRPC() {
// Use different RPC endpoints by creating different rpc instances
const mainnetRpc = createSolanaRpc('https://api.mainnet-beta.solana.com');
const devnetRpc = createSolanaRpc('https://api.devnet.solana.com');
const customRpc = createSolanaRpc('https://your-custom-rpc-endpoint.com');
// Pass any rpc instance to the hook
const { solanaSigner, isLoading } = useParaSolanaSigner({ rpc: mainnetRpc });
const checkHealth = async () => {
const health = await mainnetRpc.getHealth().send();
const version = await mainnetRpc.getVersion().send();
return { health, version };
};
return { solanaSigner, checkHealth };
}
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 };
}
RPC configuration works the same as @solana/kit — pass different RPC URLs when creating the rpc client:
import { useParaSolanaSigner } from "@getpara/react-sdk";
import { createSolanaRpc } from "@solana/kit";
const mainnetRpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
const devnetRpc = createSolanaRpc("https://api.devnet.solana.com");
const customRpc = createSolanaRpc("https://your-custom-rpc-endpoint.com");
function ConfigureRPC() {
// Pass the desired RPC to the hook
const { solanaSigner, isLoading } = useParaSolanaSigner({ rpc: mainnetRpc });
if (isLoading) return <p>Loading...</p>;
return <p>Connected to: {solanaSigner?.address}</p>;
}