74 lines
1.4 KiB
JavaScript
74 lines
1.4 KiB
JavaScript
|
import { LCDClient, MnemonicKey } from "@terra-money/terra.js";
|
||
|
import {
|
||
|
MsgMigrateContract,
|
||
|
} from "@terra-money/terra.js";
|
||
|
import axios from "axios";
|
||
|
import yargs from "yargs";
|
||
|
import { hideBin } from "yargs/helpers";
|
||
|
|
||
|
export const TERRA_GAS_PRICES_URL = "https://fcd.terra.dev/v1/txs/gas_prices";
|
||
|
|
||
|
const argv = yargs(hideBin(process.argv))
|
||
|
.option('code_id', {
|
||
|
description: 'Which code id to upgrade to',
|
||
|
type: 'number',
|
||
|
})
|
||
|
.option('mnemonic', {
|
||
|
description: 'Mnemonic (private key)',
|
||
|
type: 'string',
|
||
|
required: true
|
||
|
})
|
||
|
.option('contract', {
|
||
|
description: 'Contract to upgrade',
|
||
|
type: 'string',
|
||
|
required: true
|
||
|
})
|
||
|
.help()
|
||
|
.alias('help', 'h').argv;
|
||
|
|
||
|
/* Set up terra client & wallet */
|
||
|
|
||
|
const terra_host = {
|
||
|
URL: "https://bombay-lcd.terra.dev",
|
||
|
chainID: "bombay-12",
|
||
|
name: "testnet",
|
||
|
};
|
||
|
|
||
|
const lcd = new LCDClient(terra_host);
|
||
|
|
||
|
const feeDenoms = ["uluna"];
|
||
|
|
||
|
const gasPrices = await axios
|
||
|
.get(TERRA_GAS_PRICES_URL)
|
||
|
.then((result) => result.data);
|
||
|
|
||
|
const wallet = lcd.wallet(
|
||
|
new MnemonicKey({
|
||
|
mnemonic: argv.mnemonic
|
||
|
})
|
||
|
);
|
||
|
|
||
|
await wallet.sequence();
|
||
|
|
||
|
/* Do upgrade */
|
||
|
|
||
|
const tx = await wallet.createAndSignTx({
|
||
|
msgs: [
|
||
|
new MsgMigrateContract(
|
||
|
wallet.key.accAddress,
|
||
|
argv.contract,
|
||
|
argv.code_id,
|
||
|
{
|
||
|
"action": ""
|
||
|
},
|
||
|
{ uluna: 1000 }
|
||
|
),
|
||
|
],
|
||
|
memo: "",
|
||
|
feeDenoms,
|
||
|
gasPrices,
|
||
|
});
|
||
|
|
||
|
const rs = await lcd.tx.broadcast(tx);
|
||
|
console.log(rs);
|