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