Files
nym/clients/validator/examples/nym-driver-example/upload-wasm.ts
T
2021-03-15 14:18:29 +00:00

44 lines
1.6 KiB
TypeScript

import ValidatorClient from "nym-validator-client";
import fs from "fs";
// npx ts-node upload-wasm.ts
async function newClient(mnemonic: string): Promise<ValidatorClient> {
let contract = "fakeContractAddress"; // we don't have one yet
let client = ValidatorClient.connect(contract, mnemonic, "http://localhost:26657");
return client;
}
async function main() {
let adminKey = await buildKeyPath("dave", "../accounts");
let adminPass = fs.readFileSync(adminKey).toString();
let admin = await newClient(adminPass);
console.log("dave address: ", admin.address);
let wasm = fs.readFileSync("../../../../contracts/mixnet/target/wasm32-unknown-unknown/release/mixnet_contracts.wasm");
console.log("wasm loaded");
// dave can upload (note: nobody else can)
const uploadResult = await admin.upload(admin.address, wasm, undefined, "mixnet contract");
console.log("Upload from dave succeeded, codeId is: " + uploadResult.codeId);
// Instantiate the copy of the option contract
const { codeId } = uploadResult;
const initMsg = {};
let instantiateResult = await admin.instantiate(admin.address, codeId, initMsg, "mixnet contract", { memo: "v0.1.0", transferAmount: [{ denom: "unym", amount: "50000" }] });
let contractAddress = instantiateResult.contractAddress;
console.log(`mixnet contract ${contractAddress} instantiated successfully`)
fs.writeFileSync("current-contract.txt", contractAddress);
}
async function buildKeyPath(name: string, testAccountsDir: string): Promise<string> {
return `${testAccountsDir}${name}.key`;
}
main();