| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- import { Wallet, LCDClient, MnemonicKey } from "@terra-money/terra.js";
- import {
- StdFee,
- MsgExecuteContract,
- MsgInstantiateContract,
- MsgMigrateContract,
- MsgStoreCode,
- MsgUpdateContractAdmin,
- } from "@terra-money/terra.js";
- import { readFileSync, readdirSync } from "fs";
- async function main() {
- const terra = new LCDClient({
- URL: "http://localhost:1317",
- chainID: "localterra",
- });
- const wallet = terra.wallet(
- new MnemonicKey({
- mnemonic:
- "notice oak worry limit wrap speak medal online prefer cluster roof addict wrist behave treat actual wasp year salad speed social layer crew genius",
- })
- );
- const hardcodedGas = {
- "wormhole.wasm": 5000000,
- };
- // Deploy Wormhole alone.
- const file = "wormhole.wasm";
- const contract_bytes = readFileSync(`../artifacts/${file}`);
- console.log(`Storing WASM: ${file} (${contract_bytes.length} bytes)`);
- // Get new code id.
- const store_code = new MsgStoreCode(
- wallet.key.accAddress,
- contract_bytes.toString("base64")
- );
- const codeIds = {};
- try {
- const tx = await wallet.createAndSignTx({
- msgs: [store_code],
- memo: "",
- fee: new StdFee(hardcodedGas["wormhole.wasm"], {
- uluna: "100000",
- }),
- });
- const rs = await terra.tx.broadcast(tx);
- const ci = /"code_id","value":"([^"]+)/gm.exec(rs.raw_log)[1];
- codeIds[file] = parseInt(ci);
- } catch (e) {
- console.log("Failed to Execute");
- }
- // Perform a Centralised update.
- await wallet
- .createAndSignTx({
- msgs: [
- new MsgMigrateContract(
- wallet.key.accAddress,
- "terra18vd8fpwxzck93qlwghaj6arh4p7c5n896xzem5",
- codeIds["wormhole.wasm"],
- {
- "action": ""
- },
- { uluna: 1000 }
- ),
- ],
- memo: "",
- })
- .then((tx) => terra.tx.broadcast(tx))
- .then((rs) => console.log(rs));
- // Set the Admin to the contract.
- await wallet
- .createAndSignTx({
- msgs: [
- new MsgUpdateContractAdmin(
- wallet.key.accAddress,
- "terra18vd8fpwxzck93qlwghaj6arh4p7c5n896xzem5",
- "terra18vd8fpwxzck93qlwghaj6arh4p7c5n896xzem5"
- ),
- ],
- memo: "",
- })
- .then((tx) => terra.tx.broadcast(tx))
- .then((rs) => console.log(rs));
- // Deploy a new CodeID.
- try {
- const tx = await wallet.createAndSignTx({
- msgs: [store_code],
- memo: "",
- fee: new StdFee(hardcodedGas["wormhole.wasm"], {
- uluna: "100000",
- }),
- });
- const rs = await terra.tx.broadcast(tx);
- const ci = /"code_id","value":"([^"]+)/gm.exec(rs.raw_log)[1];
- codeIds[file] = parseInt(ci);
- } catch (e) {
- console.log("Failed to Execute");
- }
- const upgradeVAA = '010000000001008928c70a029a924d334a24587e9d2ddbcfa7250d7ba61200e86b16966ef2bbd675fb759aa7a47c6392482ef073e9a6d7c4980dc53ed6f90fc84331486e284912000000000100000001000100000000000000000000000000000000000000000000000000000000000000040000000004e78c580000000000000000000000000000000000000000000000000000000000436f72650100030000000000000000000000000000000000000000000000000000000000000005';
- // Perform a decentralised update with a signed VAA.
- await wallet
- .createAndSignTx({
- msgs: [
- new MsgExecuteContract(
- wallet.key.accAddress,
- "terra18vd8fpwxzck93qlwghaj6arh4p7c5n896xzem5",
- {
- submit_v_a_a: {
- vaa: Buffer.from(upgradeVAA, "hex").toString(
- "base64"
- ),
- },
- },
- { uluna: 1000 }
- ),
- ],
- memo: "",
- })
- .then((tx) => terra.tx.broadcast(tx))
- .then((rs) => console.log(rs));
- }
- main();
|