瀏覽代碼

feat(contract manager): Add sequence number support to execute_vaas and print Entropy owner (#2692)

Jayant Krishnamurthy 6 月之前
父節點
當前提交
35ed791511
共有 2 個文件被更改,包括 37 次插入7 次删除
  1. 32 6
      contract_manager/scripts/execute_vaas.ts
  2. 5 1
      contract_manager/scripts/list_entropy_contracts.ts

+ 32 - 6
contract_manager/scripts/execute_vaas.ts

@@ -13,7 +13,7 @@ const parser = yargs(hideBin(process.argv))
   .usage(
     "Tries to execute all vaas on a vault.\n" +
       "Useful for batch upgrades.\n" +
-      "Usage: $0 --vault <mainnet|devnet> --private-key <private-key> --offset <offset> [--dryrun]",
+      "Usage: $0 --vault <mainnet|devnet> --private-key <private-key> (--offset <offset> | --sequence <sequence>) [--dryrun]",
   )
   .options({
     vault: {
@@ -25,14 +25,25 @@ const parser = yargs(hideBin(process.argv))
     "private-key": COMMON_DEPLOY_OPTIONS["private-key"],
     offset: {
       type: "number",
-      demandOption: true,
       desc: "Offset to use from the last executed sequence number",
+      conflicts: ["sequence"],
+    },
+    sequence: {
+      type: "number",
+      desc: "Specific sequence number to execute",
+      conflicts: ["offset"],
     },
     dryrun: {
       type: "boolean",
       default: false,
       desc: "Whether to execute the VAAs or just print them",
     },
+  })
+  .check((argv) => {
+    if (!argv.offset && !argv.sequence) {
+      throw new Error("Either --offset or --sequence must be provided");
+    }
+    return true;
   });
 
 async function main() {
@@ -54,14 +65,29 @@ async function main() {
     "Executing VAAs for emitter",
     (await vault.getEmitter()).toBase58(),
   );
-  const lastSequenceNumber = await vault.getLastSequenceNumber();
-  const startSequenceNumber = lastSequenceNumber - argv.offset;
+
+  let startSequenceNumber: number;
+  let endSequenceNumber: number;
+
+  if (argv.sequence !== undefined) {
+    startSequenceNumber = argv.sequence;
+    endSequenceNumber = argv.sequence;
+  } else if (argv.offset !== undefined) {
+    const lastSequenceNumber = await vault.getLastSequenceNumber();
+    startSequenceNumber = lastSequenceNumber - argv.offset;
+    endSequenceNumber = lastSequenceNumber;
+  } else {
+    // this is unreachable but it makes the typescript linter happy.
+    throw new Error("Either --offset or --sequence must be provided");
+  }
+
   console.log(
-    `Going from sequence number ${startSequenceNumber} to ${lastSequenceNumber}`,
+    `Going from sequence number ${startSequenceNumber} to ${endSequenceNumber}`,
   );
+
   for (
     let seqNumber = startSequenceNumber;
-    seqNumber <= lastSequenceNumber;
+    seqNumber <= endSequenceNumber;
     seqNumber++
   ) {
     const submittedWormholeMessage = new SubmittedWormholeMessage(

+ 5 - 1
contract_manager/scripts/list_entropy_contracts.ts

@@ -18,6 +18,7 @@ async function main() {
   const entries: {
     chain: string;
     contract: string;
+    owner: string;
     provider: string;
     feeManager: string;
     balance: string;
@@ -42,10 +43,13 @@ async function main() {
         /* old deployments did not have this method */
       }
       const providerInfo = await contract.getProviderInfo(provider);
+      const owner = await contract.getOwner();
+
       entries.push({
         chain: contract.getChain().getId(),
         contract: contract.address,
-        provider: providerInfo.uri,
+        owner,
+        provider,
         feeManager: providerInfo.feeManager,
         balance: Web3.utils.fromWei(balance),
         keeperBalance: Web3.utils.fromWei(keeperBalance),