AMM Hot-Pool
Under contention, increasing cuPriceMicroLamports helps the scheduler.
import { CpsrClient, SubmitLane, transferIntent, BasicPolicy, RecentFeesPolicy } from '@rlock/cpsr-sdk';
import { Connection, Keypair, LAMPORTS_PER_SOL } from '@solana/web3.js';
const connection = new Connection('https://api.devnet.solana.com', 'confirmed');
async function run() {
const payer = Keypair.generate();
const airdrop = await connection.requestAirdrop(payer.publicKey, 3 * LAMPORTS_PER_SOL);
await connection.confirmTransaction(airdrop, 'confirmed');
const hot = Keypair.generate().publicKey;
const clientBasic = new CpsrClient({ connection, payer, feePolicy: new BasicPolicy() });
const clientRecent = CpsrClient.withRecentFees({ connection, payer, percentile: 0.9, useEma: true });
const make = (lamports: number) => transferIntent({ from: payer.publicKey, to: hot, lamports });
await clientBasic.buildAndSubmit({
intents: [make(50_000)],
cuLimit: 200_000,
cuPrice: 200,
submitOptions: { lane: SubmitLane.L1, skipPreflight: false, maxRetries: 5 },
});
await clientBasic.buildAndSubmit({
intents: [make(60_000)],
cuLimit: 200_000,
cuPrice: 3_000,
submitOptions: { lane: SubmitLane.L1, skipPreflight: false, maxRetries: 5 },
});
await clientRecent.buildAndSubmit({
intents: [make(70_000)],
submitOptions: { lane: SubmitLane.L1, maxRetries: 5 },
});
}
run().catch(console.error);