Setup Solana Libraries First
- @solana/web3.js
- @solana/web3.js-v2
- 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 { createParaSolanaSigner } from '@getpara/solana-signers-v2-integration';
import { createSolanaRpc, createSolanaRpcSubscriptions } from '@solana/web3.js';
import { para } from './para';
function useCustomRPC() {
// Mainnet RPC
const mainnetRpc = createSolanaRpc('https://api.mainnet-beta.solana.com');
const mainnetRpcSubscriptions = createSolanaRpcSubscriptions('wss://api.mainnet-beta.solana.com');
// Devnet RPC
const devnetRpc = createSolanaRpc('https://api.devnet.solana.com');
// Custom RPC with authentication
const customRpc = createSolanaRpc('https://your-custom-rpc-endpoint.com', {
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
},
});
// Create signers with different RPC connections
const mainnetSigner = createParaSolanaSigner({ para, rpc: mainnetRpc });
const devnetSigner = createParaSolanaSigner({ para, rpc: devnetRpc });
const customSigner = createParaSolanaSigner({ para, rpc: customRpc });
// Example: Monitor slot updates via WebSocket
const monitorSlots = async () => {
const slotNotifications = await mainnetRpcSubscriptions
.slotNotifications()
.subscribe();
for await (const notification of slotNotifications) {
console.log('New slot:', notification.slot);
console.log('Parent:', notification.parent);
console.log('Root:', notification.root);
}
};
// Example: Get RPC health
const checkHealth = async () => {
const health = await customRpc.getHealth().send();
console.log('RPC health:', health);
const version = await customRpc.getVersion().send();
console.log('RPC version:', version);
};
return { mainnetSigner, devnetSigner, customSigner, monitorSlots, 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 '@project-serum/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 };
}