solana-web3-lite
Version:
A lightweight wrapper around @solana/web3.js for simplified Solana blockchain interactions
49 lines (48 loc) • 2.48 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transfer = void 0;
const web3_js_1 = require("@solana/web3.js");
const utils_1 = require("./utils");
const helpers_1 = require("@solana-developers/helpers");
const transfer = (_a) => __awaiter(void 0, [_a], void 0, function* ({ keyPair, recipientAddress, amount, cluster = "devnet", commitment = "confirmed", }) {
try {
console.log(`Processing transaction on ${cluster}...`);
if (!keyPair)
throw new Error("Keypair is required");
if (!recipientAddress)
throw new Error("Recipient address is required");
if (amount <= 0)
throw new Error("Amount must be greater than 0");
let recipientPubKey = (0, utils_1.toPublicKey)(recipientAddress);
const senderPubKey = new web3_js_1.PublicKey(keyPair.publicKey);
const connection = (0, utils_1.getConnection)({ cluster, commitment });
const transaction = new web3_js_1.Transaction();
const sendSolInstruction = web3_js_1.SystemProgram.transfer({
fromPubkey: senderPubKey,
toPubkey: recipientPubKey,
lamports: (0, utils_1.solToLamports)(amount),
});
transaction.add(sendSolInstruction);
const signature = yield (0, web3_js_1.sendAndConfirmTransaction)(connection, transaction, [
keyPair,
]);
console.log(`Sent ${amount} SOL to ${recipientAddress}`);
const explorerLink = (0, helpers_1.getExplorerLink)("tx", signature, cluster);
console.log(`✅ Visit Explorer for more info: ${explorerLink}`);
return signature;
}
catch (error) {
console.error("Transaction failed:", error);
throw error;
}
});
exports.transfer = transfer;