🔌Self Execute Order
Example - Sending a transaction
import axios from "axios";
import bs58 from "bs58";
import {
createSolanaRpc, sendAndConfirmTransactionFactory, getSignatureFromTransaction,
createKeyPairFromPrivateKeyBytes, getTransactionDecoder, signTransaction,
createSolanaRpcSubscriptions
} from "@solana/kit";
// Trade Info (Insert your values)
const privateKey = ""
const publicKey = "" // user address
const sellToken = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" // USDC
const sellAmount = "100000" // 0.1 USDC
const buyToken = "So11111111111111111111111111111111111111112" // SOL
// Getting quote and submitting it onchain
async function sendTx() {
const RPC = createSolanaRpc("https://api.mainnet-beta.solana.com");
const WSS = createSolanaRpcSubscriptions("wss://api.mainnet-beta.solana.com/");
const SOL_TEST_ACCOUNT = await createKeyPairFromPrivateKeyBytes(bs58.decode(privateKey).slice(0, 32));
// Get quote
let quote = (await axios.get("https://api.bebop.xyz/pmm/solana/v3/quote", {
params: {
buy_tokens: buyToken,
sell_tokens: sellToken,
sell_amounts: sellAmount,
taker_address: publicKey,
gasless: false
}
})).data
console.log(quote)
const tx = getTransactionDecoder().decode(Buffer.from(quote.solana_tx, "base64"));
const signedTx = await signTransaction([SOL_TEST_ACCOUNT], tx);
const {value: { blockhash, lastValidBlockHeight }} = await RPC.getLatestBlockhash().send();
const signedTxWithLifetime = {
...signedTx, lifetimeConstraint: { blockhash, lastValidBlockHeight},
};
const sendAndConfirm = sendAndConfirmTransactionFactory({
rpc: RPC, rpcSubscriptions: WSS,
});
await sendAndConfirm(signedTxWithLifetime, {
commitment: "confirmed", preflightCommitment: "processed",
});
const sig = getSignatureFromTransaction(signedTxWithLifetime);
console.log("Sent tx:", sig);
}
sendTx();
Last updated