Call program instructions and work with Anchor IDLs using Para
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>;
}