Setup Solana Libraries First
- @solana/web3.js
- @solana/kit
- Anchor
Copy
Ask AI
import { useParaSolana } from './hooks/useParaSolana';
import { Transaction, SystemProgram, LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js';
function SendTokens() {
const { connection, signer } = useParaSolana();
const sendSOL = async (recipient: string, amount: number) => {
if (!signer) {
console.error("No signer available. Connect wallet first.");
return;
}
const transaction = new Transaction().add(
SystemProgram.transfer({
fromPubkey: signer.sender,
toPubkey: new PublicKey(recipient),
lamports: LAMPORTS_PER_SOL * amount,
})
);
const signature = await signer.sendTransaction(transaction);
console.log("Transaction signature:", signature);
await connection.confirmTransaction(signature, "confirmed");
console.log("Transaction confirmed");
return signature;
};
return (
<button onClick={() => sendSOL("RECIPIENT_ADDRESS", 0.1)}>
Send 0.1 SOL
</button>
);
}
Copy
Ask AI
import { useParaSolanaKit } from './hooks/useParaSolanaKit';
import { LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js';
import {
createTransactionMessage,
getTransferSolInstruction,
setTransactionMessageFeePayerSigner,
setTransactionMessageLifetimeUsingBlockhash,
appendTransactionMessageInstructions,
signTransactionMessageWithSigners,
lamports,
pipe,
} from '@solana/kit';
function SendTokens() {
const { rpc, signer } = useParaSolanaKit();
const sendSOL = async (recipient: string, amount: number) => {
if (!signer) {
console.error("No signer available. Connect wallet first.");
return;
}
const transferAmount = lamports(LAMPORTS_PER_SOL * amount);
const recipientPublicKey = new PublicKey(recipient);
const transferInstruction = getTransferSolInstruction({
source: signer.publicKey,
destination: recipientPublicKey,
amount: transferAmount,
});
const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
const transactionMessage = pipe(
createTransactionMessage({ version: 0 }),
(tx) => setTransactionMessageFeePayerSigner(signer.publicKey, tx),
(tx) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx),
(tx) => appendTransactionMessageInstructions([transferInstruction], tx)
);
const signedTransaction = await signTransactionMessageWithSigners(transactionMessage);
const signature = await rpc.sendTransaction(signedTransaction).send();
console.log("Transaction signature:", signature);
await rpc.confirmTransaction({
signature,
blockhash: latestBlockhash.blockhash,
lastValidBlockHeight: latestBlockhash.lastValidBlockHeight
});
console.log("Transaction confirmed");
return signature;
};
return (
<button onClick={() => sendSOL("RECIPIENT_ADDRESS", 0.1)}>
Send 0.1 SOL
</button>
);
}
Copy
Ask AI
import { useParaAnchor } from './hooks/useParaAnchor';
import { Transaction, SystemProgram, LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js';
function SendTokens() {
const provider = useParaAnchor();
const sendSOL = async (recipient: string, amount: number) => {
if (provider.wallet.publicKey.equals(SystemProgram.programId)) {
console.error("No wallet connected. Please authenticate first.");
return;
}
const transaction = new Transaction().add(
SystemProgram.transfer({
fromPubkey: provider.wallet.publicKey,
toPubkey: new PublicKey(recipient),
lamports: LAMPORTS_PER_SOL * amount,
})
);
const signature = await provider.sendAndConfirm(transaction);
console.log("Transaction signature:", signature);
console.log("Transaction confirmed");
return signature;
};
return (
<button onClick={() => sendSOL("RECIPIENT_ADDRESS", 0.1)}>
Send 0.1 SOL
</button>
);
}