- React
- Browser SDK
- React Native
Report incorrect code
Copy
Ask AI
import { useSolana } from "@phantom/react-sdk";
import { Connection, PublicKey, VersionedTransaction, TransactionMessage } from "@solana/web3.js";
import { getAssociatedTokenAddress, createAssociatedTokenAccountInstruction, createTransferInstruction, getAccount } from "@solana/spl-token";
function SendToken() {
const { solana } = useSolana();
const send = async (
to: string,
amount: number,
mintAddress: string,
decimals: number
) => {
const connection = new Connection("https://api.mainnet-beta.solana.com");
const from = new PublicKey(await solana.getPublicKey());
const recipient = new PublicKey(to);
const mint = new PublicKey(mintAddress);
const fromATA = await getAssociatedTokenAddress(mint, from);
const toATA = await getAssociatedTokenAddress(mint, recipient);
const instructions = [];
// Create recipient's token account if needed
try {
await getAccount(connection, toATA);
} catch {
instructions.push(
createAssociatedTokenAccountInstruction(from, toATA, recipient, mint)
);
}
instructions.push(
createTransferInstruction(fromATA, toATA, from, amount * 10 ** decimals)
);
const { blockhash } = await connection.getLatestBlockhash();
const transaction = new VersionedTransaction(
new TransactionMessage({
payerKey: from,
recentBlockhash: blockhash,
instructions,
}).compileToV0Message()
);
const { signature } = await solana.signAndSendTransaction(transaction);
return signature;
};
return (
<button onClick={() => send(
"RECIPIENT_ADDRESS",
100,
"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", // BONK
5
)}>
Send 100 BONK
</button>
);
}
Report incorrect code
Copy
Ask AI
import { BrowserSDK, AddressType } from "@phantom/browser-sdk";
import { Connection, PublicKey, VersionedTransaction, TransactionMessage } from "@solana/web3.js";
import { getAssociatedTokenAddress, createAssociatedTokenAccountInstruction, createTransferInstruction, getAccount } from "@solana/spl-token";
const sdk = new BrowserSDK({
providers: ["google", "apple", "injected"],
appId: "your-app-id",
addressTypes: [AddressType.solana],
});
async function sendToken(
to: string,
amount: number,
mintAddress: string,
decimals: number
) {
const connection = new Connection("https://api.mainnet-beta.solana.com");
const from = new PublicKey(await sdk.solana.getPublicKey());
const recipient = new PublicKey(to);
const mint = new PublicKey(mintAddress);
const fromATA = await getAssociatedTokenAddress(mint, from);
const toATA = await getAssociatedTokenAddress(mint, recipient);
const instructions = [];
try {
await getAccount(connection, toATA);
} catch {
instructions.push(
createAssociatedTokenAccountInstruction(from, toATA, recipient, mint)
);
}
instructions.push(
createTransferInstruction(fromATA, toATA, from, amount * 10 ** decimals)
);
const { blockhash } = await connection.getLatestBlockhash();
const transaction = new VersionedTransaction(
new TransactionMessage({
payerKey: from,
recentBlockhash: blockhash,
instructions,
}).compileToV0Message()
);
const { signature } = await sdk.solana.signAndSendTransaction(transaction);
return signature;
}
Report incorrect code
Copy
Ask AI
import { useSolana } from "@phantom/react-native-sdk";
import { Connection, PublicKey, VersionedTransaction, TransactionMessage } from "@solana/web3.js";
import { getAssociatedTokenAddress, createAssociatedTokenAccountInstruction, createTransferInstruction, getAccount } from "@solana/spl-token";
import { View, Button, Alert, StyleSheet } from "react-native";
function SendToken() {
const { solana } = useSolana();
const send = async (
to: string,
amount: number,
mintAddress: string,
decimals: number
) => {
try {
const connection = new Connection("https://api.mainnet-beta.solana.com");
const from = new PublicKey(await solana.getPublicKey());
const recipient = new PublicKey(to);
const mint = new PublicKey(mintAddress);
const fromATA = await getAssociatedTokenAddress(mint, from);
const toATA = await getAssociatedTokenAddress(mint, recipient);
const instructions = [];
try {
await getAccount(connection, toATA);
} catch {
instructions.push(
createAssociatedTokenAccountInstruction(from, toATA, recipient, mint)
);
}
instructions.push(
createTransferInstruction(fromATA, toATA, from, amount * 10 ** decimals)
);
const { blockhash } = await connection.getLatestBlockhash();
const transaction = new VersionedTransaction(
new TransactionMessage({
payerKey: from,
recentBlockhash: blockhash,
instructions,
}).compileToV0Message()
);
const { signature } = await solana.signAndSendTransaction(transaction);
Alert.alert("Success", `Transaction sent: ${signature}`);
return signature;
} catch (error) {
Alert.alert("Error", error instanceof Error ? error.message : "Transaction failed");
throw error;
}
};
return (
<View style={styles.container}>
<Button
title="Send 100 BONK"
onPress={() => send(
"RECIPIENT_ADDRESS",
100,
"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", // BONK
5
)}
/>
</View>
);
}
const styles = StyleSheet.create({
container: {
padding: 20,
},
});
Popular tokens
| Token | Mint Address | Decimals |
|---|---|---|
| USDC | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v | 6 |
| USDT | Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB | 6 |
| BONK | DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 | 5 |
| JUP | JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN | 6 |
| WIF | EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm | 6 |