From 70dd001ba39b08bfb71d24f41f0ff2341825306c Mon Sep 17 00:00:00 2001 From: derpy-duck <115193320+derpy-duck@users.noreply.github.com> Date: Thu, 13 Jul 2023 10:09:46 -0400 Subject: [PATCH] clients: allow custom block range for relayer status (#3188) --- clients/js/README.md | 8 +++++--- clients/js/src/cmds/status.ts | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/clients/js/README.md b/clients/js/README.md index dae3c5bc2..23c88900c 100644 --- a/clients/js/README.md +++ b/clients/js/README.md @@ -315,14 +315,16 @@ Options: ```sh Positionals: - network Network [choices: "mainnet", "testnet", "devnet"] - chain Source chain + network Network [choices: "mainnet", "testnet", "devnet"] + chain Source chain [choices: "unset", "solana", "ethereum", "terra", "bsc", "polygon", "avalanche", "oasis", "algorand", "aurora", "fantom", "karura", "acala", "klaytn", "celo", "near", "moonbeam", "neon", "terra2", "injective", "osmosis", "sui", "aptos", "arbitrum", "optimism", "gnosis", "pythnet", "xpla", "btc", "base", "sei", "wormchain", "sepolia"] - tx Source transaction hash [string] + tx Source transaction hash [string] + block-start Starting Block Range, i.e. -2048 [string] + block-end Ending Block Range, i.e. latest [string] Options: --help Show help [boolean] diff --git a/clients/js/src/cmds/status.ts b/clients/js/src/cmds/status.ts index 6e0c210af..b4f1c1826 100644 --- a/clients/js/src/cmds/status.ts +++ b/clients/js/src/cmds/status.ts @@ -4,7 +4,7 @@ import { assertChain, } from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { relayer, Network } from "@certusone/wormhole-sdk"; -import yargs from "yargs"; +import yargs, { string } from "yargs"; import { CONTRACTS, NETWORKS } from "../consts"; import { assertNetwork } from "../utils"; import { impossible } from "../vaa"; @@ -29,6 +29,14 @@ export const builder = (y: typeof yargs) => describe: "Source transaction hash", type: "string", demandOption: true, + } as const) + .positional("block-start", { + describe: "Starting Block Range, i.e. -2048", + type: "string", + } as const) + .positional("block-end", { + describe: "Ending Block Range, i.e. latest", + type: "string", } as const); export const handler = async ( argv: Awaited["argv"]> @@ -55,12 +63,35 @@ export const handler = async ( ) ); } + const targetChainBlockRanges = new Map< + ChainName, + [ethers.providers.BlockTag, ethers.providers.BlockTag] + >(); + const getBlockTag = (tagString: string): ethers.providers.BlockTag => { + if (+tagString) return parseInt(tagString); + return tagString; + }; + for (const key in NETWORKS[network]) { + targetChainBlockRanges.set(key as ChainName, [ + getBlockTag(argv["block-start"] || "-2048"), + getBlockTag(argv["block-end"] || "latest"), + ]); + } const info = await relayer.getWormholeRelayerInfo(chain, argv.tx, { environment: network, sourceChainProvider, targetChainProviders, + targetChainBlockRanges, }); console.log(relayer.stringifyWormholeRelayerInfo(info)); + if ( + info.targetChainStatus.events[0].status === + relayer.DeliveryStatus.DeliveryDidntHappenWithinRange + ) { + console.log( + "Try using the '--block-start' and '--block-end' flags to specify a different block range" + ); + } };