Untitled
async function testSendNozomiTx(connection, signer, nozomiEndpoint) { const tipIx = SystemProgram.transfer({ fromPubkey: signer.publicKey, toPubkey: NOZOMI_TIP, lamports: MIN_TIP_AMOUNT, // 1,000,000 lamports = 0.001 SOL }); const instructions = [tipIx]; const signature = await sendNozomiTx(instructions, signer, nozomiEndpoint, connection); console.log('Test transaction signature:', signature); } async function sendNozomiTx(ixs, signer, nozomiEndpoint, connection) { const computeUnitLimitIx = ComputeBudgetProgram.setComputeUnitLimit({ units: 1_000_000 }); const computeUnitPriceIx = ComputeBudgetProgram.setComputeUnitPrice({ microLamports: 1_000_000 }); ixs.unshift(computeUnitPriceIx, computeUnitLimitIx); const tipIx = SystemProgram.transfer({ fromPubkey: signer.publicKey, toPubkey: NOZOMI_TIP, lamports: MIN_TIP_AMOUNT, }); ixs.push(tipIx); const transaction = new Transaction().add(...ixs); try { const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('finalized'); transaction.recentBlockhash = blockhash; transaction.feePayer = signer.publicKey; transaction.sign(signer); if (!transaction.signature) { throw new Error('Transaction is not signed.'); } const serializedTx = transaction.serialize(); console.log("Serialized Transaction (Buffer):", serializedTx); console.log("Base64 Transaction:", serializedTx.toString('base64')); const base64Tx = serializedTx.toString('base64'); const payload = { jsonrpc: '2.0', id: 1, method: 'sendTransaction', params: [base64Tx], }; console.log("Nozomi Payload:", JSON.stringify(payload, null, 2)); const response = await fetch(nozomiEndpoint, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload), }); const result = await response.json(); console.log("Nozomi API Response:", result); if (result.error) { console.error('Nozomi sendTransaction Error:', result.error); return null; } const signature = result.result; console.log("Transaction sent via Nozomi with signature:", signature); return signature; } catch (error) { console.error("Error sending transaction via Nozomi:", error); return null; } }
Leave a Comment