feat: add dry-run support for warp deploy + gas stats (#3586)
### Description * New feature to allow users to dry-run the warp deploy script against a forked (base/origin) network of their choice * To run: `yarn build && yarn hyperlane deploy warp --dry-run` || `yarn build && yarn hyperlane deploy warp -d` * Externally enables: `hyperlane deploy warp --dry-run` || `hyperlane deploy warp -d` * Also adds gas usage util for both warp & core deployments in all contexts, e.g. * When running a vanilla core deploy, for example, between alfajores and fuji, you will now see: ``` ⛽️ Gas Usage Statistics - Gas required for core deploy on alfajores: 0.0058686745 CELO - Gas required for core deploy on fuji: 0.0239308515 AVAX ``` ### Drive-by changes * None ### Related issues * Fixes https://github.com/hyperlane-xyz/issues/issues/819 ### Backward compatibility * Yes ### Testing * Note: `hl` == `yarn build && yarn hyperlane`. The below tests are only a sample and are not inclusive. #### Manual Testing * With `anvil` NOT running in separate instance: * `hl deploy warp -d` * Throws: ``` Error: No active anvil node detected. Please run `anvil` in a separate instance. ``` * With `anvil` running in separate instance: * `hl deploy warp -d -k c0052e22df5d1f4ae7c51e254Xx00Xx0eb833453eaed6301xXxxx8a30d92d10a` (any private key) * Throws `Error: Invalid address length. Please ensure you are passing an address and not a private key.` * `hl deploy warp -d -k 0x16F4898F47c085C41d7Cc6b1dc0xX0xXX017dcBb` (any public address) * Output: ``` 🔎 Verifying anvil node is running... ✅ Successfully verified anvil node is running Using warp route deployment config at ./configs/warp-route-deployment.yaml No chain config file provided ? Do you want to use some core deployment address artifacts? This is required for PI chains (non-core chains). no Forking alfajores for dry-run... ✅ Successfully forked alfajores for dry-run Impersonating account (0x16F4898F47c085C41d7Cc6b1dc72B91EA617dcBb)... ✅ Successfully impersonated account (0x16F4898F47c085C41d7Cc6b1dc72B91EA617dcBb) ... ✅ Hyp token deployments complete Writing deployment artifacts Deployment is complete! Contract address artifacts are in artifacts/dry-run_warp-route-deployment-2024-04-16-12-27-02.json Warp config is in artifacts/dry-run_warp-config-2024-04-16-12-27-02.json ⛽️ Gas Usage Statistics - Gas required for warp dry-run on alfajores: 0.013310162514578124 CELO Resetting forked network... ✅ Successfully reset forked network ✅ Warp dry-run completed successfully ``` #### CI Testing * Successful CI-backed integration/regression testing via `ci-test.sh`pull/3620/head
parent
2b3f75836a
commit
aea79c686e
@ -0,0 +1,5 @@ |
||||
--- |
||||
'@hyperlane-xyz/cli': minor |
||||
--- |
||||
|
||||
Adds single-chain dry-run support for deploying warp routes & gas estimation for core and warp route dry-run deployments. |
@ -0,0 +1,17 @@ |
||||
anvil: |
||||
chainId: 31337 |
||||
domainId: 31337 |
||||
name: anvil |
||||
protocol: ethereum |
||||
rpcUrls: |
||||
- http: http://127.0.0.1:8545 |
||||
nativeToken: |
||||
name: Ether |
||||
symbol: ETH |
||||
decimals: 18 |
||||
alfajores: |
||||
rpcUrls: |
||||
- http: https://alfajores-forno.celo-testnet.org |
||||
blocks: |
||||
confirmations: 1 |
||||
estimateBlockTime: 1 |
@ -0,0 +1,8 @@ |
||||
anvil: |
||||
threshold: 1 |
||||
validators: |
||||
- '0xa0ee7a142d267c1f36714e4a8f75612f20a79720' |
||||
alfajores: |
||||
threshold: 1 |
||||
validators: |
||||
- '0xa0ee7a142d267c1f36714e4a8f75612f20a79720' |
@ -0,0 +1,5 @@ |
||||
base: |
||||
chainName: alfajores |
||||
type: native |
||||
synthetics: |
||||
- chainName: fuji |
Loading…
Reference in new issue