-
Notifications
You must be signed in to change notification settings - Fork 0
/
create_vk.js
64 lines (50 loc) · 1.74 KB
/
create_vk.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
const express = require("express");
const app = express();
const dotenv = require("dotenv").config();
const {
EnigmaUtils, Secp256k1Pen, SigningCosmWasmClient, pubkeyToAddress, encodeSecp256k1Pubkey
} = require("secretjs");
const customFees = {
upload: {
amount: [{ amount: "2000000", denom: "uscrt" }],
gas: "2000000",
},
init: {
amount: [{ amount: "500000", denom: "uscrt" }],
gas: "500000",
},
exec: {
amount: [{ amount: "500000", denom: "uscrt" }],
gas: "500000",
},
send: {
amount: [{ amount: "80000", denom: "uscrt" }],
gas: "80000",
},
}
async function main() {
const httpUrl = process.env.SECRET_REST_URL;
// Use key created in tutorial #2
const mnemonic = process.env.MNEMONIC;
// A pen is the most basic tool you can think of for signing.
// This wraps a single keypair and allows for signing.
const signingPen = await Secp256k1Pen.fromMnemonic(mnemonic);
// Get the public key
const pubkey = encodeSecp256k1Pubkey(signingPen.pubkey);
// get the wallet address
const accAddress = pubkeyToAddress(pubkey, 'secret');
const txEncryptionSeed = EnigmaUtils.GenerateNewSeed();
const client = new SigningCosmWasmClient(
httpUrl,
accAddress,
(signBytes) => signingPen.sign(signBytes),
txEncryptionSeed, customFees
);
console.log(`Wallet address=${accAddress}`);
const handleMsg = { create_viewing_key: {entropy: "very_cool"} };
client.execute(process.env.CONTRACT, handleMsg).then((response) => {
let key = JSON.parse(new TextDecoder().decode(response.data));
console.log('response: ', key);
});
}
main();