React Native
Copy
Ask AI
import { dynamicClient } from '<path to client file>'
import {
LAMPORTS_PER_SOL,
PublicKey,
SystemProgram,
TransactionMessage,
VersionedTransaction,
} from '@solana/web3.js'
const wallet = dynamicClient.wallets.primary
if (!wallet) {
// user is not connected yet
} else {
const connection = dynamicClient.solana.getConnection()
const signer = dynamicClient.solana.getSigner({ wallet })
const { blockhash } = await connection.getLatestBlockhash()
const amountInLamports = 1 * LAMPORTS_PER_SOL
const fromKey = new PublicKey(wallet.address)
const toKey = new PublicKey('<destinationAddress>')
const instructions = [
SystemProgram.transfer({
fromPubkey: fromKey,
lamports: amountInLamports,
toPubkey: toKey,
}),
]
const messageV0 = new TransactionMessage({
instructions,
payerKey: fromKey,
recentBlockhash: blockhash,
}).compileToV0Message()
const transaction = new VersionedTransaction(messageV0)
const { signature } = await signer.signAndSendTransaction(transaction)
console.log('Successful transaction signature:', signature)
}
Simulate a Transaction
Before sending a transaction, you can simulate it to preview the effects and validate that it will succeed. Transaction simulation shows all asset transfers involved in the transaction.Transaction simulation uses the currently selected primary wallet. Make sure the user has a wallet connected before attempting to simulate a transaction.
React Native
Copy
Ask AI
import { dynamicClient } from '<path to client file>'
import {
LAMPORTS_PER_SOL,
PublicKey,
SystemProgram,
TransactionMessage,
VersionedTransaction,
} from '@solana/web3.js'
const simulateSolanaVersionedTransaction = async (to: string, amountSol: number) => {
const connection = dynamicClient.solana.getConnection()
const { blockhash } = await connection.getLatestBlockhash()
const amountInLamports = Math.round(amountSol * LAMPORTS_PER_SOL)
const fromKey = new PublicKey(dynamicClient.wallets.primary.address)
const toKey = new PublicKey(to)
const instructions = [
SystemProgram.transfer({
fromPubkey: fromKey,
lamports: amountInLamports,
toPubkey: toKey,
}),
]
const messageV0 = new TransactionMessage({
instructions,
payerKey: fromKey,
recentBlockhash: blockhash,
}).compileToV0Message()
const transaction = new VersionedTransaction(messageV0)
const simulationResult = await dynamicClient.solana.simulateSVMTransaction({
transaction,
type: 'SignTransaction',
})
console.log('Simulation result:', simulationResult)
return simulationResult
}