|
|
@@ -0,0 +1,73 @@
|
|
|
+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);
|