Преглед изворни кода

feat(contract_manager): add send_message_to_wormhole_script (#1564)

* add send_message_to_wormhole script

* address comments

* precommit
Daniel Chew пре 1 година
родитељ
комит
42cd0621ed
1 измењених фајлова са 54 додато и 0 уклоњено
  1. 54 0
      contract_manager/scripts/send_message_to_wormhole.ts

+ 54 - 0
contract_manager/scripts/send_message_to_wormhole.ts

@@ -0,0 +1,54 @@
+import yargs from "yargs";
+import { hideBin } from "yargs/helpers";
+import { WormholeEmitter, loadHotWallet } from "../src/governance";
+
+const parser = yargs(hideBin(process.argv))
+  .usage(
+    "Usage: $0 --cluster <cluster> --wallet-path <path_to_wallet_file> --message <message>"
+  )
+  .options({
+    cluster: {
+      type: "string",
+      choices: ["mainnet-beta", "testnet"],
+      demandOption: true,
+      describe: "The Pyth cluster to use for sending the message",
+    },
+    walletPath: {
+      type: "string",
+      demandOption: true,
+      describe:
+        "Path to the wallet file to use for sending the message (e.g. ./walletPath.json)",
+    },
+    message: {
+      type: "string",
+      demandOption: true,
+      describe: "The message in hex with no leading 0x to send to the wormhole",
+    },
+  });
+
+async function main() {
+  const { cluster, walletPath, message } = await parser.argv;
+
+  const wallet = await loadHotWallet(walletPath);
+  const emitter = new WormholeEmitter(cluster, wallet);
+
+  console.log(`Sending message to wormhole using cluster ${cluster}...`);
+  const payload = Buffer.from(message, "utf-8");
+  const submittedMessage = await emitter.sendMessage(payload);
+  console.log(
+    `Message sent. Emitter: ${submittedMessage.emitter.toBase58()}, Sequence Number: ${
+      submittedMessage.sequenceNumber
+    }`
+  );
+  console.log(`Sleeping for 5 seconds to allow the message to be processed...`);
+  await new Promise((resolve) => setTimeout(resolve, 5000));
+  console.log(
+    `Fetching VAA for message ${submittedMessage.emitter.toBase58()}, Sequence Number: ${
+      submittedMessage.sequenceNumber
+    }...`
+  );
+  const vaa = await submittedMessage.fetchVaa();
+  console.log(`VAA: ${vaa.toString("hex")}`);
+}
+
+main();