-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathws.test.ts
47 lines (36 loc) · 1.57 KB
/
ws.test.ts
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
import { Connection, Keypair, sendAndConfirmTransaction, Transaction, PublicKey, TransactionInstruction, BlockheightBasedTransactionConfirmationStrategy } from "@solana/web3.js";
import * as fs from "fs";
import * as os from "os";
import * as crypto from "crypto";
jest.setTimeout(60000);
const MEMO_PROGRAM_ID = new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr");
const connection = new Connection('http://0.0.0.0:8899', 'confirmed');
const keypair_file = fs.readFileSync(`${os.homedir}/.config/solana/id.json`, 'utf-8');
const payer = Keypair.fromSecretKey(Uint8Array.from(JSON.parse(keypair_file)));
function createTransaction(): Transaction {
const transaction = new Transaction();
transaction.add(
new TransactionInstruction({
programId: MEMO_PROGRAM_ID,
keys: [],
data: Buffer.from(crypto.randomBytes(20).toString('hex'))
})
);
return transaction;
}
test('send and confirm transaction BlockheightBasedTransactionConfirmationStrategy', async () => {
const tx = createTransaction();
const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash();
const signature = await connection.sendTransaction(tx, [payer]);
await connection.confirmTransaction({
blockhash,
lastValidBlockHeight,
signature,
abortSignal: undefined
});
console.log(`https://explorer.solana.com/tx/${signature}`)
});
test('send and confirm transaction', async () => {
const tx = createTransaction();
await sendAndConfirmTransaction(connection, tx, [payer]);
});