TypeScript
Use full service RPC for fetching latest blockhash. Nozomi only supports sendTransaction.
import { Connection, PublicKey, Keypair, TransactionInstruction, SystemProgram, TransactionMessage, VersionedTransaction, TransactionSignature } from "@solana/web3.js";
const NOZOMI_ENDPOINT = "https://nozomi.temporal.xyz/?c=<YOUR_API_KEY>";
const NOZOMI_TIP = new PublicKey("TEMPaMeCRFAS9EKF53Jd6KpHxgL47uWLcpFArU1Fanq");
const MIN_TIP_AMOUNT = 1_000_000;
const SOLANA_RPC_ENDPOINT = "https://api.mainnet-beta.solana.com";
async function sendNozomiTxn(ixns: TransactionInstruction[], signer: Keypair, nozomiRpcClient: Connection, solanaRpcClient: Connection): Promise<TransactionSignature> {
const tipIxn = SystemProgram.transfer({
fromPubkey: signer.publicKey,
toPubkey: NOZOMI_TIP,
lamports: MIN_TIP_AMOUNT
});
ixns.push(tipIxn);
const { blockhash } = await solanaRpcClient.getLatestBlockhash();
const messageV0 = new TransactionMessage({
payerKey: signer.publicKey,
recentBlockhash: blockhash,
instructions: ixns,
}).compileToV0Message();
const versionedTxn = new VersionedTransaction(messageV0);
versionedTxn.sign([signer]);
return await nozomiRpcClient.sendTransaction(versionedTxn);
}
function buildIxns(): TransactionInstruction[] {
// your instruction building logic here..
return [];
}
async function main() {
const nozomiRpcClient = new Connection(NOZOMI_ENDPOINT);
const solanaRpcClient = new Connection(SOLANA_RPC_ENDPOINT);
// replace with actual keypair loading logic
const signer = Keypair.generate();
const ixns = buildIxns();
const signature = await sendNozomiTxn(ixns, signer, nozomiRpcClient, solanaRpcClient);
console.log(`Transaction sent with signature: ${signature}`);
}
main().catch(err => {
console.error(err);
});
Last updated

