-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathtransfer_SOL_v0.js
42 lines (35 loc) · 1.3 KB
/
transfer_SOL_v0.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
const solweb3 = require("@solana/web3.js");
const config = require('./configLoad');
const address = process.argv[2];
const value = parseFloat(process.argv[3]);
const rate = 1e9
const valueNoDecimal = parseInt(rate * value)
let pri = config['SOL'].KEYPAIR[0].PRIKEY;
if (pri.startsWith("0x")) {
pri = pri.substring(2);
}
const seed = Uint8Array.from(Buffer.from(pri, 'hex'))
let keypair = solweb3.Keypair.fromSeed(seed);
(async () => {
const instructions = [
solweb3.SystemProgram.transfer({
fromPubkey: keypair.publicKey,
toPubkey: new solweb3.PublicKey(address),
lamports: valueNoDecimal,
}),
];
let connection = new solweb3.Connection(solweb3.clusterApiUrl("devnet"));
let blockhash = await connection
.getLatestBlockhash()
.then(res => res.blockhash);
const messageV0 = new solweb3.TransactionMessage({
payerKey: keypair.publicKey,
recentBlockhash: blockhash,
instructions,
}).compileToV0Message();
const transaction = new solweb3.VersionedTransaction(messageV0);
transaction.sign([keypair]);
let tx = await connection.sendTransaction(transaction);
await connection.confirmTransaction({signature: tx});
console.log(`Transfer ${value} SOL to ${address}. Transaction Hash: ${tx}`);
})()