Send SOL with PhantomApp
Wed Feb 01 2023 18:39:22 GMT+0000 (Coordinated Universal Time)
Saved by @luisjdominguezp ##javascript
import logo from './logo.svg';
import './App.css';
import {LAMPORTS_PER_SOL, Connection, Transaction, PublicKey, SystemProgram} from "@solana/web3.js"
import {useState} from 'react';
import * as buffer from "buffer";
window.Buffer = buffer.Buffer;
function App() {
const [lamports, setLamports] = useState(0);
let wallet;
function connectWallet(){
console.log("Connecting...");
(async() => {
try {
const resp = await window.solana.connect();
wallet = resp;
} catch (err) {
}
})();
window.solana.on("connect", () => console.log("Connected"))
}
function signInTransactionAndSendMoney(lamports){
(async() => {
const network = "https://api.devnet.solana.com";
const connection = new Connection(network);
lamports = lamports * LAMPORTS_PER_SOL;
try{
const destPubkeyStr = "WALLETD_DESTINO";
console.log("starting sendMoney");
const destPubKey = new PublicKey(destPubkeyStr);
const walletAccountInfo = await connection.getAccountInfo(
wallet.publicKey
);
console.log("wallet data size", walletAccountInfo?.data.length);
const receiverAccountInfo = await connection.getAccountInfo(destPubKey);
console.log("receiver data size", receiverAccountInfo?.data.length);
const instruction = SystemProgram.transfer({
fromPubkey: wallet.publicKey,
toPubkey: destPubKey,
lamports,
});
let trans = await setWalletTransaction(instruction, connection);
let signature = await signAndSendTransaction(trans, connection);
let result = await connection.confirmTransaction(signature, "singleGossip");
console.log("money sent", result);
} catch (e){
console.warn("Failed", e);
}
})()
}
async function signAndSendTransaction(transaction, connection){
const { signature } = await window.solana.signAndSendTransaction(transaction);
await connection.confirmTransaction(signature);
console.log("sign transaction");
console.log("send raw transacion");
return signature;
}
async function setWalletTransaction(instruction, connection){
const transaction = new Transaction();
transaction.add(instruction);
transaction.feePayer = wallet.publicKey;
let hash = await connection.getRecentBlockhash();
console.log("blockhash", hash);
transaction.recentBlockhash = hash.blockhash;
return transaction;
}
function sendLamports(){
console.log("sending: " + lamports)
signInTransactionAndSendMoney(lamports);
}
return (
<div className="App">
<br></br>
<button onClick={connectWallet}>connect wallet</button>
<input onChange={e => setLamports(e.target.value)} type={'number'}>
</input>
<button onClick={sendLamports}>Send Sol</button>
</div>
);
}
export default App;



Comments