Call program instructions and work with Anchor IDLs using Para
Interact with Solana programs by calling instructions and working with Anchor IDLs. This guide covers manual instruction creation and Anchor’s type-safe program interaction.
import { useParaSolana } from './hooks/useParaSolana';
import { Transaction, TransactionInstruction, PublicKey, SystemProgram } from '@solana/web3.js';
import { Buffer } from 'buffer';
function InteractWithProgram() {
const { connection, signer } = useParaSolana();
const callProgram = async () => {
const programId = new PublicKey("YOUR_PROGRAM_ID");
// Example: Initialize account with custom data
const [pda] = PublicKey.findProgramAddressSync(
[Buffer.from("seed"), signer.sender.toBuffer()],
programId
);
// Create instruction data (program-specific)
const instructionData = Buffer.alloc(9);
instructionData.writeUInt8(0, 0); // Instruction index
instructionData.writeBigUInt64LE(BigInt(1000), 1); // Example parameter
const instruction = new TransactionInstruction({
keys: [
{ pubkey: signer.sender, isSigner: true, isWritable: true },
{ pubkey: pda, isSigner: false, isWritable: true },
{ pubkey: SystemProgram.programId, isSigner: false, isWritable: false },
],
programId,
data: instructionData,
});
const transaction = new Transaction().add(instruction);
try {
const signature = await signer.sendTransaction(transaction);
console.log("Program call signature:", signature);
const confirmation = await connection.confirmTransaction(signature, "confirmed");
console.log("Transaction confirmed:", confirmation);
} catch (error) {
console.error("Program call failed:", error);
}
};
return <button onClick={callProgram}>Call Program</button>;
}