-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsolana-tipjar.js
95 lines (73 loc) · 2.87 KB
/
solana-tipjar.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// Replace this wallet address with the public key of the receiving wallet
function connectWallet(){
(async() => {
try {
const resp = await window.solana.connect();
wallet = resp;
} catch (err) {
// { code: 4001, message: 'User rejected the request.' }
}
})();
window.solana.on("connect", () => document.getElementById("status").innerText="Connected")
}
function signInTransactionAndSendMoney(){
(async() => {
// const network = "https://try-rpc.mainnet.solana.blockdaemon.tech";
const network = 'https://api.devnet.solana.com'
const connection = new solanaWeb3.Connection(network, 'confirmed');
// const connection = new solanaWeb3.Connection(ne);
const transaction = new solanaWeb3.Transaction();
const lamports_per_sol= solanaWeb3.LAMPORTS_PER_SOL;
const lamports = document.getElementById("quantity").value * lamports_per_sol;
try {
// Change this key to the receiver wallet public key
console.log("starting sendMoney");
// const destPubkey = new solanaWeb3.PublicKey('7S8qCKU9KdDRKqS8XxvjjV3KifmvSWC594rhrDBjWyq4');
const destPubkey = '7S8qCKU9KdDRKqS8XxvjjV3KifmvSWC594rhrDBjWyq4';
const toAccount = solanaWeb3.Keypair.generate()
// const destPubkey = toAccount.publicKey
// const walletAccountInfo = await connection.getAccountInfo(
//solanaWeb3.publicKey
// );
// console.log("wallet data size", walletAccountInfo);
// const receiverAccountInfo = await connection.getAccountInfo(destPubkey);
// console.log("receiver data size", receiverAccountInfo);
const instruction = solanaWeb3.SystemProgram.transfer({
fromPubkey: solana.publicKey,
toPubkey: destPubkey,
lamports: lamports, // about half a SOL
});
let trans = await setWalletTransaction(instruction, connection);
let signature = await signAndSendTransaction(wallet, trans, connection);
let result = await connection.confirmTransaction(signature, "singleGossip");
console.log("money sent", result);
} catch (e) {
console.warn("Failed", e);
}
})()
async function setWalletTransaction(
instruction,connection
) {
const transaction = new solanaWeb3.Transaction();
transaction.add(instruction);
transaction.feePayer = wallet.publicKey;
let hash = await connection.getRecentBlockhash();
console.log("blockhash", hash);
transaction.recentBlockhash = hash.blockhash;
return transaction;
}
async function signAndSendTransaction(
wallet,
transaction,
connection
) {
// Sign transaction, broadcast, and confirm
const { signature } = await window.solana.signAndSendTransaction(transaction);
await connection.confirmTransaction(signature);
//let signedTrans = await wallet.signTransaction(transaction);
console.log("sign transaction");
//let signature = await connection.sendRawTransaction(signedTrans.serialize());
console.log("send raw transaction");
return signature;
}
}