From e6fdcc4f7f501cd8046391f601d849cb0088dbc1 Mon Sep 17 00:00:00 2001 From: Daniel Savu <23065004+daniel-savu@users.noreply.github.com> Date: Fri, 13 Dec 2024 12:29:39 +0000 Subject: [PATCH 01/32] chore: multiply gas price for treasuretopaz too (#4999) ### Description ### Drive-by changes ### Related issues ### Backward compatibility ### Testing --- rust/main/chains/hyperlane-ethereum/src/tx.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/rust/main/chains/hyperlane-ethereum/src/tx.rs b/rust/main/chains/hyperlane-ethereum/src/tx.rs index 1a95c5436b..4964bb84ea 100644 --- a/rust/main/chains/hyperlane-ethereum/src/tx.rs +++ b/rust/main/chains/hyperlane-ethereum/src/tx.rs @@ -235,12 +235,7 @@ where eip1559_default_estimator(base_fee_per_gas, fee_history.reward) }; - let mut gas_price_multiplier: u32 = 1; - // `treasure` chain gas estimation underestimates the actual gas price, so we add a multiplier to it - if domain.id() == 61166 { - gas_price_multiplier = 2; - } - + let gas_price_multiplier = chain_specific_gas_price_multiplier(domain); Ok(( base_fee_per_gas.mul(gas_price_multiplier), max_fee_per_gas.mul(gas_price_multiplier), @@ -248,6 +243,15 @@ where )) } +fn chain_specific_gas_price_multiplier(domain: &HyperlaneDomain) -> u32 { + match domain.id() { + // treasure (mainnet) and treasuretopaz (testnet) have a gas price multiplier of 2, + // as the gas estimation underestimates the actual gas price. + 61166 | 978658 => 2, + _ => 1, + } +} + pub(crate) async fn call_with_reorg_period( call: ethers::contract::builders::ContractCall, provider: &M, From e3bd8bc5615783e4782da4532b1be7a96bb22289 Mon Sep 17 00:00:00 2001 From: Trevor Porter Date: Fri, 13 Dec 2024 13:28:19 +0000 Subject: [PATCH 02/32] feat: ignore unprocessable messages in metrics, add some new warp monitoring (#4995) ### Description - Ignores known unprocessable ezETH and pzETH messages from metrics, to avoid alerts there - Added some logic to remove stale warp route monitors if a warp ID changes such that the previous warp monitor is stale - Deployed new warp monitors for ezETH and pzETH to include swell - Pulled in the treasure warp route ID that wasn't put into a PR yet ### Drive-by changes ### Related issues ### Backward compatibility ### Testing --------- Co-authored-by: Mo Hussan <22501692+Mo-Hussain@users.noreply.github.com> --- .../config/environments/mainnet3/agent.ts | 41 +++++++++++- .../warp-routes/deploy-warp-monitor.ts | 6 ++ typescript/infra/src/utils/helm.ts | 5 ++ typescript/infra/src/warp/helm.ts | 62 +++++++++++++++++-- typescript/sdk/src/metadata/matchingList.ts | 1 + 5 files changed, 109 insertions(+), 6 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/agent.ts b/typescript/infra/config/environments/mainnet3/agent.ts index ad075baccc..362adb4df8 100644 --- a/typescript/infra/config/environments/mainnet3/agent.ts +++ b/typescript/infra/config/environments/mainnet3/agent.ts @@ -1,6 +1,7 @@ import { GasPaymentEnforcement, GasPaymentEnforcementPolicyType, + MatchingList, RpcConsensusType, } from '@hyperlane-xyz/sdk'; @@ -458,6 +459,41 @@ const scraperResources = { }, }; +const blacklistedMessageIds = [ + // ezETH + '0xb9cfeb4a22b65903ca7cb514fd752feba0622a0495878d508d19a91734d89cc4', + '0x13d6c56781ee9b8811f4e17198bf064baed2682ce44193c750e76c73384466e7', + '0x366520dcd48f19a2cdc806e244d4cea970a587e3932320baee30e710d316b303', + '0x0f9b8849d6dbf5a699e906a6e06044d6cf84ee0ba2174cec28db4fceba52616a', + '0x0e1235105208e7d3a616ac2bb780e7dab30fc289670ba8d6655a4ded73f9b5da', + '0xa6fdecc3f21d081bf3d78da9ddf516b24397a6bff44d7cd4614955f5ca2320b2', + '0x2c3484724a97524fd95aa8aec34a0ae30f79e14e1b228cce9dc1793cea40fc3d', + '0x11ffaeaae5c431501584bc39805ef44b4080e7f90ca7ff609a131d58d1f75ae6', + '0xc18ea74675bc1e5b780e63ac6063c7c39189e1848b8fe52ac40b83fff9268483', + '0xd8040094ab94e44e2b3b57ab0704a33e363f46261a45c9dfc788371c808b8f3a', + '0xf7f0be22f46144793ee3fadccddd4cfb8422d36f5d59bb86fea3782b89160d49', + '0xeda79ab37b4a05d8f318b3a465a70572d819b2c37456c48835a30bb6c016e194', + '0xaf7c7dfc4d19aec283c619a2724d03fbbfeef4a468e84c0573551c1adca40ded', + '0x4a2c42c283755400c0dc7f1be65f6ff026a38aacaa6505302d465268bcd86b21', + '0x0f80e5b8da5a706d6273a622a5c29f83cee5f37e6376c2c8a615b0ef91a540df', + '0x6359232ef1f239d9519104cf47f1e2fbcbe25f8ee68001c5eff7e81bf23b396c', + '0x6a3fb736b952467b814e93fb35edf3a824d35efd1e4b10e3ed465595c55af88a', + + // pzETH + '0x14cb552c08de9f131b750c2f821f90e5ff685e1d3d714e912f7603b2f4b7adb4', + '0xaa5b5021200e66b4a47e5156106c46b6b2bc1e00b088a524a14bb0709cbf733e', + '0x43b4cf52255a7728a3c409f76fd20ba0c36cb42854e0b0a0eefdde848363224b', + '0x047f34405014b117dccd6d8981c846dc3fe746f5e758f90f227581c735f4f11a', + '0x47d60c21abefae928d1c16c5a33cd5a8fcf870cf533c71ab6db49d75a5c4a215', + '0xa2df671fbd4b518c282f9a21e2677fa2a05af33f96ccc9ff113f1a1ffa557667', + '0x1cefa98b6d937333e452a0dbc0654e13416c228682837a8913cb18d612b307dd', +]; + +// Blacklist matching list intended to be used by all contexts. +const blacklist: MatchingList = blacklistedMessageIds.map((messageId) => ({ + messageId, +})); + const hyperlane: RootAgentConfig = { ...contextBase, context: Contexts.Hyperlane, @@ -467,8 +503,9 @@ const hyperlane: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: 'a7f3967-20241205-163733', + tag: 'c351026-20241212-172408', }, + blacklist, gasPaymentEnforcement: gasPaymentEnforcement, metricAppContextsGetter, resources: relayerResources, @@ -503,6 +540,7 @@ const releaseCandidate: RootAgentConfig = { repo, tag: '4cb2c9a-20241205-142854', }, + blacklist, // We're temporarily (ab)using the RC relayer as a way to increase // message throughput. // whitelist: releaseCandidateHelloworldMatchingList, @@ -536,6 +574,7 @@ const neutron: RootAgentConfig = { repo, tag: '25a927d-20241114-171323', }, + blacklist, gasPaymentEnforcement, metricAppContextsGetter, resources: relayerResources, diff --git a/typescript/infra/scripts/warp-routes/deploy-warp-monitor.ts b/typescript/infra/scripts/warp-routes/deploy-warp-monitor.ts index 29fd16b9a9..8ede7cdda5 100644 --- a/typescript/infra/scripts/warp-routes/deploy-warp-monitor.ts +++ b/typescript/infra/scripts/warp-routes/deploy-warp-monitor.ts @@ -35,6 +35,12 @@ async function main() { await helmManager.runHelmCommand(HelmCommand.InstallOrUpgrade); }; + // First try to uninstall any stale Warp Monitors. + // This can happen if a Warp Route ID is changed or removed. + await WarpRouteMonitorHelmManager.uninstallUnknownWarpMonitorReleases( + environment, + ); + for (const id of warpRouteIds) { console.log(`Deploying Warp Monitor for Warp Route ID: ${id}`); await deployWarpMonitor(id); diff --git a/typescript/infra/src/utils/helm.ts b/typescript/infra/src/utils/helm.ts index 2ec09385ea..855393473a 100644 --- a/typescript/infra/src/utils/helm.ts +++ b/typescript/infra/src/utils/helm.ts @@ -93,6 +93,11 @@ export function buildHelmChartDependencies(chartPath: string) { return execCmd(`cd ${chartPath} && helm dependency build`, {}, false, true); } +// Convenience function to remove a helm release without having a HelmManger for it. +export function removeHelmRelease(releaseName: string, namespace: string) { + return execCmd(`helm uninstall ${releaseName} --namespace ${namespace}`); +} + export type HelmValues = Record; export abstract class HelmManager { diff --git a/typescript/infra/src/warp/helm.ts b/typescript/infra/src/warp/helm.ts index ce6c901203..c77b3e45fe 100644 --- a/typescript/infra/src/warp/helm.ts +++ b/typescript/infra/src/warp/helm.ts @@ -1,10 +1,16 @@ +import { confirm } from '@inquirer/prompts'; import path from 'path'; +import { difference } from '@hyperlane-xyz/utils'; + +import { WarpRouteIds } from '../../config/environments/mainnet3/warp/warpIds.js'; import { DeployEnvironment } from '../../src/config/environment.js'; -import { HelmManager } from '../../src/utils/helm.js'; -import { getInfraPath } from '../../src/utils/utils.js'; +import { HelmManager, removeHelmRelease } from '../../src/utils/helm.js'; +import { execCmdAndParseJson, getInfraPath } from '../../src/utils/utils.js'; export class WarpRouteMonitorHelmManager extends HelmManager { + static helmReleasePrefix: string = 'hyperlane-warp-route-'; + readonly helmChartPath: string = path.join( getInfraPath(), './helm/warp-routes', @@ -22,7 +28,7 @@ export class WarpRouteMonitorHelmManager extends HelmManager { return { image: { repository: 'gcr.io/abacus-labs-dev/hyperlane-monorepo', - tag: 'aac6787-20241128-103715', + tag: 'fd20bb1-20241212-220536', }, warpRouteId: this.warpRouteId, fullnameOverride: this.helmReleaseName, @@ -37,8 +43,12 @@ export class WarpRouteMonitorHelmManager extends HelmManager { return this.runEnv; } - get helmReleaseName(): string { - let name = `hyperlane-warp-route-${this.warpRouteId + get helmReleaseName() { + return WarpRouteMonitorHelmManager.getHelmReleaseName(this.warpRouteId); + } + + static getHelmReleaseName(warpRouteId: string): string { + let name = `${WarpRouteMonitorHelmManager.helmReleasePrefix}${warpRouteId .toLowerCase() .replaceAll('/', '-')}`; @@ -53,4 +63,46 @@ export class WarpRouteMonitorHelmManager extends HelmManager { } return name; } + + // Gets all Warp Monitor Helm Releases in the given namespace. + static async getWarpMonitorHelmReleases( + namespace: string, + ): Promise { + const results = await execCmdAndParseJson( + `helm list --filter '${WarpRouteMonitorHelmManager.helmReleasePrefix}.+' -o json -n ${namespace}`, + ); + return results.map((r: any) => r.name); + } + + // This method is used to uninstall any stale Warp Monitors. + // This can happen if a Warp Route ID is changed or removed. + // Any warp monitor helm releases found that do not relate to known warp route ids + // will be prompted for uninstallation. + static async uninstallUnknownWarpMonitorReleases(namespace: string) { + const allExpectedHelmReleaseNames = Object.values(WarpRouteIds).map( + WarpRouteMonitorHelmManager.getHelmReleaseName, + ); + const helmReleases = + await WarpRouteMonitorHelmManager.getWarpMonitorHelmReleases(namespace); + + const unknownHelmReleases = difference( + new Set(helmReleases), + new Set(allExpectedHelmReleaseNames), + ); + for (const helmRelease of unknownHelmReleases) { + console.log( + `Unknown Warp Monitor Helm Release: ${helmRelease} (possibly a release from a stale Warp Route ID).`, + ); + const uninstall = await confirm({ + message: + "Would you like to uninstall this Helm Release? Make extra sure it shouldn't exist!", + }); + if (uninstall) { + console.log(`Uninstalling Helm Release: ${helmRelease}`); + await removeHelmRelease(helmRelease, namespace); + } else { + console.log(`Skipping uninstall of Helm Release: ${helmRelease}`); + } + } + } } diff --git a/typescript/sdk/src/metadata/matchingList.ts b/typescript/sdk/src/metadata/matchingList.ts index 0e7a50804d..297bc54613 100644 --- a/typescript/sdk/src/metadata/matchingList.ts +++ b/typescript/sdk/src/metadata/matchingList.ts @@ -15,6 +15,7 @@ const DomainSchema = z.union([ const AddressSchema = z.union([z.literal('*'), ZHash, z.array(ZHash)]); const MatchingListElementSchema = z.object({ + messageId: AddressSchema.optional(), originDomain: DomainSchema.optional(), senderAddress: AddressSchema.optional(), destinationDomain: DomainSchema.optional(), From 7ceb81d47f388c1709161157343594f922b5fe55 Mon Sep 17 00:00:00 2001 From: Daniel Savu <23065004+daniel-savu@users.noreply.github.com> Date: Fri, 13 Dec 2024 13:59:15 +0000 Subject: [PATCH 03/32] chore: treasure fix relayer images (#5003) ### Description ### Drive-by changes ### Related issues ### Backward compatibility ### Testing --- typescript/infra/config/environments/mainnet3/agent.ts | 4 ++-- typescript/infra/config/environments/testnet4/agent.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/agent.ts b/typescript/infra/config/environments/mainnet3/agent.ts index 362adb4df8..118fa4d7a7 100644 --- a/typescript/infra/config/environments/mainnet3/agent.ts +++ b/typescript/infra/config/environments/mainnet3/agent.ts @@ -503,7 +503,7 @@ const hyperlane: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: 'c351026-20241212-172408', + tag: 'e6fdcc4-20241213-124201', }, blacklist, gasPaymentEnforcement: gasPaymentEnforcement, @@ -538,7 +538,7 @@ const releaseCandidate: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: '4cb2c9a-20241205-142854', + tag: 'e6fdcc4-20241213-124201', }, blacklist, // We're temporarily (ab)using the RC relayer as a way to increase diff --git a/typescript/infra/config/environments/testnet4/agent.ts b/typescript/infra/config/environments/testnet4/agent.ts index 2bab1291ac..464bea79eb 100644 --- a/typescript/infra/config/environments/testnet4/agent.ts +++ b/typescript/infra/config/environments/testnet4/agent.ts @@ -219,7 +219,7 @@ const hyperlane: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: 'bb4e82b-20241107-190434', + tag: 'e6fdcc4-20241213-124201', }, blacklist: [...releaseCandidateHelloworldMatchingList, ...relayBlacklist], gasPaymentEnforcement, @@ -265,7 +265,7 @@ const releaseCandidate: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: '5a0d68b-20240916-144115', + tag: 'e6fdcc4-20241213-124201', }, whitelist: [...releaseCandidateHelloworldMatchingList], blacklist: relayBlacklist, From 82cebabe4d07a560e6f17a64cbe42e76b0a9f996 Mon Sep 17 00:00:00 2001 From: Paul Balaji <10051819+paulbalaji@users.noreply.github.com> Date: Fri, 13 Dec 2024 19:57:42 +0000 Subject: [PATCH 04/32] feat: remove GCP storage dependency from SDK (#5000) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Description - feat: remove GCP storage dependency - call GCP storage API directly ### Drive-by changes - little refactor - add dec 4 batch sha to the validator version checker ### Related issues ### Backward compatibility ### Testing test by checking version of flowmainnet validators, because we know the flow foundation validator is on GCP storage https://evm.flowscan.io/tx/0x4ac998b0d35b3d305e792ee608818a398d09ee11851e09e37068f67ce8c6153f?tab=logs ``` # from repo root yarn --cwd typescript/infra tsx scripts/check/check-validator-version.ts -e mainnet3 -c flowmainnet --show-updated ``` ``` ✅ 4 Validators with expected git SHA: ┌─────────┬───────────────┬──────────────────────────────────────────────┬───────────────────┬───────────────┐ │ (index) │ chain │ validator │ alias │ version │ ├─────────┼───────────────┼──────────────────────────────────────────────┼───────────────────┼───────────────┤ │ 0 │ 'flowmainnet' │ '0xe132235c958ca1f3f24d772e5970dd58da4c0f6e' │ 'Abacus Works' │ 'nov-7-batch' │ │ 1 │ 'flowmainnet' │ '0x14ADB9e3598c395Fe3290f3ba706C3816Aa78F59' │ 'Flow Foundation' │ 'nov-7-batch' │ │ 2 │ 'flowmainnet' │ '0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f' │ 'Merkly' │ 'nov-7-batch' │ │ 3 │ 'flowmainnet' │ '0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36' │ 'Mitosis' │ 'dec-4-batch' │ └─────────┴───────────────┴──────────────────────────────────────────────┴───────────────────┴───────────────┘ ✅ All validators running expected git SHA! ``` --- .changeset/many-clouds-bow.md | 5 + .../scripts/check/check-validator-version.ts | 2 + typescript/sdk/package.json | 1 - typescript/sdk/src/gcp/storage.ts | 81 ++++++++----- yarn.lock | 106 +----------------- 5 files changed, 64 insertions(+), 131 deletions(-) create mode 100644 .changeset/many-clouds-bow.md diff --git a/.changeset/many-clouds-bow.md b/.changeset/many-clouds-bow.md new file mode 100644 index 0000000000..b481b543ff --- /dev/null +++ b/.changeset/many-clouds-bow.md @@ -0,0 +1,5 @@ +--- +'@hyperlane-xyz/sdk': minor +--- + +Call google storage API directly and remove @google-cloud/storage dependency from the SDK. diff --git a/typescript/infra/scripts/check/check-validator-version.ts b/typescript/infra/scripts/check/check-validator-version.ts index 72df04621d..f6c1622196 100644 --- a/typescript/infra/scripts/check/check-validator-version.ts +++ b/typescript/infra/scripts/check/check-validator-version.ts @@ -28,6 +28,8 @@ const acceptableValidatorVersions: Record = { 'd834d8147628584acd78a81e344bff76472d707e': 'nov-21-bsquared', // Nov 21 swell/lumiaprism deploy 'b35c105f197267072daa14bb3d83c62410b96fac': 'nov-21-swell', + // Dec 4 deploy + 'a7f3967e047c2c5aabb8cc442e4acad435fa32ab': 'dec-4-batch', // Rolled out only to AW infra before 1.0.0, just 1 commit behind 1.0.0 'a64af8be9a76120d0cfc727bb70660fa07e70cce': 'pre-1.0.0', // 1.0.0 diff --git a/typescript/sdk/package.json b/typescript/sdk/package.json index 47bb713b13..1c383e1839 100644 --- a/typescript/sdk/package.json +++ b/typescript/sdk/package.json @@ -8,7 +8,6 @@ "@chain-registry/types": "^0.50.14", "@cosmjs/cosmwasm-stargate": "^0.32.4", "@cosmjs/stargate": "^0.32.4", - "@google-cloud/storage": "7.14.0", "@hyperlane-xyz/core": "5.8.3", "@hyperlane-xyz/utils": "7.3.0", "@safe-global/api-kit": "1.3.0", diff --git a/typescript/sdk/src/gcp/storage.ts b/typescript/sdk/src/gcp/storage.ts index 96c2a3fd71..6177202314 100644 --- a/typescript/sdk/src/gcp/storage.ts +++ b/typescript/sdk/src/gcp/storage.ts @@ -1,5 +1,3 @@ -import { Storage } from '@google-cloud/storage'; - export const GCS_BUCKET_REGEX = /^(?:(?:https?:\/\/)?([^/]+)\.storage\.googleapis\.com\/?|gs:\/\/([^/]+))$/; @@ -18,53 +16,84 @@ export interface StorageConfig { } export class GcpStorageWrapper { - private readonly client: Storage; private readonly bucket: string; private cache: Record> | undefined; + private readonly baseUrl: string; static fromBucketUrl(bucketUrl: string): GcpStorageWrapper { const match = bucketUrl.match(GCS_BUCKET_REGEX); if (!match) throw new Error('Could not parse bucket url'); return new GcpStorageWrapper({ - bucket: match[1], + // Handle both http and gs:// formats + bucket: match[1] || match[2], caching: true, }); } constructor(readonly config: StorageConfig) { - this.client = new Storage({ - projectId: config.projectId, - keyFilename: config.keyFilename, - }); this.bucket = config.bucket; + this.baseUrl = `https://storage.googleapis.com/storage/v1/b/${this.bucket}/o`; if (config.caching) { this.cache = {}; } } - formatKey(key: string): string { + private formatKey(key: string): string { return this.config.folder ? `${this.config.folder}/${key}` : key; } - async getObject(key: string): Promise | undefined> { - const Key = this.formatKey(key); - if (this.cache?.[Key]) { - return this.cache![Key]; + private getCachedObject(key: string): StorageReceipt | undefined { + return this.cache?.[key]; + } + + private setCachedObject(key: string, value: StorageReceipt): void { + if (this.cache) { + this.cache[key] = value; } + } - try { - const bucket = this.client.bucket(this.bucket); - const file = bucket.file(Key); - const [exists] = await file.exists(); + private async fetchMetadata(key: string): Promise { + const url = new URL(`${this.baseUrl}/${encodeURIComponent(key)}`); + const response = await fetch(url.toString()); - if (!exists) { - return undefined; - } + if (response.status === 404) return undefined; + + if (!response.ok) { + const responseText = await response.text(); + throw new Error( + `Failed to fetch object metadata: ${response.statusText}. ${responseText}`, + ); + } + + return response.json(); + } + + private async fetchContent(key: string): Promise { + const url = `${this.baseUrl}/${encodeURIComponent(key)}?alt=media`; + const response = await fetch(url); + const responseText = await response.text(); + + if (!response.ok) { + throw new Error( + `Failed to fetch object content: ${response.statusText}. ${responseText}`, + ); + } + + return responseText; + } - const [metadata] = await file.getMetadata(); - const [contents] = await file.download(); - const body = contents.toString('utf-8'); + async getObject(key: string): Promise | undefined> { + const formattedKey = this.formatKey(key); + const cachedObject = this.getCachedObject(formattedKey); + if (cachedObject) { + return cachedObject; + } + try { + const metadata = await this.fetchMetadata(formattedKey); + if (!metadata) return undefined; + + const body = await this.fetchContent(formattedKey); const result = { data: JSON.parse(body), // If no updated date is provided, use the Unix epoch start @@ -72,12 +101,10 @@ export class GcpStorageWrapper { modified: new Date(metadata.updated ?? 0), }; - if (this.cache) { - this.cache[Key] = result; - } + this.setCachedObject(formattedKey, result); return result; } catch (e: any) { - if (e.code === 404) { + if (e.status === 404) { return undefined; } throw e; diff --git a/yarn.lock b/yarn.lock index 70a2c8f27f..4f4fa8eb36 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7205,30 +7205,6 @@ __metadata: languageName: node linkType: hard -"@google-cloud/paginator@npm:^5.0.0": - version: 5.0.2 - resolution: "@google-cloud/paginator@npm:5.0.2" - dependencies: - arrify: "npm:^2.0.0" - extend: "npm:^3.0.2" - checksum: 10/b64ba2029b77fdcf3c827aea0b6d128122fd1d2f4aa8c1ba70747cba0659d4216a283769fb3bbeb8f726176f5282624637f02c30f118a010e05838411da0cb76 - languageName: node - linkType: hard - -"@google-cloud/projectify@npm:^4.0.0": - version: 4.0.0 - resolution: "@google-cloud/projectify@npm:4.0.0" - checksum: 10/fdccdda0b50855c35541d71c46a6603f3302ff1a00108d946272cb2167435da00e2a2da5963fe489f4f5a4a9eb6320abeb97d3269974a972ae89f5df8451922d - languageName: node - linkType: hard - -"@google-cloud/promisify@npm:^4.0.0": - version: 4.0.0 - resolution: "@google-cloud/promisify@npm:4.0.0" - checksum: 10/c5de81321b3a5c567edcbe0b941fb32644611147f3ba22f20575918c225a979988a99bc2ebda05ac914fa8714b0a54c69be72c3f46c7a64c3b19db7d7fba8d04 - languageName: node - linkType: hard - "@google-cloud/secret-manager@npm:^5.5.0": version: 5.5.0 resolution: "@google-cloud/secret-manager@npm:5.5.0" @@ -7238,29 +7214,6 @@ __metadata: languageName: node linkType: hard -"@google-cloud/storage@npm:7.14.0": - version: 7.14.0 - resolution: "@google-cloud/storage@npm:7.14.0" - dependencies: - "@google-cloud/paginator": "npm:^5.0.0" - "@google-cloud/projectify": "npm:^4.0.0" - "@google-cloud/promisify": "npm:^4.0.0" - abort-controller: "npm:^3.0.0" - async-retry: "npm:^1.3.3" - duplexify: "npm:^4.1.3" - fast-xml-parser: "npm:^4.4.1" - gaxios: "npm:^6.0.2" - google-auth-library: "npm:^9.6.3" - html-entities: "npm:^2.5.2" - mime: "npm:^3.0.0" - p-limit: "npm:^3.0.1" - retry-request: "npm:^7.0.0" - teeny-request: "npm:^9.0.0" - uuid: "npm:^8.0.0" - checksum: 10/0726fde2697da696637fab91ebd756354a58c1331f6a0b9ecc5011de4aae72cd9e1fe3e9564aee15c6a2118e45ed0ae8c3ac9685c6581db6107080f906a949e9 - languageName: node - linkType: hard - "@grpc/grpc-js@npm:~1.10.3": version: 1.10.8 resolution: "@grpc/grpc-js@npm:1.10.8" @@ -7602,7 +7555,6 @@ __metadata: "@cosmjs/cosmwasm-stargate": "npm:^0.32.4" "@cosmjs/stargate": "npm:^0.32.4" "@eslint/js": "npm:^9.15.0" - "@google-cloud/storage": "npm:7.14.0" "@hyperlane-xyz/core": "npm:5.8.3" "@hyperlane-xyz/utils": "npm:7.3.0" "@nomiclabs/hardhat-ethers": "npm:^2.2.3" @@ -17874,13 +17826,6 @@ __metadata: languageName: node linkType: hard -"arrify@npm:^2.0.0": - version: 2.0.1 - resolution: "arrify@npm:2.0.1" - checksum: 10/067c4c1afd182806a82e4c1cb8acee16ab8b5284fbca1ce29408e6e91281c36bb5b612f6ddfbd40a0f7a7e0c75bf2696eb94c027f6e328d6e9c52465c98e4209 - languageName: node - linkType: hard - "as-table@npm:^1.0.36": version: 1.0.55 resolution: "as-table@npm:1.0.55" @@ -21074,7 +21019,7 @@ __metadata: languageName: node linkType: hard -"duplexify@npm:^4.0.0, duplexify@npm:^4.1.2, duplexify@npm:^4.1.3": +"duplexify@npm:^4.0.0, duplexify@npm:^4.1.2": version: 4.1.3 resolution: "duplexify@npm:4.1.3" dependencies: @@ -23202,17 +23147,6 @@ __metadata: languageName: node linkType: hard -"fast-xml-parser@npm:^4.4.1": - version: 4.5.0 - resolution: "fast-xml-parser@npm:4.5.0" - dependencies: - strnum: "npm:^1.0.5" - bin: - fxparser: src/cli/cli.js - checksum: 10/dc9571c10e7b57b5be54bcd2d92f50c446eb42ea5df347d253e94dd14eb99b5300a6d172e840f151e0721933ca2406165a8d9b316a6d777bf0596dc4fe1df756 - languageName: node - linkType: hard - "fastq@npm:^1.6.0": version: 1.13.0 resolution: "fastq@npm:1.13.0" @@ -23955,19 +23889,6 @@ __metadata: languageName: node linkType: hard -"gaxios@npm:^6.0.2": - version: 6.7.1 - resolution: "gaxios@npm:6.7.1" - dependencies: - extend: "npm:^3.0.2" - https-proxy-agent: "npm:^7.0.1" - is-stream: "npm:^2.0.0" - node-fetch: "npm:^2.6.9" - uuid: "npm:^9.0.1" - checksum: 10/c85599162208884eadee91215ebbfa1faa412551df4044626cb561300e15193726e8f23d63b486533e066dadad130f58ed872a23acab455238d8d48b531a0695 - languageName: node - linkType: hard - "gcp-metadata@npm:^6.1.0": version: 6.1.0 resolution: "gcp-metadata@npm:6.1.0" @@ -24475,20 +24396,6 @@ __metadata: languageName: node linkType: hard -"google-auth-library@npm:^9.6.3": - version: 9.15.0 - resolution: "google-auth-library@npm:9.15.0" - dependencies: - base64-js: "npm:^1.3.0" - ecdsa-sig-formatter: "npm:^1.0.11" - gaxios: "npm:^6.1.1" - gcp-metadata: "npm:^6.1.0" - gtoken: "npm:^7.0.0" - jws: "npm:^4.0.0" - checksum: 10/fba2db9732bbf1b3a3a2e2b45131ba8e8aba297377f1c104d0b2ab3386bbc1e02047f20b8a7afca1c6308492da1540104618f1c7b5cd539703552e10399c560e - languageName: node - linkType: hard - "google-gax@npm:^4.0.3": version: 4.3.3 resolution: "google-gax@npm:4.3.3" @@ -25170,13 +25077,6 @@ __metadata: languageName: node linkType: hard -"html-entities@npm:^2.5.2": - version: 2.5.2 - resolution: "html-entities@npm:2.5.2" - checksum: 10/4ec12ebdf2d5ba8192c68e1aef3c1e4a4f36b29246a0a88464fe278a54517d0196d3489af46a3145c7ecacb4fc5fd50497be19eb713b810acab3f0efcf36fdc2 - languageName: node - linkType: hard - "html-escaper@npm:^2.0.0": version: 2.0.2 resolution: "html-escaper@npm:2.0.2" @@ -30113,7 +30013,7 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^3.0.1, p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": +"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: @@ -36411,7 +36311,7 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^8.0.0, uuid@npm:^8.3.2": +"uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" bin: From 4779a19358e119e17e7889a3534fe862e760c948 Mon Sep 17 00:00:00 2001 From: Lee <6251863+ltyu@users.noreply.github.com> Date: Fri, 13 Dec 2024 16:16:31 -0500 Subject: [PATCH 05/32] chore: Fix Checker for hooks (#5006) ### Description Fixes hook checker in Infra ### Backward compatibility Yes ### Testing Manual --- typescript/sdk/src/router/HyperlaneRouterChecker.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/typescript/sdk/src/router/HyperlaneRouterChecker.ts b/typescript/sdk/src/router/HyperlaneRouterChecker.ts index e514c8522e..7a8c5e3f1d 100644 --- a/typescript/sdk/src/router/HyperlaneRouterChecker.ts +++ b/typescript/sdk/src/router/HyperlaneRouterChecker.ts @@ -66,12 +66,7 @@ export class HyperlaneRouterChecker< }); } - if (config.hook) { - if (typeof config.hook !== 'string') - return this.logger.info( - `Hook objects not supported in router checker for HookConfig: ${config.hook}`, - ); - + if (config.hook && typeof config.hook === 'string') { const hook = await router.hook(); if (!eqAddress(hook, config.hook as string)) { this.addViolation({ From 7cb1c2ce6cf23cbd9dadb9b5cdb4f1097b29bf42 Mon Sep 17 00:00:00 2001 From: Trevor Porter Date: Sun, 15 Dec 2024 22:00:07 +0000 Subject: [PATCH 06/32] feat: add ETH/ethereum-vana warp route, update relayer (#5010) ### Description - Adds vana warp route monitoring - Adds vana warp route relayer app context metrics ### Drive-by changes ### Related issues ### Backward compatibility ### Testing --- .registryrc | 2 +- typescript/infra/config/environments/mainnet3/agent.ts | 2 +- typescript/infra/config/environments/mainnet3/warp/warpIds.ts | 1 + typescript/infra/src/warp/helm.ts | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.registryrc b/.registryrc index 15e15930d3..9f6abce903 100644 --- a/.registryrc +++ b/.registryrc @@ -1 +1 @@ -bde63f7c32e8d169d7e3163b14b5bb25bd3d5042 +0c4f8e0eb7785ae13ee091ab5c4548528cb06d5f diff --git a/typescript/infra/config/environments/mainnet3/agent.ts b/typescript/infra/config/environments/mainnet3/agent.ts index 118fa4d7a7..05b91bce23 100644 --- a/typescript/infra/config/environments/mainnet3/agent.ts +++ b/typescript/infra/config/environments/mainnet3/agent.ts @@ -503,7 +503,7 @@ const hyperlane: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: 'e6fdcc4-20241213-124201', + tag: '4779a19-20241213-212818', }, blacklist, gasPaymentEnforcement: gasPaymentEnforcement, diff --git a/typescript/infra/config/environments/mainnet3/warp/warpIds.ts b/typescript/infra/config/environments/mainnet3/warp/warpIds.ts index 34b767c314..dea0745860 100644 --- a/typescript/infra/config/environments/mainnet3/warp/warpIds.ts +++ b/typescript/infra/config/environments/mainnet3/warp/warpIds.ts @@ -22,6 +22,7 @@ export enum WarpRouteIds { EthereumInevmUSDC = 'USDC/ethereum-inevm', EthereumInevmUSDT = 'USDT/ethereum-inevm', EthereumSeiFastUSD = 'FASTUSD/ethereum-sei', + EthereumVanaETH = 'ETH/ethereum-vana', EthereumVictionETH = 'ETH/ethereum-viction', EthereumVictionUSDC = 'USDC/ethereum-viction', EthereumVictionUSDT = 'USDT/ethereum-viction', diff --git a/typescript/infra/src/warp/helm.ts b/typescript/infra/src/warp/helm.ts index c77b3e45fe..8eccec748b 100644 --- a/typescript/infra/src/warp/helm.ts +++ b/typescript/infra/src/warp/helm.ts @@ -28,7 +28,7 @@ export class WarpRouteMonitorHelmManager extends HelmManager { return { image: { repository: 'gcr.io/abacus-labs-dev/hyperlane-monorepo', - tag: 'fd20bb1-20241212-220536', + tag: '3492bff-20241215-213411', }, warpRouteId: this.warpRouteId, fullnameOverride: this.helmReleaseName, From a9c28302c194ae5f5e9151a653f2dbe35d022d19 Mon Sep 17 00:00:00 2001 From: Trevor Porter Date: Mon, 16 Dec 2024 11:58:33 +0000 Subject: [PATCH 07/32] feat: add VANA/ethereum-vana monitoring, fix Kathy bug (#5011) ### Description - VANA warp route monitoring & relayer app contexts - Fixed Kathy bug flagged by https://discord.com/channels/935678348330434570/1317987252294516776 where there was a hardcoded timeout. Removing the max retries results in infinite polling - Ignores some messages that were the treasure team funding a native warp route and are unprocessable, messing up metrics ### Drive-by changes ### Related issues ### Backward compatibility ### Testing --------- Signed-off-by: pbio <10051819+paulbalaji@users.noreply.github.com> Co-authored-by: pbio <10051819+paulbalaji@users.noreply.github.com> --- .registryrc | 2 +- rust/main/config/mainnet_config.json | 172 +++++++++--------- .../config/environments/mainnet3/agent.ts | 4 + .../environments/mainnet3/helloworld.ts | 4 +- .../environments/mainnet3/warp/warpIds.ts | 1 + typescript/infra/scripts/agent-utils.ts | 8 +- typescript/infra/scripts/helloworld/kathy.ts | 4 +- typescript/infra/src/warp/helm.ts | 2 +- 8 files changed, 102 insertions(+), 95 deletions(-) diff --git a/.registryrc b/.registryrc index 9f6abce903..dee0fef0a0 100644 --- a/.registryrc +++ b/.registryrc @@ -1 +1 @@ -0c4f8e0eb7785ae13ee091ab5c4548528cb06d5f +01f2271592da4a06962e31ed384201f32cb070ab diff --git a/rust/main/config/mainnet_config.json b/rust/main/config/mainnet_config.json index bb97daa396..44262d9923 100644 --- a/rust/main/config/mainnet_config.json +++ b/rust/main/config/mainnet_config.json @@ -34,7 +34,7 @@ "interchainAccountIsm": "0xd766e7C7517f2d0D92754b2fe4aE7AdEf7bDEC3e", "interchainAccountRouter": "0x25C87e735021F72d8728438C2130b02E3141f2cb", "interchainGasPaymaster": "0x8F1E22d309baa69D398a03cc88E9b46037e988AA", - "interchainSecurityModule": "0x7115c77E844E301693d78F1B19e796083eB0b680", + "interchainSecurityModule": "0x88BD2166Ed70a1Cae544037e16582e38bd74C6e6", "isTestnet": false, "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x811808Dd29ba8B0FC6C0ec0b5537035E59745162", @@ -100,7 +100,7 @@ "interchainAccountIsm": "0x2A7574358Ec53522CE2452887661AB4c86F7d400", "interchainAccountRouter": "0x91874Dbed74925dFe6059B90385EEb90DdE0B2E6", "interchainGasPaymaster": "0x3b6044acd6767f017e99318AA6Ef93b7B06A5a22", - "interchainSecurityModule": "0xB51De3e8BCE366a871d5ba631ACa843D18d9Bc60", + "interchainSecurityModule": "0xd53Ea5FD4C735cabc468CC676E76d2A97ef03eF3", "mailbox": "0x979Ca5202784112f4738403dBec5D0F3B9daabB9", "merkleTreeHook": "0x748040afB89B8FdBb992799808215419d36A0930", "name": "arbitrum", @@ -172,7 +172,7 @@ "interchainAccountIsm": "0x27a3233c05C1Df7c163123301D14bE9349E3Cb48", "interchainAccountRouter": "0xa82a0227e6d6db53AF4B264A852bfF91C6504a51", "interchainGasPaymaster": "0x95519ba800BBd0d34eeAE026fEc620AD978176C0", - "interchainSecurityModule": "0xEc016e4DB2ca7EdB65F40AEF59DdFe12a28344ed", + "interchainSecurityModule": "0x5958A0062297AE89276E6b28D31899310B4CB873", "mailbox": "0xFf06aFcaABaDDd1fb08371f9ccA15D73D51FeBD6", "merkleTreeHook": "0x84eea61D679F42D92145fA052C89900CBAccE95A", "name": "avalanche", @@ -245,7 +245,7 @@ "interchainAccountIsm": "0x223F7D3f27E6272266AE4B5B91Fd5C7A2d798cD8", "interchainAccountRouter": "0x4767D22117bBeeb295413000B620B93FD8522d53", "interchainGasPaymaster": "0xc3F23848Ed2e04C0c6d41bd7804fa8f89F940B94", - "interchainSecurityModule": "0x4EC3B7A1E41032C7b557fBb5c7FEbB255D23d41E", + "interchainSecurityModule": "0x67a2F6B3AAf57A36f78e230ef92B3C3781bEb42C", "mailbox": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", "merkleTreeHook": "0x19dc38aeae620380430C200a6E990D5Af5480117", "name": "base", @@ -316,7 +316,7 @@ "interchainAccountIsm": "0xe93f2f409ad8B5000431D234472973fe848dcBEC", "interchainAccountRouter": "0x2f4Eb04189e11Af642237Da62d163Ab714614498", "interchainGasPaymaster": "0xB3fCcD379ad66CED0c91028520C64226611A48c9", - "interchainSecurityModule": "0xdc01bf0D464460bD383B5C81d5962451204ec28b", + "interchainSecurityModule": "0x3FB5E5eCC49fbe363573622C8bE677984d25AE21", "mailbox": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", "merkleTreeHook": "0xC9B8ea6230d6687a4b13fD3C0b8f0Ec607B26465", "name": "blast", @@ -384,7 +384,7 @@ "interchainAccountIsm": "0x451dF8AB0936D85526D816f0b4dCaDD934A034A4", "interchainAccountRouter": "0x5C02157068a52cEcfc98EDb6115DE6134EcB4764", "interchainGasPaymaster": "0x62B7592C1B6D1E43f4630B8e37f4377097840C05", - "interchainSecurityModule": "0x6a32F3789Ba8880742d1fB6Cb51aed5EcfdE702C", + "interchainSecurityModule": "0xB50d23647410d02Ff0C3F1C763E501EDAbb75783", "mailbox": "0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147", "merkleTreeHook": "0x781bE492F1232E66990d83a9D3AC3Ec26f56DAfB", "name": "bob", @@ -450,7 +450,7 @@ "interchainAccountIsm": "0x9e22945bE593946618383B108CC5bce09eBA4C26", "interchainAccountRouter": "0x32A07c1B7a7fe8D4A0e44B0181873aB9d64C16c1", "interchainGasPaymaster": "0x78E25e7f84416e69b9339B0A6336EB6EFfF6b451", - "interchainSecurityModule": "0x0c461142ac54Fa4d24Fe5Ff6643A8386d2C03b29", + "interchainSecurityModule": "0x41B0dDBa97657551325f4579E93D756701d46fD6", "mailbox": "0x2971b9Aec44bE4eb673DF1B88cDB57b96eefe8a4", "merkleTreeHook": "0xFDb9Cd5f9daAA2E4474019405A328a88E7484f26", "name": "bsc", @@ -531,7 +531,7 @@ "interchainAccountIsm": "0xB732c83aeE29596E3163Da2260710eAB67Bc0B29", "interchainAccountRouter": "0x27a6cAe33378bB6A6663b382070427A01fc9cB37", "interchainGasPaymaster": "0x571f1435613381208477ac5d6974310d88AC7cB7", - "interchainSecurityModule": "0x324fedE5dba4729760514913bfD29f626F487e35", + "interchainSecurityModule": "0x89ee5969142a040653912D500d561A9F6b03Ad72", "mailbox": "0x50da3B3907A08a24fe4999F4Dcf337E8dC7954bb", "merkleTreeHook": "0x04dB778f05854f26E67e0a66b740BBbE9070D366", "name": "celo", @@ -596,7 +596,7 @@ "interchainAccountIsm": "0x4Eb82Ee35b0a1c1d776E3a3B547f9A9bA6FCC9f2", "interchainAccountRouter": "0xEF9A332Ec1fD233Bf9344A58be56ff9E104B4f60", "interchainGasPaymaster": "0x7E27456a839BFF31CA642c060a2b68414Cb6e503", - "interchainSecurityModule": "0x53D92225b49932471E6CA7bf1089203e49f5E51E", + "interchainSecurityModule": "0x3dE3032C39Df41CC9b986584A69f7839781Dd16a", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x0054D19613f20dD72721A146ED408971a2CCA9BD", "name": "cheesechain", @@ -659,7 +659,7 @@ "from": 4842212 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x3203B23145Cc21f6ba1c9AA49401fa66fBDB113E", + "interchainSecurityModule": "0xD9267b8C7D7f23D257717BC45E401b07Cd635DA2", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "cyber", @@ -726,7 +726,7 @@ "from": 23783929 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0xf0bE03F3176EA2dEA8b614C5695EF0eF795e79eF", + "interchainSecurityModule": "0x1811eabA3aaF0CCc197BE558D700C17C9F57756f", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "degenchain", @@ -839,7 +839,7 @@ "interchainAccountIsm": "0xCeafc098e5c3c7768b9229Be2FEC275862A81Abd", "interchainAccountRouter": "0xed9a722c543883FB7e07E78F3879762DE09eA7D5", "interchainGasPaymaster": "0xB30EAB08aa87138D57168D0e236850A530f49921", - "interchainSecurityModule": "0xC4F35559a1FBD1ACb7Ba88cEdC157754477FC047", + "interchainSecurityModule": "0x6c4C65E1559EEB81B1041810795405c182b021F2", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xC831271c1fB212012811a91Dd43e5926C1020563", "name": "endurance", @@ -910,7 +910,7 @@ "interchainAccountIsm": "0x292C614ED53DaaDBf971521bc2C652d1ca51cB47", "interchainAccountRouter": "0x5E532F7B610618eE73C2B462978e94CB1F7995Ce", "interchainGasPaymaster": "0x9e6B1022bE9BBF5aFd152483DAD9b88911bC8611", - "interchainSecurityModule": "0xcFF5f9d69343f4200100dbA755C794012518Ed38", + "interchainSecurityModule": "0xdcB6cB7477d19fB13C7168061FE034FE4BA255E3", "mailbox": "0xc005dc82818d67AF737725bD4bf75435d065D239", "merkleTreeHook": "0x48e6c30B97748d1e2e03bf3e9FbE3890ca5f8CCA", "name": "ethereum", @@ -982,7 +982,7 @@ "interchainAccountIsm": "0x7C012DCA02C42cfA3Fd7Da3B0ED7234B52AE68eF", "interchainAccountRouter": "0xbed53B5C5BCE9433f25A2A702e6df13E22d84Ae9", "interchainGasPaymaster": "0x2Fca7f6eC3d4A0408900f2BB30004d4616eE985E", - "interchainSecurityModule": "0x7D24f9d82BCC10ab4A02F48D2Aae1AD00Ea47dC3", + "interchainSecurityModule": "0xC15c21430Dfa1e0184FE57BdD6bf31d9607D6705", "mailbox": "0x2f9DB5616fa3fAd1aB06cB2C906830BA63d135e3", "merkleTreeHook": "0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147", "name": "fraxtal", @@ -1050,7 +1050,7 @@ "interchainAccountIsm": "0x9629c28990F11c31735765A6FD59E1E1bC197DbD", "interchainAccountRouter": "0x2351FBe24C1212F253b7a300ff0cBCFd97952a19", "interchainGasPaymaster": "0xFB9e40D811Cea562cc8a322b029eF2BDcC3ef6ed", - "interchainSecurityModule": "0xff36B9B99338CAe60fd794741B5e02a3D92254C2", + "interchainSecurityModule": "0xd097D848a044F6F044ae63f6B8d35B70A7334997", "mailbox": "0x3071D4DA6020C956Fe15Bfd0a9Ca8D4574f16696", "merkleTreeHook": "0xfBc08389224d23b79cb21cDc16c5d42F0ad0F57f", "name": "fusemainnet", @@ -1124,7 +1124,7 @@ "interchainAccountIsm": "0x07E2062A1bC66a2C1d05cb5C3870a4AF86e0056E", "interchainAccountRouter": "0xBE70Ab882D1F7E37e04a70CDd9Ec23b37a234064", "interchainGasPaymaster": "0xDd260B99d302f0A3fF885728c086f729c06f227f", - "interchainSecurityModule": "0x8fC6e2011050ccC99B7f8460C23Cc85402D78e85", + "interchainSecurityModule": "0x4e3D805431E5658Ba753D04BBbD50D9930CaE38F", "mailbox": "0xaD09d78f4c6b9dA2Ae82b1D34107802d380Bb74f", "merkleTreeHook": "0x2684C6F89E901987E1FdB7649dC5Be0c57C61645", "name": "gnosis", @@ -1195,7 +1195,7 @@ "interchainAccountIsm": "0x708E002637792FDC031E6B62f23DD60014AC976a", "interchainAccountRouter": "0xfB8cea1c7F45608Da30655b50bbF355D123A4358", "interchainGasPaymaster": "0x19dc38aeae620380430C200a6E990D5Af5480117", - "interchainSecurityModule": "0xaee1F6685b0495cc2bFa4F5E5c096466fC9873b8", + "interchainSecurityModule": "0x65b590874726F780e11Aee7E68932c196ac5Cfef", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x0972954923a1e2b2aAb04Fa0c4a0797e5989Cd65", "name": "inevm", @@ -1323,7 +1323,7 @@ "from": 14616307 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x66c540f566a52F46931FaBbcED90d7d669da7303", + "interchainSecurityModule": "0xF2270f4b8a3274924c3e048F25c92fB7A5B091D4", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "kroma", @@ -1396,7 +1396,7 @@ "interchainAccountIsm": "0xdcA646C56E7768DD11654956adE24bfFf9Ba4893", "interchainAccountRouter": "0xD59dA396F162Ed93a41252Cebb8d5DD4F093238C", "interchainGasPaymaster": "0x8105a095368f1a184CceA86cCe21318B5Ee5BE28", - "interchainSecurityModule": "0x93c9fEeC4Dd4935a65029A4BF03fB6df1130FBB9", + "interchainSecurityModule": "0x1a669B1f14C6C62B2d56f1eBb5C016904E17F831", "mailbox": "0x02d16BC51af6BfD153d67CA61754cF912E82C4d9", "merkleTreeHook": "0xC077A0Cc408173349b1c9870C667B40FE3C01dd7", "name": "linea", @@ -1467,7 +1467,7 @@ "from": 4195553 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0xDbe54a99c9550BF6EB7F510b62cfe2d5E74F072e", + "interchainSecurityModule": "0x0c3b196dbA07dfaCcb5Ea4D2809712A2114EC37b", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "lisk", @@ -1531,7 +1531,7 @@ "from": 3088760 }, "interchainGasPaymaster": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", - "interchainSecurityModule": "0x5997a574AbfED0506a5319b669b5f328b1C391A3", + "interchainSecurityModule": "0x1Df3B3fc76F1E76Ce2D87a921F4436D888E79038", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x062200d92dF6bB7bA89Ce4D6800110450f94784e", "name": "lukso", @@ -1605,7 +1605,7 @@ "interchainAccountIsm": "0x8Ea50255C282F89d1A14ad3F159437EE5EF0507f", "interchainAccountRouter": "0x693A4cE39d99e46B04cb562329e3F0141cA17331", "interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4", - "interchainSecurityModule": "0xF9fecfeAA2A20744eAb207f7c01CA245C49Bab9e", + "interchainSecurityModule": "0x22BdaC15c02353D331C5787858117F1aC1183831", "isTestnet": false, "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112", @@ -1675,7 +1675,7 @@ "interchainAccountIsm": "0xe039DA3A0071BEd087A12660D7b03cf669c7776E", "interchainAccountRouter": "0x45285463352c53a481e882cD5E2AF2E25BBdAd0D", "interchainGasPaymaster": "0x8105a095368f1a184CceA86cCe21318B5Ee5BE28", - "interchainSecurityModule": "0x244BbF1B35C67De0367E4A02C63bFD4269976A92", + "interchainSecurityModule": "0x3bb99404072f895B0F10bB27855Ede36E15c43E2", "mailbox": "0x398633D19f4371e1DB5a8EFE90468eB70B1176AA", "merkleTreeHook": "0x5332D1AC0A626D265298c14ff681c0A8D28dB86d", "name": "mantle", @@ -1737,7 +1737,7 @@ "from": 13523607 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x3C5672Af5874D2ea59B73edF4489Db73bCE743D0", + "interchainSecurityModule": "0x1f2c988EE1b80434d89B52A16585595A558fAa48", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "merlin", @@ -1804,7 +1804,7 @@ "from": 17966274 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0xb54D5F3905422BcD7f8d4627ad60c9F3196dEF66", + "interchainSecurityModule": "0x90b5E844395e3539CE3Ab008C50E1D1c9648F632", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "metis", @@ -1869,7 +1869,7 @@ "from": 3752032 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0xda17325c9f34cedc06728707eD95eC79d26386a7", + "interchainSecurityModule": "0x26918172f13F5E481564fb3Ed14b2cA4Dd4b8AC7", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "mint", @@ -1936,7 +1936,7 @@ "interchainAccountIsm": "0xa377b8269e0A47cdd2fD5AAeAe860b45623c6d82", "interchainAccountRouter": "0x6e1B9f776bd415d7cC3C7458A5f0d801016918f8", "interchainGasPaymaster": "0x931dFCc8c1141D6F532FD023bd87DAe0080c835d", - "interchainSecurityModule": "0xB484705Abc1F351b94B63C93Af83B6d108351137", + "interchainSecurityModule": "0x2151dBB20aaa63E644276bb59A024a81f4b9BC9A", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xE2ee936bEa8e42671c400aC96dE198E06F2bA2A6", "name": "mode", @@ -2004,7 +2004,7 @@ "interchainAccountIsm": "0x79b3730CE3685f65802aF1771319992bA960EB9D", "interchainAccountRouter": "0xc4482f66191754a8629D35289043C4EB0285F10E", "interchainGasPaymaster": "0x14760E32C0746094cF14D97124865BC7F0F7368F", - "interchainSecurityModule": "0xFc907245E3c91cFE8aFFDcCb01ef7053a76C7eDb", + "interchainSecurityModule": "0x194A56Bf67bF4821290A0F3C56573eCed842d8D2", "mailbox": "0x094d03E751f49908080EFf000Dd6FD177fd44CC3", "merkleTreeHook": "0x87403b85f6f316e7ba91ba1fa6C3Fb7dD4095547", "name": "moonbeam", @@ -2146,7 +2146,7 @@ "interchainAccountIsm": "0x2c46BF14641d00549ECa4779BF5CBf91602C1DEd", "interchainAccountRouter": "0x03D6cC17d45E9EA27ED757A8214d1F07F7D901aD", "interchainGasPaymaster": "0xD8A76C4D91fCbB7Cc8eA795DFDF870E48368995C", - "interchainSecurityModule": "0xe12A4A59080320aBC854FE647761D83D00883807", + "interchainSecurityModule": "0x8A04d9237BE52200F7363cB82BF099990d4390b1", "mailbox": "0xd4C1905BB1D26BC93DAC913e13CaCC278CdCC80D", "merkleTreeHook": "0x68eE9bec9B4dbB61f69D9D293Ae26a5AACb2e28f", "name": "optimism", @@ -2281,7 +2281,7 @@ "interchainAccountIsm": "0xBAC4529cdfE7CCe9E858BF706e41F8Ed096C1BAd", "interchainAccountRouter": "0xF163949AD9F88977ebF649D0461398Ca752E64B9", "interchainGasPaymaster": "0x0071740Bf129b05C4684abfbBeD248D80971cce2", - "interchainSecurityModule": "0xD94CaFdBe8c9C2C05fD5992B087bc30F237001D2", + "interchainSecurityModule": "0x7dFd4006e9AB433d3f999830F611B2188631B33f", "mailbox": "0x5d934f4e2f797775e53561bB72aca21ba36B96BB", "merkleTreeHook": "0x73FbD25c3e817DC4B4Cd9d00eff6D83dcde2DfF6", "name": "polygon", @@ -2358,7 +2358,7 @@ "interchainAccountIsm": "0xc1198e241DAe48BF5AEDE5DCE49Fe4A6064cF7a7", "interchainAccountRouter": "0x20a0A32a110362920597F72974E1E0d7e25cA20a", "interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4", - "interchainSecurityModule": "0xAbD84C24bC17b3733D094Cf911561F3c088bA8E0", + "interchainSecurityModule": "0x3e1D7F5c1208A0eb48bc30717F9Ca2614257bFF5", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112", "name": "polygonzkevm", @@ -2426,7 +2426,7 @@ "from": 32018468 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x1C516BB0B775B2EDF3fA26beb547f2634F23bB11", + "interchainSecurityModule": "0xC453a7f24540B90aB43681A5Bc07c9E03acC1a48", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "proofofplay", @@ -2490,7 +2490,7 @@ "from": 363159 }, "interchainGasPaymaster": "0x3071D4DA6020C956Fe15Bfd0a9Ca8D4574f16696", - "interchainSecurityModule": "0x342766bc19A0bcd47d4269D1804AF4Ad27D4372C", + "interchainSecurityModule": "0xc43577973b012058Fb96dbF0A4b3246019b54016", "mailbox": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", "merkleTreeHook": "0x55E4F0bc6b7Bb493D50839A8592e7ad8d5e93cf7", "name": "real", @@ -2557,7 +2557,7 @@ "interchainAccountIsm": "0x5DA60220C5dDe35b7aE91c042ff5979047FA0785", "interchainAccountRouter": "0x7a4d31a686A36285d68e14EDD53631417eB19603", "interchainGasPaymaster": "0x2Fa570E83009eaEef3a1cbd496a9a30F05266634", - "interchainSecurityModule": "0x020f0b3691383B662Fb0D5799D5516652eFE5124", + "interchainSecurityModule": "0x32A4A7aB028eb349b20D6370e8B56ba82CbB45c7", "mailbox": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", "merkleTreeHook": "0x8F1E22d309baa69D398a03cc88E9b46037e988AA", "name": "redstone", @@ -2619,7 +2619,7 @@ "from": 937117 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x798BC62c7E991c908A7c18131324Eb413ac61cc6", + "interchainSecurityModule": "0x72ee68825c1Ad788E4F2414972f11CE92d141Fc1", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "sanko", @@ -2687,7 +2687,7 @@ "interchainAccountIsm": "0x32af5Df81fEd5E26119F6640FBB13f3d63a94CDe", "interchainAccountRouter": "0x0B48a744698ba8dFa514742dFEB6728f52fD66f7", "interchainGasPaymaster": "0xBF12ef4B9f307463D3FB59c3604F294dDCe287E2", - "interchainSecurityModule": "0x35b219Ee7824b0DB8d0bE01a97Cb88cFC4d8aB22", + "interchainSecurityModule": "0x2811146829429c551285889134C0014c35b38c24", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x6119E37Bd66406A1Db74920aC79C15fB8411Ba76", "name": "scroll", @@ -2755,7 +2755,7 @@ "interchainAccountIsm": "0xf35dc7B9eE4Ebf0cd3546Bd6EE3b403dE2b9F5D6", "interchainAccountRouter": "0xBcaedE97a98573A88242B3b0CB0A255F3f90d4d5", "interchainGasPaymaster": "0xFC62DeF1f08793aBf0E67f69257c6be258194F72", - "interchainSecurityModule": "0x7329fEFd101560d0e56F54768dB5c7f095148a9b", + "interchainSecurityModule": "0xBD1AF09F9dEC9E3b7a63C9c0B65C514E035238ff", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xca1b69fA4c4a7c7fD839bC50867c589592bcfe49", "name": "sei", @@ -2870,7 +2870,7 @@ "interchainAccountIsm": "0xAE557e108b3336130370aC74836f1356B4b30Cf2", "interchainAccountRouter": "0x1F8CF09F060A2AE962c0Bb1F92e209a1E7b0E10B", "interchainGasPaymaster": "0x273Bc6b01D9E88c064b6E5e409BdF998246AEF42", - "interchainSecurityModule": "0x38ab08a7cb19757Ba6dc870277780519380DED32", + "interchainSecurityModule": "0x21008aF197f3Ae07fA485d0b34A3b4Dd26FC7633", "mailbox": "0x28EFBCadA00A7ed6772b3666F3898d276e88CAe3", "merkleTreeHook": "0x6A55822cf11f9fcBc4c75BC2638AfE8Eb942cAdd", "name": "taiko", @@ -2932,7 +2932,7 @@ "from": 1678063 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x798BC62c7E991c908A7c18131324Eb413ac61cc6", + "interchainSecurityModule": "0xC453a7f24540B90aB43681A5Bc07c9E03acC1a48", "isTestnet": false, "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", @@ -3000,7 +3000,7 @@ "interchainAccountIsm": "0x551BbEc45FD665a8C95ca8731CbC32b7653Bc59B", "interchainAccountRouter": "0xc11f8Cf2343d3788405582F65B8af6A4F7a6FfC8", "interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4", - "interchainSecurityModule": "0x8c5D31F910a08E8ae72a1Ea28c77609be3774e29", + "interchainSecurityModule": "0xDbfc19C0F633126a8e276ec884297B49CF5E13E2", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112", "name": "viction", @@ -3068,7 +3068,7 @@ "interchainAccountIsm": "0xCB9f90EE5d83Ea52ABd922BD70898f0155D54798", "interchainAccountRouter": "0x473884010F0C1742DA8Ad01E7E295624B931076b", "interchainGasPaymaster": "0x7E27456a839BFF31CA642c060a2b68414Cb6e503", - "interchainSecurityModule": "0x586bB821b040491EA7822317cA2316c3B217F9AA", + "interchainSecurityModule": "0xFFd81050Be09ee3D565C3a930dA0692e1D9d634F", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x0054D19613f20dD72721A146ED408971a2CCA9BD", "name": "worldchain", @@ -3130,7 +3130,7 @@ "from": 24395308 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0xb26302055D46090B299b7c01041f246FEEdcE559", + "interchainSecurityModule": "0xE18ED85F5fb475B3BB24972c0EdeD1ea7642EB8b", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "xai", @@ -3198,7 +3198,7 @@ "interchainAccountIsm": "0x29B37088724B745C0ABcE591449Cf042772160C2", "interchainAccountRouter": "0x03cF708E42C89623bd83B281A56935cB562b9258", "interchainGasPaymaster": "0x7E27456a839BFF31CA642c060a2b68414Cb6e503", - "interchainSecurityModule": "0xae69dcB077234da706C6228756Ffb13B8B332970", + "interchainSecurityModule": "0xB80876e19Ce1beF4Db7F52B07155C9d57A3c5135", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x0054D19613f20dD72721A146ED408971a2CCA9BD", "name": "xlayer", @@ -3266,7 +3266,7 @@ "interchainAccountIsm": "0x2b6d3F7d28B5EC8C3C028fBCAdcf774D9709Dd29", "interchainAccountRouter": "0x3AdCBc94ab8C48EC52D06dc65Bb787fD1981E3d5", "interchainGasPaymaster": "0x931dFCc8c1141D6F532FD023bd87DAe0080c835d", - "interchainSecurityModule": "0xFa772A78594a65458B7A6934DA1fA83930B0F51b", + "interchainSecurityModule": "0x75834EC3d39e0D1307715355dd7Dd2b2E8f3fC0A", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xE2ee936bEa8e42671c400aC96dE198E06F2bA2A6", "name": "zetachain", @@ -3332,7 +3332,7 @@ "from": 1511458 }, "interchainGasPaymaster": "0x03cF708E42C89623bd83B281A56935cB562b9258", - "interchainSecurityModule": "0x41792A9E3FD2883F5bD6fd38a209483Fc21082f8", + "interchainSecurityModule": "0x52E661244b9c2123EeF1D4cb85D489bba9422D73", "mailbox": "0xc2FbB9411186AB3b1a6AFCCA702D1a80B48b197c", "merkleTreeHook": "0x4C97D35c668EE5194a13c8DE8Afc18cce40C9F28", "name": "zircuit", @@ -3405,7 +3405,7 @@ "interchainAccountIsm": "0xb2674E213019972f937CCFc5e23BF963D915809e", "interchainAccountRouter": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", "interchainGasPaymaster": "0x18B0688990720103dB63559a3563f7E8d0f63EDb", - "interchainSecurityModule": "0xD1Ce8d18B61AfE53D63ba7DC359F0bD3eA915235", + "interchainSecurityModule": "0xc5354e5540D9Ae61Ee7ee7D177F4d9B58A1883d1", "mailbox": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "merkleTreeHook": "0x886BB0f329781b98f98FDeb1ce7a8957F2d43B9F", "name": "zoramainnet", @@ -3476,7 +3476,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0x5d315fD2F9ce3F538F76c2f6b9516495B0a1bCEb", + "interchainSecurityModule": "0x7d38C592002bB0994fB5Dc2F557AF32a1aF94605", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -3543,7 +3543,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0x24326Ebe336Fa9d48615697B39845B6B2F098174", + "interchainSecurityModule": "0x203Ac1908BCd2721BbC36B1E7889be3C3d19858E", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -3613,7 +3613,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0x4bD8927F13cCCe50B2bB3603B5Eaf484A56f1638", + "interchainSecurityModule": "0xf83ef66fa36643516b82Af671D43C914B7ea7582", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -3689,7 +3689,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0xF53b96635A3e7c57fe481c94efe0F658990E5040", + "interchainSecurityModule": "0x6912fb43dE8878bAee4CF38Dd4982c4eb42F81EF", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -3753,7 +3753,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0x071aeFd19DD91AB9E63ED3BDa36d0b7097A7459f", + "interchainSecurityModule": "0xc324703B7bDD8640B85d6be73888D9673DB5736e", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -3826,7 +3826,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0x2769f9B495692BC6135BA71255EeD04A995e74E2", + "interchainSecurityModule": "0xEED58BC374386596a848856aDCD07f597B70e2d9", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -3894,7 +3894,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0xB2fB0a0b676B75cf6Af1ab517023f88Ea90EDd2E", + "interchainSecurityModule": "0xC444cA862A91A87fa3DCdbcf1747E4A8B27eAD73", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -3957,7 +3957,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0x604F761705Cf5D1682dD17356b84d96CD41B0734", + "interchainSecurityModule": "0x8a2320fD0B7c75DE3Ad99Faf1F01930d6a6D166a", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -4027,7 +4027,7 @@ "interchainAccountIsm": "0xcd9D3744512F07AE844c40E27912092d7c503565", "interchainAccountRouter": "0x92cdbF0Ccdf8E93467FA858fb986fa650A02f2A8", "interchainGasPaymaster": "0xb58257cc81E47EC72fD38aE16297048de23163b4", - "interchainSecurityModule": "0x80D7DDC0b7d8dae6F9CcB0D78558291118815349", + "interchainSecurityModule": "0x1f586E16bfB622123E9d166bAd2F3CB1F87Dc117", "mailbox": "0x7f50C5776722630a0024fAE05fDe8b47571D7B39", "merkleTreeHook": "0xCC3D1659D50461d27a2F025dDb2c9B06B584B7e1", "pausableHook": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", @@ -4087,7 +4087,7 @@ "interchainAccountIsm": "0xc23BaF5Eb5848D19701BbE7f139645e6bd58a319", "interchainAccountRouter": "0x7c58Cadcc2b60ACF794eE1843488d6f5703f76BE", "interchainGasPaymaster": "0xb4fc9B5fD57499Ef6FfF3995728a55F7A618ef86", - "interchainSecurityModule": "0x64bdb8Bfb9DbAc2FD2fD28a9B37605CE73D4410f", + "interchainSecurityModule": "0x80140b82E5C4c6Ee0Fe755De0A59aEb0fBBFef8B", "mailbox": "0xb129828B9EDa48192D0B2db35D0E40dCF51B3594", "merkleTreeHook": "0x3E969bA938E6A993eeCD6F65b0dd8712B07dFe59", "pausableHook": "0x6Fb36672365C7c797028C400A61c58c0ECc53cD2", @@ -4218,7 +4218,7 @@ "interchainAccountIsm": "0x6119B76720CcfeB3D256EC1b91218EEfFD6756E1", "interchainAccountRouter": "0x9eaaC366BFD70430cFee6E70265fefFf1CfC9E47", "interchainGasPaymaster": "0x18B0688990720103dB63559a3563f7E8d0f63EDb", - "interchainSecurityModule": "0x9386BadA88dF2b034614Dcf3CC82aB0dC6C63849", + "interchainSecurityModule": "0xab325b387731928dADf80E8E5501B474f85e769C", "mailbox": "0x7f50C5776722630a0024fAE05fDe8b47571D7B39", "merkleTreeHook": "0x886BB0f329781b98f98FDeb1ce7a8957F2d43B9F", "pausableHook": "0x2F619Ac5122689180AeBB930ADccdae215d538a9", @@ -4282,7 +4282,7 @@ "interchainAccountIsm": "0xFB9e40D811Cea562cc8a322b029eF2BDcC3ef6ed", "interchainAccountRouter": "0xeE8C0E1EeBfFCC451a013336386eA53E42a44451", "interchainGasPaymaster": "0x145566181A18E23bB6a8A3eC6D87765542A7F754", - "interchainSecurityModule": "0xf10dB7FBC4B5d79d217881aB7FeC71A4a33449af", + "interchainSecurityModule": "0x01F399cD43B492D536a925CF52BEAB620019a479", "mailbox": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", "merkleTreeHook": "0x6963480b05EB58f4d624B014ab92e9aD4d21df6D", "pausableHook": "0xD0dca420feFda68537695A8D887080eeF4030AF7", @@ -4343,7 +4343,7 @@ "interchainAccountIsm": "0xFB9e40D811Cea562cc8a322b029eF2BDcC3ef6ed", "interchainAccountRouter": "0xeE8C0E1EeBfFCC451a013336386eA53E42a44451", "interchainGasPaymaster": "0x145566181A18E23bB6a8A3eC6D87765542A7F754", - "interchainSecurityModule": "0xf48D165f545221766DbEB9D92b1187DD1322170b", + "interchainSecurityModule": "0x5bc300Fa6c5761019425c2919F73C7df7A5cb6aA", "mailbox": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", "merkleTreeHook": "0x6963480b05EB58f4d624B014ab92e9aD4d21df6D", "pausableHook": "0xD0dca420feFda68537695A8D887080eeF4030AF7", @@ -4422,7 +4422,7 @@ "interchainAccountIsm": "0xFB9e40D811Cea562cc8a322b029eF2BDcC3ef6ed", "interchainAccountRouter": "0xeE8C0E1EeBfFCC451a013336386eA53E42a44451", "interchainGasPaymaster": "0x145566181A18E23bB6a8A3eC6D87765542A7F754", - "interchainSecurityModule": "0x78E7691458EA3Ca38a56fD4eFBE54D30dDDa72Ac", + "interchainSecurityModule": "0x77F728DAF925089cF9536F89C32aB0abAa2e294D", "mailbox": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", "merkleTreeHook": "0x6963480b05EB58f4d624B014ab92e9aD4d21df6D", "pausableHook": "0xD0dca420feFda68537695A8D887080eeF4030AF7", @@ -4489,7 +4489,7 @@ "interchainAccountIsm": "0x783EC5e105234a570eB90f314284E5dBe53bdd90", "interchainAccountRouter": "0xc5D6aCaafBCcEC6D7fD7d92F4509befce641c563", "interchainGasPaymaster": "0xf3dFf6747E7FC74B431C943961054B7BF6309d8a", - "interchainSecurityModule": "0x3Eb3273A92B6b1653f64CD945506dd67F478C9bd", + "interchainSecurityModule": "0x8ca77BeAC75B19052a49Ae6Ef743fe02EC56B41f", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x5090dF2FBDa7127c7aDa41f60B79F5c55D380Dd8", "pausableHook": "0x886BB0f329781b98f98FDeb1ce7a8957F2d43B9F", @@ -4560,7 +4560,7 @@ "interchainAccountIsm": "0xFB9e40D811Cea562cc8a322b029eF2BDcC3ef6ed", "interchainAccountRouter": "0xeE8C0E1EeBfFCC451a013336386eA53E42a44451", "interchainGasPaymaster": "0x145566181A18E23bB6a8A3eC6D87765542A7F754", - "interchainSecurityModule": "0x3428158e7D0D9AD25653ea390EE9a9aA43628a48", + "interchainSecurityModule": "0x643dC25467048e2e835A44561D913A98f90bD962", "mailbox": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", "merkleTreeHook": "0x6963480b05EB58f4d624B014ab92e9aD4d21df6D", "pausableHook": "0xD0dca420feFda68537695A8D887080eeF4030AF7", @@ -4625,7 +4625,7 @@ "interchainAccountIsm": "0xFB9e40D811Cea562cc8a322b029eF2BDcC3ef6ed", "interchainAccountRouter": "0xeE8C0E1EeBfFCC451a013336386eA53E42a44451", "interchainGasPaymaster": "0x145566181A18E23bB6a8A3eC6D87765542A7F754", - "interchainSecurityModule": "0xFeAE4cdACEc5E2aC50A0357eed6c13A5d76c88cD", + "interchainSecurityModule": "0xeAe69924A25c0CC57Ff771689fb05d53a7FD29B1", "mailbox": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", "merkleTreeHook": "0x6963480b05EB58f4d624B014ab92e9aD4d21df6D", "pausableHook": "0xD0dca420feFda68537695A8D887080eeF4030AF7", @@ -4689,7 +4689,7 @@ "interchainAccountIsm": "0xFB9e40D811Cea562cc8a322b029eF2BDcC3ef6ed", "interchainAccountRouter": "0xeE8C0E1EeBfFCC451a013336386eA53E42a44451", "interchainGasPaymaster": "0x145566181A18E23bB6a8A3eC6D87765542A7F754", - "interchainSecurityModule": "0x18545b46Df0A6cd81FA05C663FAc4ee26a750ad0", + "interchainSecurityModule": "0x790e7dDEf110E6dF8aA51f713400f6ec0e6758b6", "mailbox": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", "merkleTreeHook": "0x6963480b05EB58f4d624B014ab92e9aD4d21df6D", "pausableHook": "0xD0dca420feFda68537695A8D887080eeF4030AF7", @@ -4756,7 +4756,7 @@ "interchainAccountIsm": "0xFB9e40D811Cea562cc8a322b029eF2BDcC3ef6ed", "interchainAccountRouter": "0xeE8C0E1EeBfFCC451a013336386eA53E42a44451", "interchainGasPaymaster": "0x145566181A18E23bB6a8A3eC6D87765542A7F754", - "interchainSecurityModule": "0xc3FFEd2a525a487cfe805193c463CB7BdD704CE9", + "interchainSecurityModule": "0x57d57F50065F7390Afc13e8917562061998CfaB2", "mailbox": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", "merkleTreeHook": "0x6963480b05EB58f4d624B014ab92e9aD4d21df6D", "pausableHook": "0xD0dca420feFda68537695A8D887080eeF4030AF7", @@ -4820,7 +4820,7 @@ "interchainAccountIsm": "0xFB9e40D811Cea562cc8a322b029eF2BDcC3ef6ed", "interchainAccountRouter": "0xeE8C0E1EeBfFCC451a013336386eA53E42a44451", "interchainGasPaymaster": "0x145566181A18E23bB6a8A3eC6D87765542A7F754", - "interchainSecurityModule": "0xb5813484CD3027FCb4B908a3bD2D9c118423a14B", + "interchainSecurityModule": "0x01F399cD43B492D536a925CF52BEAB620019a479", "mailbox": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", "merkleTreeHook": "0x6963480b05EB58f4d624B014ab92e9aD4d21df6D", "pausableHook": "0xD0dca420feFda68537695A8D887080eeF4030AF7", @@ -5006,7 +5006,7 @@ "interchainAccountIsm": "0x4d264424905535E97396Db83bd553D0d73A4EF9d", "interchainAccountRouter": "0x26A29486480BD74f9B830a9B8dB33cb43C40f496", "interchainGasPaymaster": "0x9c2214467Daf9e2e1F45b36d08ce0b9C65BFeA88", - "interchainSecurityModule": "0x5e7Ff7Cb6C828DFda4Ce8934A6f8F4C7B33E2217", + "interchainSecurityModule": "0xd2bFe972583b513302C0d0BD4Ef0Ac146428776C", "mailbox": "0x5bdADEAD721Eb4C4038fF7c989E3C7BbBA302435", "merkleTreeHook": "0x2684C6F89E901987E1FdB7649dC5Be0c57C61645", "pausableHook": "0xC8E323036AAFB4B4201e7B640E79C4Db285A3FC8", @@ -5070,7 +5070,7 @@ "interchainAccountIsm": "0x545E289B88c6d97b74eC0B96e308cae46Bf5f832", "interchainAccountRouter": "0x4ef363Da5bb09CC6aeA16973786963d0C8820778", "interchainGasPaymaster": "0x561BcA8D862536CD9C88f332C1A1Da0fC8F96e40", - "interchainSecurityModule": "0x14bF825eE8FaD180d379280963FBB66F6c256a6E", + "interchainSecurityModule": "0x8Ef057A24ad9E3B5e86ba9015e63E1FDf16E5B83", "mailbox": "0x248aDe14C0489E20C9a7Fea5F86DBfC3702208eF", "merkleTreeHook": "0x9c2214467Daf9e2e1F45b36d08ce0b9C65BFeA88", "pausableHook": "0x2f536FB7a37bd817Af644072a904Ddc02Dae429f", @@ -5137,7 +5137,7 @@ "interchainAccountIsm": "0x60bB6D060393D3C206719A7bD61844cC82891cfB", "interchainAccountRouter": "0x9534122Aae7978dB8f5f10dF4432233c53e820A1", "interchainGasPaymaster": "0x61374178e45F65fF9D6252d017Cd580FC60B7654", - "interchainSecurityModule": "0x969179b1330226bC861aE726Aa1D2Bba03cc5576", + "interchainSecurityModule": "0x7A36F64A6CbFd2e6fA82D9616a8557731B283856", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0xEe08043cf22c80b27BF24d19999231dF4a3fC256", "pausableHook": "0x145566181A18E23bB6a8A3eC6D87765542A7F754", @@ -5202,7 +5202,7 @@ "interchainAccountIsm": "0xcdc31BA959DE8C035A03167ebAE1961208CDf172", "interchainAccountRouter": "0x349831a180eE4265008C5FFB9465Ff97c1CF0028", "interchainGasPaymaster": "0x6AA10748a036a49Cb290C0e12B77319b76792D5E", - "interchainSecurityModule": "0x1Be73077A341D517AcAa2516c0BE356b6444134B", + "interchainSecurityModule": "0xd03eb8402F1849B9C3317f0ac12Ef8cbB0288ebd", "mailbox": "0xd9Cc2e652A162bb93173d1c44d46cd2c0bbDA59D", "merkleTreeHook": "0x2783D98CC073dbcDa90241C804d16982D3d75821", "pausableHook": "0x3bb2D0a828f7dD91bA786091F421f6d7cF376445", @@ -5272,7 +5272,7 @@ "interchainAccountIsm": "0x545E289B88c6d97b74eC0B96e308cae46Bf5f832", "interchainAccountRouter": "0x4ef363Da5bb09CC6aeA16973786963d0C8820778", "interchainGasPaymaster": "0xc6835e52C1b976F1ebC71Bc8919738E02849FdA9", - "interchainSecurityModule": "0x8021F7b95A9354619c22a3bed3a6549d07Ac34B4", + "interchainSecurityModule": "0x666519868126919DD68C24E684D2059cc8991833", "mailbox": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", "merkleTreeHook": "0xdAa1B65547fB969c9ff5678956AB2FF9771B883D", "pausableHook": "0xA0e0829DA397CcF55d5B779C31728f21Cb8219DF", @@ -5384,7 +5384,7 @@ "interchainAccountIsm": "0x8c794a781327b819416E7b67908f1D22397f1E67", "interchainAccountRouter": "0x16625230dD6cFe1B2bec3eCaEc7d43bA3A902CD6", "interchainGasPaymaster": "0x2b79328DA089E89A9E9c08732b56dd31F01011Db", - "interchainSecurityModule": "0x14663E42b9b66F79103c5824230CC79a26E24BfD", + "interchainSecurityModule": "0x6819a646e9Fc12eB98848038314728082F539617", "mailbox": "0x730f8a4128Fa8c53C777B62Baa1abeF94cAd34a9", "merkleTreeHook": "0x9c64f327F0140DeBd430aab3E2F1d6cbcA921227", "pausableHook": "0x2684C6F89E901987E1FdB7649dC5Be0c57C61645", @@ -5448,7 +5448,7 @@ "interchainAccountIsm": "0xE67Dc24970B482579923551Ede52BD35a2858989", "interchainAccountRouter": "0xDDE46032Baf4da13fDD79BF9dfbaA2749615C409", "interchainGasPaymaster": "0x2f536FB7a37bd817Af644072a904Ddc02Dae429f", - "interchainSecurityModule": "0x846856eeD85eBc6C5FBf94F17e0c9cC76dF6c86E", + "interchainSecurityModule": "0xfBB6D85fafFE439d470652fBE1F86f782807403f", "mailbox": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", "merkleTreeHook": "0xC8E323036AAFB4B4201e7B640E79C4Db285A3FC8", "pausableHook": "0xdAa1B65547fB969c9ff5678956AB2FF9771B883D", @@ -5512,7 +5512,7 @@ "interchainAccountIsm": "0x20a0A32a110362920597F72974E1E0d7e25cA20a", "interchainAccountRouter": "0x5b3EeADcc0E2d4284eA6816e2E503c24d30a9E54", "interchainGasPaymaster": "0x282629Af1A2f9b8e2c5Cbc54C35C7989f21950c6", - "interchainSecurityModule": "0xa1080587BA36750d90746A147Ee79F8589Ac0099", + "interchainSecurityModule": "0xea0A028775a07EF27CfD1363Ce7463b31ad57296", "mailbox": "0x5C02157068a52cEcfc98EDb6115DE6134EcB4764", "merkleTreeHook": "0xf147bBD944C610F86DaE6C7668497D22932C1E4A", "pausableHook": "0x872Bd98057931c8809927c6dE2ef39738a80Eb0C", @@ -5579,7 +5579,7 @@ "interchainAccountIsm": "0xf40eE9FF75Fa34910b7C4C8d68d4850B3bD184D3", "interchainAccountRouter": "0xf6fB78dc009C1A4286c0E7d90C10c9E8906a62Ea", "interchainGasPaymaster": "0xDDE46032Baf4da13fDD79BF9dfbaA2749615C409", - "interchainSecurityModule": "0x008FED472F8d4634C5701B3bEc2380C30064BEb5", + "interchainSecurityModule": "0x36Fe416e4415C93352bD33DC77B83A17850d581e", "mailbox": "0x65dCf8F6b3f6a0ECEdf3d0bdCB036AEa47A1d615", "merkleTreeHook": "0x8c794a781327b819416E7b67908f1D22397f1E67", "pausableHook": "0x4d264424905535E97396Db83bd553D0d73A4EF9d", @@ -5646,7 +5646,7 @@ "interchainAccountIsm": "0xd9Cc2e652A162bb93173d1c44d46cd2c0bbDA59D", "interchainAccountRouter": "0x7279B1e11142078b8dC9e69620200f4C84FB8aaa", "interchainGasPaymaster": "0x5ae1ECA065aC8ee92Ce98E584fc3CE43070020e7", - "interchainSecurityModule": "0x54BF1a8c5584E844a6b4F9F98e2770A415921f66", + "interchainSecurityModule": "0xe93396575310fbfd1815505dA60963f874cb9CC8", "mailbox": "0x96D51cc3f7500d501bAeB1A2a62BB96fa03532F8", "merkleTreeHook": "0x086c3947F71BE98A0bDf4AB7239955e7542b0CbA", "pausableHook": "0x9C6e8d989ea7F212e679191BEb44139d83ac927a", @@ -5716,7 +5716,7 @@ "interchainAccountIsm": "0x8a733038eF4BbC314eE0F7595257D8d3799B6aA9", "interchainAccountRouter": "0xCE8260c1b5cF2fAD15bb4B6542716b050Fdf35c9", "interchainGasPaymaster": "0xa1c3884EbE24Cccb120B2E98a55f85140563aa4C", - "interchainSecurityModule": "0xBCc50A4e5690251aFF052b415251DfBc634002C7", + "interchainSecurityModule": "0x22CD0d9ad151e694cE92Ce07cB921918ad94d87e", "mailbox": "0x5e8a0fCc0D1DF583322943e01F02cB243e5300f6", "merkleTreeHook": "0x2f536FB7a37bd817Af644072a904Ddc02Dae429f", "pausableHook": "0xc6835e52C1b976F1ebC71Bc8919738E02849FdA9", @@ -5777,7 +5777,7 @@ "interchainAccountIsm": "0x25EAC2007b0D40E3f0AF112FD346412321038719", "interchainAccountRouter": "0xfF26696DcDb6BbFD27e959b847D4f1399D5BcF64", "interchainGasPaymaster": "0x9534122Aae7978dB8f5f10dF4432233c53e820A1", - "interchainSecurityModule": "0x0cF15af1385776F0f853C3525cC9A9eba600c209", + "interchainSecurityModule": "0x802173518092b5af3079762a1fbeF8bbAf4593a0", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x9eaaC366BFD70430cFee6E70265fefFf1CfC9E47", "pausableHook": "0x9eb56085DdbDA60aDf7d2B533AFeD90e38fC9666", @@ -5847,7 +5847,7 @@ "interchainAccountIsm": "0x25EAC2007b0D40E3f0AF112FD346412321038719", "interchainAccountRouter": "0xfF26696DcDb6BbFD27e959b847D4f1399D5BcF64", "interchainGasPaymaster": "0x9534122Aae7978dB8f5f10dF4432233c53e820A1", - "interchainSecurityModule": "0x319310239BC5c43808Ff1008d0db3B38067F7Ce9", + "interchainSecurityModule": "0xA07D4B3a8da7F513BFD70866fCFfC42D34d91a87", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x9eaaC366BFD70430cFee6E70265fefFf1CfC9E47", "pausableHook": "0x9eb56085DdbDA60aDf7d2B533AFeD90e38fC9666", @@ -5908,7 +5908,7 @@ "interchainAccountIsm": "0x25EAC2007b0D40E3f0AF112FD346412321038719", "interchainAccountRouter": "0xfF26696DcDb6BbFD27e959b847D4f1399D5BcF64", "interchainGasPaymaster": "0x9534122Aae7978dB8f5f10dF4432233c53e820A1", - "interchainSecurityModule": "0x773daCf7C9944fE6e1Fa740eeC7FD4ae820a9cbb", + "interchainSecurityModule": "0x2d9c837157923B40bdF1e64a2A9fC13E37Dd9246", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x9eaaC366BFD70430cFee6E70265fefFf1CfC9E47", "pausableHook": "0x9eb56085DdbDA60aDf7d2B533AFeD90e38fC9666", @@ -5972,7 +5972,7 @@ "interchainAccountIsm": "0x25EAC2007b0D40E3f0AF112FD346412321038719", "interchainAccountRouter": "0xfF26696DcDb6BbFD27e959b847D4f1399D5BcF64", "interchainGasPaymaster": "0x9534122Aae7978dB8f5f10dF4432233c53e820A1", - "interchainSecurityModule": "0x555b95e85640aeE885236327aB91946827ebdB57", + "interchainSecurityModule": "0x8d7912ca475362E055808Bc3Dd67B117e007523d", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x9eaaC366BFD70430cFee6E70265fefFf1CfC9E47", "pausableHook": "0x9eb56085DdbDA60aDf7d2B533AFeD90e38fC9666", @@ -6036,7 +6036,7 @@ "interchainAccountIsm": "0x25EAC2007b0D40E3f0AF112FD346412321038719", "interchainAccountRouter": "0xfF26696DcDb6BbFD27e959b847D4f1399D5BcF64", "interchainGasPaymaster": "0x9534122Aae7978dB8f5f10dF4432233c53e820A1", - "interchainSecurityModule": "0x555b95e85640aeE885236327aB91946827ebdB57", + "interchainSecurityModule": "0xdBB9466B300AC49BC2C91bB975643b592A126514", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x9eaaC366BFD70430cFee6E70265fefFf1CfC9E47", "pausableHook": "0x9eb56085DdbDA60aDf7d2B533AFeD90e38fC9666", @@ -6109,7 +6109,7 @@ "interchainAccountIsm": "0xfF26696DcDb6BbFD27e959b847D4f1399D5BcF64", "interchainAccountRouter": "0x4D50044335dc1d4D26c343AdeDf6E47808475Deb", "interchainGasPaymaster": "0x70EbA87Cd15616f32C736B3f3BdCfaeD0713a82B", - "interchainSecurityModule": "0x6d29ffb859D867Faf2705f39b168331960438f31", + "interchainSecurityModule": "0xcf5B2Fa0cDa42ec6CB947A84384f136416FF8341", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0xbb0AE51BCa526cF313b6a95BfaB020794af6C394", "pausableHook": "0x83475ca5bEB2Eaa59A2FF48a0544ebaa4a32c2de", @@ -6173,7 +6173,7 @@ "interchainAccountIsm": "0x31Bb27f6007C33acD1be83ACEd3164C60f8F7b13", "interchainAccountRouter": "0xEeb5a99a75585fe137c83E7b62b74f87264A5481", "interchainGasPaymaster": "0xb7C9307fE90B9AB093c6D3EdeE3259f5378D5f03", - "interchainSecurityModule": "0x833005B52Ea2785178752f91b51614E40eF56891", + "interchainSecurityModule": "0x0a698848Dbf4819b22A37E02748588AcF9936F22", "mailbox": "0x0dF25A2d59F03F039b56E90EdC5B89679Ace28Bc", "merkleTreeHook": "0xC88636fFdFAc7cb87b7A76310B7a62AF0A000595", "pausableHook": "0x2AF32cF8e3Cf42d221eDa0c843818fA5ee129E27", @@ -6237,7 +6237,7 @@ "interchainAccountIsm": "0x28291a7062afA569104bEd52F7AcCA3dD2FafD11", "interchainAccountRouter": "0xe9E3444DDD80c50276c0Fcf316026f6d7fEc2c47", "interchainGasPaymaster": "0x25EAC2007b0D40E3f0AF112FD346412321038719", - "interchainSecurityModule": "0xd8d54AA2d31De782C76170328eB3Dca412F171ae", + "interchainSecurityModule": "0xdd8378d5A11ad5B48699dfCF87a06aF595410D49", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x5C02157068a52cEcfc98EDb6115DE6134EcB4764", "pausableHook": "0x99fEFc1119E86Ee0153eb887cF8E8ab2d92A16e8", @@ -6305,7 +6305,7 @@ "interchainAccountIsm": "0x027eFD1695941969435AA640542B690044dF7E06", "interchainAccountRouter": "0x65F1343AC23D4fF48bf6c7E0c55872d245397567", "interchainGasPaymaster": "0x28291a7062afA569104bEd52F7AcCA3dD2FafD11", - "interchainSecurityModule": "0xAf8AA677016ee577268Ab6ad19483075605a5671", + "interchainSecurityModule": "0x0a297b209EE1Db131F4624819fa0cc8D119d01e5", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0xcd90D49b046772F710250b9119117169CB2e4D8b", "pausableHook": "0x7CE76f5f0C469bBB4cd7Ea6EbabB54437A093127", diff --git a/typescript/infra/config/environments/mainnet3/agent.ts b/typescript/infra/config/environments/mainnet3/agent.ts index 05b91bce23..de18037b26 100644 --- a/typescript/infra/config/environments/mainnet3/agent.ts +++ b/typescript/infra/config/environments/mainnet3/agent.ts @@ -487,6 +487,10 @@ const blacklistedMessageIds = [ '0x47d60c21abefae928d1c16c5a33cd5a8fcf870cf533c71ab6db49d75a5c4a215', '0xa2df671fbd4b518c282f9a21e2677fa2a05af33f96ccc9ff113f1a1ffa557667', '0x1cefa98b6d937333e452a0dbc0654e13416c228682837a8913cb18d612b307dd', + + // MAGIC/ethereum-treasure native funding txs + '0x9d51f4123be816cbaeef2e2b34a5760f633a7cb8a019fe16f88a3227cc22451e', + '0x663c221137028ceeeb102a98e48b362a7b48d626b93c88c7fdf1871a948b1223', ]; // Blacklist matching list intended to be used by all contexts. diff --git a/typescript/infra/config/environments/mainnet3/helloworld.ts b/typescript/infra/config/environments/mainnet3/helloworld.ts index 566bbbac12..d65da8141e 100644 --- a/typescript/infra/config/environments/mainnet3/helloworld.ts +++ b/typescript/infra/config/environments/mainnet3/helloworld.ts @@ -13,7 +13,7 @@ export const hyperlane: HelloWorldConfig = { kathy: { docker: { repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo', - tag: '857338e-20240716-165320', + tag: '7e520fb-20241215-234731', }, chainsToSkip: [], runEnv: environment, @@ -33,7 +33,7 @@ export const releaseCandidate: HelloWorldConfig = { kathy: { docker: { repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo', - tag: '857338e-20240716-165320', + tag: '7e520fb-20241215-234731', }, chainsToSkip: [], runEnv: environment, diff --git a/typescript/infra/config/environments/mainnet3/warp/warpIds.ts b/typescript/infra/config/environments/mainnet3/warp/warpIds.ts index dea0745860..96b96793b4 100644 --- a/typescript/infra/config/environments/mainnet3/warp/warpIds.ts +++ b/typescript/infra/config/environments/mainnet3/warp/warpIds.ts @@ -23,6 +23,7 @@ export enum WarpRouteIds { EthereumInevmUSDT = 'USDT/ethereum-inevm', EthereumSeiFastUSD = 'FASTUSD/ethereum-sei', EthereumVanaETH = 'ETH/ethereum-vana', + EthereumVanaVANA = 'VANA/ethereum-vana', EthereumVictionETH = 'ETH/ethereum-viction', EthereumVictionUSDC = 'USDC/ethereum-viction', EthereumVictionUSDT = 'USDT/ethereum-viction', diff --git a/typescript/infra/scripts/agent-utils.ts b/typescript/infra/scripts/agent-utils.ts index a1c214208e..e60d137f95 100644 --- a/typescript/infra/scripts/agent-utils.ts +++ b/typescript/infra/scripts/agent-utils.ts @@ -295,9 +295,11 @@ export async function getWarpRouteIdInteractive() { // Interactively gets multiple warp route IDs export async function getWarpRouteIdsInteractive() { - const choices = Object.values(WarpRouteIds).map((id) => ({ - value: id, - })); + const choices = Object.values(WarpRouteIds) + .sort() + .map((id) => ({ + value: id, + })); let selection: WarpRouteIds[] = []; diff --git a/typescript/infra/scripts/helloworld/kathy.ts b/typescript/infra/scripts/helloworld/kathy.ts index 678e2bb75d..34b3c4f960 100644 --- a/typescript/infra/scripts/helloworld/kathy.ts +++ b/typescript/infra/scripts/helloworld/kathy.ts @@ -480,8 +480,8 @@ async function sendMessage( }); await timeout( - // Will check for up to 12 minutes - core.waitForMessagesProcessed(origin, destination, receipt, 5000, 144), + // Retry indefinitely, but rely on the timeout to break out + core.waitForMessagesProcessed(origin, destination, receipt, 5000), messageReceiptTimeout, 'Timeout waiting for message to be received', ); diff --git a/typescript/infra/src/warp/helm.ts b/typescript/infra/src/warp/helm.ts index 8eccec748b..80c2f2353b 100644 --- a/typescript/infra/src/warp/helm.ts +++ b/typescript/infra/src/warp/helm.ts @@ -28,7 +28,7 @@ export class WarpRouteMonitorHelmManager extends HelmManager { return { image: { repository: 'gcr.io/abacus-labs-dev/hyperlane-monorepo', - tag: '3492bff-20241215-213411', + tag: '7e520fb-20241215-234731', }, warpRouteId: this.warpRouteId, fullnameOverride: this.helmReleaseName, From ae5b58eade9df87dda47dd149cbf3a4c164f95ca Mon Sep 17 00:00:00 2001 From: Danil Nemirovsky Date: Mon, 16 Dec 2024 14:39:51 +0000 Subject: [PATCH 08/32] fix: Add logging to Cosmos merkle tree insertion parsing (#5013) ### Description Add logging to Cosmos merkle tree insertion parsing ### Backward compatibility Yes ### Testing E2E Cosmos test Co-authored-by: Danil Nemirovsky <4614623+ameten@users.noreply.github.com> --- .../hyperlane-cosmos/src/merkle_tree_hook.rs | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/rust/main/chains/hyperlane-cosmos/src/merkle_tree_hook.rs b/rust/main/chains/hyperlane-cosmos/src/merkle_tree_hook.rs index b9acdd3571..9c03b824dc 100644 --- a/rust/main/chains/hyperlane-cosmos/src/merkle_tree_hook.rs +++ b/rust/main/chains/hyperlane-cosmos/src/merkle_tree_hook.rs @@ -4,7 +4,7 @@ use async_trait::async_trait; use base64::{engine::general_purpose::STANDARD as BASE64, Engine}; use once_cell::sync::Lazy; use tendermint::abci::EventAttribute; -use tracing::instrument; +use tracing::{debug, info, instrument}; use hyperlane_core::accumulator::incremental::IncrementalMerkle; use hyperlane_core::{ @@ -223,6 +223,11 @@ impl CosmosMerkleTreeHookIndexer { fn merkle_tree_insertion_parser( attrs: &Vec, ) -> ChainResult> { + debug!( + ?attrs, + "parsing merkle tree insertion from event attributes", + ); + let mut contract_address: Option = None; let mut insertion = IncompleteMerkleTreeInsertion::default(); @@ -233,6 +238,7 @@ impl CosmosMerkleTreeHookIndexer { match key { CONTRACT_ADDRESS_ATTRIBUTE_KEY => { contract_address = Some(value.to_string()); + debug!(?contract_address, "parsed contract address from plain text"); } v if *CONTRACT_ADDRESS_ATTRIBUTE_KEY_BASE64 == v => { contract_address = Some(String::from_utf8( @@ -240,10 +246,12 @@ impl CosmosMerkleTreeHookIndexer { .decode(value) .map_err(Into::::into)?, )?); + debug!(?contract_address, "parsed contract address from base64"); } MESSAGE_ID_ATTRIBUTE_KEY => { insertion.message_id = Some(H256::from_slice(hex::decode(value)?.as_slice())); + debug!(message_id = ?insertion.message_id, "parsed message_id from plain text"); } v if *MESSAGE_ID_ATTRIBUTE_KEY_BASE64 == v => { insertion.message_id = Some(H256::from_slice( @@ -254,10 +262,12 @@ impl CosmosMerkleTreeHookIndexer { )?)? .as_slice(), )); + debug!(message_id = ?insertion.message_id, "parsed message_id from base64"); } INDEX_ATTRIBUTE_KEY => { insertion.leaf_index = Some(value.parse::()?); + debug!(leaf_index = ?insertion.leaf_index, "parsed leaf_index from plain text"); } v if *INDEX_ATTRIBUTE_KEY_BASE64 == v => { insertion.leaf_index = Some( @@ -268,16 +278,29 @@ impl CosmosMerkleTreeHookIndexer { )? .parse()?, ); + debug!(leaf_index = ?insertion.leaf_index, "parsed leaf_index from base64"); } - _ => {} + unknown => { + debug!(?unknown, "unknown attribute"); + } } } let contract_address = contract_address .ok_or_else(|| ChainCommunicationError::from_other_str("missing contract_address"))?; - Ok(ParsedEvent::new(contract_address, insertion.try_into()?)) + debug!( + ?contract_address, + ?insertion, + "parsed contract address and insertion", + ); + + let event = ParsedEvent::new(contract_address, insertion.try_into()?); + + info!(?event, "parsed event"); + + Ok(event) } } @@ -331,7 +354,7 @@ impl SequenceAwareIndexer for CosmosMerkleTreeHookIndexer { } } -#[derive(Default)] +#[derive(Default, Debug)] struct IncompleteMerkleTreeInsertion { leaf_index: Option, message_id: Option, From 0c83724477d3e452e10d79982df784320e24f068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Muhammed=20Kadir=20Y=C3=BCcel?= Date: Mon, 16 Dec 2024 18:42:05 +0300 Subject: [PATCH 09/32] fix: balance check skip confirmation (#5012) ### Description Balance checking will skip confirmation when CLI flag is defined. When balances are insufficient, CLI asks for confirmation to continue with deployment, if `skip-confirmations` is provided through CLI args this should be bypassed. ### Backward compatibility No, compatible with backwards ### Testing Manual --- .changeset/five-bats-attend.md | 5 +++++ typescript/cli/src/deploy/utils.ts | 3 ++- typescript/cli/src/utils/balances.ts | 12 +++++++----- 3 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 .changeset/five-bats-attend.md diff --git a/.changeset/five-bats-attend.md b/.changeset/five-bats-attend.md new file mode 100644 index 0000000000..02a7c986bb --- /dev/null +++ b/.changeset/five-bats-attend.md @@ -0,0 +1,5 @@ +--- +'@hyperlane-xyz/cli': patch +--- + +fix: balance check skip confirmation diff --git a/typescript/cli/src/deploy/utils.ts b/typescript/cli/src/deploy/utils.ts index f5ac01a175..0378ab7243 100644 --- a/typescript/cli/src/deploy/utils.ts +++ b/typescript/cli/src/deploy/utils.ts @@ -41,7 +41,7 @@ export async function runPreflightChecksForChains({ chainsToGasCheck?: ChainName[]; }) { log('Running pre-flight checks for chains...'); - const { multiProvider } = context; + const { multiProvider, skipConfirmation } = context; if (!chains?.length) throw new Error('Empty chain selection'); for (const chain of chains) { @@ -59,6 +59,7 @@ export async function runPreflightChecksForChains({ multiProvider, chainsToGasCheck ?? chains, minGas, + skipConfirmation, ); } diff --git a/typescript/cli/src/utils/balances.ts b/typescript/cli/src/utils/balances.ts index 2a6e6fcb8a..701acceda6 100644 --- a/typescript/cli/src/utils/balances.ts +++ b/typescript/cli/src/utils/balances.ts @@ -1,15 +1,16 @@ -import { confirm } from '@inquirer/prompts'; import { ethers } from 'ethers'; import { ChainName, MultiProvider } from '@hyperlane-xyz/sdk'; import { ProtocolType } from '@hyperlane-xyz/utils'; -import { logGray, logGreen, logRed } from '../logger.js'; +import { autoConfirm } from '../config/prompts.js'; +import { logBlue, logGray, logGreen, logRed, warnYellow } from '../logger.js'; export async function nativeBalancesAreSufficient( multiProvider: MultiProvider, chains: ChainName[], minGas: string, + skipConfirmation: boolean, ) { const sufficientBalances: boolean[] = []; for (const chain of chains) { @@ -42,9 +43,10 @@ export async function nativeBalancesAreSufficient( if (allSufficient) { logGreen('✅ Balances are sufficient'); } else { - const isResume = await confirm({ - message: 'Deployment may fail due to insufficient balance(s). Continue?', - }); + warnYellow(`Deployment may fail due to insufficient balance(s)`); + const isResume = await autoConfirm('Continue?', skipConfirmation, () => + logBlue('Continuing deployment with insufficient balances'), + ); if (!isResume) throw new Error('Canceled deployment due to low balance'); } } From d7c4654625e7777e0cc2d28800982fbfed09842a Mon Sep 17 00:00:00 2001 From: Daniel Savu <23065004+daniel-savu@users.noreply.github.com> Date: Mon, 16 Dec 2024 17:14:09 +0000 Subject: [PATCH 10/32] fix: retry zksync errors in escalator (#5014) ### Description Includes the changes from https://github.com/hyperlane-xyz/ethers-rs/pull/24, reviewed by @ameten ### Drive-by changes ### Related issues ### Backward compatibility ### Testing --- rust/main/Cargo.lock | 20 ++++++++++---------- rust/main/Cargo.toml | 10 +++++----- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/rust/main/Cargo.lock b/rust/main/Cargo.lock index e29131af94..c14e211f03 100644 --- a/rust/main/Cargo.lock +++ b/rust/main/Cargo.lock @@ -2901,7 +2901,7 @@ dependencies = [ [[package]] name = "ethers" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-16#c5c2a74660675ab968cf585893325e2faa807d14" dependencies = [ "ethers-addressbook", "ethers-contract", @@ -2915,7 +2915,7 @@ dependencies = [ [[package]] name = "ethers-addressbook" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-16#c5c2a74660675ab968cf585893325e2faa807d14" dependencies = [ "ethers-core", "once_cell", @@ -2926,7 +2926,7 @@ dependencies = [ [[package]] name = "ethers-contract" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-16#c5c2a74660675ab968cf585893325e2faa807d14" dependencies = [ "ethers-contract-abigen", "ethers-contract-derive", @@ -2944,7 +2944,7 @@ dependencies = [ [[package]] name = "ethers-contract-abigen" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-16#c5c2a74660675ab968cf585893325e2faa807d14" dependencies = [ "Inflector", "cfg-if", @@ -2968,7 +2968,7 @@ dependencies = [ [[package]] name = "ethers-contract-derive" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-16#c5c2a74660675ab968cf585893325e2faa807d14" dependencies = [ "ethers-contract-abigen", "ethers-core", @@ -2982,7 +2982,7 @@ dependencies = [ [[package]] name = "ethers-core" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-16#c5c2a74660675ab968cf585893325e2faa807d14" dependencies = [ "arrayvec", "bytes", @@ -3012,7 +3012,7 @@ dependencies = [ [[package]] name = "ethers-etherscan" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-16#c5c2a74660675ab968cf585893325e2faa807d14" dependencies = [ "ethers-core", "getrandom 0.2.15", @@ -3028,7 +3028,7 @@ dependencies = [ [[package]] name = "ethers-middleware" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-16#c5c2a74660675ab968cf585893325e2faa807d14" dependencies = [ "async-trait", "auto_impl 0.5.0", @@ -3076,7 +3076,7 @@ dependencies = [ [[package]] name = "ethers-providers" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-16#c5c2a74660675ab968cf585893325e2faa807d14" dependencies = [ "async-trait", "auto_impl 1.2.0", @@ -3112,7 +3112,7 @@ dependencies = [ [[package]] name = "ethers-signers" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-16#c5c2a74660675ab968cf585893325e2faa807d14" dependencies = [ "async-trait", "coins-bip32 0.7.0", diff --git a/rust/main/Cargo.toml b/rust/main/Cargo.toml index 72e3d6348d..55cfc1573a 100644 --- a/rust/main/Cargo.toml +++ b/rust/main/Cargo.toml @@ -198,27 +198,27 @@ overflow-checks = true [workspace.dependencies.ethers] features = [] git = "https://github.com/hyperlane-xyz/ethers-rs" -tag = "2024-12-10" +tag = "2024-12-16" [workspace.dependencies.ethers-contract] features = ["legacy"] git = "https://github.com/hyperlane-xyz/ethers-rs" -tag = "2024-12-10" +tag = "2024-12-16" [workspace.dependencies.ethers-core] features = [] git = "https://github.com/hyperlane-xyz/ethers-rs" -tag = "2024-12-10" +tag = "2024-12-16" [workspace.dependencies.ethers-providers] features = [] git = "https://github.com/hyperlane-xyz/ethers-rs" -tag = "2024-12-10" +tag = "2024-12-16" [workspace.dependencies.ethers-signers] features = ["aws"] git = "https://github.com/hyperlane-xyz/ethers-rs" -tag = "2024-12-10" +tag = "2024-12-16" [patch.crates-io.curve25519-dalek] branch = "v3.2.2-relax-zeroize" From a2b5efbf9f48ca4bc9c70b145b0a2b8f70e46e69 Mon Sep 17 00:00:00 2001 From: J M Rossy Date: Mon, 16 Dec 2024 13:34:24 -0500 Subject: [PATCH 11/32] fix: Hide outline in some widget components (#5017) ### Description - Hide ouline in button and text input - Rename clip path id in discord logo ### Backward compatibility Yes --- .changeset/pink-sloths-turn.md | 5 +++++ typescript/widgets/src/components/Button.tsx | 2 +- typescript/widgets/src/components/TextInput.tsx | 2 +- typescript/widgets/src/icons/Discord.tsx | 4 ++-- 4 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 .changeset/pink-sloths-turn.md diff --git a/.changeset/pink-sloths-turn.md b/.changeset/pink-sloths-turn.md new file mode 100644 index 0000000000..9c7cf6ea56 --- /dev/null +++ b/.changeset/pink-sloths-turn.md @@ -0,0 +1,5 @@ +--- +'@hyperlane-xyz/widgets': patch +--- + +Hide outline in button and text input components diff --git a/typescript/widgets/src/components/Button.tsx b/typescript/widgets/src/components/Button.tsx index e983bd5645..19114a6cbb 100644 --- a/typescript/widgets/src/components/Button.tsx +++ b/typescript/widgets/src/components/Button.tsx @@ -7,7 +7,7 @@ export function Button(props: Props) { const { className, children, ...rest } = props; const base = - 'htw-flex htw-items-center htw-justify-center htw-rounded-sm htw-transition-all'; + 'htw-flex htw-items-center htw-justify-center htw-rounded-sm htw-transition-all htw-outline-none focus:htw-outline-none'; const onHover = 'hover:htw-opacity-80'; const onDisabled = 'disabled:htw-opacity-30 disabled:htw-cursor-default'; const onActive = 'active:htw-scale-95'; diff --git a/typescript/widgets/src/components/TextInput.tsx b/typescript/widgets/src/components/TextInput.tsx index 42f74f199d..ba24445caa 100644 --- a/typescript/widgets/src/components/TextInput.tsx +++ b/typescript/widgets/src/components/TextInput.tsx @@ -22,7 +22,7 @@ export function _TextInput( type="text" autoComplete="off" onChange={handleChange} - className={`htw-bg-gray-100 focus:htw-bg-gray-200 disabled:htw-bg-gray-500 htw-outline-none htw-transition-all htw-duration-300 ${className}`} + className={`htw-bg-gray-100 focus:htw-bg-gray-200 disabled:htw-bg-gray-500 htw-outline-none focus:htw-outline-none htw-transition-all htw-duration-300 ${className}`} {...props} /> ); diff --git a/typescript/widgets/src/icons/Discord.tsx b/typescript/widgets/src/icons/Discord.tsx index 28a3d93f1d..16e9761248 100644 --- a/typescript/widgets/src/icons/Discord.tsx +++ b/typescript/widgets/src/icons/Discord.tsx @@ -7,14 +7,14 @@ import { DefaultIconProps } from './types.js'; function _Discord({ color, ...rest }: DefaultIconProps) { return ( - + - + From 98ee79c172e76ed770dbe996d26e59aea8f81c91 Mon Sep 17 00:00:00 2001 From: mshojaei-txfusion <138107084+mshojaei-txfusion@users.noreply.github.com> Date: Tue, 17 Dec 2024 00:03:08 +0330 Subject: [PATCH 12/32] feat: Integrate ZKSync Wallet for ChainTechnicalStack-Specific Transaction Signing (#4914) ### Description This PR integrates the zksync-ethers wallet implementation for the ZKSync signer strategy. Key changes include: - Added zksync-ethers dependency (v5.10.0) - Updated ZKSyncSignerStrategy to use ZKSyncWallet instead of standard ethers Wallet - Removed outdated TODO comment about ZKSync signer implementation ### Drive-by changes None ### Related issues N/A ### Backward compatibility Yes ### Testing Manual testing --------- Co-authored-by: Morteza Shojaei <31728528+mortezashojaei@users.noreply.github.com> Co-authored-by: ljankovic-txfusion Co-authored-by: ljankovic-txfusion <131957285+ljankovic-txfusion@users.noreply.github.com> --- .changeset/ten-spiders-trade.md | 5 +++++ typescript/cli/package.json | 3 ++- .../signer/MultiProtocolSignerFactory.ts | 4 ++-- yarn.lock | 14 +++++++++++++- 4 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 .changeset/ten-spiders-trade.md diff --git a/.changeset/ten-spiders-trade.md b/.changeset/ten-spiders-trade.md new file mode 100644 index 0000000000..91eebf52f7 --- /dev/null +++ b/.changeset/ten-spiders-trade.md @@ -0,0 +1,5 @@ +--- +'@hyperlane-xyz/cli': patch +--- + +Added ZKSync signer support using zksync-ethers package diff --git a/typescript/cli/package.json b/typescript/cli/package.json index 7940f8e756..3a249e154c 100644 --- a/typescript/cli/package.json +++ b/typescript/cli/package.json @@ -43,7 +43,8 @@ "eslint-plugin-import": "^2.31.0", "mocha": "^10.2.0", "prettier": "^2.8.8", - "typescript": "5.3.3" + "typescript": "5.3.3", + "zksync-ethers": "^5.10.0" }, "scripts": { "hyperlane": "node ./dist/cli.js", diff --git a/typescript/cli/src/context/strategies/signer/MultiProtocolSignerFactory.ts b/typescript/cli/src/context/strategies/signer/MultiProtocolSignerFactory.ts index 030f11b5f4..d6f83572fb 100644 --- a/typescript/cli/src/context/strategies/signer/MultiProtocolSignerFactory.ts +++ b/typescript/cli/src/context/strategies/signer/MultiProtocolSignerFactory.ts @@ -1,5 +1,6 @@ import { password } from '@inquirer/prompts'; import { Signer, Wallet } from 'ethers'; +import { Wallet as ZKSyncWallet } from 'zksync-ethers'; import { ChainName, @@ -57,7 +58,6 @@ class EthereumSignerStrategy extends BaseMultiProtocolSigner { } // 99% overlap with EthereumSignerStrategy for the sake of keeping MultiProtocolSignerFactory clean -// TODO: import ZKSync signer class ZKSyncSignerStrategy extends BaseMultiProtocolSigner { async getSignerConfig(chain: ChainName): Promise { const submitter = this.config[chain]?.submitter as { @@ -74,6 +74,6 @@ class ZKSyncSignerStrategy extends BaseMultiProtocolSigner { } getSigner(config: SignerConfig): Signer { - return new Wallet(config.privateKey); + return new ZKSyncWallet(config.privateKey); } } diff --git a/yarn.lock b/yarn.lock index 4f4fa8eb36..da261caf33 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7351,6 +7351,7 @@ __metadata: typescript: "npm:5.3.3" yaml: "npm:2.4.5" yargs: "npm:^17.7.2" + zksync-ethers: "npm:^5.10.0" zod: "npm:^3.21.2" zod-validation-error: "npm:^3.3.0" zx: "npm:^8.1.4" @@ -22645,7 +22646,7 @@ __metadata: languageName: node linkType: hard -"ethers@npm:^5.1.0, ethers@npm:^5.3.1, ethers@npm:^5.7.0, ethers@npm:^5.7.1, ethers@npm:^5.7.2": +"ethers@npm:^5.1.0, ethers@npm:^5.3.1, ethers@npm:^5.7.0, ethers@npm:^5.7.1, ethers@npm:^5.7.2, ethers@npm:~5.7.0": version: 5.7.2 resolution: "ethers@npm:5.7.2" dependencies: @@ -37893,6 +37894,17 @@ __metadata: languageName: node linkType: hard +"zksync-ethers@npm:^5.10.0": + version: 5.10.0 + resolution: "zksync-ethers@npm:5.10.0" + dependencies: + ethers: "npm:~5.7.0" + peerDependencies: + ethers: ~5.7.0 + checksum: 10/826719e2e40731e1104cf8a0c16c758526de6ca9e907d0483eb5bd80b635f02e3cce012115b75d68976a8dd746d63d4f83d576cc3bddc18a02a49d2bc023347f + languageName: node + linkType: hard + "zksync-web3@npm:^0.14.3": version: 0.14.4 resolution: "zksync-web3@npm:0.14.4" From 2e6f7274ce4a79bbe2ab35a9f3b4c55cee27317f Mon Sep 17 00:00:00 2001 From: Lee <6251863+ltyu@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:32:57 -0500 Subject: [PATCH 13/32] feat: Add RE7 config getter (#5018) ### Description Adds RE7 config getter ### Backward compatibility Yes ### Testing Manual --- .../getEthereumZircuitRe7LRTWarpConfig.ts | 44 +++++++++++++++++++ .../environments/mainnet3/warp/warpIds.ts | 1 + typescript/infra/config/warp.ts | 2 + typescript/infra/src/config/warp.ts | 1 + 4 files changed, 48 insertions(+) create mode 100644 typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumZircuitRe7LRTWarpConfig.ts diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumZircuitRe7LRTWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumZircuitRe7LRTWarpConfig.ts new file mode 100644 index 0000000000..c7ea4e9ac7 --- /dev/null +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumZircuitRe7LRTWarpConfig.ts @@ -0,0 +1,44 @@ +import { ethers } from 'ethers'; + +import { + ChainMap, + HypTokenRouterConfig, + OwnableConfig, + TokenType, +} from '@hyperlane-xyz/sdk'; + +import { + RouterConfigWithoutOwner, + tokens, +} from '../../../../../src/config/warp.js'; + +const Re7Safes = { + ethereum: '0x184d597Be309e11650ca6c935B483DcC05551578', + zircuit: '0x7Ac2631B4F87801965Acdad169949D6f865068f7', +}; + +const ISM_CONFIG = ethers.constants.AddressZero; // Default ISM + +export const getEthereumZircuitRe7LRTWarpConfig = async ( + routerConfig: ChainMap, +): Promise> => { + const ethereum: HypTokenRouterConfig = { + ...routerConfig.ethereum, + owner: Re7Safes.ethereum, + type: TokenType.collateral, + token: tokens.ethereum.Re7LRT, + interchainSecurityModule: ISM_CONFIG, + }; + + const zircuit: HypTokenRouterConfig = { + ...routerConfig.zircuit, + owner: Re7Safes.zircuit, + type: TokenType.synthetic, + interchainSecurityModule: ISM_CONFIG, + }; + + return { + ethereum, + zircuit, + }; +}; diff --git a/typescript/infra/config/environments/mainnet3/warp/warpIds.ts b/typescript/infra/config/environments/mainnet3/warp/warpIds.ts index 96b96793b4..2dc43bbae2 100644 --- a/typescript/infra/config/environments/mainnet3/warp/warpIds.ts +++ b/typescript/infra/config/environments/mainnet3/warp/warpIds.ts @@ -29,6 +29,7 @@ export enum WarpRouteIds { EthereumVictionUSDT = 'USDT/ethereum-viction', EthereumSwellZircuitPZETH = 'PZETH/ethereum-swell-zircuit', EthereumBscLumiaLUMIA = 'LUMIA/bsc-ethereum-lumia', + EthereumZircuitRe7LRT = 'Re7LRT/ethereum-zircuit', InevmInjectiveINJ = 'INJ/inevm-injective', MantapacificNeutronTIA = 'TIA/mantapacific-neutron', BaseZeroNetworkCBBTC = 'CBBTC/base-zeronetwork', diff --git a/typescript/infra/config/warp.ts b/typescript/infra/config/warp.ts index f9ebeb69c6..9f01e26466 100644 --- a/typescript/infra/config/warp.ts +++ b/typescript/infra/config/warp.ts @@ -34,6 +34,7 @@ import { getEthereumSeiFastUSDWarpConfig } from './environments/mainnet3/warp/co import { getEthereumVictionETHWarpConfig } from './environments/mainnet3/warp/configGetters/getEthereumVictionETHWarpConfig.js'; import { getEthereumVictionUSDCWarpConfig } from './environments/mainnet3/warp/configGetters/getEthereumVictionUSDCWarpConfig.js'; import { getEthereumVictionUSDTWarpConfig } from './environments/mainnet3/warp/configGetters/getEthereumVictionUSDTWarpConfig.js'; +import { getEthereumZircuitRe7LRTWarpConfig } from './environments/mainnet3/warp/configGetters/getEthereumZircuitRe7LRTWarpConfig.js'; import { getInevmInjectiveINJWarpConfig } from './environments/mainnet3/warp/configGetters/getInevmInjectiveINJWarpConfig.js'; import { getMantapacificNeutronTiaWarpConfig } from './environments/mainnet3/warp/configGetters/getMantapacificNeutronTiaWarpConfig.js'; import { getRenzoEZETHWarpConfig } from './environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.js'; @@ -78,6 +79,7 @@ export const warpConfigGetterMap: Record = { getArbitrumBaseBlastBscEthereumGnosisMantleModeOptimismPolygonScrollZeroNetworkZoraMainnetETHWarpConfig, [WarpRouteIds.EclipseStrideTIA]: getEclipseStrideTiaWarpConfig, [WarpRouteIds.EclipseStrideSTTIA]: getEclipseStrideStTiaWarpConfig, + [WarpRouteIds.EthereumZircuitRe7LRT]: getEthereumZircuitRe7LRTWarpConfig, }; export async function getWarpConfig( diff --git a/typescript/infra/src/config/warp.ts b/typescript/infra/src/config/warp.ts index 2ee4314cbe..f07a5e8fb6 100644 --- a/typescript/infra/src/config/warp.ts +++ b/typescript/infra/src/config/warp.ts @@ -12,6 +12,7 @@ export const tokens: ChainMap> = { USDT: '0xdac17f958d2ee523a2206206994597c13d831ec7', WBTC: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', weETHs: '0x917cee801a67f933f2e6b33fc0cd1ed2d5909d88', + Re7LRT: '0x84631c0d0081FDe56DeB72F6DE77abBbF6A9f93a', }, sei: { fastUSD: '0x37a4dD9CED2b19Cfe8FAC251cd727b5787E45269', From 0e769f2e6f00296d3175ee07e553fbccdbfaaddf Mon Sep 17 00:00:00 2001 From: Danil Nemirovsky Date: Mon, 16 Dec 2024 22:10:13 +0000 Subject: [PATCH 14/32] fix: update spl-token-cli dependency (#5020) ### Description Fix E2E tests. New version of dependency was picked up and it broke E2E Ethereum and Sealevel tests. ### Backward compatibility Yes ### Testing E2E Ethereum and Sealevel tests Co-authored-by: Danil Nemirovsky <4614623+ameten@users.noreply.github.com> --- rust/sealevel/client/src/warp_route.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/sealevel/client/src/warp_route.rs b/rust/sealevel/client/src/warp_route.rs index a185544501..d25dddd1cf 100644 --- a/rust/sealevel/client/src/warp_route.rs +++ b/rust/sealevel/client/src/warp_route.rs @@ -670,7 +670,7 @@ pub fn install_spl_token_cli() { "--branch", "dan/create-token-for-mint", "--rev", - "c1278a3f1", + "ae4c8ac46", ]) .stdout(Stdio::inherit()) .stderr(Stdio::inherit()) From 58a54545d1c368e1c91db2582e97f00d3d742ea1 Mon Sep 17 00:00:00 2001 From: Mantas-M <120508669+Mantas-M@users.noreply.github.com> Date: Tue, 17 Dec 2024 10:12:23 +0000 Subject: [PATCH 15/32] chore: update seaorm to latest (#4925) ### Description Updated `sea-orm` and `sea-orm-migration` to `1.1.1` (latest as of opening this PR) and resolved any issues that occurred due to the version bump. ### Drive-by changes - Removed `sea-orm` from `rust/sealevel` - Updated `sea-orm-migration` data types - Bumped up the `rust-toolchain` to `1.81.0` due to `sea-orm-cli` issue: https://github.com/servo/rust-url/issues/992 ### Related issues - Resolves #4793 ### Backward compatibility Yes ### Testing Manual, as described in #4793 --- rust/main/Cargo.lock | 723 +++++++++++++----- rust/main/Cargo.toml | 7 +- .../migration/bin/generate_entities.rs | 2 +- .../agents/scraper/migration/bin/init_db.rs | 2 +- .../scraper/migration/bin/recreate_db.rs | 2 +- .../scraper/migration/src/l20230309_types.rs | 4 +- ...0230309_000003_create_table_transaction.rs | 7 +- .../agents/scraper/src/db/generated/block.rs | 4 +- .../agents/scraper/src/db/generated/cursor.rs | 2 +- .../src/db/generated/delivered_message.rs | 6 +- .../agents/scraper/src/db/generated/domain.rs | 10 +- .../scraper/src/db/generated/gas_payment.rs | 24 +- .../scraper/src/db/generated/message.rs | 12 +- .../agents/scraper/src/db/generated/mod.rs | 2 +- .../scraper/src/db/generated/prelude.rs | 2 +- .../scraper/src/db/generated/transaction.rs | 12 +- rust/main/hyperlane-base/Cargo.toml | 3 +- rust/main/rust-toolchain | 2 +- rust/sealevel/Cargo.toml | 12 - 19 files changed, 586 insertions(+), 252 deletions(-) diff --git a/rust/main/Cargo.lock b/rust/main/Cargo.lock index c14e211f03..4fae483a3c 100644 --- a/rust/main/Cargo.lock +++ b/rust/main/Cargo.lock @@ -41,9 +41,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.21.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" dependencies = [ "gimli", ] @@ -179,6 +179,55 @@ dependencies = [ "winapi", ] +[[package]] +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +dependencies = [ + "anstyle", + "windows-sys 0.59.0", +] + [[package]] name = "anyhow" version = "1.0.86" @@ -389,7 +438,7 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" dependencies = [ - "event-listener", + "event-listener 2.5.3", ] [[package]] @@ -399,7 +448,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "261803dcc39ba9e72760ba6e16d0199b1eef9fc44e81bffabbebb9f5aea3906c" dependencies = [ "async-mutex", - "event-listener", + "event-listener 2.5.3", ] [[package]] @@ -448,9 +497,9 @@ dependencies = [ [[package]] name = "atoi" -version = "1.0.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c57d12312ff59c811c0643f4d80830505833c9ffaebd193d819392b265be8e" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" dependencies = [ "num-traits", ] @@ -555,15 +604,15 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "321629d8ba6513061f26707241fa9bc89524ff1cd7a915a97ef0c62c666ce1b6" dependencies = [ "addr2line", "cc", "cfg-if", "libc", - "miniz_oxide 0.7.4", + "miniz_oxide 0.4.4", "object", "rustc-demangle", "serde", @@ -577,19 +626,6 @@ dependencies = [ "derive-new", ] -[[package]] -name = "bae" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b8de67cc41132507eeece2584804efcb15f85ba516e34c944b7667f480397a" -dependencies = [ - "heck 0.3.3", - "proc-macro-error", - "proc-macro2 1.0.86", - "quote 1.0.37", - "syn 1.0.109", -] - [[package]] name = "base16ct" version = "0.1.1" @@ -666,17 +702,6 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d" -[[package]] -name = "bigdecimal" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" -dependencies = [ - "num-bigint 0.4.6", - "num-integer", - "num-traits", -] - [[package]] name = "bigdecimal" version = "0.4.5" @@ -688,6 +713,7 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", + "serde", ] [[package]] @@ -1093,12 +1119,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.94" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7" +checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] @@ -1181,8 +1208,7 @@ checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "atty", "bitflags 1.3.2", - "clap_derive", - "clap_lex", + "clap_lex 0.2.4", "indexmap 1.9.3", "once_cell", "strsim 0.10.0", @@ -1190,17 +1216,38 @@ dependencies = [ "textwrap 0.16.1", ] +[[package]] +name = "clap" +version = "4.5.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" +dependencies = [ + "anstream", + "anstyle", + "clap_lex 0.7.3", + "strsim 0.11.1", +] + [[package]] name = "clap_derive" -version = "3.2.25" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ - "heck 0.4.1", - "proc-macro-error", + "heck 0.5.0", "proc-macro2 1.0.86", "quote 1.0.37", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] @@ -1212,6 +1259,12 @@ dependencies = [ "os_str_bytes", ] +[[package]] +name = "clap_lex" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" + [[package]] name = "cloudabi" version = "0.0.3" @@ -1363,6 +1416,12 @@ dependencies = [ "tracing-error", ] +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + [[package]] name = "combine" version = "3.8.1" @@ -1376,6 +1435,15 @@ dependencies = [ "unreachable", ] +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "config" version = "0.13.4" @@ -1734,6 +1802,21 @@ dependencies = [ "libc", ] +[[package]] +name = "crc" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + [[package]] name = "crc32fast" version = "1.4.2" @@ -2192,6 +2275,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid 0.9.6", + "pem-rfc7468", "zeroize", ] @@ -2376,15 +2460,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "dirs" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" -dependencies = [ - "dirs-sys", -] - [[package]] name = "dirs-next" version = "2.0.0" @@ -2395,17 +2470,6 @@ dependencies = [ "dirs-sys-next", ] -[[package]] -name = "dirs-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "dirs-sys-next" version = "0.1.2" @@ -2634,6 +2698,9 @@ name = "either" version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +dependencies = [ + "serde", +] [[package]] name = "elliptic-curve" @@ -2792,6 +2859,17 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "etcetera" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +dependencies = [ + "cfg-if", + "home", + "windows-sys 0.48.0", +] + [[package]] name = "eth-keystore" version = "0.5.0" @@ -3142,6 +3220,17 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +[[package]] +name = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + [[package]] name = "eventsource-client" version = "0.12.2" @@ -3277,6 +3366,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "flume" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +dependencies = [ + "futures-core", + "futures-sink", + "spin 0.9.8", +] + [[package]] name = "fnv" version = "1.0.7" @@ -3797,13 +3897,13 @@ dependencies = [ [[package]] name = "futures-intrusive" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604f7a68fbf8103337523b1fadc8ade7361ee3f112f7c680ad179651616aed5" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.11.2", + "parking_lot 0.12.3", ] [[package]] @@ -3937,9 +4037,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" [[package]] name = "glob" @@ -4056,9 +4156,9 @@ dependencies = [ [[package]] name = "hashlink" -version = "0.8.4" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" dependencies = [ "hashbrown 0.14.5", ] @@ -4123,23 +4223,11 @@ dependencies = [ "winapi", ] -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "heck" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" -dependencies = [ - "unicode-segmentation", -] [[package]] name = "heck" @@ -4413,6 +4501,7 @@ dependencies = [ "backtrace", "backtrace-oneline", "bs58 0.5.1", + "cc", "color-eyre", "config", "console-subscriber", @@ -4468,7 +4557,7 @@ dependencies = [ "async-rwlock", "async-trait", "auto_impl 1.2.0", - "bigdecimal 0.4.5", + "bigdecimal", "borsh 0.9.3", "bs58 0.5.1", "bytes", @@ -4957,6 +5046,17 @@ dependencies = [ "regex", ] +[[package]] +name = "inherent" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0122b7114117e64a63ac49f752a5ca4624d534c7b1c7de796ac196381cd2d947" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.37", + "syn 2.0.77", +] + [[package]] name = "injective-protobuf" version = "0.2.2" @@ -5022,6 +5122,12 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itertools" version = "0.10.5" @@ -5048,9 +5154,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.26" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] @@ -5131,6 +5237,9 @@ name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin 0.9.8", +] [[package]] name = "lazycell" @@ -5244,6 +5353,17 @@ dependencies = [ "libsecp256k1-core", ] +[[package]] +name = "libsqlite3-sys" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + [[package]] name = "libz-sys" version = "1.1.16" @@ -5424,11 +5544,12 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" dependencies = [ "adler", + "autocfg", ] [[package]] @@ -5643,6 +5764,23 @@ dependencies = [ "serde", ] +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand 0.8.5", + "smallvec", + "zeroize", +] + [[package]] name = "num-complex" version = "0.2.4" @@ -5742,6 +5880,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -5834,9 +5973,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.32.2" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" dependencies = [ "memchr", ] @@ -5937,6 +6076,15 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "ordered-float" +version = "3.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" +dependencies = [ + "num-traits", +] + [[package]] name = "ordered-multimap" version = "0.4.3" @@ -5967,25 +6115,27 @@ dependencies = [ [[package]] name = "ouroboros" -version = "0.15.6" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" +checksum = "944fa20996a25aded6b4795c6d63f10014a7a83f8be9828a11860b08c5fc4a67" dependencies = [ "aliasable", "ouroboros_macro", + "static_assertions 1.1.0", ] [[package]] name = "ouroboros_macro" -version = "0.15.6" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" +checksum = "39b0deead1528fd0e5947a8546a9642a9777c25f6e1e26f34c97b204bbb465bd" dependencies = [ - "Inflector", - "proc-macro-error", + "heck 0.4.1", + "itertools 0.12.1", "proc-macro2 1.0.86", + "proc-macro2-diagnostics", "quote 1.0.37", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] @@ -6038,6 +6188,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + [[package]] name = "parking_lot" version = "0.11.2" @@ -6182,6 +6338,15 @@ dependencies = [ "base64 0.13.1", ] +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -6284,6 +6449,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der 0.7.9", + "pkcs8 0.10.2", + "spki 0.7.3", +] + [[package]] name = "pkcs8" version = "0.8.0" @@ -6485,6 +6661,28 @@ dependencies = [ "version_check", ] +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.37", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2 1.0.86", + "quote 1.0.37", + "syn 2.0.77", +] + [[package]] name = "proc-macro2" version = "0.4.30" @@ -6503,6 +6701,19 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.37", + "syn 2.0.77", + "version_check", + "yansi", +] + [[package]] name = "prometheus" version = "0.13.4" @@ -7225,6 +7436,26 @@ dependencies = [ "winapi", ] +[[package]] +name = "rsa" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47c75d7c5c6b673e58bf54d8544a9f432e3a925b0e80f7cd3602ab5c50c55519" +dependencies = [ + "const-oid 0.9.6", + "digest 0.10.7", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "signature 2.2.0", + "spki 0.7.3", + "subtle", + "zeroize", +] + [[package]] name = "run-locally" version = "0.1.0" @@ -7723,15 +7954,28 @@ dependencies = [ "untrusted 0.9.0", ] +[[package]] +name = "sea-bae" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f694a6ab48f14bc063cfadff30ab551d3c7e46d8f81836c51989d548f44a2a25" +dependencies = [ + "heck 0.4.1", + "proc-macro-error2", + "proc-macro2 1.0.86", + "quote 1.0.37", + "syn 2.0.77", +] + [[package]] name = "sea-orm" -version = "0.11.3" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fade86e8d41fd1a4721f84cb834f4ca2783f973cc30e6212b7fafc134f169214" +checksum = "d5680a8b686985116607ef5f5af2b1f9e1cc2c228330e93101816a0baa279afa" dependencies = [ "async-stream", "async-trait", - "bigdecimal 0.3.1", + "bigdecimal", "chrono", "futures", "log", @@ -7740,10 +7984,10 @@ dependencies = [ "sea-orm-macros", "sea-query", "sea-query-binder", - "sea-strum", "serde", "serde_json", "sqlx", + "strum 0.26.3", "thiserror", "time", "tracing", @@ -7753,13 +7997,14 @@ dependencies = [ [[package]] name = "sea-orm-cli" -version = "0.11.3" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efbf34a2caf70c2e3be9bb1e674e9540f6dfd7c8f40f6f05daf3b9740e476005" +checksum = "70a157f42d291ccbd6e913b9d9b12dbe2ccbcf0472efc60c8715dd1254083aec" dependencies = [ "chrono", - "clap 3.2.25", + "clap 4.5.21", "dotenvy", + "glob", "regex", "sea-schema", "tracing", @@ -7769,25 +8014,26 @@ dependencies = [ [[package]] name = "sea-orm-macros" -version = "0.11.3" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28936f26d62234ff0be16f80115dbdeb3237fe9c25cf18fbcd1e3b3592360f20" +checksum = "3a239e3bb1b566ad4ec2654d0d193d6ceddfd733487edc9c21a64d214c773910" dependencies = [ - "bae", - "heck 0.3.3", + "heck 0.4.1", "proc-macro2 1.0.86", "quote 1.0.37", - "syn 1.0.109", + "sea-bae", + "syn 2.0.77", + "unicode-ident", ] [[package]] name = "sea-orm-migration" -version = "0.11.3" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "278d3adfd0832b6ffc17d3cfbc574d3695a5c1b38814e0bc8ac238d33f3d87cf" +checksum = "63ba07e9f2479cc671758fcb1edee42ff2e32c34b3e67ab41d0af1e41f73c74e" dependencies = [ "async-trait", - "clap 3.2.25", + "clap 4.5.21", "dotenvy", "futures", "sea-orm", @@ -7799,12 +8045,14 @@ dependencies = [ [[package]] name = "sea-query" -version = "0.28.5" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbab99b8cd878ab7786157b7eb8df96333a6807cc6e45e8888c85b51534b401a" +checksum = "ff504d13b5e4b52fffcf2fb203d0352a5722fa5151696db768933e41e1e591bb" dependencies = [ - "bigdecimal 0.3.1", + "bigdecimal", "chrono", + "inherent", + "ordered-float", "rust_decimal", "sea-query-derive", "serde_json", @@ -7814,11 +8062,11 @@ dependencies = [ [[package]] name = "sea-query-binder" -version = "0.3.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cea85029985b40dfbf18318d85fe985c04db7c1b4e5e8e0a0a0cdff5f1e30f9" +checksum = "b0019f47430f7995af63deda77e238c17323359af241233ec768aba1faea7608" dependencies = [ - "bigdecimal 0.3.1", + "bigdecimal", "chrono", "rust_decimal", "sea-query", @@ -7830,22 +8078,23 @@ dependencies = [ [[package]] name = "sea-query-derive" -version = "0.3.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63f62030c60f3a691f5fe251713b4e220b306e50a71e1d6f9cce1f24bb781978" +checksum = "9834af2c4bd8c5162f00c89f1701fb6886119a88062cf76fe842ea9e232b9839" dependencies = [ + "darling 0.20.10", "heck 0.4.1", "proc-macro2 1.0.86", "quote 1.0.37", - "syn 1.0.109", + "syn 2.0.77", "thiserror", ] [[package]] name = "sea-schema" -version = "0.11.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb2940bb5a10bc6cd05b450ce6cd3993e27fddd7eface2becb97fc5af3a040e" +checksum = "aab1592d17860a9a8584d9b549aebcd06f7bdc3ff615f71752486ba0b05b1e6e" dependencies = [ "futures", "sea-query", @@ -7854,36 +8103,14 @@ dependencies = [ [[package]] name = "sea-schema-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56821b7076f5096b8f726e2791ad255a99c82498e08ec477a65a96c461ff1927" -dependencies = [ - "heck 0.3.3", - "proc-macro2 1.0.86", - "quote 1.0.37", - "syn 1.0.109", -] - -[[package]] -name = "sea-strum" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391d06a6007842cfe79ac6f7f53911b76dfd69fc9a6769f1cf6569d12ce20e1b" -dependencies = [ - "sea-strum_macros", -] - -[[package]] -name = "sea-strum_macros" -version = "0.23.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69b4397b825df6ccf1e98bcdabef3bbcfc47ff5853983467850eeab878384f21" +checksum = "debdc8729c37fdbf88472f97fd470393089f997a909e535ff67c544d18cfccf0" dependencies = [ - "heck 0.3.3", + "heck 0.4.1", "proc-macro2 1.0.86", "quote 1.0.37", - "rustversion", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] @@ -8331,6 +8558,9 @@ name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] [[package]] name = "socket2" @@ -9066,98 +9296,216 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.6.3" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8de3b03a925878ed54a954f621e64bf55a3c1bd29652d0d1a17830405350188" +checksum = "93334716a037193fac19df402f8571269c84a00852f6a7066b5d2616dcd64d3e" dependencies = [ "sqlx-core", "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", ] [[package]] name = "sqlx-core" -version = "0.6.3" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa8241483a83a3f33aa5fff7e7d9def398ff9990b2752b6c6112b83c6d246029" +checksum = "d4d8060b456358185f7d50c55d9b5066ad956956fddec42ee2e8567134a8936e" dependencies = [ - "ahash 0.7.8", "atoi", - "base64 0.13.1", - "bigdecimal 0.3.1", - "bitflags 1.3.2", + "bigdecimal", "byteorder", "bytes", "chrono", + "crc", "crossbeam-queue", - "dirs", - "dotenvy", "either", - "event-listener", + "event-listener 5.3.1", "futures-channel", "futures-core", "futures-intrusive", + "futures-io", "futures-util", + "hashbrown 0.14.5", "hashlink", "hex 0.4.3", - "hkdf", - "hmac 0.12.1", - "indexmap 1.9.3", - "itoa", - "libc", + "indexmap 2.5.0", "log", - "md-5 0.10.6", "memchr", - "num-bigint 0.4.6", + "native-tls", "once_cell", "paste", "percent-encoding", - "rand 0.8.5", "rust_decimal", "serde", "serde_json", - "sha1", "sha2 0.10.8", "smallvec", "sqlformat", - "sqlx-rt", - "stringprep", "thiserror", "time", + "tokio", "tokio-stream", + "tracing", "url", "uuid 1.10.0", - "whoami", ] [[package]] name = "sqlx-macros" -version = "0.6.3" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9966e64ae989e7e575b19d7265cb79d7fc3cbbdf179835cb0d716f294c2049c9" +checksum = "cac0692bcc9de3b073e8d747391827297e075c7710ff6276d9f7a1f3d58c6657" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.37", + "sqlx-core", + "sqlx-macros-core", + "syn 2.0.77", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1804e8a7c7865599c9c79be146dc8a9fd8cc86935fa641d3ea58e5f0688abaa5" dependencies = [ "dotenvy", "either", - "heck 0.4.1", + "heck 0.5.0", + "hex 0.4.3", "once_cell", "proc-macro2 1.0.86", "quote 1.0.37", + "serde", "serde_json", + "sha2 0.10.8", "sqlx-core", - "sqlx-rt", - "syn 1.0.109", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", + "syn 2.0.77", + "tempfile", + "tokio", "url", ] [[package]] -name = "sqlx-rt" -version = "0.6.3" +name = "sqlx-mysql" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "804d3f245f894e61b1e6263c84b23ca675d96753b5abfd5cc8597d86806e8024" +checksum = "64bb4714269afa44aef2755150a0fc19d756fb580a67db8885608cf02f47d06a" dependencies = [ - "native-tls", + "atoi", + "base64 0.22.1", + "bigdecimal", + "bitflags 2.6.0", + "byteorder", + "bytes", + "chrono", + "crc", + "digest 0.10.7", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array 0.14.7", + "hex 0.4.3", + "hkdf", + "hmac 0.12.1", + "itoa", + "log", + "md-5 0.10.6", + "memchr", "once_cell", - "tokio", - "tokio-native-tls", + "percent-encoding", + "rand 0.8.5", + "rsa", + "rust_decimal", + "serde", + "sha1", + "sha2 0.10.8", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "time", + "tracing", + "uuid 1.10.0", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fa91a732d854c5d7726349bb4bb879bb9478993ceb764247660aee25f67c2f8" +dependencies = [ + "atoi", + "base64 0.22.1", + "bigdecimal", + "bitflags 2.6.0", + "byteorder", + "chrono", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "hex 0.4.3", + "hkdf", + "hmac 0.12.1", + "home", + "itoa", + "log", + "md-5 0.10.6", + "memchr", + "num-bigint 0.4.6", + "once_cell", + "rand 0.8.5", + "rust_decimal", + "serde", + "serde_json", + "sha2 0.10.8", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "time", + "tracing", + "uuid 1.10.0", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5b2cf34a45953bfd3daaf3db0f7a7878ab9b7a6b91b422d24a7a9e4c857b680" +dependencies = [ + "atoi", + "chrono", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "serde_urlencoded", + "sqlx-core", + "time", + "tracing", + "url", + "uuid 1.10.0", ] [[package]] @@ -10350,6 +10698,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + [[package]] name = "uuid" version = "0.8.2" @@ -10678,7 +11032,6 @@ checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" dependencies = [ "redox_syscall 0.5.3", "wasite", - "web-sys", ] [[package]] @@ -10990,6 +11343,12 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + [[package]] name = "yasna" version = "0.5.2" diff --git a/rust/main/Cargo.toml b/rust/main/Cargo.toml index 55cfc1573a..05f390f006 100644 --- a/rust/main/Cargo.toml +++ b/rust/main/Cargo.toml @@ -34,6 +34,7 @@ async-rwlock = "1.3" auto_impl = "1.0" axum = "0.6.1" backtrace = "0.3" +cc = "1.2.2" base64 = "0.21.2" bigdecimal = "0.4.2" bincode = "1.3" @@ -80,7 +81,7 @@ hyperlane-cosmwasm-interface = "=0.0.6-rc6" injective-protobuf = "0.2.2" injective-std = "=0.1.5" itertools = "*" -jobserver = "=0.1.26" +jobserver = "0.1.32" jsonrpc-core = "18.0" k256 = { version = "0.13.4", features = ["arithmetic", "std", "ecdsa"] } lazy_static = "1.5.0" @@ -106,14 +107,14 @@ reqwest = "0.11" ripemd = "0.1.3" rlp = "=0.5.2" rocksdb = "0.21.0" -sea-orm = { version = "0.11.1", features = [ +sea-orm = { version = "1.1.1", features = [ "sqlx-postgres", "runtime-tokio-native-tls", "with-bigdecimal", "with-time", "macros", ] } -sea-orm-migration = { version = "0.11.1", features = [ +sea-orm-migration = { version = "1.1.1", features = [ "sqlx-postgres", "runtime-tokio-native-tls", ] } diff --git a/rust/main/agents/scraper/migration/bin/generate_entities.rs b/rust/main/agents/scraper/migration/bin/generate_entities.rs index 9481ece179..b8276e659d 100644 --- a/rust/main/agents/scraper/migration/bin/generate_entities.rs +++ b/rust/main/agents/scraper/migration/bin/generate_entities.rs @@ -7,7 +7,7 @@ mod common; const RAW_DB_PATH: &str = "./agents/scraper/src/db/generated"; const DOCKER_NAME: &str = "scraper-entity-generator"; -const CLI_VERSION: &str = "0.12.3"; +const CLI_VERSION: &str = "1.1.1"; struct PostgresDockerContainer; diff --git a/rust/main/agents/scraper/migration/bin/init_db.rs b/rust/main/agents/scraper/migration/bin/init_db.rs index 661080336f..2d51a7c83f 100644 --- a/rust/main/agents/scraper/migration/bin/init_db.rs +++ b/rust/main/agents/scraper/migration/bin/init_db.rs @@ -4,7 +4,7 @@ use common::*; mod common; -#[tokio::main] +#[tokio::main(flavor = "current_thread")] async fn main() -> Result<(), DbErr> { let db = init().await?; diff --git a/rust/main/agents/scraper/migration/bin/recreate_db.rs b/rust/main/agents/scraper/migration/bin/recreate_db.rs index ed6b0ac48f..1bcbed04dd 100644 --- a/rust/main/agents/scraper/migration/bin/recreate_db.rs +++ b/rust/main/agents/scraper/migration/bin/recreate_db.rs @@ -3,7 +3,7 @@ use common::*; mod common; -#[tokio::main] +#[tokio::main(flavor = "current_thread")] async fn main() -> Result<(), DbErr> { let db = init().await?; diff --git a/rust/main/agents/scraper/migration/src/l20230309_types.rs b/rust/main/agents/scraper/migration/src/l20230309_types.rs index 06c22bf913..39cf811185 100644 --- a/rust/main/agents/scraper/migration/src/l20230309_types.rs +++ b/rust/main/agents/scraper/migration/src/l20230309_types.rs @@ -2,10 +2,10 @@ use sea_orm_migration::prelude::*; /// Hashes are to be stored as binary. #[allow(non_upper_case_globals)] -pub const Hash: ColumnType = ColumnType::Binary(BlobSize::Tiny); +pub const Hash: ColumnType = ColumnType::Blob; /// Addresses are to be stored as binary. #[allow(non_upper_case_globals)] -pub const Address: ColumnType = ColumnType::Binary(BlobSize::Tiny); +pub const Address: ColumnType = ColumnType::Blob; /// 256-bit integer as base-10 digits: ceil(log_10(2^256)) const SIGNIFICANT_DIGITS_IN_256_BIT_INTEGER: u32 = 78; diff --git a/rust/main/agents/scraper/migration/src/m20230309_000003_create_table_transaction.rs b/rust/main/agents/scraper/migration/src/m20230309_000003_create_table_transaction.rs index 283968c6d6..b797c31118 100644 --- a/rust/main/agents/scraper/migration/src/m20230309_000003_create_table_transaction.rs +++ b/rust/main/agents/scraper/migration/src/m20230309_000003_create_table_transaction.rs @@ -53,11 +53,8 @@ impl MigrationTrait for Migration { .col(ColumnDef::new_with_type(Transaction::GasUsed, Wei).not_null()) .col(ColumnDef::new_with_type(Transaction::CumulativeGasUsed, Wei).not_null()) .col( - ColumnDef::new_with_type( - Transaction::RawInputData, - ColumnType::Binary(BlobSize::Blob(None)), - ) - .borrow_mut(), + ColumnDef::new_with_type(Transaction::RawInputData, ColumnType::Blob) + .borrow_mut(), ) .foreign_key( ForeignKey::create() diff --git a/rust/main/agents/scraper/src/db/generated/block.rs b/rust/main/agents/scraper/src/db/generated/block.rs index 098cb839c2..772cf64569 100644 --- a/rust/main/agents/scraper/src/db/generated/block.rs +++ b/rust/main/agents/scraper/src/db/generated/block.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 use sea_orm::entity::prelude::*; @@ -56,7 +56,7 @@ impl ColumnTrait for Column { Self::Id => ColumnType::BigInteger.def(), Self::TimeCreated => ColumnType::DateTime.def(), Self::Domain => ColumnType::Integer.def(), - Self::Hash => ColumnType::Binary(BlobSize::Blob(None)).def().unique(), + Self::Hash => ColumnType::VarBinary(StringLen::None).def().unique(), Self::Height => ColumnType::BigInteger.def(), Self::Timestamp => ColumnType::DateTime.def(), } diff --git a/rust/main/agents/scraper/src/db/generated/cursor.rs b/rust/main/agents/scraper/src/db/generated/cursor.rs index f04b47428c..0db99f422f 100644 --- a/rust/main/agents/scraper/src/db/generated/cursor.rs +++ b/rust/main/agents/scraper/src/db/generated/cursor.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 use sea_orm::entity::prelude::*; diff --git a/rust/main/agents/scraper/src/db/generated/delivered_message.rs b/rust/main/agents/scraper/src/db/generated/delivered_message.rs index a3da2fe6de..0de9bde96a 100644 --- a/rust/main/agents/scraper/src/db/generated/delivered_message.rs +++ b/rust/main/agents/scraper/src/db/generated/delivered_message.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 use sea_orm::entity::prelude::*; @@ -57,9 +57,9 @@ impl ColumnTrait for Column { match self { Self::Id => ColumnType::BigInteger.def(), Self::TimeCreated => ColumnType::DateTime.def(), - Self::MsgId => ColumnType::Binary(BlobSize::Blob(None)).def().unique(), + Self::MsgId => ColumnType::VarBinary(StringLen::None).def().unique(), Self::Domain => ColumnType::Integer.def(), - Self::DestinationMailbox => ColumnType::Binary(BlobSize::Blob(None)).def(), + Self::DestinationMailbox => ColumnType::VarBinary(StringLen::None).def(), Self::DestinationTxId => ColumnType::BigInteger.def(), Self::Sequence => ColumnType::BigInteger.def().null(), } diff --git a/rust/main/agents/scraper/src/db/generated/domain.rs b/rust/main/agents/scraper/src/db/generated/domain.rs index cf1aaa2a7c..3015d99750 100644 --- a/rust/main/agents/scraper/src/db/generated/domain.rs +++ b/rust/main/agents/scraper/src/db/generated/domain.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 use sea_orm::entity::prelude::*; @@ -52,7 +52,6 @@ pub enum Relation { Block, Cursor, DeliveredMessage, - GasPayment, Message, } @@ -78,7 +77,6 @@ impl RelationTrait for Relation { Self::Block => Entity::has_many(super::block::Entity).into(), Self::Cursor => Entity::has_many(super::cursor::Entity).into(), Self::DeliveredMessage => Entity::has_many(super::delivered_message::Entity).into(), - Self::GasPayment => Entity::has_many(super::gas_payment::Entity).into(), Self::Message => Entity::has_many(super::message::Entity).into(), } } @@ -102,12 +100,6 @@ impl Related for Entity { } } -impl Related for Entity { - fn to() -> RelationDef { - Relation::GasPayment.def() - } -} - impl Related for Entity { fn to() -> RelationDef { Relation::Message.def() diff --git a/rust/main/agents/scraper/src/db/generated/gas_payment.rs b/rust/main/agents/scraper/src/db/generated/gas_payment.rs index 5df74b084a..859bbb2df2 100644 --- a/rust/main/agents/scraper/src/db/generated/gas_payment.rs +++ b/rust/main/agents/scraper/src/db/generated/gas_payment.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 use sea_orm::entity::prelude::*; @@ -11,6 +11,8 @@ impl EntityName for Entity { } } +/// @NOTE: Replaced all occurrences of `Decimal` with `BigDecimal` +/// due to the following issue: https://github.com/SeaQL/sea-orm/issues/1530 #[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel, Eq)] pub struct Model { pub id: i64, @@ -57,8 +59,8 @@ impl PrimaryKeyTrait for PrimaryKey { #[derive(Copy, Clone, Debug, EnumIter)] pub enum Relation { - Domain, - Origin, + Domain2, + Domain1, Transaction, } @@ -69,16 +71,14 @@ impl ColumnTrait for Column { Self::Id => ColumnType::BigInteger.def(), Self::TimeCreated => ColumnType::DateTime.def(), Self::Domain => ColumnType::Integer.def(), - Self::MsgId => ColumnType::Binary(BlobSize::Blob(None)).def(), + Self::MsgId => ColumnType::VarBinary(StringLen::None).def(), Self::Payment => ColumnType::Decimal(Some((78u32, 0u32))).def(), Self::GasAmount => ColumnType::Decimal(Some((78u32, 0u32))).def(), Self::TxId => ColumnType::BigInteger.def(), Self::LogIndex => ColumnType::BigInteger.def(), Self::Origin => ColumnType::Integer.def(), Self::Destination => ColumnType::Integer.def(), - Self::InterchainGasPaymaster => { - ColumnType::Binary(sea_orm::sea_query::BlobSize::Blob(None)).def() - } + Self::InterchainGasPaymaster => ColumnType::VarBinary(StringLen::None).def(), Self::Sequence => ColumnType::BigInteger.def().null(), } } @@ -87,11 +87,11 @@ impl ColumnTrait for Column { impl RelationTrait for Relation { fn def(&self) -> RelationDef { match self { - Self::Domain => Entity::belongs_to(super::domain::Entity) + Self::Domain2 => Entity::belongs_to(super::domain::Entity) .from(Column::Domain) .to(super::domain::Column::Id) .into(), - Self::Origin => Entity::belongs_to(super::domain::Entity) + Self::Domain1 => Entity::belongs_to(super::domain::Entity) .from(Column::Origin) .to(super::domain::Column::Id) .into(), @@ -103,12 +103,6 @@ impl RelationTrait for Relation { } } -impl Related for Entity { - fn to() -> RelationDef { - Relation::Domain.def() - } -} - impl Related for Entity { fn to() -> RelationDef { Relation::Transaction.def() diff --git a/rust/main/agents/scraper/src/db/generated/message.rs b/rust/main/agents/scraper/src/db/generated/message.rs index e06ea5de15..dbb11661fb 100644 --- a/rust/main/agents/scraper/src/db/generated/message.rs +++ b/rust/main/agents/scraper/src/db/generated/message.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 use sea_orm::entity::prelude::*; @@ -65,14 +65,14 @@ impl ColumnTrait for Column { match self { Self::Id => ColumnType::BigInteger.def(), Self::TimeCreated => ColumnType::DateTime.def(), - Self::MsgId => ColumnType::Binary(BlobSize::Blob(None)).def(), + Self::MsgId => ColumnType::VarBinary(StringLen::None).def(), Self::Origin => ColumnType::Integer.def(), Self::Destination => ColumnType::Integer.def(), Self::Nonce => ColumnType::Integer.def(), - Self::Sender => ColumnType::Binary(BlobSize::Blob(None)).def(), - Self::Recipient => ColumnType::Binary(BlobSize::Blob(None)).def(), - Self::MsgBody => ColumnType::Binary(BlobSize::Blob(None)).def().null(), - Self::OriginMailbox => ColumnType::Binary(BlobSize::Blob(None)).def(), + Self::Sender => ColumnType::VarBinary(StringLen::None).def(), + Self::Recipient => ColumnType::VarBinary(StringLen::None).def(), + Self::MsgBody => ColumnType::VarBinary(StringLen::None).def().null(), + Self::OriginMailbox => ColumnType::VarBinary(StringLen::None).def(), Self::OriginTxId => ColumnType::BigInteger.def(), } } diff --git a/rust/main/agents/scraper/src/db/generated/mod.rs b/rust/main/agents/scraper/src/db/generated/mod.rs index 929adca9d6..8617f9e8c5 100644 --- a/rust/main/agents/scraper/src/db/generated/mod.rs +++ b/rust/main/agents/scraper/src/db/generated/mod.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 pub mod prelude; diff --git a/rust/main/agents/scraper/src/db/generated/prelude.rs b/rust/main/agents/scraper/src/db/generated/prelude.rs index 1280bf70da..db1f04aa1f 100644 --- a/rust/main/agents/scraper/src/db/generated/prelude.rs +++ b/rust/main/agents/scraper/src/db/generated/prelude.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 #[allow(unused_imports)] pub use super::{ block::Entity as Block, cursor::Entity as Cursor, diff --git a/rust/main/agents/scraper/src/db/generated/transaction.rs b/rust/main/agents/scraper/src/db/generated/transaction.rs index 4f1139c8c9..fd5ad5e529 100644 --- a/rust/main/agents/scraper/src/db/generated/transaction.rs +++ b/rust/main/agents/scraper/src/db/generated/transaction.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 use sea_orm::entity::prelude::*; @@ -11,6 +11,8 @@ impl EntityName for Entity { } } +/// @NOTE: Replaced all occurrences of `Decimal` with `BigDecimal` +/// due to the following issue: https://github.com/SeaQL/sea-orm/issues/1530 #[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel, Eq)] pub struct Model { pub id: i64, @@ -75,7 +77,7 @@ impl ColumnTrait for Column { match self { Self::Id => ColumnType::BigInteger.def(), Self::TimeCreated => ColumnType::DateTime.def(), - Self::Hash => ColumnType::Binary(BlobSize::Blob(None)).def().unique(), + Self::Hash => ColumnType::VarBinary(StringLen::None).def().unique(), Self::BlockId => ColumnType::BigInteger.def(), Self::GasLimit => ColumnType::Decimal(Some((78u32, 0u32))).def(), Self::MaxPriorityFeePerGas => ColumnType::Decimal(Some((78u32, 0u32))).def().null(), @@ -83,11 +85,11 @@ impl ColumnTrait for Column { Self::GasPrice => ColumnType::Decimal(Some((78u32, 0u32))).def().null(), Self::EffectiveGasPrice => ColumnType::Decimal(Some((78u32, 0u32))).def().null(), Self::Nonce => ColumnType::BigInteger.def(), - Self::Sender => ColumnType::Binary(BlobSize::Blob(None)).def(), - Self::Recipient => ColumnType::Binary(BlobSize::Blob(None)).def().null(), + Self::Sender => ColumnType::VarBinary(StringLen::None).def(), + Self::Recipient => ColumnType::VarBinary(StringLen::None).def().null(), Self::GasUsed => ColumnType::Decimal(Some((78u32, 0u32))).def(), Self::CumulativeGasUsed => ColumnType::Decimal(Some((78u32, 0u32))).def(), - Self::RawInputData => ColumnType::Binary(BlobSize::Blob(None)).def().null(), + Self::RawInputData => ColumnType::VarBinary(StringLen::None).def().null(), } } } diff --git a/rust/main/hyperlane-base/Cargo.toml b/rust/main/hyperlane-base/Cargo.toml index ef25d99405..cbffa8a05f 100644 --- a/rust/main/hyperlane-base/Cargo.toml +++ b/rust/main/hyperlane-base/Cargo.toml @@ -44,6 +44,7 @@ warp.workspace = true ya-gcp.workspace = true backtrace = { workspace = true, optional = true } +cc = { workspace = true, optional = true } backtrace-oneline = { path = "../utils/backtrace-oneline", optional = true } ethers-prometheus = { path = "../ethers-prometheus", features = ["serde"] } @@ -73,6 +74,6 @@ vergen = { version = "8.3.2", features = ["build", "git", "gitcl"] } [features] default = ["oneline-errors", "color-eyre"] -oneline-eyre = ["backtrace-oneline", "backtrace"] +oneline-eyre = ["backtrace-oneline", "backtrace", "cc"] oneline-errors = ["oneline-eyre"] test-utils = ["dep:tempfile"] diff --git a/rust/main/rust-toolchain b/rust/main/rust-toolchain index 7f466bd2df..bbf217f21b 100644 --- a/rust/main/rust-toolchain +++ b/rust/main/rust-toolchain @@ -1,3 +1,3 @@ [toolchain] -channel = "1.80.1" +channel = "1.81.0" profile = "default" diff --git a/rust/sealevel/Cargo.toml b/rust/sealevel/Cargo.toml index 145b9bfcc2..2beb4bd3d5 100644 --- a/rust/sealevel/Cargo.toml +++ b/rust/sealevel/Cargo.toml @@ -48,7 +48,6 @@ borsh = "0.9" bs58 = "0.5.0" bytes = "1" clap = "4" -color-eyre = "0.6" config = "0.13.3" console-subscriber = "0.2.0" convert_case = "0.6" @@ -94,17 +93,6 @@ reqwest = "0.11" ripemd = "0.1.3" rlp = "=0.5.2" rocksdb = "0.21.0" -sea-orm = { version = "0.11.1", features = [ - "sqlx-postgres", - "runtime-tokio-native-tls", - "with-bigdecimal", - "with-time", - "macros", -] } -sea-orm-migration = { version = "0.11.1", features = [ - "sqlx-postgres", - "runtime-tokio-native-tls", -] } semver = "1.0" serde = { version = "1.0", features = ["derive"] } serde_bytes = "0.11" From 0fb98d867e11361cc2312bb8c55e0ee67c8c0bc3 Mon Sep 17 00:00:00 2001 From: Mantas-M <120508669+Mantas-M@users.noreply.github.com> Date: Tue, 17 Dec 2024 12:06:01 +0000 Subject: [PATCH 16/32] feat: cursor metrics (#4892) ### Description Adds metrics to ForwardBackward cursor in order to be able to monitor sync progress more effectively. Introduced metrics - `cursor_current_block`: Which block is the forward and backward cursor indexing currently for each event ![Cursor Current Block BSC](https://github.com/user-attachments/assets/5044d7aa-1a26-4477-a48a-c945966c5015) _Example above shows all event average_ - `cursor_current_sequence`: Which sequence is the cursor currently on for a specific event ![Cursor Current Sequence](https://github.com/user-attachments/assets/5396891d-3d6e-4830-8058-e80ce8cc9efd) _As in the graph for Base above, we can see that the Forward cursor only begins showing data if there are new events to index since agent launch_ - `cursor_max_sequence`: The max sequence the cursor can reach image ### Related issues - Fixes #4715 ### Backward compatibility Yes ### Testing Manual --------- Co-authored-by: Danil Nemirovsky --- .../src/contract_sync/cursors/metrics.rs | 65 +++++++++ .../src/contract_sync/cursors/mod.rs | 25 +++- .../src/contract_sync/cursors/rate_limited.rs | 109 +++++++++++--- .../cursors/sequence_aware/backward.rs | 68 +++++++-- .../cursors/sequence_aware/forward.rs | 134 ++++++++++++++++-- .../cursors/sequence_aware/mod.rs | 37 ++++- .../src/contract_sync/metrics.rs | 12 +- .../hyperlane-base/src/contract_sync/mod.rs | 4 + 8 files changed, 404 insertions(+), 50 deletions(-) create mode 100644 rust/main/hyperlane-base/src/contract_sync/cursors/metrics.rs diff --git a/rust/main/hyperlane-base/src/contract_sync/cursors/metrics.rs b/rust/main/hyperlane-base/src/contract_sync/cursors/metrics.rs new file mode 100644 index 0000000000..8918da99f9 --- /dev/null +++ b/rust/main/hyperlane-base/src/contract_sync/cursors/metrics.rs @@ -0,0 +1,65 @@ +use prometheus::IntGaugeVec; + +use crate::CoreMetrics; + +/// Struct encapsulating prometheus metrics used by SequenceAware and RateLimited cursors. +#[derive(Debug, Clone)] +pub struct CursorMetrics { + /// Current block of the cursor. + /// Used by both sequence aware and rate limited cursors. + /// Labels: + /// - `event_type`: the event type the cursor is indexing. Could be anything implementing `Indexable`. + /// - `chain`: Chain the cursor is collecting data from. + /// - `cursor_type`: The type of cursor. E.g. `forward_sequenced`, `backward_sequenced`, `forward_rate_limited`. + pub cursor_current_block: IntGaugeVec, + + /// Current sequence of the cursor. + /// Only used by sequence aware cursors. + /// Labels: + /// - `event_type`: the event type the cursor is indexing. Could be anything implementing `Indexable`. + /// - `chain`: Chain the cursor is collecting data from. + /// - `cursor_type`: The type of cursor. E.g. `forward_sequenced`, `backward_sequenced`, `forward_rate_limited`. + pub cursor_current_sequence: IntGaugeVec, + + /// Max sequence of the cursor. + /// Only used by sequence aware cursors. + /// Labels: + /// - `event_type`: the event type the cursor is indexing. Could be anything implementing `Indexable`. + /// - `chain`: Chain the cursor is collecting data from. + pub cursor_max_sequence: IntGaugeVec, +} + +impl CursorMetrics { + /// Instantiate a new CursorMetrics object. + pub fn new(metrics: &CoreMetrics) -> Self { + let cursor_current_block = metrics + .new_int_gauge( + "cursor_current_block", + "Current block of the cursor", + &["event_type", "chain", "cursor_type"], + ) + .expect("failed to register cursor_current_block metric"); + + let cursor_current_sequence = metrics + .new_int_gauge( + "cursor_current_sequence", + "Current sequence of the cursor", + &["event_type", "chain", "cursor_type"], + ) + .expect("failed to register cursor_current_sequence metric"); + + let cursor_max_sequence = metrics + .new_int_gauge( + "cursor_max_sequence", + "Max sequence of the cursor", + &["event_type", "chain"], + ) + .expect("failed to register cursor_max_sequence metric"); + + CursorMetrics { + cursor_current_block, + cursor_current_sequence, + cursor_max_sequence, + } + } +} diff --git a/rust/main/hyperlane-base/src/contract_sync/cursors/mod.rs b/rust/main/hyperlane-base/src/contract_sync/cursors/mod.rs index 563d0fcc74..2fb36453e4 100644 --- a/rust/main/hyperlane-base/src/contract_sync/cursors/mod.rs +++ b/rust/main/hyperlane-base/src/contract_sync/cursors/mod.rs @@ -1,13 +1,16 @@ -pub(crate) mod sequence_aware; - use hyperlane_core::{ Delivery, HyperlaneDomainProtocol, HyperlaneMessage, InterchainGasPayment, MerkleTreeInsertion, }; + +pub(crate) mod sequence_aware; pub(crate) use sequence_aware::ForwardBackwardSequenceAwareSyncCursor; pub(crate) mod rate_limited; pub(crate) use rate_limited::RateLimitedContractSyncCursor; +pub(crate) mod metrics; +pub(crate) use metrics::CursorMetrics; + pub enum CursorType { SequenceAware, RateLimited, @@ -24,6 +27,8 @@ pub trait Indexable { fn broadcast_channel_size() -> Option { None } + /// Returns the name of the type for metrics. + fn name() -> &'static str; } impl Indexable for HyperlaneMessage { @@ -40,6 +45,10 @@ impl Indexable for HyperlaneMessage { fn broadcast_channel_size() -> Option { TX_ID_CHANNEL_CAPACITY } + + fn name() -> &'static str { + "hyperlane_message" + } } impl Indexable for InterchainGasPayment { @@ -51,6 +60,10 @@ impl Indexable for InterchainGasPayment { HyperlaneDomainProtocol::Cosmos => CursorType::RateLimited, } } + + fn name() -> &'static str { + "interchain_gas_payment" + } } impl Indexable for MerkleTreeInsertion { @@ -62,6 +75,10 @@ impl Indexable for MerkleTreeInsertion { HyperlaneDomainProtocol::Cosmos => CursorType::SequenceAware, } } + + fn name() -> &'static str { + "merkle_tree_insertion" + } } impl Indexable for Delivery { @@ -73,4 +90,8 @@ impl Indexable for Delivery { HyperlaneDomainProtocol::Cosmos => CursorType::RateLimited, } } + + fn name() -> &'static str { + "delivery" + } } diff --git a/rust/main/hyperlane-base/src/contract_sync/cursors/rate_limited.rs b/rust/main/hyperlane-base/src/contract_sync/cursors/rate_limited.rs index 9428d6bfd4..88c5784824 100644 --- a/rust/main/hyperlane-base/src/contract_sync/cursors/rate_limited.rs +++ b/rust/main/hyperlane-base/src/contract_sync/cursors/rate_limited.rs @@ -8,12 +8,16 @@ use std::{ use async_trait::async_trait; use derive_new::new; use eyre::Result; + use hyperlane_core::{ - ContractSyncCursor, CursorAction, HyperlaneWatermarkedLogStore, Indexed, Indexer, LogMeta, + ContractSyncCursor, CursorAction, HyperlaneDomain, HyperlaneWatermarkedLogStore, Indexed, + Indexer, LogMeta, }; use crate::contract_sync::eta_calculator::SyncerEtaCalculator; +use super::{CursorMetrics, Indexable}; + /// Time window for the moving average used in the eta calculator in seconds. const ETA_TIME_WINDOW: f64 = 2. * 60.; @@ -83,12 +87,16 @@ pub(crate) struct RateLimitedContractSyncCursor { last_tip_update: Instant, eta_calculator: SyncerEtaCalculator, sync_state: SyncState, + metrics: Arc, + domain: HyperlaneDomain, } -impl RateLimitedContractSyncCursor { +impl RateLimitedContractSyncCursor { /// Construct a new contract sync helper. pub async fn new( indexer: Arc>, + metrics: Arc, + domain: &HyperlaneDomain, store: Arc>, chunk_size: u32, initial_height: u32, @@ -107,6 +115,8 @@ impl RateLimitedContractSyncCursor { // The rate limited cursor currently only syncs in the forward direction. SyncDirection::Forward, ), + metrics, + domain: domain.to_owned(), }) } @@ -155,12 +165,24 @@ impl RateLimitedContractSyncCursor { Duration::from_secs(0) } } + + async fn update_metrics(&self) { + let latest_block = self.latest_queried_block(); + let chain_name = self.domain.name(); + // The rate limited cursor currently only syncs in the forward direction. + let label_values = &[T::name(), chain_name, "forward_rate_limited"]; + + self.metrics + .cursor_current_block + .with_label_values(label_values) + .set(latest_block as i64); + } } #[async_trait] impl ContractSyncCursor for RateLimitedContractSyncCursor where - T: Send + Sync + Debug + 'static, + T: Indexable + Send + Sync + Debug + 'static, { async fn next_action(&mut self) -> Result<(CursorAction, Duration)> { let eta = self.sync_eta(); @@ -187,6 +209,7 @@ where _: Vec<(Indexed, LogMeta)>, range: RangeInclusive, ) -> Result<()> { + self.update_metrics().await; // Store a relatively conservative view of the high watermark, which should allow a single watermark to be // safely shared across multiple cursors, so long as they are running sufficiently in sync self.store @@ -216,12 +239,13 @@ where } } -impl Debug for RateLimitedContractSyncCursor { +impl Debug for RateLimitedContractSyncCursor { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.debug_struct("RateLimitedContractSyncCursor") .field("tip", &self.tip) .field("last_tip_update", &self.last_tip_update) .field("sync_state", &self.sync_state) + .field("domain", &self.domain) .finish() } } @@ -229,50 +253,92 @@ impl Debug for RateLimitedContractSyncCursor { #[cfg(test)] pub(crate) mod test { use super::*; - use hyperlane_core::{ChainResult, HyperlaneLogStore}; + use crate::cursors::CursorType; + use hyperlane_core::{ChainResult, HyperlaneDomainProtocol, HyperlaneLogStore}; use mockall::{self, Sequence}; const CHUNK_SIZE: u32 = 10; const INITIAL_HEIGHT: u32 = 0; + #[derive(Debug, Clone)] + struct MockIndexable; + + unsafe impl Sync for MockIndexable {} + unsafe impl Send for MockIndexable {} + + impl Indexable for MockIndexable { + fn indexing_cursor(_domain: HyperlaneDomainProtocol) -> CursorType { + CursorType::RateLimited + } + + fn name() -> &'static str { + "mock_indexable" + } + } + mockall::mock! { - pub Indexer {} + pub Indexer {} - impl Debug for Indexer { + impl Debug for Indexer { fn fmt<'a>(&self, f: &mut std::fmt::Formatter<'a>) -> std::fmt::Result; } #[async_trait] - impl Indexer<()> for Indexer { - async fn fetch_logs_in_range(&self, range: RangeInclusive) -> ChainResult , LogMeta)>>; + impl Indexer for Indexer { + async fn fetch_logs_in_range(&self, range: RangeInclusive) -> ChainResult, LogMeta)>>; async fn get_finalized_block_number(&self) -> ChainResult; } } mockall::mock! { - pub Db {} + pub Db {} - impl Debug for Db { + impl Debug for Db { fn fmt<'a>(&self, f: &mut std::fmt::Formatter<'a>) -> std::fmt::Result; } #[async_trait] - impl HyperlaneLogStore<()> for Db { - async fn store_logs(&self, logs: &[(hyperlane_core::Indexed<()> , LogMeta)]) -> Result; + impl HyperlaneLogStore for Db { + async fn store_logs(&self, logs: &[(hyperlane_core::Indexed, LogMeta)]) -> Result; } #[async_trait] - impl HyperlaneWatermarkedLogStore<()> for Db { + impl HyperlaneWatermarkedLogStore for Db { async fn retrieve_high_watermark(&self) -> Result>; async fn store_high_watermark(&self, block_number: u32) -> Result<()>; } } - async fn mock_rate_limited_cursor( + fn mock_cursor_metrics() -> CursorMetrics { + CursorMetrics { + cursor_current_block: prometheus::IntGaugeVec::new( + prometheus::Opts::new("cursor_current_block", "Current block of the cursor") + .namespace("mock") + .subsystem("cursor"), + &["event_type", "chain", "cursor_type"], + ) + .unwrap(), + cursor_current_sequence: prometheus::IntGaugeVec::new( + prometheus::Opts::new("cursor_current_sequence", "Current sequence of the cursor") + .namespace("mock") + .subsystem("cursor"), + &["event_type", "chain", "cursor_type"], + ) + .unwrap(), + cursor_max_sequence: prometheus::IntGaugeVec::new( + prometheus::Opts::new("cursor_max_sequence", "Max sequence of the cursor") + .namespace("mock") + .subsystem("cursor"), + &["event_type", "chain"], + ) + .unwrap(), + } + } + async fn mock_rate_limited_cursor( custom_chain_tips: Option>, - ) -> RateLimitedContractSyncCursor<()> { + ) -> RateLimitedContractSyncCursor { let mut seq = Sequence::new(); - let mut indexer = MockIndexer::new(); + let mut indexer = MockIndexer::::new(); match custom_chain_tips { Some(chain_tips) => { for tip in chain_tips { @@ -294,11 +360,14 @@ pub(crate) mod test { } let mut db = MockDb::new(); + let metrics = mock_cursor_metrics(); db.expect_store_high_watermark().returning(|_| Ok(())); let chunk_size = CHUNK_SIZE; let initial_height = INITIAL_HEIGHT; RateLimitedContractSyncCursor::new( Arc::new(indexer), + Arc::new(metrics), + &HyperlaneDomain::new_test_domain("test"), Arc::new(db), chunk_size, initial_height, @@ -309,7 +378,7 @@ pub(crate) mod test { #[tokio::test] async fn test_next_action_retries_if_update_isnt_called() { - let mut cursor = mock_rate_limited_cursor(None).await; + let mut cursor = mock_rate_limited_cursor::(None).await; let (action_1, _) = cursor.next_action().await.unwrap(); let (_action_2, _) = cursor.next_action().await.unwrap(); @@ -319,7 +388,7 @@ pub(crate) mod test { #[tokio::test] async fn test_next_action_changes_if_update_is_called() { - let mut cursor = mock_rate_limited_cursor(None).await; + let mut cursor = mock_rate_limited_cursor::(None).await; let (action_1, _) = cursor.next_action().await.unwrap(); let range = match action_1 { @@ -336,7 +405,7 @@ pub(crate) mod test { #[tokio::test] async fn test_next_action_sleeps_if_tip_is_not_updated() { let chain_tips = vec![10]; - let mut cursor = mock_rate_limited_cursor(Some(chain_tips)).await; + let mut cursor = mock_rate_limited_cursor::(Some(chain_tips)).await; let (action, _) = cursor.next_action().await.unwrap(); assert!(matches!(action, CursorAction::Sleep(_))); } diff --git a/rust/main/hyperlane-base/src/contract_sync/cursors/sequence_aware/backward.rs b/rust/main/hyperlane-base/src/contract_sync/cursors/sequence_aware/backward.rs index 179ae3dd3c..d7c9396ca9 100644 --- a/rust/main/hyperlane-base/src/contract_sync/cursors/sequence_aware/backward.rs +++ b/rust/main/hyperlane-base/src/contract_sync/cursors/sequence_aware/backward.rs @@ -4,15 +4,19 @@ use std::{collections::HashSet, fmt::Debug, ops::RangeInclusive, sync::Arc, time use async_trait::async_trait; use eyre::Result; -use hyperlane_core::{ - indexed_to_sequence_indexed_array, ContractSyncCursor, CursorAction, - HyperlaneSequenceAwareIndexerStoreReader, IndexMode, Indexed, LogMeta, SequenceIndexed, -}; use itertools::Itertools; +use maplit::hashmap; use tokio::time::sleep; use tracing::{debug, instrument, warn}; -use super::{LastIndexedSnapshot, TargetSnapshot}; +use hyperlane_core::{ + indexed_to_sequence_indexed_array, ContractSyncCursor, CursorAction, HyperlaneDomain, + HyperlaneSequenceAwareIndexerStoreReader, IndexMode, Indexed, LogMeta, SequenceIndexed, +}; + +use crate::cursors::Indexable; + +use super::{CursorMetrics, LastIndexedSnapshot, MetricsData, TargetSnapshot}; const MAX_BACKWARD_SYNC_BLOCKING_TIME: Duration = Duration::from_secs(5); @@ -33,6 +37,10 @@ pub(crate) struct BackwardSequenceAwareSyncCursor { current_indexing_snapshot: Option, /// The mode of indexing to use. index_mode: IndexMode, + /// The domain of the cursor. + domain: HyperlaneDomain, + /// Cursor metrics. + metrics: Arc, } impl Debug for BackwardSequenceAwareSyncCursor { @@ -42,13 +50,14 @@ impl Debug for BackwardSequenceAwareSyncCursor { .field("last_indexed_snapshot", &self.last_indexed_snapshot) .field("current_indexing_snapshot", &self.current_indexing_snapshot) .field("index_mode", &self.index_mode) + .field("domain", &self.domain) .finish() } } -impl BackwardSequenceAwareSyncCursor { +impl BackwardSequenceAwareSyncCursor { #[instrument( - skip(store), + skip(store, metrics_data), fields(chunk_size, next_sequence, start_block, index_mode), ret )] @@ -58,6 +67,7 @@ impl BackwardSequenceAwareSyncCursor { current_sequence_count: u32, start_block: u32, index_mode: IndexMode, + metrics_data: MetricsData, ) -> Self { // If the current sequence count is 0, we haven't indexed anything yet. // Otherwise, consider the current sequence count as the last indexed snapshot, @@ -66,6 +76,7 @@ impl BackwardSequenceAwareSyncCursor { sequence: (current_sequence_count > 0).then_some(current_sequence_count), at_block: start_block, }; + let MetricsData { domain, metrics } = metrics_data; Self { chunk_size, @@ -73,9 +84,16 @@ impl BackwardSequenceAwareSyncCursor { current_indexing_snapshot: last_indexed_snapshot.previous_target(), last_indexed_snapshot, index_mode, + domain, + metrics, } } + /// Get the last indexed sequence or 0 if no logs have been indexed yet. + pub fn last_sequence(&self) -> u32 { + self.last_indexed_snapshot.sequence.unwrap_or(0) + } + /// Gets the next range of logs to query. /// If the cursor is fully synced, this returns None. /// Otherwise, it returns the next range to query, either by block or sequence depending on the mode. @@ -325,10 +343,31 @@ impl BackwardSequenceAwareSyncCursor { fn rewind(&mut self) { self.current_indexing_snapshot = self.last_indexed_snapshot.previous_target(); } + + /// Updates the cursor metrics. + async fn update_metrics(&self) { + let labels = hashmap! { + "event_type" => T::name(), + "chain" => self.domain.name(), + "cursor_type" => "backward_sequenced", + }; + + let latest_block = self.latest_queried_block(); + self.metrics + .cursor_current_block + .with(&labels) + .set(latest_block as i64); + + let sequence = self.last_sequence(); + self.metrics + .cursor_current_sequence + .with(&labels) + .set(sequence as i64); + } } #[async_trait] -impl ContractSyncCursor +impl ContractSyncCursor for BackwardSequenceAwareSyncCursor { async fn next_action(&mut self) -> Result<(CursorAction, Duration)> { @@ -364,6 +403,7 @@ impl ContractSyncCursor logs: Vec<(Indexed, LogMeta)>, range: RangeInclusive, ) -> Result<()> { + self.update_metrics().await; let Some(current_indexing_snapshot) = self.current_indexing_snapshot.clone() else { // We're synced, no need to update at all. return Ok(()); @@ -400,6 +440,8 @@ impl ContractSyncCursor #[cfg(test)] mod test { + use hyperlane_core::HyperlaneDomain; + use super::super::forward::test::*; use super::*; @@ -435,12 +477,17 @@ mod test { ], }); + let metrics_data = MetricsData { + domain: HyperlaneDomain::new_test_domain("test"), + metrics: Arc::new(mock_cursor_metrics()), + }; let mut cursor = BackwardSequenceAwareSyncCursor::new( chunk_size, db, INITIAL_SEQUENCE_COUNT, INITIAL_START_BLOCK, mode, + metrics_data, ); // Skip any already indexed logs and sanity check we start at the correct spot. @@ -767,12 +814,17 @@ mod test { .collect(), }); + let metrics_data = MetricsData { + domain: HyperlaneDomain::new_test_domain("test"), + metrics: Arc::new(mock_cursor_metrics()), + }; let mut cursor = BackwardSequenceAwareSyncCursor::new( CHUNK_SIZE, db, INITIAL_SEQUENCE_COUNT, INITIAL_START_BLOCK, INDEX_MODE, + metrics_data, ); // We're fully synced, so expect no range diff --git a/rust/main/hyperlane-base/src/contract_sync/cursors/sequence_aware/forward.rs b/rust/main/hyperlane-base/src/contract_sync/cursors/sequence_aware/forward.rs index 967f4e6053..79917dd663 100644 --- a/rust/main/hyperlane-base/src/contract_sync/cursors/sequence_aware/forward.rs +++ b/rust/main/hyperlane-base/src/contract_sync/cursors/sequence_aware/forward.rs @@ -7,15 +7,19 @@ use std::{ use async_trait::async_trait; use eyre::Result; +use itertools::Itertools; +use maplit::hashmap; +use tracing::{debug, instrument, warn}; + use hyperlane_core::{ - indexed_to_sequence_indexed_array, ContractSyncCursor, CursorAction, + indexed_to_sequence_indexed_array, ContractSyncCursor, CursorAction, HyperlaneDomain, HyperlaneSequenceAwareIndexerStoreReader, IndexMode, Indexed, LogMeta, SequenceAwareIndexer, SequenceIndexed, }; -use itertools::Itertools; -use tracing::{debug, instrument, warn}; -use super::{LastIndexedSnapshot, TargetSnapshot}; +use crate::cursors::Indexable; + +use super::{CursorMetrics, LastIndexedSnapshot, MetricsData, TargetSnapshot}; /// A sequence-aware cursor that syncs forwards in perpetuity. pub(crate) struct ForwardSequenceAwareSyncCursor { @@ -39,6 +43,10 @@ pub(crate) struct ForwardSequenceAwareSyncCursor { target_snapshot: Option, /// The mode of indexing. index_mode: IndexMode, + /// The domain the cursor is indexing. + domain: HyperlaneDomain, + /// Cursor metrics. + metrics: Arc, } impl Debug for ForwardSequenceAwareSyncCursor { @@ -49,13 +57,14 @@ impl Debug for ForwardSequenceAwareSyncCursor { .field("current_indexing_snapshot", &self.current_indexing_snapshot) .field("target_snapshot", &self.target_snapshot) .field("index_mode", &self.index_mode) + .field("domain", &self.domain) .finish() } } -impl ForwardSequenceAwareSyncCursor { +impl ForwardSequenceAwareSyncCursor { #[instrument( - skip(store, latest_sequence_querier), + skip(store, latest_sequence_querier, metrics_data), fields(chunk_size, next_sequence, start_block, index_mode), ret )] @@ -66,6 +75,7 @@ impl ForwardSequenceAwareSyncCursor { next_sequence: u32, start_block: u32, index_mode: IndexMode, + metrics_data: MetricsData, ) -> Self { // If the next sequence is 0, we're starting from the beginning and haven't // indexed anything yet. @@ -73,6 +83,7 @@ impl ForwardSequenceAwareSyncCursor { sequence: (next_sequence > 0).then(|| next_sequence.saturating_sub(1)), at_block: start_block, }; + let MetricsData { domain, metrics } = metrics_data; Self { chunk_size, @@ -85,9 +96,27 @@ impl ForwardSequenceAwareSyncCursor { }, target_snapshot: None, index_mode, + domain, + metrics, } } + /// Get target sequence or return 0 if request failed + pub async fn target_sequence(&self) -> u32 { + let (count, _) = self + .latest_sequence_querier + .latest_sequence_count_and_tip() + .await + .ok() + .unwrap_or((None, 0)); + count.unwrap_or(0).saturating_sub(1) + } + + /// Get the last indexed sequence or 0 if no logs have been indexed yet. + pub fn last_sequence(&self) -> u32 { + self.last_indexed_snapshot.sequence.unwrap_or(0) + } + /// Gets the next range of logs to index. /// If there are no logs to index, returns `None`. /// If there are logs to index, returns the range of logs, either by sequence or block number @@ -401,10 +430,38 @@ impl ForwardSequenceAwareSyncCursor { fn rewind(&mut self) { self.current_indexing_snapshot = self.last_indexed_snapshot.next_target(); } + + // Updates the cursor metrics. + async fn update_metrics(&self) { + let mut labels = hashmap! { + "event_type" => T::name(), + "chain" => self.domain.name(), + "cursor_type" => "forward_sequenced", + }; + + let latest_block = self.latest_queried_block(); + self.metrics + .cursor_current_block + .with(&labels) + .set(latest_block as i64); + + let sequence = self.last_sequence(); + self.metrics + .cursor_current_sequence + .with(&labels) + .set(sequence as i64); + + labels.remove("cursor_type"); + let max_sequence = self.target_sequence().await as i64; + self.metrics + .cursor_max_sequence + .with(&labels) + .set(max_sequence); + } } #[async_trait] -impl ContractSyncCursor +impl ContractSyncCursor for ForwardSequenceAwareSyncCursor { async fn next_action(&mut self) -> Result<(CursorAction, Duration)> { @@ -444,6 +501,7 @@ impl ContractSyncCursor logs: Vec<(Indexed, LogMeta)>, range: RangeInclusive, ) -> Result<()> { + self.update_metrics().await; // Remove any sequence duplicates, filter out any logs preceding our current snapshot, // and sort in ascending order. let logs = indexed_to_sequence_indexed_array(logs)? @@ -469,7 +527,11 @@ impl ContractSyncCursor #[cfg(test)] pub(crate) mod test { use derive_new::new; - use hyperlane_core::{ChainResult, HyperlaneLogStore, Indexed, Indexer, Sequenced}; + use hyperlane_core::{ + ChainResult, HyperlaneDomainProtocol, HyperlaneLogStore, Indexed, Indexer, Sequenced, + }; + + use crate::cursors::CursorType; use super::*; @@ -482,7 +544,7 @@ pub(crate) mod test { #[async_trait] impl SequenceAwareIndexer for MockLatestSequenceQuerier where - T: Sequenced + Debug, + T: Sequenced + Debug + Clone + Send + Sync + Indexable + 'static, { async fn latest_sequence_count_and_tip(&self) -> ChainResult<(Option, u32)> { Ok((self.latest_sequence_count, self.tip)) @@ -492,7 +554,7 @@ pub(crate) mod test { #[async_trait] impl Indexer for MockLatestSequenceQuerier where - T: Sequenced + Debug, + T: Sequenced + Debug + Clone + Send + Sync + Indexable + 'static, { async fn fetch_logs_in_range( &self, @@ -512,15 +574,17 @@ pub(crate) mod test { } #[async_trait] - impl HyperlaneLogStore for MockHyperlaneSequenceAwareIndexerStore { + impl HyperlaneLogStore + for MockHyperlaneSequenceAwareIndexerStore + { async fn store_logs(&self, logs: &[(Indexed, LogMeta)]) -> eyre::Result { Ok(logs.len() as u32) } } #[async_trait] - impl HyperlaneSequenceAwareIndexerStoreReader - for MockHyperlaneSequenceAwareIndexerStore + impl + HyperlaneSequenceAwareIndexerStoreReader for MockHyperlaneSequenceAwareIndexerStore { async fn retrieve_by_sequence(&self, sequence: u32) -> eyre::Result> { Ok(self @@ -547,6 +611,9 @@ pub(crate) mod test { pub sequence: u32, } + unsafe impl Sync for MockSequencedData {} + unsafe impl Send for MockSequencedData {} + impl From for Indexed { fn from(val: MockSequencedData) -> Self { let sequence = val.sequence; @@ -554,12 +621,48 @@ pub(crate) mod test { } } + impl Indexable for MockSequencedData { + fn indexing_cursor(_domain: HyperlaneDomainProtocol) -> CursorType { + CursorType::SequenceAware + } + + fn name() -> &'static str { + "mock_indexable" + } + } + impl Sequenced for MockSequencedData { fn sequence(&self) -> Option { Some(self.sequence) } } + pub fn mock_cursor_metrics() -> CursorMetrics { + CursorMetrics { + cursor_current_block: prometheus::IntGaugeVec::new( + prometheus::Opts::new("cursor_current_block", "Current block of the cursor") + .namespace("mock") + .subsystem("cursor"), + &["event_type", "chain", "cursor_type"], + ) + .unwrap(), + cursor_current_sequence: prometheus::IntGaugeVec::new( + prometheus::Opts::new("cursor_current_sequence", "Current sequence of the cursor") + .namespace("mock") + .subsystem("cursor"), + &["event_type", "chain", "cursor_type"], + ) + .unwrap(), + cursor_max_sequence: prometheus::IntGaugeVec::new( + prometheus::Opts::new("cursor_max_sequence", "Max sequence of the cursor") + .namespace("mock") + .subsystem("cursor"), + &["event_type", "chain"], + ) + .unwrap(), + } + } + pub fn log_meta_with_block(block_number: u64) -> LogMeta { LogMeta { address: Default::default(), @@ -603,6 +706,10 @@ pub(crate) mod test { ], }); + let metrics_data = MetricsData { + domain: HyperlaneDomain::new_test_domain("test"), + metrics: Arc::new(mock_cursor_metrics()), + }; let mut cursor = ForwardSequenceAwareSyncCursor::new( chunk_size, latest_sequence_querier, @@ -611,6 +718,7 @@ pub(crate) mod test { 3, 70, mode, + metrics_data, ); // Skip any already indexed logs and sanity check we start at the correct spot. diff --git a/rust/main/hyperlane-base/src/contract_sync/cursors/sequence_aware/mod.rs b/rust/main/hyperlane-base/src/contract_sync/cursors/sequence_aware/mod.rs index 74e7ebe014..1e48686379 100644 --- a/rust/main/hyperlane-base/src/contract_sync/cursors/sequence_aware/mod.rs +++ b/rust/main/hyperlane-base/src/contract_sync/cursors/sequence_aware/mod.rs @@ -1,12 +1,13 @@ +use std::ops::RangeInclusive; use std::{fmt::Debug, sync::Arc, time::Duration}; use async_trait::async_trait; use eyre::Result; + use hyperlane_core::{ - ChainCommunicationError, ContractSyncCursor, CursorAction, + ChainCommunicationError, ContractSyncCursor, CursorAction, HyperlaneDomain, HyperlaneSequenceAwareIndexerStoreReader, IndexMode, Indexed, LogMeta, SequenceAwareIndexer, }; -use std::ops::RangeInclusive; mod backward; mod forward; @@ -14,6 +15,8 @@ mod forward; pub(crate) use backward::BackwardSequenceAwareSyncCursor; pub(crate) use forward::ForwardSequenceAwareSyncCursor; +use super::{CursorMetrics, Indexable}; + #[derive(Debug, Clone, PartialEq, Eq)] struct LastIndexedSnapshot { /// The last sequence that was indexed. @@ -26,6 +29,13 @@ struct LastIndexedSnapshot { pub at_block: u32, } +/// Used to avoid going over the `instrument` macro limit. +#[derive(Debug, Clone)] +struct MetricsData { + pub domain: HyperlaneDomain, + pub metrics: Arc, +} + impl LastIndexedSnapshot { fn next_target(&self) -> TargetSnapshot { TargetSnapshot { @@ -69,9 +79,13 @@ pub(crate) struct ForwardBackwardSequenceAwareSyncCursor { last_direction: SyncDirection, } -impl ForwardBackwardSequenceAwareSyncCursor { +impl + ForwardBackwardSequenceAwareSyncCursor +{ /// Construct a new contract sync helper. pub async fn new( + domain: &HyperlaneDomain, + metrics: Arc, latest_sequence_querier: Arc>, store: Arc>, chunk_size: u32, @@ -83,6 +97,10 @@ impl ForwardBackwardSequenceAwareSyncCursor { let sequence_count = sequence_count.ok_or(ChainCommunicationError::from_other_str( "Failed to query sequence", ))?; + let metrics_data = MetricsData { + domain: domain.to_owned(), + metrics, + }; let forward_cursor = ForwardSequenceAwareSyncCursor::new( chunk_size, latest_sequence_querier.clone(), @@ -90,9 +108,16 @@ impl ForwardBackwardSequenceAwareSyncCursor { sequence_count, tip, mode, + metrics_data.clone(), + ); + let backward_cursor = BackwardSequenceAwareSyncCursor::new( + chunk_size, + store, + sequence_count, + tip, + mode, + metrics_data, ); - let backward_cursor = - BackwardSequenceAwareSyncCursor::new(chunk_size, store, sequence_count, tip, mode); Ok(Self { forward: forward_cursor, backward: backward_cursor, @@ -102,7 +127,7 @@ impl ForwardBackwardSequenceAwareSyncCursor { } #[async_trait] -impl ContractSyncCursor +impl ContractSyncCursor for ForwardBackwardSequenceAwareSyncCursor { async fn next_action(&mut self) -> Result<(CursorAction, Duration)> { diff --git a/rust/main/hyperlane-base/src/contract_sync/metrics.rs b/rust/main/hyperlane-base/src/contract_sync/metrics.rs index 30f3fd02bf..54e3c7a2cb 100644 --- a/rust/main/hyperlane-base/src/contract_sync/metrics.rs +++ b/rust/main/hyperlane-base/src/contract_sync/metrics.rs @@ -1,6 +1,11 @@ -use crate::CoreMetrics; +use std::sync::Arc; + use prometheus::{IntCounterVec, IntGaugeVec}; +use crate::CoreMetrics; + +use super::cursors::CursorMetrics; + /// Struct encapsulating prometheus metrics used by the ContractSync. #[derive(Debug, Clone)] pub struct ContractSyncMetrics { @@ -20,6 +25,9 @@ pub struct ContractSyncMetrics { /// See `last_known_message_nonce` in CoreMetrics. pub message_nonce: IntGaugeVec, + + /// Metrics for SequenceAware and RateLimited cursors. + pub cursor_metrics: Arc, } impl ContractSyncMetrics { @@ -42,11 +50,13 @@ impl ContractSyncMetrics { .expect("failed to register stored_events metric"); let message_nonce = metrics.last_known_message_nonce(); + let cursor_metrics = Arc::new(CursorMetrics::new(metrics)); ContractSyncMetrics { indexed_height, stored_events, message_nonce, + cursor_metrics, } } } diff --git a/rust/main/hyperlane-base/src/contract_sync/mod.rs b/rust/main/hyperlane-base/src/contract_sync/mod.rs index df9563d8a7..c9048b4808 100644 --- a/rust/main/hyperlane-base/src/contract_sync/mod.rs +++ b/rust/main/hyperlane-base/src/contract_sync/mod.rs @@ -312,6 +312,8 @@ where Ok(Box::new( RateLimitedContractSyncCursor::new( Arc::new(self.indexer.clone()), + self.metrics.cursor_metrics.clone(), + self.domain(), self.store.clone(), index_settings.chunk_size, index_settings.from, @@ -352,6 +354,8 @@ where ) -> Result>> { Ok(Box::new( ForwardBackwardSequenceAwareSyncCursor::new( + self.domain(), + self.metrics.cursor_metrics.clone(), self.indexer.clone(), Arc::new(self.store.clone()), index_settings.chunk_size, From 1478dfc48b72b85231b67a20cfd795a9e24cff3c Mon Sep 17 00:00:00 2001 From: Daniel Savu <23065004+daniel-savu@users.noreply.github.com> Date: Tue, 17 Dec 2024 14:05:02 +0000 Subject: [PATCH 17/32] chore: bump relayer memory to 20gb (#5024) ### Description ### Drive-by changes ### Related issues ### Backward compatibility ### Testing --- typescript/infra/config/environments/mainnet3/agent.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typescript/infra/config/environments/mainnet3/agent.ts b/typescript/infra/config/environments/mainnet3/agent.ts index de18037b26..7e8f1c0aa7 100644 --- a/typescript/infra/config/environments/mainnet3/agent.ts +++ b/typescript/infra/config/environments/mainnet3/agent.ts @@ -441,7 +441,7 @@ const metricAppContextsGetter = (): MetricAppContext[] => { const relayerResources = { requests: { cpu: '14000m', - memory: '15Gi', + memory: '20Gi', }, }; From 95cc9571e21c85a3c4e3d60c609025f3253e2e4d Mon Sep 17 00:00:00 2001 From: Paul Balaji <10051819+paulbalaji@users.noreply.github.com> Date: Tue, 17 Dec 2024 15:16:58 +0000 Subject: [PATCH 18/32] feat: deploy dec 13 batch (#5015) ### Description Deploy to new chains: arthera, aurora, conflux, conwai, corn, evmos, form, ink, rivalz, soneium, sonic, telos. ### Drive-by changes - igp updates - fix minor bug in setting up infra multiprovider with secrets - ensures we're able to fetch secrets for chains not yet in `supportedChainNames` e.g. for checking balances on new chains before adding them to infra ### Related issues ### Backward compatibility ### Testing manual --------- Signed-off-by: pbio <10051819+paulbalaji@users.noreply.github.com> --- .changeset/new-seas-ring.md | 5 + .registryrc | 2 +- rust/main/config/mainnet_config.json | 798 +++++++++++++ rust/main/config/testnet_config.json | 4 +- .../config/environments/mainnet3/agent.ts | 45 +- .../mainnet3/aw-validators/hyperlane.json | 36 + .../config/environments/mainnet3/chains.ts | 9 +- .../mainnet3/core/verification.json | 846 +++++++++++++ .../config/environments/mainnet3/funding.ts | 15 +- .../environments/mainnet3/gasPrices.json | 86 +- .../config/environments/mainnet3/index.ts | 13 +- .../mainnet3/ism/verification.json | 1044 +++++++++++++++++ .../middleware/accounts/verification.json | 252 ++++ .../mainnet3/supportedChainNames.ts | 13 + .../environments/mainnet3/tokenPrices.json | 201 ++-- .../environments/mainnet3/validators.ts | 132 +++ .../config/environments/testnet4/index.ts | 20 +- .../scripts/check/check-validator-version.ts | 28 +- typescript/sdk/src/consts/multisigIsm.ts | 130 ++ 19 files changed, 3535 insertions(+), 144 deletions(-) create mode 100644 .changeset/new-seas-ring.md diff --git a/.changeset/new-seas-ring.md b/.changeset/new-seas-ring.md new file mode 100644 index 0000000000..a8462e4ff4 --- /dev/null +++ b/.changeset/new-seas-ring.md @@ -0,0 +1,5 @@ +--- +'@hyperlane-xyz/sdk': minor +--- + +Deploy to new chains: arthera, aurora, conflux, conwai, corn, evmos, form, ink, rivalz, soneium, sonic, telos. diff --git a/.registryrc b/.registryrc index dee0fef0a0..088ae6645a 100644 --- a/.registryrc +++ b/.registryrc @@ -1 +1 @@ -01f2271592da4a06962e31ed384201f32cb070ab +d3e1e71965d7d06a8f8761c8255e718699c78f11 diff --git a/rust/main/config/mainnet_config.json b/rust/main/config/mainnet_config.json index 44262d9923..05599c97e3 100644 --- a/rust/main/config/mainnet_config.json +++ b/rust/main/config/mainnet_config.json @@ -6442,6 +6442,804 @@ "index": { "from": 7286869 } + }, + "arthera": { + "blockExplorers": [ + { + "apiUrl": "https://explorer.arthera.net/api", + "family": "blockscout", + "name": "Arthera Explorer", + "url": "https://explorer.arthera.net" + } + ], + "blocks": { + "confirmations": 1, + "estimateBlockTime": 1, + "reorgPeriod": 5 + }, + "chainId": 10242, + "deployer": { + "name": "Abacus Works", + "url": "https://www.hyperlane.xyz" + }, + "displayName": "Arthera", + "domainId": 10242, + "gasCurrencyCoinGeckoId": "arthera", + "name": "arthera", + "nativeToken": { + "decimals": 18, + "name": "Arthera", + "symbol": "AA" + }, + "protocol": "ethereum", + "rpcUrls": [ + { + "http": "https://rpc.arthera.net", + "pagination": { + "maxBlockRange": 10000 + } + } + ], + "technicalStack": "other", + "aggregationHook": "0xeee0A47491ade07A37D026E4670Dc5c93fdAe888", + "domainRoutingIsm": "0x928DcA761f20aBFBdf088314f448234fB96dE60C", + "domainRoutingIsmFactory": "0x29B37088724B745C0ABcE591449Cf042772160C2", + "fallbackRoutingHook": "0x1fbcCdc677c10671eE50b46C61F0f7d135112450", + "interchainAccountIsm": "0xf9609bB22847e0DB5F6fB8f95b84D25A19b46ac5", + "interchainAccountRouter": "0x2b6d3F7d28B5EC8C3C028fBCAdcf774D9709Dd29", + "interchainGasPaymaster": "0xFb7D175d6F53800D68D32C3Fe1416807A394cC24", + "interchainSecurityModule": "0x565f3Ad39Acb67D673fb568575DcE6Ba1861d723", + "mailbox": "0x473884010F0C1742DA8Ad01E7E295624B931076b", + "merkleTreeHook": "0xdA629E1B79e3420ECd1e80571aDd6a4a3b13AE79", + "pausableHook": "0xe93f2f409ad8B5000431D234472973fe848dcBEC", + "pausableIsm": "0x466b330C2e360c0214A9Da2428415298f720883E", + "protocolFee": "0x33AA12b4e8E79cA551Ca9D1F2eC7d2cE02129dd4", + "proxyAdmin": "0x03cF708E42C89623bd83B281A56935cB562b9258", + "staticAggregationHookFactory": "0x46fa3A5780e5B90Eaf34BDED554d5353B5ABE9E7", + "staticAggregationIsm": "0x871459fDa27204F20300A3E472fD05e0C62f09De", + "staticAggregationIsmFactory": "0x4Eb82Ee35b0a1c1d776E3a3B547f9A9bA6FCC9f2", + "staticMerkleRootMultisigIsmFactory": "0x4C97D35c668EE5194a13c8DE8Afc18cce40C9F28", + "staticMerkleRootWeightedMultisigIsmFactory": "0xEF9A332Ec1fD233Bf9344A58be56ff9E104B4f60", + "staticMessageIdMultisigIsmFactory": "0xDa7cECb05C4aeB02c1aFDE277d4306a2da7Bd762", + "staticMessageIdWeightedMultisigIsmFactory": "0xCB9f90EE5d83Ea52ABd922BD70898f0155D54798", + "storageGasOracle": "0x8d9Bd7E9ec3cd799a659EE650DfF6C799309fA91", + "testRecipient": "0x49998DFdeF3F0b05Fe103C435bF73f5D735a0b97", + "timelockController": "0x0000000000000000000000000000000000000000", + "validatorAnnounce": "0xEe9E0FB6f43913aDBbe5bf89073F4BA590AB8184", + "index": { + "from": 19952728 + } + }, + "aurora": { + "blockExplorers": [ + { + "apiUrl": "https://explorer.mainnet.aurora.dev/api", + "family": "blockscout", + "name": "Aurora Explorer", + "url": "https://explorer.mainnet.aurora.dev" + } + ], + "blocks": { + "confirmations": 3, + "estimateBlockTime": 1, + "reorgPeriod": 5 + }, + "chainId": 1313161554, + "deployer": { + "name": "Abacus Works", + "url": "https://www.hyperlane.xyz" + }, + "displayName": "Aurora", + "domainId": 1313161554, + "gasCurrencyCoinGeckoId": "ethereum", + "name": "aurora", + "nativeToken": { + "decimals": 18, + "name": "Ether", + "symbol": "ETH" + }, + "protocol": "ethereum", + "rpcUrls": [ + { + "http": "https://mainnet.aurora.dev" + }, + { + "http": "https://aurora.drpc.org" + } + ], + "technicalStack": "other", + "aggregationHook": "0xCB571B99DD7e5f13bEb043893706D76024A30886", + "domainRoutingIsm": "0xBD70Ea9D599a0FC8158B026797177773C3445730", + "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "fallbackRoutingHook": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "interchainAccountIsm": "0xF457D831d9F55e87B2F0b35AD6D033fd6b4181Ed", + "interchainAccountRouter": "0x021D2810a758c833080DEc2F1Fa8F571Aae97D45", + "interchainGasPaymaster": "0xc0C2dB448fC2c84213394Fcb93a3C467e50ECa9E", + "interchainSecurityModule": "0x4DaeEeC1c7FC2316419261ae3C4220191D6e12A3", + "mailbox": "0x7f50C5776722630a0024fAE05fDe8b47571D7B39", + "merkleTreeHook": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "pausableHook": "0x48C427782Bc1e9ecE406b3e277481b28ABcBdf03", + "pausableIsm": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "protocolFee": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "proxyAdmin": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0xAD067B2DF9Cab270d1F4fe546B15f1AA7e0977DD", + "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "staticMerkleRootWeightedMultisigIsmFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "staticMessageIdWeightedMultisigIsmFactory": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "storageGasOracle": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7", + "testRecipient": "0x65dCf8F6b3f6a0ECEdf3d0bdCB036AEa47A1d615", + "timelockController": "0x0000000000000000000000000000000000000000", + "validatorAnnounce": "0x426a3CE72C1586b1867F9339550371E86DB3e396", + "index": { + "from": 135117550 + } + }, + "conflux": { + "blockExplorers": [ + { + "apiUrl": "https://evmapi.confluxscan.net/api", + "family": "blockscout", + "name": "ConfluxScan eSpace", + "url": "https://evm.confluxscan.net" + } + ], + "blocks": { + "confirmations": 1, + "estimateBlockTime": 2, + "reorgPeriod": 10 + }, + "chainId": 1030, + "deployer": { + "name": "Abacus Works", + "url": "https://www.hyperlane.xyz" + }, + "displayName": "Conflux eSpace", + "domainId": 1030, + "gasCurrencyCoinGeckoId": "conflux-token", + "name": "conflux", + "nativeToken": { + "decimals": 18, + "name": "Ethereum", + "symbol": "ETH" + }, + "protocol": "ethereum", + "rpcUrls": [ + { + "http": "https://evm.confluxrpc.com" + }, + { + "http": "https://conflux-espace-public.unifra.io" + }, + { + "http": "https://conflux-espace.blockpi.network/v1/rpc/public" + } + ], + "technicalStack": "other", + "aggregationHook": "0x2A3E42635E7acAc8Bb7851963Bc9d29B1dAAd409", + "domainRoutingIsm": "0xBD70Ea9D599a0FC8158B026797177773C3445730", + "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "fallbackRoutingHook": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "interchainAccountIsm": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "interchainAccountRouter": "0xc2466492C451E1AE49d8C874bB9f89293Aaad59b", + "interchainGasPaymaster": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "interchainSecurityModule": "0xd285467525196946efDa56fc26DAbFe816A5E4E4", + "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "merkleTreeHook": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "pausableHook": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "pausableIsm": "0xbed53B5C5BCE9433f25A2A702e6df13E22d84Ae9", + "protocolFee": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "proxyAdmin": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0x95cE3183137f906753463933C5dfDe777D2E7fE2", + "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "staticMerkleRootWeightedMultisigIsmFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "staticMessageIdWeightedMultisigIsmFactory": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "storageGasOracle": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "testRecipient": "0x4Ee9dEBB3046139661b51E17bdfD54Fd63211de7", + "timelockController": "0x0000000000000000000000000000000000000000", + "validatorAnnounce": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "index": { + "from": 111730015 + } + }, + "conwai": { + "blockExplorers": [ + { + "apiUrl": "https://conwai.calderaexplorer.xyz/api", + "family": "blockscout", + "name": "Conwai Explorer", + "url": "https://conwai.calderaexplorer.xyz" + } + ], + "blocks": { + "confirmations": 1, + "estimateBlockTime": 2, + "reorgPeriod": 0 + }, + "chainId": 668668, + "deployer": { + "name": "Abacus Works", + "url": "https://www.hyperlane.xyz" + }, + "displayName": "Conwai", + "domainId": 668668, + "gasCurrencyCoinGeckoId": "conwai", + "index": { + "from": 73 + }, + "name": "conwai", + "nativeToken": { + "decimals": 18, + "name": "Conwai", + "symbol": "CNW" + }, + "protocol": "ethereum", + "rpcUrls": [ + { + "http": "https://conwai.calderachain.xyz/http" + } + ], + "technicalStack": "arbitrumnitro", + "aggregationHook": "0x2A3E42635E7acAc8Bb7851963Bc9d29B1dAAd409", + "domainRoutingIsm": "0xBD70Ea9D599a0FC8158B026797177773C3445730", + "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "fallbackRoutingHook": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "interchainAccountIsm": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", + "interchainAccountRouter": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "interchainGasPaymaster": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "interchainSecurityModule": "0xf0F40bf7FFc8B05b639D657f02Fc7B75A218e068", + "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "merkleTreeHook": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "pausableHook": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "pausableIsm": "0xbed53B5C5BCE9433f25A2A702e6df13E22d84Ae9", + "protocolFee": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "proxyAdmin": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0x95cE3183137f906753463933C5dfDe777D2E7fE2", + "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "staticMerkleRootWeightedMultisigIsmFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "staticMessageIdWeightedMultisigIsmFactory": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "storageGasOracle": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "testRecipient": "0x4Ee9dEBB3046139661b51E17bdfD54Fd63211de7", + "timelockController": "0x0000000000000000000000000000000000000000", + "validatorAnnounce": "0x84444cE490233CFa76E3F1029bc166aa8c266907" + }, + "corn": { + "blockExplorers": [ + { + "apiUrl": "https://api.routescan.io/v2/network/mainnet/evm/21000000/etherscan/api", + "family": "routescan", + "name": "Cornscan", + "url": "https://cornscan.io" + } + ], + "blocks": { + "confirmations": 1, + "estimateBlockTime": 20, + "reorgPeriod": 5 + }, + "chainId": 21000000, + "deployer": { + "name": "Abacus Works", + "url": "https://www.hyperlane.xyz" + }, + "displayName": "Corn", + "domainId": 21000000, + "index": { + "from": 55636 + }, + "gasCurrencyCoinGeckoId": "bitcoin", + "name": "corn", + "nativeToken": { + "decimals": 18, + "name": "Bitcorn", + "symbol": "BTCN" + }, + "protocol": "ethereum", + "rpcUrls": [ + { + "http": "https://mainnet.corn-rpc.com" + }, + { + "http": "https://maizenet-rpc.usecorn.com" + }, + { + "http": "https://rpc.ankr.com/corn_maizenet" + } + ], + "technicalStack": "arbitrumnitro", + "aggregationHook": "0x2A3E42635E7acAc8Bb7851963Bc9d29B1dAAd409", + "domainRoutingIsm": "0xBD70Ea9D599a0FC8158B026797177773C3445730", + "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "fallbackRoutingHook": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "interchainAccountIsm": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", + "interchainAccountRouter": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "interchainGasPaymaster": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "interchainSecurityModule": "0xf0F40bf7FFc8B05b639D657f02Fc7B75A218e068", + "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "merkleTreeHook": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "pausableHook": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "pausableIsm": "0xbed53B5C5BCE9433f25A2A702e6df13E22d84Ae9", + "protocolFee": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "proxyAdmin": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0x95cE3183137f906753463933C5dfDe777D2E7fE2", + "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "staticMerkleRootWeightedMultisigIsmFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "staticMessageIdWeightedMultisigIsmFactory": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "storageGasOracle": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "testRecipient": "0x4Ee9dEBB3046139661b51E17bdfD54Fd63211de7", + "timelockController": "0x0000000000000000000000000000000000000000", + "validatorAnnounce": "0x84444cE490233CFa76E3F1029bc166aa8c266907" + }, + "evmos": { + "blockExplorers": [ + { + "apiUrl": "https://www.mintscan.io/evmos/api", + "family": "other", + "name": "Mintscan", + "url": "https://www.mintscan.io/evmos" + } + ], + "blocks": { + "confirmations": 1, + "estimateBlockTime": 2, + "reorgPeriod": 5 + }, + "chainId": 9001, + "deployer": { + "name": "Abacus Works", + "url": "https://www.hyperlane.xyz" + }, + "displayName": "Evmos EVM", + "domainId": 9001, + "gasCurrencyCoinGeckoId": "evmos", + "name": "evmos", + "nativeToken": { + "decimals": 18, + "name": "Evmos", + "symbol": "EVMOS" + }, + "protocol": "ethereum", + "rpcUrls": [ + { + "http": "https://evmos.lava.build" + }, + { + "http": "https://evmos-json-rpc.stakely.io" + }, + { + "http": "https://rpc-evm.evmos.dragonstake.io" + }, + { + "http": "https://evmos.drpc.org" + } + ], + "technicalStack": "other", + "aggregationHook": "0x2A3E42635E7acAc8Bb7851963Bc9d29B1dAAd409", + "domainRoutingIsm": "0xBD70Ea9D599a0FC8158B026797177773C3445730", + "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "fallbackRoutingHook": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "interchainAccountIsm": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", + "interchainAccountRouter": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "interchainGasPaymaster": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "interchainSecurityModule": "0xf0F40bf7FFc8B05b639D657f02Fc7B75A218e068", + "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "merkleTreeHook": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "pausableHook": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "pausableIsm": "0xbed53B5C5BCE9433f25A2A702e6df13E22d84Ae9", + "protocolFee": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "proxyAdmin": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0x95cE3183137f906753463933C5dfDe777D2E7fE2", + "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "staticMerkleRootWeightedMultisigIsmFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "staticMessageIdWeightedMultisigIsmFactory": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "storageGasOracle": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "testRecipient": "0x4Ee9dEBB3046139661b51E17bdfD54Fd63211de7", + "timelockController": "0x0000000000000000000000000000000000000000", + "validatorAnnounce": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "index": { + "from": 25566476 + } + }, + "form": { + "blockExplorers": [ + { + "apiUrl": "https://explorer.form.network/api", + "family": "blockscout", + "name": "Form Explorer", + "url": "https://explorer.form.network" + } + ], + "blocks": { + "confirmations": 1, + "estimateBlockTime": 2, + "reorgPeriod": 5 + }, + "chainId": 478, + "deployer": { + "name": "Abacus Works", + "url": "https://www.hyperlane.xyz" + }, + "displayName": "Form", + "domainId": 478, + "gasCurrencyCoinGeckoId": "ethereum", + "name": "form", + "nativeToken": { + "decimals": 18, + "name": "Ether", + "symbol": "ETH" + }, + "protocol": "ethereum", + "rpcUrls": [ + { + "http": "https://rpc.form.network/http" + } + ], + "technicalStack": "opstack", + "aggregationHook": "0x2A3E42635E7acAc8Bb7851963Bc9d29B1dAAd409", + "domainRoutingIsm": "0xBD70Ea9D599a0FC8158B026797177773C3445730", + "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "fallbackRoutingHook": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "interchainAccountIsm": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", + "interchainAccountRouter": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "interchainGasPaymaster": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "interchainSecurityModule": "0xf0F40bf7FFc8B05b639D657f02Fc7B75A218e068", + "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "merkleTreeHook": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "pausableHook": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "pausableIsm": "0xbed53B5C5BCE9433f25A2A702e6df13E22d84Ae9", + "protocolFee": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "proxyAdmin": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0x95cE3183137f906753463933C5dfDe777D2E7fE2", + "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "staticMerkleRootWeightedMultisigIsmFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "staticMessageIdWeightedMultisigIsmFactory": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "storageGasOracle": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "testRecipient": "0x4Ee9dEBB3046139661b51E17bdfD54Fd63211de7", + "timelockController": "0x0000000000000000000000000000000000000000", + "validatorAnnounce": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "index": { + "from": 469384 + } + }, + "ink": { + "blockExplorers": [ + { + "apiUrl": "https://explorer.inkonchain.com/api", + "family": "blockscout", + "name": "Ink Explorer", + "url": "https://explorer.inkonchain.com" + } + ], + "blocks": { + "confirmations": 1, + "estimateBlockTime": 1, + "reorgPeriod": 5 + }, + "chainId": 57073, + "deployer": { + "name": "Abacus Works", + "url": "https://www.hyperlane.xyz" + }, + "displayName": "Ink", + "domainId": 57073, + "gasCurrencyCoinGeckoId": "ethereum", + "name": "ink", + "nativeToken": { + "decimals": 18, + "name": "Ether", + "symbol": "ETH" + }, + "protocol": "ethereum", + "rpcUrls": [ + { + "http": "https://rpc.inkonchain.com" + } + ], + "technicalStack": "opstack", + "aggregationHook": "0x4D5DDc9D93F9b60c101B6ba75fcD9f3a10F7F8da", + "domainRoutingIsm": "0xDEed16fe4b1c9b2a93483EDFf34C77A9b57D31Ff", + "domainRoutingIsmFactory": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "fallbackRoutingHook": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "interchainAccountIsm": "0x60515f328B2c55Df63f456D9D839a0082892dEf8", + "interchainAccountRouter": "0xF457D831d9F55e87B2F0b35AD6D033fd6b4181Ed", + "interchainGasPaymaster": "0xc0C2dB448fC2c84213394Fcb93a3C467e50ECa9E", + "interchainSecurityModule": "0x7f124ad38fDF2FDdcD8554fd44f72b0A56EA5644", + "mailbox": "0x7f50C5776722630a0024fAE05fDe8b47571D7B39", + "merkleTreeHook": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "pausableHook": "0x48C427782Bc1e9ecE406b3e277481b28ABcBdf03", + "pausableIsm": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "protocolFee": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "proxyAdmin": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "staticAggregationHookFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "staticAggregationIsm": "0x9D68537eE6b1351fE22a0837e6aD522c526CA72e", + "staticAggregationIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "staticMerkleRootWeightedMultisigIsmFactory": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "staticMessageIdWeightedMultisigIsmFactory": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", + "storageGasOracle": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7", + "testRecipient": "0x65dCf8F6b3f6a0ECEdf3d0bdCB036AEa47A1d615", + "timelockController": "0x0000000000000000000000000000000000000000", + "validatorAnnounce": "0x426a3CE72C1586b1867F9339550371E86DB3e396", + "index": { + "from": 860343 + } + }, + "rivalz": { + "blockExplorers": [ + { + "apiUrl": "https://rivalz.calderaexplorer.xyz/api", + "family": "blockscout", + "name": "Rivalz Explorer", + "url": "https://rivalz.calderaexplorer.xyz" + } + ], + "blocks": { + "confirmations": 1, + "estimateBlockTime": 2, + "reorgPeriod": 0 + }, + "chainId": 753, + "displayName": "Rivalz", + "deployer": { + "name": "Abacus Works", + "url": "https://www.hyperlane.xyz" + }, + "domainId": 753, + "gasCurrencyCoinGeckoId": "ethereum", + "index": { + "from": 21 + }, + "name": "rivalz", + "nativeToken": { + "decimals": 18, + "name": "Ether", + "symbol": "ETH" + }, + "protocol": "ethereum", + "rpcUrls": [ + { + "http": "https://rivalz.calderachain.xyz/http" + } + ], + "technicalStack": "arbitrumnitro", + "aggregationHook": "0xfe94Ea7DA6C45849D395e3d03973aa924553b937", + "domainRoutingIsm": "0xBD70Ea9D599a0FC8158B026797177773C3445730", + "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "fallbackRoutingHook": "0x48C427782Bc1e9ecE406b3e277481b28ABcBdf03", + "interchainAccountIsm": "0xd64d126941EaC2Cf53e0E4E8146cC70449b60D73", + "interchainAccountRouter": "0x1A4F09A615aA4a35E5a146DC2fa19975bebF21A5", + "interchainGasPaymaster": "0x3cECBa60A580dE20CC57D87528953a00f4ED99EA", + "interchainSecurityModule": "0x8f1953EFbd2C720223faD02d6CB5CD25f97D7fC9", + "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "merkleTreeHook": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "pausableHook": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7", + "pausableIsm": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "protocolFee": "0x4Ee9dEBB3046139661b51E17bdfD54Fd63211de7", + "proxyAdmin": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0x8f1953EFbd2C720223faD02d6CB5CD25f97D7fC9", + "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "staticMerkleRootWeightedMultisigIsmFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "staticMessageIdWeightedMultisigIsmFactory": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "storageGasOracle": "0x248aDe14C0489E20C9a7Fea5F86DBfC3702208eF", + "testRecipient": "0x92249B8ed35C2980e58666a3EBF4a075DDD2895f", + "timelockController": "0x0000000000000000000000000000000000000000", + "validatorAnnounce": "0x65dCf8F6b3f6a0ECEdf3d0bdCB036AEa47A1d615" + }, + "soneium": { + "blockExplorers": [ + { + "apiUrl": "https://explorer.soneium.org/api", + "family": "blockscout", + "name": "Soneium Explorer", + "url": "https://explorer.soneium.org" + } + ], + "blocks": { + "confirmations": 1, + "estimateBlockTime": 2, + "reorgPeriod": 5 + }, + "chainId": 1868, + "deployer": { + "name": "Abacus Works", + "url": "https://www.hyperlane.xyz" + }, + "displayName": "Soneium", + "domainId": 1868, + "gasCurrencyCoinGeckoId": "ethereum", + "name": "soneium", + "nativeToken": { + "decimals": 18, + "name": "Ether", + "symbol": "ETH" + }, + "protocol": "ethereum", + "rpcUrls": [ + { + "http": "https://rpc.soneium.org" + } + ], + "technicalStack": "opstack", + "aggregationHook": "0x2A3E42635E7acAc8Bb7851963Bc9d29B1dAAd409", + "domainRoutingIsm": "0xBD70Ea9D599a0FC8158B026797177773C3445730", + "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "fallbackRoutingHook": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "interchainAccountIsm": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", + "interchainAccountRouter": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "interchainGasPaymaster": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "interchainSecurityModule": "0xf0F40bf7FFc8B05b639D657f02Fc7B75A218e068", + "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "merkleTreeHook": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "pausableHook": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "pausableIsm": "0xbed53B5C5BCE9433f25A2A702e6df13E22d84Ae9", + "protocolFee": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "proxyAdmin": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0x95cE3183137f906753463933C5dfDe777D2E7fE2", + "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "staticMerkleRootWeightedMultisigIsmFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "staticMessageIdWeightedMultisigIsmFactory": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "storageGasOracle": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "testRecipient": "0x4Ee9dEBB3046139661b51E17bdfD54Fd63211de7", + "timelockController": "0x0000000000000000000000000000000000000000", + "validatorAnnounce": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "index": { + "from": 612005 + } + }, + "sonic": { + "blockExplorers": [ + { + "apiUrl": "https://api.sonicscan.org/api", + "family": "etherscan", + "name": "Sonic Explorer", + "url": "https://sonicscan.org" + } + ], + "blocks": { + "confirmations": 1, + "estimateBlockTime": 2, + "reorgPeriod": 5 + }, + "chainId": 146, + "deployer": { + "name": "Abacus Works", + "url": "https://www.hyperlane.xyz" + }, + "displayName": "Sonic", + "domainId": 146, + "gasCurrencyCoinGeckoId": "fantom", + "name": "sonic", + "nativeToken": { + "decimals": 18, + "name": "Sonic", + "symbol": "S" + }, + "protocol": "ethereum", + "rpcUrls": [ + { + "http": "https://rpc.soniclabs.com" + } + ], + "technicalStack": "other", + "aggregationHook": "0x2A3E42635E7acAc8Bb7851963Bc9d29B1dAAd409", + "domainRoutingIsm": "0xBD70Ea9D599a0FC8158B026797177773C3445730", + "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "fallbackRoutingHook": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "interchainAccountIsm": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", + "interchainAccountRouter": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "interchainGasPaymaster": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "interchainSecurityModule": "0xf0F40bf7FFc8B05b639D657f02Fc7B75A218e068", + "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "merkleTreeHook": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "pausableHook": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "pausableIsm": "0xbed53B5C5BCE9433f25A2A702e6df13E22d84Ae9", + "protocolFee": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "proxyAdmin": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0x95cE3183137f906753463933C5dfDe777D2E7fE2", + "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "staticMerkleRootWeightedMultisigIsmFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "staticMessageIdWeightedMultisigIsmFactory": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "storageGasOracle": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "testRecipient": "0x4Ee9dEBB3046139661b51E17bdfD54Fd63211de7", + "timelockController": "0x0000000000000000000000000000000000000000", + "validatorAnnounce": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "index": { + "from": 482156 + } + }, + "telos": { + "blockExplorers": [ + { + "apiUrl": "https://www.teloscan.io/api", + "family": "other", + "name": "Teloscan", + "url": "https://www.teloscan.io" + } + ], + "blocks": { + "confirmations": 1, + "estimateBlockTime": 1, + "reorgPeriod": "finalized" + }, + "chainId": 40, + "deployer": { + "name": "Abacus Works", + "url": "https://www.hyperlane.xyz" + }, + "displayName": "Telos EVM", + "domainId": 40, + "gasCurrencyCoinGeckoId": "telos", + "name": "telos", + "nativeToken": { + "decimals": 18, + "name": "Telos", + "symbol": "TLOS" + }, + "protocol": "ethereum", + "rpcUrls": [ + { + "http": "https://rpc.telos.net" + }, + { + "http": "https://telos.drpc.org" + } + ], + "technicalStack": "other", + "aggregationHook": "0x2A3E42635E7acAc8Bb7851963Bc9d29B1dAAd409", + "domainRoutingIsm": "0xBD70Ea9D599a0FC8158B026797177773C3445730", + "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "fallbackRoutingHook": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "interchainAccountIsm": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", + "interchainAccountRouter": "0xF457D831d9F55e87B2F0b35AD6D033fd6b4181Ed", + "interchainGasPaymaster": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "interchainSecurityModule": "0xf0F40bf7FFc8B05b639D657f02Fc7B75A218e068", + "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "merkleTreeHook": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "pausableHook": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "pausableIsm": "0xbed53B5C5BCE9433f25A2A702e6df13E22d84Ae9", + "protocolFee": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "proxyAdmin": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0x95cE3183137f906753463933C5dfDe777D2E7fE2", + "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "staticMerkleRootWeightedMultisigIsmFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "staticMessageIdWeightedMultisigIsmFactory": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "storageGasOracle": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "testRecipient": "0x4Ee9dEBB3046139661b51E17bdfD54Fd63211de7", + "timelockController": "0x0000000000000000000000000000000000000000", + "validatorAnnounce": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "index": { + "from": 378761707 + } } }, "defaultRpcConsensusType": "fallback" diff --git a/rust/main/config/testnet_config.json b/rust/main/config/testnet_config.json index e5e01dcaf8..6f8dca0b8d 100644 --- a/rust/main/config/testnet_config.json +++ b/rust/main/config/testnet_config.json @@ -1232,10 +1232,10 @@ "formtestnet": { "blockExplorers": [ { - "apiUrl": "https://explorer.form.network/api", + "apiUrl": "https://sepolia-explorer.form.network/api", "family": "blockscout", "name": "Form Testnet Explorer", - "url": "https://explorer.form.network" + "url": "https://sepolia-explorer.form.network" } ], "blocks": { diff --git a/typescript/infra/config/environments/mainnet3/agent.ts b/typescript/infra/config/environments/mainnet3/agent.ts index 7e8f1c0aa7..2fada6b85c 100644 --- a/typescript/infra/config/environments/mainnet3/agent.ts +++ b/typescript/infra/config/environments/mainnet3/agent.ts @@ -58,8 +58,10 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< appchain: true, arbitrum: true, arbitrumnova: true, + arthera: true, astar: true, astarzkevm: true, + aurora: true, flame: true, avalanche: true, b3: true, @@ -73,7 +75,10 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< celo: true, cheesechain: true, chilizmainnet: true, + conflux: true, + conwai: true, coredao: true, + corn: true, cyber: true, degenchain: true, dogechain: true, @@ -82,9 +87,12 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< endurance: true, ethereum: true, everclear: true, + evmos: true, fantom: true, flare: true, flowmainnet: true, + form: true, + // fractal: false, fraxtal: true, fusemainnet: true, gnosis: true, @@ -93,6 +101,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< immutablezkevmmainnet: true, inevm: true, injective: true, + ink: true, kaia: true, kroma: true, linea: true, @@ -123,6 +132,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< rarichain: true, real: true, redstone: true, + rivalz: true, rootstockmainnet: true, sanko: true, scroll: true, @@ -130,12 +140,15 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< shibarium: true, snaxchain: true, solanamainnet: true, + soneium: true, + sonic: true, stride: false, superseed: true, superpositionmainnet: true, swell: true, taiko: true, tangle: true, + telos: true, treasure: true, unichain: true, vana: true, @@ -157,8 +170,10 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< appchain: true, arbitrum: true, arbitrumnova: true, + arthera: true, astar: true, astarzkevm: true, + aurora: true, flame: true, avalanche: true, b3: true, @@ -172,7 +187,10 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< celo: true, cheesechain: true, chilizmainnet: true, + conflux: true, + conwai: true, coredao: true, + corn: true, cyber: true, degenchain: true, dogechain: true, @@ -181,9 +199,12 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< endurance: true, ethereum: true, everclear: true, + evmos: true, fantom: true, flare: true, flowmainnet: true, + form: true, + // fractal: false, fraxtal: true, fusemainnet: true, gnosis: true, @@ -192,6 +213,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< immutablezkevmmainnet: true, inevm: true, injective: true, + ink: true, kaia: true, kroma: true, linea: true, @@ -223,6 +245,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< rarichain: true, real: true, redstone: true, + rivalz: true, rootstockmainnet: true, sanko: true, scroll: true, @@ -230,12 +253,15 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< shibarium: true, snaxchain: true, solanamainnet: true, + soneium: true, + sonic: true, stride: true, superseed: true, superpositionmainnet: true, swell: true, taiko: true, tangle: true, + telos: true, treasure: true, unichain: true, vana: true, @@ -257,8 +283,10 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< appchain: true, arbitrum: true, arbitrumnova: true, + arthera: true, astar: true, astarzkevm: true, + aurora: true, flame: true, avalanche: true, b3: true, @@ -272,7 +300,10 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< celo: true, cheesechain: true, chilizmainnet: true, + conflux: true, + conwai: true, coredao: true, + corn: true, cyber: true, degenchain: true, dogechain: true, @@ -281,9 +312,12 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< endurance: true, ethereum: true, everclear: true, + evmos: true, fantom: true, flare: true, flowmainnet: true, + form: true, + // fractal: false, fraxtal: true, fusemainnet: true, gnosis: true, @@ -291,6 +325,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< harmony: true, immutablezkevmmainnet: true, inevm: true, + ink: true, injective: true, kaia: true, kroma: true, @@ -322,6 +357,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< rarichain: true, real: true, redstone: true, + rivalz: true, rootstockmainnet: true, sanko: true, scroll: true, @@ -329,12 +365,15 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< shibarium: true, snaxchain: true, solanamainnet: true, + soneium: true, + sonic: true, stride: true, superseed: true, superpositionmainnet: true, swell: true, taiko: true, tangle: true, + telos: true, treasure: true, unichain: true, vana: true, @@ -507,7 +546,7 @@ const hyperlane: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: '4779a19-20241213-212818', + tag: '05e90bc-20241216-180035', }, blacklist, gasPaymentEnforcement: gasPaymentEnforcement, @@ -517,7 +556,7 @@ const hyperlane: RootAgentConfig = { validators: { docker: { repo, - tag: 'a7f3967-20241205-163733', + tag: '05e90bc-20241216-180035', }, rpcConsensusType: RpcConsensusType.Quorum, chains: validatorChainConfig(Contexts.Hyperlane), @@ -527,7 +566,7 @@ const hyperlane: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: '4b280cd-20241206-130519', + tag: '05e90bc-20241216-180035', }, resources: scraperResources, }, diff --git a/typescript/infra/config/environments/mainnet3/aw-validators/hyperlane.json b/typescript/infra/config/environments/mainnet3/aw-validators/hyperlane.json index 9e39d900ce..9ddb62b9d3 100644 --- a/typescript/infra/config/environments/mainnet3/aw-validators/hyperlane.json +++ b/typescript/infra/config/environments/mainnet3/aw-validators/hyperlane.json @@ -21,12 +21,18 @@ "arbitrumnova": { "validators": ["0xd2a5e9123308d187383c87053811a2c21bd8af1f"] }, + "arthera": { + "validators": ["0x13710ac11c36c169f62fba95767ae59a1e57098d"] + }, "astar": { "validators": ["0x4d1b2cade01ee3493f44304653d8e352c66ec3e7"] }, "astarzkevm": { "validators": ["0x89ecdd6caf138934bf3a2fb7b323984d72fd66de"] }, + "aurora": { + "validators": ["0x37105aec3ff37c7bb0abdb0b1d75112e1e69fa86"] + }, "flame": { "validators": ["0x1fa928ce884fa16357d4b8866e096392d4d81f43"] }, @@ -82,9 +88,18 @@ "chilizmainnet": { "validators": ["0x7403e5d58b48b0f5f715d9c78fbc581f01a625cb"] }, + "conflux": { + "validators": ["0x113dfa1dc9b0a2efb6ad01981e2aad86d3658490"] + }, + "conwai": { + "validators": ["0x949e2cdd7e79f99ee9bbe549540370cdc62e73c3"] + }, "coredao": { "validators": ["0xbd6e158a3f5830d99d7d2bce192695bc4a148de2"] }, + "corn": { + "validators": ["0xc80b2e3e38220e02d194a0effa9d5bfe89894c07"] + }, "cyber": { "validators": ["0x94d7119ceeb802173b6924e6cc8c4cd731089a27"] }, @@ -113,6 +128,9 @@ "everclear": { "validators": ["0xeff20ae3d5ab90abb11e882cfce4b92ea6c74837"] }, + "evmos": { + "validators": ["0x8f82387ad8b7b13aa9e06ed3f77f78a77713afe0"] + }, "fantom": { "validators": ["0xa779572028e634e16f26af5dfd4fa685f619457d"] }, @@ -122,6 +140,9 @@ "flowmainnet": { "validators": ["0xe132235c958ca1f3f24d772e5970dd58da4c0f6e"] }, + "form": { + "validators": ["0x58554b2e76167993b5fc000d0070a2f883cd333a"] + }, "fraxtal": { "validators": ["0x4bce180dac6da60d0f3a2bdf036ffe9004f944c1"] }, @@ -154,6 +175,9 @@ "injective": { "validators": ["0xbfb8911b72cfb138c7ce517c57d9c691535dc517"] }, + "ink": { + "validators": ["0xb533b8b104522958b984fb258e0684dec0f1a6a5"] + }, "kaia": { "validators": ["0x9de0b3abb221d19719882fa4d61f769fdc2be9a4"] }, @@ -268,6 +292,9 @@ "redstone": { "validators": ["0x1400b9737007f7978d8b4bbafb4a69c83f0641a7"] }, + "rivalz": { + "validators": ["0xf87c3eb3dde972257b0d6d110bdadcda951c0dc1"] + }, "rootstockmainnet": { "validators": ["0x8675eb603d62ab64e3efe90df914e555966e04ac"] }, @@ -293,6 +320,12 @@ "solanamainnet": { "validators": ["0x28464752829b3ea59a497fca0bdff575c534c3ff"] }, + "soneium": { + "validators": ["0xd4b7af853ed6a2bfc329ecef545df90c959cbee8"] + }, + "sonic": { + "validators": ["0xa313d72dbbd3fa51a2ed1611ea50c37946fa42f7"] + }, "superseed": { "validators": ["0xdc2b87cb555411bb138d3a4e5f7832c87fae2b88"] }, @@ -308,6 +341,9 @@ "tangle": { "validators": ["0x1ee52cbbfacd7dcb0ba4e91efaa6fbc61602b15b"] }, + "telos": { + "validators": ["0xcb08410b14d3adf0d0646f0c61cd07e0daba8e54"] + }, "treasure": { "validators": ["0x6ad994819185553e8baa01533f0cd2c7cadfe6cc"] }, diff --git a/typescript/infra/config/environments/mainnet3/chains.ts b/typescript/infra/config/environments/mainnet3/chains.ts index f0d7f66400..b5119aa440 100644 --- a/typescript/infra/config/environments/mainnet3/chains.ts +++ b/typescript/infra/config/environments/mainnet3/chains.ts @@ -1,5 +1,5 @@ import { IRegistry } from '@hyperlane-xyz/registry'; -import { ChainMap, ChainMetadata } from '@hyperlane-xyz/sdk'; +import { ChainMap, ChainMetadata, ChainName } from '@hyperlane-xyz/sdk'; import { getRegistryForEnvironment } from '../../../src/config/chain.js'; import { isEthereumProtocolChain } from '../../../src/utils/utils.js'; @@ -87,10 +87,13 @@ export const chainMetadataOverrides: ChainMap> = { // }, }; -export const getRegistry = async (useSecrets = true): Promise => +export const getRegistry = async ( + useSecrets = true, + chains: ChainName[] = supportedChainNames, +): Promise => getRegistryForEnvironment( environment, - supportedChainNames, + chains, chainMetadataOverrides, useSecrets, ); diff --git a/typescript/infra/config/environments/mainnet3/core/verification.json b/typescript/infra/config/environments/mainnet3/core/verification.json index 44f999186b..19c72ec1e3 100644 --- a/typescript/infra/config/environments/mainnet3/core/verification.json +++ b/typescript/infra/config/environments/mainnet3/core/verification.json @@ -6122,5 +6122,851 @@ "constructorArguments": "0000000000000000000000009bbdf86b272d224323136e15594fdce487f40ce7", "isProxy": false } + ], + "aurora": [ + { + "name": "ProxyAdmin", + "address": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "ProxyAdmin", + "address": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "Mailbox", + "address": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", + "constructorArguments": "000000000000000000000000000000000000000000000000000000004e454152", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x7f50C5776722630a0024fAE05fDe8b47571D7B39", + "constructorArguments": "0000000000000000000000003a867fcffec2b790970eebdc9023e75b0a172aa70000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7" + }, + { + "name": "MerkleTreeHook", + "address": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "constructorArguments": "0000000000000000000000007f50c5776722630a0024fae05fde8b47571d7b39", + "isProxy": false + }, + { + "name": "FallbackRoutingHook", + "address": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "constructorArguments": "0000000000000000000000007f50c5776722630a0024fae05fde8b47571d7b39000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a8a311b69f688c1d9928259d872c31ca0d473642", + "isProxy": false + }, + { + "name": "PausableHook", + "address": "0x48C427782Bc1e9ecE406b3e277481b28ABcBdf03", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StorageGasOracle", + "address": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "InterchainGasPaymaster", + "address": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0xc0C2dB448fC2c84213394Fcb93a3C467e50ECa9E", + "constructorArguments": "000000000000000000000000df178647cab5e0222f4b53c57274fd2a03beaed60000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6" + }, + { + "name": "ProtocolFee", + "address": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false + }, + { + "name": "ValidatorAnnounce", + "address": "0x426a3CE72C1586b1867F9339550371E86DB3e396", + "constructorArguments": "0000000000000000000000007f50c5776722630a0024fae05fde8b47571d7b39", + "isProxy": false + } + ], + "corn": [ + { + "name": "ProxyAdmin", + "address": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "Mailbox", + "address": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", + "constructorArguments": "0000000000000000000000000000000000000000000000000000000001406f40", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "constructorArguments": "000000000000000000000000ea87ae93fa0019a82a727bfd3ebd1cfca8f64f1d0000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D" + }, + { + "name": "MerkleTreeHook", + "address": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "FallbackRoutingHook", + "address": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000dc1508844b99c606e16c2ae87f33c373edd4b0f6", + "isProxy": false + }, + { + "name": "PausableHook", + "address": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StorageGasOracle", + "address": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "InterchainGasPaymaster", + "address": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "constructorArguments": "0000000000000000000000009e8b689e83d929cb8c2d9166e55319a4e6aa83b70000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7" + }, + { + "name": "ProtocolFee", + "address": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false + }, + { + "name": "ValidatorAnnounce", + "address": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + } + ], + "conwai": [ + { + "name": "ProxyAdmin", + "address": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "Mailbox", + "address": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", + "constructorArguments": "00000000000000000000000000000000000000000000000000000000000a33fc", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "constructorArguments": "000000000000000000000000ea87ae93fa0019a82a727bfd3ebd1cfca8f64f1d0000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D" + }, + { + "name": "MerkleTreeHook", + "address": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "FallbackRoutingHook", + "address": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000dc1508844b99c606e16c2ae87f33c373edd4b0f6", + "isProxy": false + }, + { + "name": "PausableHook", + "address": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StorageGasOracle", + "address": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "InterchainGasPaymaster", + "address": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "constructorArguments": "0000000000000000000000009e8b689e83d929cb8c2d9166e55319a4e6aa83b70000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7" + }, + { + "name": "ProtocolFee", + "address": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false + }, + { + "name": "ValidatorAnnounce", + "address": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + } + ], + "telos": [ + { + "name": "ProxyAdmin", + "address": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "Mailbox", + "address": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", + "constructorArguments": "0000000000000000000000000000000000000000000000000000000000000028", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "constructorArguments": "000000000000000000000000ea87ae93fa0019a82a727bfd3ebd1cfca8f64f1d0000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D" + }, + { + "name": "MerkleTreeHook", + "address": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "FallbackRoutingHook", + "address": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000dc1508844b99c606e16c2ae87f33c373edd4b0f6", + "isProxy": false + }, + { + "name": "PausableHook", + "address": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StorageGasOracle", + "address": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "InterchainGasPaymaster", + "address": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "constructorArguments": "0000000000000000000000009e8b689e83d929cb8c2d9166e55319a4e6aa83b70000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7" + }, + { + "name": "ProtocolFee", + "address": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false + }, + { + "name": "ValidatorAnnounce", + "address": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + } + ], + "arthera": [ + { + "name": "ProxyAdmin", + "address": "0x03cF708E42C89623bd83B281A56935cB562b9258", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "Mailbox", + "address": "0xC831271c1fB212012811a91Dd43e5926C1020563", + "constructorArguments": "0000000000000000000000000000000000000000000000000000000000002802", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x473884010F0C1742DA8Ad01E7E295624B931076b", + "constructorArguments": "000000000000000000000000c831271c1fb212012811a91dd43e5926c102056300000000000000000000000003cf708e42c89623bd83b281a56935cb562b925800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0xC831271c1fB212012811a91Dd43e5926C1020563" + }, + { + "name": "MerkleTreeHook", + "address": "0xdA629E1B79e3420ECd1e80571aDd6a4a3b13AE79", + "constructorArguments": "000000000000000000000000473884010f0c1742da8ad01e7e295624b931076b", + "isProxy": false + }, + { + "name": "FallbackRoutingHook", + "address": "0x1fbcCdc677c10671eE50b46C61F0f7d135112450", + "constructorArguments": "000000000000000000000000473884010f0c1742da8ad01e7e295624b931076b000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000da629e1b79e3420ecd1e80571add6a4a3b13ae79", + "isProxy": false + }, + { + "name": "PausableHook", + "address": "0xe93f2f409ad8B5000431D234472973fe848dcBEC", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StorageGasOracle", + "address": "0x8d9Bd7E9ec3cd799a659EE650DfF6C799309fA91", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "InterchainGasPaymaster", + "address": "0x2f4Eb04189e11Af642237Da62d163Ab714614498", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0xFb7D175d6F53800D68D32C3Fe1416807A394cC24", + "constructorArguments": "0000000000000000000000002f4eb04189e11af642237da62d163ab71461449800000000000000000000000003cf708e42c89623bd83b281a56935cb562b925800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x2f4Eb04189e11Af642237Da62d163Ab714614498" + }, + { + "name": "ProtocolFee", + "address": "0x33AA12b4e8E79cA551Ca9D1F2eC7d2cE02129dd4", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false + }, + { + "name": "ValidatorAnnounce", + "address": "0xEe9E0FB6f43913aDBbe5bf89073F4BA590AB8184", + "constructorArguments": "000000000000000000000000473884010f0c1742da8ad01e7e295624b931076b", + "isProxy": false + } + ], + "ink": [ + { + "name": "ProxyAdmin", + "address": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "Mailbox", + "address": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", + "constructorArguments": "000000000000000000000000000000000000000000000000000000000000def1", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x7f50C5776722630a0024fAE05fDe8b47571D7B39", + "constructorArguments": "0000000000000000000000003a867fcffec2b790970eebdc9023e75b0a172aa70000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7" + }, + { + "name": "MerkleTreeHook", + "address": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "constructorArguments": "0000000000000000000000007f50c5776722630a0024fae05fde8b47571d7b39", + "isProxy": false + }, + { + "name": "FallbackRoutingHook", + "address": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "constructorArguments": "0000000000000000000000007f50c5776722630a0024fae05fde8b47571d7b39000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a8a311b69f688c1d9928259d872c31ca0d473642", + "isProxy": false + }, + { + "name": "PausableHook", + "address": "0x48C427782Bc1e9ecE406b3e277481b28ABcBdf03", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StorageGasOracle", + "address": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "InterchainGasPaymaster", + "address": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0xc0C2dB448fC2c84213394Fcb93a3C467e50ECa9E", + "constructorArguments": "000000000000000000000000df178647cab5e0222f4b53c57274fd2a03beaed60000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6" + }, + { + "name": "ProtocolFee", + "address": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false + }, + { + "name": "ValidatorAnnounce", + "address": "0x426a3CE72C1586b1867F9339550371E86DB3e396", + "constructorArguments": "0000000000000000000000007f50c5776722630a0024fae05fde8b47571d7b39", + "isProxy": false + } + ], + "evmos": [ + { + "name": "ProxyAdmin", + "address": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "Mailbox", + "address": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", + "constructorArguments": "0000000000000000000000000000000000000000000000000000000000002329", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "constructorArguments": "000000000000000000000000ea87ae93fa0019a82a727bfd3ebd1cfca8f64f1d0000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D" + }, + { + "name": "MerkleTreeHook", + "address": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "FallbackRoutingHook", + "address": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000dc1508844b99c606e16c2ae87f33c373edd4b0f6", + "isProxy": false + }, + { + "name": "PausableHook", + "address": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StorageGasOracle", + "address": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "InterchainGasPaymaster", + "address": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "constructorArguments": "0000000000000000000000009e8b689e83d929cb8c2d9166e55319a4e6aa83b70000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7" + }, + { + "name": "ProtocolFee", + "address": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false + }, + { + "name": "ValidatorAnnounce", + "address": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + } + ], + "form": [ + { + "name": "ProxyAdmin", + "address": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "Mailbox", + "address": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", + "constructorArguments": "00000000000000000000000000000000000000000000000000000000000001de", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "constructorArguments": "000000000000000000000000ea87ae93fa0019a82a727bfd3ebd1cfca8f64f1d0000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D" + }, + { + "name": "MerkleTreeHook", + "address": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "FallbackRoutingHook", + "address": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000dc1508844b99c606e16c2ae87f33c373edd4b0f6", + "isProxy": false + }, + { + "name": "PausableHook", + "address": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StorageGasOracle", + "address": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "InterchainGasPaymaster", + "address": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "constructorArguments": "0000000000000000000000009e8b689e83d929cb8c2d9166e55319a4e6aa83b70000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7" + }, + { + "name": "ProtocolFee", + "address": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false + }, + { + "name": "ValidatorAnnounce", + "address": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + } + ], + "sonic": [ + { + "name": "ProxyAdmin", + "address": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "Mailbox", + "address": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", + "constructorArguments": "0000000000000000000000000000000000000000000000000000000000000092", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "constructorArguments": "000000000000000000000000ea87ae93fa0019a82a727bfd3ebd1cfca8f64f1d0000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D" + }, + { + "name": "MerkleTreeHook", + "address": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "FallbackRoutingHook", + "address": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000dc1508844b99c606e16c2ae87f33c373edd4b0f6", + "isProxy": false + }, + { + "name": "PausableHook", + "address": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StorageGasOracle", + "address": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "InterchainGasPaymaster", + "address": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "constructorArguments": "0000000000000000000000009e8b689e83d929cb8c2d9166e55319a4e6aa83b70000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7" + }, + { + "name": "ProtocolFee", + "address": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false + }, + { + "name": "ValidatorAnnounce", + "address": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + } + ], + "soneium": [ + { + "name": "ProxyAdmin", + "address": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "Mailbox", + "address": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", + "constructorArguments": "000000000000000000000000000000000000000000000000000000000000074c", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "constructorArguments": "000000000000000000000000ea87ae93fa0019a82a727bfd3ebd1cfca8f64f1d0000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D" + }, + { + "name": "MerkleTreeHook", + "address": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "FallbackRoutingHook", + "address": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000dc1508844b99c606e16c2ae87f33c373edd4b0f6", + "isProxy": false + }, + { + "name": "PausableHook", + "address": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StorageGasOracle", + "address": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "InterchainGasPaymaster", + "address": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "constructorArguments": "0000000000000000000000009e8b689e83d929cb8c2d9166e55319a4e6aa83b70000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7" + }, + { + "name": "ProtocolFee", + "address": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false + }, + { + "name": "ValidatorAnnounce", + "address": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + } + ], + "conflux": [ + { + "name": "ProxyAdmin", + "address": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "Mailbox", + "address": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", + "constructorArguments": "0000000000000000000000000000000000000000000000000000000000000406", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "constructorArguments": "000000000000000000000000ea87ae93fa0019a82a727bfd3ebd1cfca8f64f1d0000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D" + }, + { + "name": "MerkleTreeHook", + "address": "0xDc1508844B99C606E16C2Ae87f33c373edD4B0F6", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "FallbackRoutingHook", + "address": "0x2f0E57527Bb37E5E064EF243fad56CCE6241906c", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000dc1508844b99c606e16c2ae87f33c373edd4b0f6", + "isProxy": false + }, + { + "name": "PausableHook", + "address": "0xA8A311B69f688c1D9928259D872C31ca0d473642", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StorageGasOracle", + "address": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "InterchainGasPaymaster", + "address": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0xDf178647caB5e0222F4B53C57274FD2A03BEaed6", + "constructorArguments": "0000000000000000000000009e8b689e83d929cb8c2d9166e55319a4e6aa83b70000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7" + }, + { + "name": "ProtocolFee", + "address": "0x5DdFCA27f9a308c1429A010C4daB291b5534a297", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false + }, + { + "name": "ValidatorAnnounce", + "address": "0x84444cE490233CFa76E3F1029bc166aa8c266907", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + } + ], + "rivalz": [ + { + "name": "ProxyAdmin", + "address": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "Mailbox", + "address": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", + "constructorArguments": "00000000000000000000000000000000000000000000000000000000000002f1", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", + "constructorArguments": "000000000000000000000000ea87ae93fa0019a82a727bfd3ebd1cfca8f64f1d0000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D" + }, + { + "name": "MerkleTreeHook", + "address": "0x1c6f404800bA49Ed581af734eA0d25c0c7d017B2", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "FallbackRoutingHook", + "address": "0x48C427782Bc1e9ecE406b3e277481b28ABcBdf03", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba0000000000000000000000001c6f404800ba49ed581af734ea0d25c0c7d017b2", + "isProxy": false + }, + { + "name": "PausableHook", + "address": "0x9e8b689e83d929cb8c2d9166E55319a4e6aA83B7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StorageGasOracle", + "address": "0x248aDe14C0489E20C9a7Fea5F86DBfC3702208eF", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "InterchainGasPaymaster", + "address": "0x5e8a0fCc0D1DF583322943e01F02cB243e5300f6", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x3cECBa60A580dE20CC57D87528953a00f4ED99EA", + "constructorArguments": "0000000000000000000000005e8a0fcc0d1df583322943e01f02cb243e5300f60000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x5e8a0fCc0D1DF583322943e01F02cB243e5300f6" + }, + { + "name": "ProtocolFee", + "address": "0x4Ee9dEBB3046139661b51E17bdfD54Fd63211de7", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false + }, + { + "name": "ValidatorAnnounce", + "address": "0x65dCf8F6b3f6a0ECEdf3d0bdCB036AEa47A1d615", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + } ] } diff --git a/typescript/infra/config/environments/mainnet3/funding.ts b/typescript/infra/config/environments/mainnet3/funding.ts index 74f624ed72..c03400bc10 100644 --- a/typescript/infra/config/environments/mainnet3/funding.ts +++ b/typescript/infra/config/environments/mainnet3/funding.ts @@ -10,7 +10,7 @@ export const keyFunderConfig: KeyFunderConfig< > = { docker: { repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo', - tag: 'a7f3967-20241205-163749', + tag: '05e90bc-20241216-180025', }, // We're currently using the same deployer/key funder key as mainnet2. // To minimize nonce clobbering we offset the key funder cron @@ -32,8 +32,10 @@ export const keyFunderConfig: KeyFunderConfig< appchain: '0.05', arbitrum: '0.5', arbitrumnova: '0.05', + arthera: '0.1', astar: '100', astarzkevm: '0.05', + aurora: '0.05', flame: '1', avalanche: '5', b3: '0.05', @@ -47,7 +49,10 @@ export const keyFunderConfig: KeyFunderConfig< celo: '3', cheesechain: '50', chilizmainnet: '200', + conflux: '100', + conwai: '5000', coredao: '25', + corn: '0.001', cyber: '0.05', degenchain: '100', dogechain: '100', @@ -55,9 +60,12 @@ export const keyFunderConfig: KeyFunderConfig< endurance: '20', ethereum: '0.5', everclear: '0.05', + evmos: '500', fantom: '100', flare: '500', flowmainnet: '5', + form: '0.05', + // fractal: '500', fraxtal: '0.2', fusemainnet: '20', gnosis: '5', @@ -65,6 +73,7 @@ export const keyFunderConfig: KeyFunderConfig< harmony: '500', immutablezkevmmainnet: '25', inevm: '3', + ink: '0.05', kaia: '250', kroma: '0.05', linea: '0.2', @@ -93,12 +102,15 @@ export const keyFunderConfig: KeyFunderConfig< rarichain: '0.05', real: '0.1', redstone: '0.2', + rivalz: '0.05', rootstockmainnet: '0.002', sanko: '2', scroll: '0.5', sei: '50', shibarium: '50', snaxchain: '0.05', + soneium: '0.05', + sonic: '0.5', // ignore non-evm chains stride: '0', superseed: '0.05', @@ -106,6 +118,7 @@ export const keyFunderConfig: KeyFunderConfig< swell: '0.05', taiko: '0.2', tangle: '2', + telos: '100', treasure: '100', unichain: '0.05', // temporarily low until we're able to fund more diff --git a/typescript/infra/config/environments/mainnet3/gasPrices.json b/typescript/infra/config/environments/mainnet3/gasPrices.json index 1c5f05b28a..03054a4cf7 100644 --- a/typescript/infra/config/environments/mainnet3/gasPrices.json +++ b/typescript/infra/config/environments/mainnet3/gasPrices.json @@ -23,12 +23,20 @@ "amount": "0.01", "decimals": 9 }, + "arthera": { + "amount": "1.025082", + "decimals": 9 + }, "astar": { "amount": "779.371350051", "decimals": 9 }, "astarzkevm": { - "amount": "0.0988", + "amount": "0.263", + "decimals": 9 + }, + "aurora": { + "amount": "0.05", "decimals": 9 }, "flame": { @@ -36,11 +44,11 @@ "decimals": 9 }, "avalanche": { - "amount": "27.735398516", + "amount": "25.000000001", "decimals": 9 }, "b3": { - "amount": "0.001000253", + "amount": "0.001000256", "decimals": 9 }, "base": { @@ -60,7 +68,7 @@ "decimals": 9 }, "boba": { - "amount": "0.001000059", + "amount": "0.001000067", "decimals": 9 }, "bsc": { @@ -83,10 +91,22 @@ "amount": "5000.0", "decimals": 9 }, + "conflux": { + "amount": "20.0", + "decimals": 9 + }, + "conwai": { + "amount": "0.01", + "decimals": 9 + }, "coredao": { "amount": "30.0", "decimals": 9 }, + "corn": { + "amount": "0.0005", + "decimals": 9 + }, "cyber": { "amount": "0.001000252", "decimals": 9 @@ -112,15 +132,19 @@ "decimals": 9 }, "ethereum": { - "amount": "30.088451558", + "amount": "32.059172476", "decimals": 9 }, "everclear": { "amount": "0.1", "decimals": 9 }, + "evmos": { + "amount": "27.5", + "decimals": 9 + }, "fantom": { - "amount": "6.971582929", + "amount": "8.444088778", "decimals": 9 }, "flare": { @@ -131,6 +155,14 @@ "amount": "0.1", "decimals": 9 }, + "form": { + "amount": "0.001000252", + "decimals": 9 + }, + "fractal": { + "amount": "10.0", + "decimals": 9 + }, "fraxtal": { "amount": "0.001000253", "decimals": 9 @@ -159,6 +191,10 @@ "amount": "0.1", "decimals": 9 }, + "ink": { + "amount": "0.001000252", + "decimals": 9 + }, "injective": { "amount": "700000000", "decimals": 1 @@ -176,7 +212,7 @@ "decimals": 9 }, "lisk": { - "amount": "0.001001147", + "amount": "0.001001101", "decimals": 9 }, "lukso": { @@ -192,7 +228,7 @@ "decimals": 9 }, "mantapacific": { - "amount": "0.003000983", + "amount": "0.003000373", "decimals": 9 }, "mantle": { @@ -216,7 +252,7 @@ "decimals": 9 }, "mode": { - "amount": "0.001001363", + "amount": "0.001000264", "decimals": 9 }, "molten": { @@ -240,7 +276,7 @@ "decimals": 9 }, "optimism": { - "amount": "0.001000469", + "amount": "0.001000772", "decimals": 9 }, "orderly": { @@ -256,7 +292,7 @@ "decimals": 9 }, "polygonzkevm": { - "amount": "0.451", + "amount": "0.48", "decimals": 9 }, "polynomialfi": { @@ -264,7 +300,7 @@ "decimals": 9 }, "prom": { - "amount": "51.9", + "amount": "128.0", "decimals": 9 }, "proofofplay": { @@ -283,6 +319,10 @@ "amount": "0.00010005", "decimals": 9 }, + "rivalz": { + "amount": "0.01", + "decimals": 9 + }, "rootstockmainnet": { "amount": "0.07", "decimals": 9 @@ -300,7 +340,7 @@ "decimals": 9 }, "shibarium": { - "amount": "5.040876434", + "amount": "9.064712705", "decimals": 9 }, "snaxchain": { @@ -311,6 +351,14 @@ "amount": "0.5", "decimals": 1 }, + "soneium": { + "amount": "0.001000251", + "decimals": 9 + }, + "sonic": { + "amount": "1.1", + "decimals": 9 + }, "stride": { "amount": "0.005", "decimals": 1 @@ -335,8 +383,12 @@ "amount": "1.0", "decimals": 9 }, + "telos": { + "amount": "521.500627641", + "decimals": 9 + }, "treasure": { - "amount": "702.999550885", + "amount": "1601.935300783", "decimals": 9 }, "unichain": { @@ -344,7 +396,7 @@ "decimals": 9 }, "vana": { - "amount": "0.002986", + "amount": "0.005", "decimals": 9 }, "viction": { @@ -352,7 +404,7 @@ "decimals": 9 }, "worldchain": { - "amount": "0.001000255", + "amount": "0.001000258", "decimals": 9 }, "xai": { @@ -360,7 +412,7 @@ "decimals": 9 }, "xlayer": { - "amount": "23.05", + "amount": "23.5", "decimals": 9 }, "zeronetwork": { diff --git a/typescript/infra/config/environments/mainnet3/index.ts b/typescript/infra/config/environments/mainnet3/index.ts index d2061134f7..ca7806f443 100644 --- a/typescript/infra/config/environments/mainnet3/index.ts +++ b/typescript/infra/config/environments/mainnet3/index.ts @@ -32,15 +32,18 @@ export const environment: EnvironmentConfig = { role: Role = Role.Deployer, useSecrets?: boolean, chains?: ChainName[], - ) => - getMultiProviderForRole( + ) => { + const providerChains = + chains && chains.length > 0 ? chains : supportedChainNames; + return getMultiProviderForRole( environmentName, - chains && chains.length > 0 ? chains : supportedChainNames, - await getRegistry(useSecrets), + providerChains, + await getRegistry(useSecrets, providerChains), context, role, undefined, - ), + ); + }, getKeys: ( context: Contexts = Contexts.Hyperlane, role: Role = Role.Deployer, diff --git a/typescript/infra/config/environments/mainnet3/ism/verification.json b/typescript/infra/config/environments/mainnet3/ism/verification.json index 5cceb318f4..75e4fc83b9 100644 --- a/typescript/infra/config/environments/mainnet3/ism/verification.json +++ b/typescript/infra/config/environments/mainnet3/ism/verification.json @@ -7690,5 +7690,1049 @@ "constructorArguments": "", "isProxy": true } + ], + "corn": [ + { + "name": "StaticMerkleRootMultisigIsmFactory", + "address": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootMultisigIsm", + "address": "0x4725F7b8037513915aAf6D6CBDE2920E28540dDc", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdMultisigIsmFactory", + "address": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdMultisigIsm", + "address": "0xAF03386044373E2fe26C5b1dCedF5a7e854a7a3F", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationIsmFactory", + "address": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationIsm", + "address": "0x882CD0C5D50b6dD74b36Da4BDb059507fddEDdf2", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationHookFactory", + "address": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationHook", + "address": "0x19930232E9aFC4f4F09d09fe2375680fAc2100D0", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "DomainRoutingIsmFactory", + "address": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "DomaingRoutingIsm", + "address": "0x12Ed1BbA182CbC63692F813651BD493B7445C874", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMerkleRootWeightedMultisigIsmFactory", + "address": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootWeightedMultisigIsm", + "address": "0x3b9f24fD2ecfed0d3A88fa7f0E4e5747671981D7", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdWeightedMultisigIsmFactory", + "address": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdWeightedMultisigIsm", + "address": "0x71DCcD21B912F7d4f636af0C9eA5DC0C10617354", + "constructorArguments": "", + "isProxy": true + } + ], + "conwai": [ + { + "name": "StaticMerkleRootMultisigIsmFactory", + "address": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootMultisigIsm", + "address": "0x4725F7b8037513915aAf6D6CBDE2920E28540dDc", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdMultisigIsmFactory", + "address": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdMultisigIsm", + "address": "0xAF03386044373E2fe26C5b1dCedF5a7e854a7a3F", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationIsmFactory", + "address": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationIsm", + "address": "0x882CD0C5D50b6dD74b36Da4BDb059507fddEDdf2", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationHookFactory", + "address": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationHook", + "address": "0x19930232E9aFC4f4F09d09fe2375680fAc2100D0", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "DomainRoutingIsmFactory", + "address": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "DomaingRoutingIsm", + "address": "0x12Ed1BbA182CbC63692F813651BD493B7445C874", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMerkleRootWeightedMultisigIsmFactory", + "address": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootWeightedMultisigIsm", + "address": "0x3b9f24fD2ecfed0d3A88fa7f0E4e5747671981D7", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdWeightedMultisigIsmFactory", + "address": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdWeightedMultisigIsm", + "address": "0x71DCcD21B912F7d4f636af0C9eA5DC0C10617354", + "constructorArguments": "", + "isProxy": true + } + ], + "telos": [ + { + "name": "StaticMerkleRootMultisigIsmFactory", + "address": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootMultisigIsm", + "address": "0x4725F7b8037513915aAf6D6CBDE2920E28540dDc", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdMultisigIsmFactory", + "address": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdMultisigIsm", + "address": "0xAF03386044373E2fe26C5b1dCedF5a7e854a7a3F", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationIsmFactory", + "address": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationIsm", + "address": "0x882CD0C5D50b6dD74b36Da4BDb059507fddEDdf2", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationHookFactory", + "address": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationHook", + "address": "0x19930232E9aFC4f4F09d09fe2375680fAc2100D0", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "DomainRoutingIsmFactory", + "address": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "DomaingRoutingIsm", + "address": "0x12Ed1BbA182CbC63692F813651BD493B7445C874", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMerkleRootWeightedMultisigIsmFactory", + "address": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootWeightedMultisigIsm", + "address": "0x3b9f24fD2ecfed0d3A88fa7f0E4e5747671981D7", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdWeightedMultisigIsmFactory", + "address": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdWeightedMultisigIsm", + "address": "0x71DCcD21B912F7d4f636af0C9eA5DC0C10617354", + "constructorArguments": "", + "isProxy": true + } + ], + "arthera": [ + { + "name": "StaticMerkleRootMultisigIsmFactory", + "address": "0x4C97D35c668EE5194a13c8DE8Afc18cce40C9F28", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootMultisigIsm", + "address": "0x21005c99F1222f3B7182f3111D1F3753f826B9fE", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdMultisigIsmFactory", + "address": "0xDa7cECb05C4aeB02c1aFDE277d4306a2da7Bd762", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdMultisigIsm", + "address": "0x504e5f4694C252C9E0CD10bbEa39763582cD23Bb", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationIsmFactory", + "address": "0x4Eb82Ee35b0a1c1d776E3a3B547f9A9bA6FCC9f2", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationIsm", + "address": "0x7E556A80da4F019d38C2e4497694c8fa26513B52", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationHookFactory", + "address": "0x46fa3A5780e5B90Eaf34BDED554d5353B5ABE9E7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationHook", + "address": "0x3359298F25e7CF2426720FCCAdbaF47037Abe5e9", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "DomainRoutingIsmFactory", + "address": "0x29B37088724B745C0ABcE591449Cf042772160C2", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "DomaingRoutingIsm", + "address": "0xD7ca12DF39C94281144f68123E36DF5874Ef4FFd", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMerkleRootWeightedMultisigIsmFactory", + "address": "0xEF9A332Ec1fD233Bf9344A58be56ff9E104B4f60", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootWeightedMultisigIsm", + "address": "0xb22E72F31924b7bA11ff01Ae5014cd41B135Af49", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdWeightedMultisigIsmFactory", + "address": "0xCB9f90EE5d83Ea52ABd922BD70898f0155D54798", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdWeightedMultisigIsm", + "address": "0x23AD9FF8b97CA75115b91D61ceBd15B833f79f79", + "constructorArguments": "", + "isProxy": true + } + ], + "ink": [ + { + "name": "StaticMerkleRootMultisigIsmFactory", + "address": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootMultisigIsm", + "address": "0x4725F7b8037513915aAf6D6CBDE2920E28540dDc", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdMultisigIsmFactory", + "address": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdMultisigIsm", + "address": "0xAF03386044373E2fe26C5b1dCedF5a7e854a7a3F", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationIsmFactory", + "address": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationIsmFactory", + "address": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationIsmFactory", + "address": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationIsm", + "address": "0x12Ed1BbA182CbC63692F813651BD493B7445C874", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationHookFactory", + "address": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationHook", + "address": "0x3b9f24fD2ecfed0d3A88fa7f0E4e5747671981D7", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "DomainRoutingIsmFactory", + "address": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "DomaingRoutingIsm", + "address": "0x71DCcD21B912F7d4f636af0C9eA5DC0C10617354", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMerkleRootWeightedMultisigIsmFactory", + "address": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootWeightedMultisigIsm", + "address": "0x7f51A658837A315134A97ff8B586d71B726B7e61", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdWeightedMultisigIsmFactory", + "address": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdWeightedMultisigIsm", + "address": "0xDFF18Bf286c9cDd0fC653a28616460Cf7443F8EF", + "constructorArguments": "", + "isProxy": true + } + ], + "form": [ + { + "name": "StaticMerkleRootMultisigIsmFactory", + "address": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootMultisigIsm", + "address": "0x4725F7b8037513915aAf6D6CBDE2920E28540dDc", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdMultisigIsmFactory", + "address": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdMultisigIsm", + "address": "0xAF03386044373E2fe26C5b1dCedF5a7e854a7a3F", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationIsmFactory", + "address": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationIsm", + "address": "0x882CD0C5D50b6dD74b36Da4BDb059507fddEDdf2", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationHookFactory", + "address": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationHook", + "address": "0x19930232E9aFC4f4F09d09fe2375680fAc2100D0", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "DomainRoutingIsmFactory", + "address": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "DomaingRoutingIsm", + "address": "0x12Ed1BbA182CbC63692F813651BD493B7445C874", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMerkleRootWeightedMultisigIsmFactory", + "address": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootWeightedMultisigIsm", + "address": "0x3b9f24fD2ecfed0d3A88fa7f0E4e5747671981D7", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdWeightedMultisigIsmFactory", + "address": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdWeightedMultisigIsm", + "address": "0x71DCcD21B912F7d4f636af0C9eA5DC0C10617354", + "constructorArguments": "", + "isProxy": true + } + ], + "sonic": [ + { + "name": "StaticMerkleRootMultisigIsmFactory", + "address": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootMultisigIsm", + "address": "0x4725F7b8037513915aAf6D6CBDE2920E28540dDc", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdMultisigIsmFactory", + "address": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdMultisigIsm", + "address": "0xAF03386044373E2fe26C5b1dCedF5a7e854a7a3F", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationIsmFactory", + "address": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationIsm", + "address": "0x882CD0C5D50b6dD74b36Da4BDb059507fddEDdf2", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationHookFactory", + "address": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationHook", + "address": "0x19930232E9aFC4f4F09d09fe2375680fAc2100D0", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "DomainRoutingIsmFactory", + "address": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "DomaingRoutingIsm", + "address": "0x12Ed1BbA182CbC63692F813651BD493B7445C874", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMerkleRootWeightedMultisigIsmFactory", + "address": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootWeightedMultisigIsm", + "address": "0x3b9f24fD2ecfed0d3A88fa7f0E4e5747671981D7", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdWeightedMultisigIsmFactory", + "address": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdWeightedMultisigIsm", + "address": "0x71DCcD21B912F7d4f636af0C9eA5DC0C10617354", + "constructorArguments": "", + "isProxy": true + } + ], + "soneium": [ + { + "name": "StaticMerkleRootMultisigIsmFactory", + "address": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootMultisigIsm", + "address": "0x4725F7b8037513915aAf6D6CBDE2920E28540dDc", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdMultisigIsmFactory", + "address": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdMultisigIsm", + "address": "0xAF03386044373E2fe26C5b1dCedF5a7e854a7a3F", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationIsmFactory", + "address": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationIsm", + "address": "0x882CD0C5D50b6dD74b36Da4BDb059507fddEDdf2", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationHookFactory", + "address": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationHook", + "address": "0x19930232E9aFC4f4F09d09fe2375680fAc2100D0", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "DomainRoutingIsmFactory", + "address": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "DomaingRoutingIsm", + "address": "0x12Ed1BbA182CbC63692F813651BD493B7445C874", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMerkleRootWeightedMultisigIsmFactory", + "address": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootWeightedMultisigIsm", + "address": "0x3b9f24fD2ecfed0d3A88fa7f0E4e5747671981D7", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdWeightedMultisigIsmFactory", + "address": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdWeightedMultisigIsm", + "address": "0x71DCcD21B912F7d4f636af0C9eA5DC0C10617354", + "constructorArguments": "", + "isProxy": true + } + ], + "conflux": [ + { + "name": "StaticMerkleRootMultisigIsmFactory", + "address": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootMultisigIsm", + "address": "0x4725F7b8037513915aAf6D6CBDE2920E28540dDc", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdMultisigIsmFactory", + "address": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdMultisigIsm", + "address": "0xAF03386044373E2fe26C5b1dCedF5a7e854a7a3F", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationIsmFactory", + "address": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationIsm", + "address": "0x882CD0C5D50b6dD74b36Da4BDb059507fddEDdf2", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationHookFactory", + "address": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationHook", + "address": "0x19930232E9aFC4f4F09d09fe2375680fAc2100D0", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "DomainRoutingIsmFactory", + "address": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "DomaingRoutingIsm", + "address": "0x12Ed1BbA182CbC63692F813651BD493B7445C874", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMerkleRootWeightedMultisigIsmFactory", + "address": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootWeightedMultisigIsm", + "address": "0x3b9f24fD2ecfed0d3A88fa7f0E4e5747671981D7", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdWeightedMultisigIsmFactory", + "address": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdWeightedMultisigIsm", + "address": "0x71DCcD21B912F7d4f636af0C9eA5DC0C10617354", + "constructorArguments": "", + "isProxy": true + } + ], + "evmos": [ + { + "name": "StaticMerkleRootMultisigIsmFactory", + "address": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootMultisigIsm", + "address": "0x4725F7b8037513915aAf6D6CBDE2920E28540dDc", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdMultisigIsmFactory", + "address": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdMultisigIsm", + "address": "0xAF03386044373E2fe26C5b1dCedF5a7e854a7a3F", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationIsmFactory", + "address": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationIsm", + "address": "0x882CD0C5D50b6dD74b36Da4BDb059507fddEDdf2", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationHookFactory", + "address": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationHook", + "address": "0x19930232E9aFC4f4F09d09fe2375680fAc2100D0", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "DomainRoutingIsmFactory", + "address": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "DomaingRoutingIsm", + "address": "0x12Ed1BbA182CbC63692F813651BD493B7445C874", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMerkleRootWeightedMultisigIsmFactory", + "address": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootWeightedMultisigIsm", + "address": "0x3b9f24fD2ecfed0d3A88fa7f0E4e5747671981D7", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdWeightedMultisigIsmFactory", + "address": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdWeightedMultisigIsm", + "address": "0x71DCcD21B912F7d4f636af0C9eA5DC0C10617354", + "constructorArguments": "", + "isProxy": true + } + ], + "aurora": [ + { + "name": "StaticMerkleRootMultisigIsmFactory", + "address": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootMultisigIsm", + "address": "0x4725F7b8037513915aAf6D6CBDE2920E28540dDc", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdMultisigIsmFactory", + "address": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdMultisigIsm", + "address": "0xAF03386044373E2fe26C5b1dCedF5a7e854a7a3F", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationIsmFactory", + "address": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationIsm", + "address": "0x882CD0C5D50b6dD74b36Da4BDb059507fddEDdf2", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationHookFactory", + "address": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationHook", + "address": "0x19930232E9aFC4f4F09d09fe2375680fAc2100D0", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "DomainRoutingIsmFactory", + "address": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "DomaingRoutingIsm", + "address": "0x12Ed1BbA182CbC63692F813651BD493B7445C874", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMerkleRootWeightedMultisigIsmFactory", + "address": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootWeightedMultisigIsm", + "address": "0x3b9f24fD2ecfed0d3A88fa7f0E4e5747671981D7", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdWeightedMultisigIsmFactory", + "address": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdWeightedMultisigIsm", + "address": "0x71DCcD21B912F7d4f636af0C9eA5DC0C10617354", + "constructorArguments": "", + "isProxy": true + } + ], + "rivalz": [ + { + "name": "StaticMerkleRootMultisigIsmFactory", + "address": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootMultisigIsm", + "address": "0x4725F7b8037513915aAf6D6CBDE2920E28540dDc", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdMultisigIsmFactory", + "address": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdMultisigIsm", + "address": "0xAF03386044373E2fe26C5b1dCedF5a7e854a7a3F", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationIsmFactory", + "address": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationIsm", + "address": "0x882CD0C5D50b6dD74b36Da4BDb059507fddEDdf2", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticAggregationHookFactory", + "address": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticAggregationHook", + "address": "0x19930232E9aFC4f4F09d09fe2375680fAc2100D0", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "DomainRoutingIsmFactory", + "address": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "DomaingRoutingIsm", + "address": "0x12Ed1BbA182CbC63692F813651BD493B7445C874", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMerkleRootWeightedMultisigIsmFactory", + "address": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMerkleRootWeightedMultisigIsm", + "address": "0x3b9f24fD2ecfed0d3A88fa7f0E4e5747671981D7", + "constructorArguments": "", + "isProxy": true + }, + { + "name": "StaticMessageIdWeightedMultisigIsmFactory", + "address": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", + "constructorArguments": "", + "isProxy": false + }, + { + "name": "StaticMessageIdWeightedMultisigIsm", + "address": "0x71DCcD21B912F7d4f636af0C9eA5DC0C10617354", + "constructorArguments": "", + "isProxy": true + } ] } diff --git a/typescript/infra/config/environments/mainnet3/middleware/accounts/verification.json b/typescript/infra/config/environments/mainnet3/middleware/accounts/verification.json index 07944e2a41..cd4c3ea01c 100644 --- a/typescript/infra/config/environments/mainnet3/middleware/accounts/verification.json +++ b/typescript/infra/config/environments/mainnet3/middleware/accounts/verification.json @@ -1869,5 +1869,257 @@ "isProxy": true, "expectedimplementation": "0xAE557e108b3336130370aC74836f1356B4b30Cf2" } + ], + "corn": [ + { + "name": "InterchainAccountIsm", + "address": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "InterchainAccountRouter", + "address": "0x3881c3e945CBB89ae67c43E82f570baDF1c6EA94", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "constructorArguments": "0000000000000000000000003881c3e945cbb89ae67c43e82f570badf1c6ea940000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011b76d93a9d39eb51f54ebf5566308640cde882b000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x3881c3e945CBB89ae67c43E82f570baDF1c6EA94" + } + ], + "conwai": [ + { + "name": "InterchainAccountIsm", + "address": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "InterchainAccountRouter", + "address": "0x3881c3e945CBB89ae67c43E82f570baDF1c6EA94", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "constructorArguments": "0000000000000000000000003881c3e945cbb89ae67c43e82f570badf1c6ea940000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011b76d93a9d39eb51f54ebf5566308640cde882b000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x3881c3e945CBB89ae67c43E82f570baDF1c6EA94" + } + ], + "rivalz": [ + { + "name": "InterchainAccountIsm", + "address": "0xd64d126941EaC2Cf53e0E4E8146cC70449b60D73", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "InterchainAccountRouter", + "address": "0x5DA60220C5dDe35b7aE91c042ff5979047FA0785", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x1A4F09A615aA4a35E5a146DC2fa19975bebF21A5", + "constructorArguments": "0000000000000000000000005da60220c5dde35b7ae91c042ff5979047fa07850000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d64d126941eac2cf53e0e4e8146cc70449b60d73000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x5DA60220C5dDe35b7aE91c042ff5979047FA0785" + } + ], + "telos": [ + { + "name": "InterchainAccountIsm", + "address": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "InterchainAccountRouter", + "address": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0xF457D831d9F55e87B2F0b35AD6D033fd6b4181Ed", + "constructorArguments": "00000000000000000000000093d41e41ca545a35a81d11b08d2ee8b852c768df0000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011b76d93a9d39eb51f54ebf5566308640cde882b000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df" + } + ], + "arthera": [ + { + "name": "InterchainAccountIsm", + "address": "0xf9609bB22847e0DB5F6fB8f95b84D25A19b46ac5", + "constructorArguments": "000000000000000000000000473884010f0c1742da8ad01e7e295624b931076b", + "isProxy": false + }, + { + "name": "InterchainAccountRouter", + "address": "0xbBc1bd54a03d87e7aDE2089be2090cA5731A44B8", + "constructorArguments": "000000000000000000000000473884010f0c1742da8ad01e7e295624b931076b", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x2b6d3F7d28B5EC8C3C028fBCAdcf774D9709Dd29", + "constructorArguments": "000000000000000000000000bbc1bd54a03d87e7ade2089be2090ca5731a44b800000000000000000000000003cf708e42c89623bd83b281a56935cb562b925800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f9609bb22847e0db5f6fb8f95b84d25a19b46ac5000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0xbBc1bd54a03d87e7aDE2089be2090cA5731A44B8" + } + ], + "sonic": [ + { + "name": "InterchainAccountIsm", + "address": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "InterchainAccountRouter", + "address": "0x3881c3e945CBB89ae67c43E82f570baDF1c6EA94", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "constructorArguments": "0000000000000000000000003881c3e945cbb89ae67c43e82f570badf1c6ea940000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011b76d93a9d39eb51f54ebf5566308640cde882b000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x3881c3e945CBB89ae67c43E82f570baDF1c6EA94" + } + ], + "soneium": [ + { + "name": "InterchainAccountIsm", + "address": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "InterchainAccountRouter", + "address": "0x3881c3e945CBB89ae67c43E82f570baDF1c6EA94", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "constructorArguments": "0000000000000000000000003881c3e945cbb89ae67c43e82f570badf1c6ea940000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011b76d93a9d39eb51f54ebf5566308640cde882b000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x3881c3e945CBB89ae67c43E82f570baDF1c6EA94" + } + ], + "evmos": [ + { + "name": "InterchainAccountIsm", + "address": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "InterchainAccountRouter", + "address": "0x3881c3e945CBB89ae67c43E82f570baDF1c6EA94", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "constructorArguments": "0000000000000000000000003881c3e945cbb89ae67c43e82f570badf1c6ea940000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011b76d93a9d39eb51f54ebf5566308640cde882b000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x3881c3e945CBB89ae67c43E82f570baDF1c6EA94" + } + ], + "form": [ + { + "name": "InterchainAccountIsm", + "address": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "InterchainAccountRouter", + "address": "0x3881c3e945CBB89ae67c43E82f570baDF1c6EA94", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "constructorArguments": "0000000000000000000000003881c3e945cbb89ae67c43e82f570badf1c6ea940000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011b76d93a9d39eb51f54ebf5566308640cde882b000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x3881c3e945CBB89ae67c43E82f570baDF1c6EA94" + } + ], + "aurora": [ + { + "name": "InterchainAccountIsm", + "address": "0xF457D831d9F55e87B2F0b35AD6D033fd6b4181Ed", + "constructorArguments": "0000000000000000000000007f50c5776722630a0024fae05fde8b47571d7b39", + "isProxy": false + }, + { + "name": "InterchainAccountRouter", + "address": "0xc2466492C451E1AE49d8C874bB9f89293Aaad59b", + "constructorArguments": "0000000000000000000000007f50c5776722630a0024fae05fde8b47571d7b39", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0x021D2810a758c833080DEc2F1Fa8F571Aae97D45", + "constructorArguments": "000000000000000000000000c2466492c451e1ae49d8c874bb9f89293aaad59b0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f457d831d9f55e87b2f0b35ad6d033fd6b4181ed000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0xc2466492C451E1AE49d8C874bB9f89293Aaad59b" + } + ], + "conflux": [ + { + "name": "InterchainAccountIsm", + "address": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "InterchainAccountRouter", + "address": "0x028B04386031b9648A8D78d06c58F6E763Be5cD0", + "constructorArguments": "0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0xc2466492C451E1AE49d8C874bB9f89293Aaad59b", + "constructorArguments": "000000000000000000000000028b04386031b9648a8d78d06c58f6e763be5cd00000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093d41e41ca545a35a81d11b08d2ee8b852c768df000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x028B04386031b9648A8D78d06c58F6E763Be5cD0" + } + ], + "ink": [ + { + "name": "InterchainAccountIsm", + "address": "0x60515f328B2c55Df63f456D9D839a0082892dEf8", + "constructorArguments": "0000000000000000000000007f50c5776722630a0024fae05fde8b47571d7b39", + "isProxy": false + }, + { + "name": "InterchainAccountRouter", + "address": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df", + "constructorArguments": "0000000000000000000000007f50c5776722630a0024fae05fde8b47571d7b39", + "isProxy": false + }, + { + "name": "TransparentUpgradeableProxy", + "address": "0xF457D831d9F55e87B2F0b35AD6D033fd6b4181Ed", + "constructorArguments": "00000000000000000000000093d41e41ca545a35a81d11b08d2ee8b852c768df0000000000000000000000003a464f746d23ab22155710f44db16dca53e0775e00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060515f328b2c55df63f456d9d839a0082892def8000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "expectedimplementation": "0x93D41E41cA545a35A81d11b08D2eE8b852C768df" + } ] } diff --git a/typescript/infra/config/environments/mainnet3/supportedChainNames.ts b/typescript/infra/config/environments/mainnet3/supportedChainNames.ts index 0b86151222..5d433fca5c 100644 --- a/typescript/infra/config/environments/mainnet3/supportedChainNames.ts +++ b/typescript/infra/config/environments/mainnet3/supportedChainNames.ts @@ -7,8 +7,10 @@ export const mainnet3SupportedChainNames = [ 'appchain', 'arbitrum', 'arbitrumnova', + 'arthera', 'astar', 'astarzkevm', + 'aurora', 'flame', 'avalanche', 'b3', @@ -22,7 +24,10 @@ export const mainnet3SupportedChainNames = [ 'celo', 'cheesechain', 'chilizmainnet', + 'conflux', + 'conwai', 'coredao', + 'corn', 'cyber', 'degenchain', 'dogechain', @@ -31,9 +36,12 @@ export const mainnet3SupportedChainNames = [ 'endurance', 'ethereum', 'everclear', + 'evmos', 'fantom', 'flare', 'flowmainnet', + 'form', + // 'fractal', 'fraxtal', 'fusemainnet', 'gnosis', @@ -41,6 +49,7 @@ export const mainnet3SupportedChainNames = [ 'harmony', 'immutablezkevmmainnet', 'inevm', + 'ink', 'injective', 'kaia', 'kroma', @@ -72,6 +81,7 @@ export const mainnet3SupportedChainNames = [ 'rarichain', 'real', 'redstone', + 'rivalz', 'rootstockmainnet', 'sanko', 'scroll', @@ -79,12 +89,15 @@ export const mainnet3SupportedChainNames = [ 'shibarium', 'snaxchain', 'solanamainnet', + 'soneium', + 'sonic', 'stride', 'superseed', 'superpositionmainnet', 'swell', 'taiko', 'tangle', + 'telos', 'treasure', 'unichain', 'vana', diff --git a/typescript/infra/config/environments/mainnet3/tokenPrices.json b/typescript/infra/config/environments/mainnet3/tokenPrices.json index 9567a31775..7c3702808b 100644 --- a/typescript/infra/config/environments/mainnet3/tokenPrices.json +++ b/typescript/infra/config/environments/mainnet3/tokenPrices.json @@ -1,99 +1,112 @@ { - "ancient8": "3849.95", - "alephzeroevmmainnet": "0.563568", - "apechain": "1.66", - "appchain": "3849.95", - "arbitrum": "3849.95", - "arbitrumnova": "3849.95", - "astar": "0.078825", - "astarzkevm": "3849.95", - "flame": "7.62", - "avalanche": "49.4", - "b3": "3849.95", - "base": "3849.95", - "bitlayer": "98047", - "blast": "3849.95", - "bob": "3849.95", - "boba": "3849.95", - "bsc": "714.94", - "bsquared": "98047", - "celo": "0.916567", - "cheesechain": "0.0015485", - "chilizmainnet": "0.119182", - "coredao": "1.42", - "cyber": "3849.95", - "degenchain": "0.01880045", - "dogechain": "0.429424", - "duckchain": "6.4", - "eclipsemainnet": "3849.95", - "endurance": "3.21", - "ethereum": "3849.95", - "everclear": "3849.95", - "fantom": "1.23", - "flare": "0.02912373", - "flowmainnet": "1.048", - "fraxtal": "3847.8", - "fusemainnet": "0.04124996", + "ancient8": "3967.88", + "alephzeroevmmainnet": "0.574132", + "apechain": "1.55", + "appchain": "3967.88", + "arbitrum": "3967.88", + "arbitrumnova": "3967.88", + "arthera": "0.130115", + "astar": "0.073381", + "astarzkevm": "3967.88", + "aurora": "3967.88", + "flame": "6.58", + "avalanche": "49.43", + "b3": "3967.88", + "base": "3967.88", + "bitlayer": "106640", + "blast": "3967.88", + "bob": "3967.88", + "boba": "3967.88", + "bsc": "719.63", + "bsquared": "106640", + "celo": "0.810897", + "cheesechain": "0.00135152", + "chilizmainnet": "0.108762", + "conflux": "0.205619", + "conwai": "0.00468951", + "coredao": "1.35", + "corn": "106640", + "cyber": "3967.88", + "degenchain": "0.0142007", + "dogechain": "0.401903", + "duckchain": "6.06", + "eclipsemainnet": "3967.88", + "endurance": "2.71", + "ethereum": "3967.88", + "everclear": "3967.88", + "evmos": "0.03072161", + "fantom": "1.38", + "flare": "0.0303841", + "flowmainnet": "0.931723", + "form": "3967.88", + "fractal": "0.00058043", + "fraxtal": "3939.37", + "fusemainnet": "0.03904172", "gnosis": "1.001", - "gravity": "0.03951512", - "harmony": "0.03939191", - "immutablezkevmmainnet": "1.89", - "inevm": "30.43", - "injective": "30.43", - "kaia": "0.282109", - "kroma": "3849.95", - "linea": "3849.95", - "lisk": "3849.95", - "lukso": "2.81", - "lumia": "2.25", - "lumiaprism": "2.25", - "mantapacific": "3849.95", - "mantle": "1.13", - "merlin": "99320", - "metal": "3849.95", - "metis": "59.74", - "mint": "3849.95", - "mode": "3849.95", - "molten": "0.382952", - "moonbeam": "0.345164", - "morph": "3849.95", - "neutron": "0.571583", - "oortmainnet": "0.22645", - "optimism": "3849.95", - "orderly": "3849.95", - "osmosis": "0.699208", - "polygon": "0.633271", - "polygonzkevm": "3849.95", - "polynomialfi": "3849.95", - "prom": "7.16", - "proofofplay": "3849.95", - "rarichain": "3849.95", + "gravity": "0.0340731", + "harmony": "0.03279832", + "immutablezkevmmainnet": "1.8", + "inevm": "28.72", + "ink": "3967.88", + "injective": "28.72", + "kaia": "0.275014", + "kroma": "3967.88", + "linea": "3967.88", + "lisk": "3967.88", + "lukso": "2.9", + "lumia": "2.03", + "lumiaprism": "2.03", + "mantapacific": "3967.88", + "mantle": "1.21", + "merlin": "106736", + "metal": "3967.88", + "metis": "55.88", + "mint": "3967.88", + "mode": "3967.88", + "molten": "0.419836", + "moonbeam": "0.309739", + "morph": "3967.88", + "neutron": "0.532415", + "oortmainnet": "0.190901", + "optimism": "3967.88", + "orderly": "3967.88", + "osmosis": "0.58828", + "polygon": "0.600874", + "polygonzkevm": "3967.88", + "polynomialfi": "3967.88", + "prom": "6.7", + "proofofplay": "3967.88", + "rarichain": "3967.88", "real": "1", - "redstone": "3849.95", - "rootstockmainnet": "98004", - "sanko": "58.27", - "scroll": "3849.95", - "sei": "0.625869", - "shibarium": "0.670964", - "snaxchain": "3849.95", - "solanamainnet": "226.39", - "stride": "0.779753", - "superseed": "3849.95", - "superpositionmainnet": "3849.95", - "swell": "3849.95", - "taiko": "3849.95", + "redstone": "3967.88", + "rivalz": "3967.88", + "rootstockmainnet": "105807", + "sanko": "60.7", + "scroll": "3967.88", + "sei": "0.574136", + "shibarium": "0.605325", + "snaxchain": "3967.88", + "solanamainnet": "218.06", + "soneium": "3967.88", + "sonic": "1.38", + "stride": "0.73114", + "superseed": "3967.88", + "superpositionmainnet": "3967.88", + "swell": "3967.88", + "taiko": "3967.88", "tangle": "1", - "treasure": "0.638598", - "unichain": "3849.95", - "vana": "1", - "viction": "0.50166", - "worldchain": "3849.95", - "xai": "0.368066", - "xlayer": "56.38", - "zeronetwork": "3849.95", - "zetachain": "0.805386", - "zircuit": "3849.95", - "zklink": "3849.95", - "zksync": "3849.95", - "zoramainnet": "3849.95" + "telos": "0.300211", + "treasure": "0.584585", + "unichain": "3967.88", + "vana": "28.22", + "viction": "0.474985", + "worldchain": "3967.88", + "xai": "0.319313", + "xlayer": "53.91", + "zeronetwork": "3967.88", + "zetachain": "0.721977", + "zircuit": "3967.88", + "zklink": "3967.88", + "zksync": "3967.88", + "zoramainnet": "3967.88" } diff --git a/typescript/infra/config/environments/mainnet3/validators.ts b/typescript/infra/config/environments/mainnet3/validators.ts index 17500268ec..73e4985a50 100644 --- a/typescript/infra/config/environments/mainnet3/validators.ts +++ b/typescript/infra/config/environments/mainnet3/validators.ts @@ -1254,5 +1254,137 @@ export const validatorChainConfig = ( 'appchain', ), }, + + arthera: { + interval: 5, + reorgPeriod: getReorgPeriod('arthera'), + validators: validatorsConfig( + { + [Contexts.Hyperlane]: ['0x13710ac11c36c169f62fba95767ae59a1e57098d'], + }, + 'arthera', + ), + }, + aurora: { + interval: 5, + reorgPeriod: getReorgPeriod('aurora'), + validators: validatorsConfig( + { + [Contexts.Hyperlane]: ['0x37105aec3ff37c7bb0abdb0b1d75112e1e69fa86'], + }, + 'aurora', + ), + }, + conflux: { + interval: 5, + reorgPeriod: getReorgPeriod('conflux'), + validators: validatorsConfig( + { + [Contexts.Hyperlane]: ['0x113dfa1dc9b0a2efb6ad01981e2aad86d3658490'], + }, + 'conflux', + ), + }, + conwai: { + interval: 5, + reorgPeriod: getReorgPeriod('conwai'), + validators: validatorsConfig( + { + [Contexts.Hyperlane]: ['0x949e2cdd7e79f99ee9bbe549540370cdc62e73c3'], + }, + 'conwai', + ), + }, + corn: { + interval: 5, + reorgPeriod: getReorgPeriod('corn'), + validators: validatorsConfig( + { + [Contexts.Hyperlane]: ['0xc80b2e3e38220e02d194a0effa9d5bfe89894c07'], + }, + 'corn', + ), + }, + evmos: { + interval: 5, + reorgPeriod: getReorgPeriod('evmos'), + validators: validatorsConfig( + { + [Contexts.Hyperlane]: ['0x8f82387ad8b7b13aa9e06ed3f77f78a77713afe0'], + }, + 'evmos', + ), + }, + form: { + interval: 5, + reorgPeriod: getReorgPeriod('form'), + validators: validatorsConfig( + { + [Contexts.Hyperlane]: ['0x58554b2e76167993b5fc000d0070a2f883cd333a'], + }, + 'form', + ), + }, + ink: { + interval: 5, + reorgPeriod: getReorgPeriod('ink'), + validators: validatorsConfig( + { + [Contexts.Hyperlane]: ['0xb533b8b104522958b984fb258e0684dec0f1a6a5'], + }, + 'ink', + ), + }, + soneium: { + interval: 5, + reorgPeriod: getReorgPeriod('soneium'), + validators: validatorsConfig( + { + [Contexts.Hyperlane]: ['0xd4b7af853ed6a2bfc329ecef545df90c959cbee8'], + }, + 'soneium', + ), + }, + sonic: { + interval: 5, + reorgPeriod: getReorgPeriod('sonic'), + validators: validatorsConfig( + { + [Contexts.Hyperlane]: ['0xa313d72dbbd3fa51a2ed1611ea50c37946fa42f7'], + }, + 'sonic', + ), + }, + telos: { + interval: 5, + reorgPeriod: getReorgPeriod('telos'), + validators: validatorsConfig( + { + [Contexts.Hyperlane]: ['0xcb08410b14d3adf0d0646f0c61cd07e0daba8e54'], + }, + 'telos', + ), + }, + rivalz: { + interval: 5, + reorgPeriod: getReorgPeriod('rivalz'), + validators: validatorsConfig( + { + [Contexts.Hyperlane]: ['0xf87c3eb3dde972257b0d6d110bdadcda951c0dc1'], + }, + 'rivalz', + ), + }, + + // fractal: { + // interval: 5, + // reorgPeriod: getReorgPeriod('fractal'), + // validators: validatorsConfig( + // { + // [Contexts.Hyperlane]: ['0x3476c9652d3371bb01bbb4962516fffee5e73754'], + // }, + // 'fractal', + // ), + // }, }; }; diff --git a/typescript/infra/config/environments/testnet4/index.ts b/typescript/infra/config/environments/testnet4/index.ts index 9ef3436975..03430bbbe4 100644 --- a/typescript/infra/config/environments/testnet4/index.ts +++ b/typescript/infra/config/environments/testnet4/index.ts @@ -26,10 +26,13 @@ import { liquidityLayerRelayerConfig } from './middleware.js'; import { owners } from './owners.js'; import { supportedChainNames } from './supportedChainNames.js'; -const getRegistry = async (useSecrets = true): Promise => +const getRegistry = async ( + useSecrets = true, + chains: ChainName[] = supportedChainNames, +): Promise => getRegistryForEnvironment( environmentName, - supportedChainNames, + chains, chainMetadataOverrides, useSecrets, ); @@ -45,15 +48,18 @@ export const environment: EnvironmentConfig = { role: Role = Role.Deployer, useSecrets?: boolean, chains?: ChainName[], - ) => - getMultiProviderForRole( + ) => { + const providerChains = + chains && chains.length > 0 ? chains : supportedChainNames; + return getMultiProviderForRole( environmentName, - chains && chains.length > 0 ? chains : supportedChainNames, - await getRegistry(useSecrets), + providerChains, + await getRegistry(useSecrets, providerChains), context, role, undefined, - ), + ); + }, getKeys: ( context: Contexts = Contexts.Hyperlane, role: Role = Role.Deployer, diff --git a/typescript/infra/scripts/check/check-validator-version.ts b/typescript/infra/scripts/check/check-validator-version.ts index f6c1622196..ee6992d88a 100644 --- a/typescript/infra/scripts/check/check-validator-version.ts +++ b/typescript/infra/scripts/check/check-validator-version.ts @@ -15,27 +15,33 @@ import { getEnvironmentConfig, getHyperlaneCore } from '../core-utils.js'; // prettier-ignore const acceptableValidatorVersions: Record = { // Aug 27 deploy - '72d498fa984750b9137c1211fef6c80a3e594ce7': 'aug-27-batch', + '72d498fa984750b9137c1211fef6c80a3e594ce7': 'August 27 2024', // Sep 9 deploy - 'd71dd4e5ed7eb69cc4041813ef444e37d881cdda': 'sep-9-batch', + 'd71dd4e5ed7eb69cc4041813ef444e37d881cdda': 'September 9 2024', // Oct 27 deploy - '45399a314cec85723bbb5d2360531c96a3aa261e': 'oct-27-batch', + '45399a314cec85723bbb5d2360531c96a3aa261e': 'October 27 2024', // Nov 7 deploy - '75d62ae7bbdeb77730c6d343c4fc1df97a08abe4': 'nov-7-batch', + '75d62ae7bbdeb77730c6d343c4fc1df97a08abe4': 'November 7 2024', // Nov 21 deploy - 'e70431a85965d8d21681e6f4856ed3ac9bd2ba27': 'nov-21-batch', + 'e70431a85965d8d21681e6f4856ed3ac9bd2ba27': 'November 21 2024', // Nov 21 bsquared deploy - 'd834d8147628584acd78a81e344bff76472d707e': 'nov-21-bsquared', + 'd834d8147628584acd78a81e344bff76472d707e': 'November 21 2024 (Bsquared)', // Nov 21 swell/lumiaprism deploy - 'b35c105f197267072daa14bb3d83c62410b96fac': 'nov-21-swell', + 'b35c105f197267072daa14bb3d83c62410b96fac': 'November 21 2024 (Swell)', // Dec 4 deploy - 'a7f3967e047c2c5aabb8cc442e4acad435fa32ab': 'dec-4-batch', + 'a7f3967e047c2c5aabb8cc442e4acad435fa32ab': 'December 4 2024', + // Dec 13 deploy + '05e90bc76e5c8ec2491551ecf1b7880187fa2660': 'December 13 2024', // Rolled out only to AW infra before 1.0.0, just 1 commit behind 1.0.0 - 'a64af8be9a76120d0cfc727bb70660fa07e70cce': 'pre-1.0.0', + 'a64af8be9a76120d0cfc727bb70660fa07e70cce': '1.0.0-beta', // 1.0.0 'ffbe1dd82e2452dbc111b6fb469a34fb870da8f1': '1.0.0', - // Tessellated's Own Build - '9b855686d3e2b3d6b81238ce51a576ff5e0f770f': 'tesselated-special-build', + // Tessellated's Build from November 2024 + // https://github.com/Tessellated-io/hyperlane-monorepo/commit/9b855686d3e2b3d6b81238ce51a576ff5e0f770f + '9b855686d3e2b3d6b81238ce51a576ff5e0f770f': 'Tesselated - November 2024', + // Tesselated's Build from December 2024 + // https://github.com/Tessellated-io/hyperlane-monorepo/commit/2bd17da1b30725a6d741197914f5c4b2ae25b566 + '2bd17da1b30725a6d741197914f5c4b2ae25b566': 'Tesselated - December 2024', }; type ValidatorInfo = { diff --git a/typescript/sdk/src/consts/multisigIsm.ts b/typescript/sdk/src/consts/multisigIsm.ts index 867059be1d..7e29f5b70f 100644 --- a/typescript/sdk/src/consts/multisigIsm.ts +++ b/typescript/sdk/src/consts/multisigIsm.ts @@ -176,6 +176,16 @@ export const defaultMultisigConfigs: ChainMap = { ], }, + arthera: { + threshold: 1, + validators: [ + { + address: '0x13710ac11c36c169f62fba95767ae59a1e57098d', + alias: AW_VALIDATOR_ALIAS, + }, + ], + }, + astar: { threshold: 2, validators: [ @@ -200,6 +210,16 @@ export const defaultMultisigConfigs: ChainMap = { ], }, + aurora: { + threshold: 1, + validators: [ + { + address: '0x37105aec3ff37c7bb0abdb0b1d75112e1e69fa86', + alias: AW_VALIDATOR_ALIAS, + }, + ], + }, + avalanche: { threshold: 2, validators: [ @@ -431,6 +451,16 @@ export const defaultMultisigConfigs: ChainMap = { ], }, + conflux: { + threshold: 1, + validators: [ + { + address: '0x113dfa1dc9b0a2efb6ad01981e2aad86d3658490', + alias: AW_VALIDATOR_ALIAS, + }, + ], + }, + connextsepolia: { threshold: 1, validators: [ @@ -441,6 +471,16 @@ export const defaultMultisigConfigs: ChainMap = { ], }, + conwai: { + threshold: 1, + validators: [ + { + address: '0x949e2cdd7e79f99ee9bbe549540370cdc62e73c3', + alias: AW_VALIDATOR_ALIAS, + }, + ], + }, + coredao: { threshold: 2, validators: [ @@ -453,6 +493,16 @@ export const defaultMultisigConfigs: ChainMap = { ], }, + corn: { + threshold: 1, + validators: [ + { + address: '0xc80b2e3e38220e02d194a0effa9d5bfe89894c07', + alias: AW_VALIDATOR_ALIAS, + }, + ], + }, + cyber: { threshold: 2, validators: [ @@ -595,6 +645,16 @@ export const defaultMultisigConfigs: ChainMap = { ], }, + evmos: { + threshold: 1, + validators: [ + { + address: '0x8f82387ad8b7b13aa9e06ed3f77f78a77713afe0', + alias: AW_VALIDATOR_ALIAS, + }, + ], + }, + fantom: { threshold: 2, validators: [ @@ -658,6 +718,16 @@ export const defaultMultisigConfigs: ChainMap = { ], }, + form: { + threshold: 1, + validators: [ + { + address: '0x58554b2e76167993b5fc000d0070a2f883cd333a', + alias: AW_VALIDATOR_ALIAS, + }, + ], + }, + formtestnet: { threshold: 1, validators: [ @@ -668,6 +738,16 @@ export const defaultMultisigConfigs: ChainMap = { ], }, + fractal: { + threshold: 1, + validators: [ + { + address: '0x3476c9652d3371bb01bbb4962516fffee5e73754', + alias: AW_VALIDATOR_ALIAS, + }, + ], + }, + fraxtal: { threshold: 4, validators: [ @@ -827,6 +907,16 @@ export const defaultMultisigConfigs: ChainMap = { ], }, + ink: { + threshold: 1, + validators: [ + { + address: '0xb533b8b104522958b984fb258e0684dec0f1a6a5', + alias: AW_VALIDATOR_ALIAS, + }, + ], + }, + inksepolia: { threshold: 1, validators: [ @@ -1323,6 +1413,16 @@ export const defaultMultisigConfigs: ChainMap = { ], }, + rivalz: { + threshold: 1, + validators: [ + { + address: '0xf87c3eb3dde972257b0d6d110bdadcda951c0dc1', + alias: AW_VALIDATOR_ALIAS, + }, + ], + }, + rootstockmainnet: { threshold: 2, validators: [ @@ -1484,6 +1584,16 @@ export const defaultMultisigConfigs: ChainMap = { ], }, + soneium: { + threshold: 1, + validators: [ + { + address: '0xd4b7af853ed6a2bfc329ecef545df90c959cbee8', + alias: AW_VALIDATOR_ALIAS, + }, + ], + }, + soneiumtestnet: { threshold: 1, validators: [ @@ -1494,6 +1604,16 @@ export const defaultMultisigConfigs: ChainMap = { ], }, + sonic: { + threshold: 1, + validators: [ + { + address: '0xa313d72dbbd3fa51a2ed1611ea50c37946fa42f7', + alias: AW_VALIDATOR_ALIAS, + }, + ], + }, + sonictestnet: { threshold: 1, validators: [ @@ -1641,6 +1761,16 @@ export const defaultMultisigConfigs: ChainMap = { ], }, + telos: { + threshold: 1, + validators: [ + { + address: '0xcb08410b14d3adf0d0646f0c61cd07e0daba8e54', + alias: AW_VALIDATOR_ALIAS, + }, + ], + }, + treasure: { threshold: 3, validators: [ From 16d586924c974b74f9d748c8fd6d031f7a43c8d7 Mon Sep 17 00:00:00 2001 From: Trevor Porter Date: Tue, 17 Dec 2024 15:42:03 +0000 Subject: [PATCH 19/32] feat: use zks_estimateFee for getting EIP 1559 price params on zkSync chains (#5007) ### Description Uses `zks_estimateFee` (https://docs.zksync.io/zksync-protocol/api/zks-rpc#zks_estimatefee), following the pattern that is used in the JS/TS zkSync tooling: > sendTransaction calls populateFeeData https://github.com/zksync-sdk/zksync-ethers/blob/64763688d1bb5cee4a4c220c3841b803c74b0d05/src/signer.ts#L650 > populateFeeData calls estimateFee https://github.com/zksync-sdk/zksync-ethers/blob/64763688d1bb5cee4a4c220c3841b803c74b0d05/src/signer.ts#L702 > estimateFee uses that json rpc https://github.com/zksync-sdk/zksync-ethers/blob/main/src/provider.ts#L311 ### Drive-by changes ### Related issues ### Backward compatibility ### Testing --------- Co-authored-by: Daniel Savu <23065004+daniel-savu@users.noreply.github.com> --- .../src/contracts/validator_announce.rs | 2 +- .../src/rpc_clients/trait_builder.rs | 4 +- rust/main/chains/hyperlane-ethereum/src/tx.rs | 138 +++++++++++++++--- rust/main/hyperlane-core/src/chain.rs | 28 +++- 4 files changed, 144 insertions(+), 28 deletions(-) diff --git a/rust/main/chains/hyperlane-ethereum/src/contracts/validator_announce.rs b/rust/main/chains/hyperlane-ethereum/src/contracts/validator_announce.rs index f37c6edb85..d693b371ac 100644 --- a/rust/main/chains/hyperlane-ethereum/src/contracts/validator_announce.rs +++ b/rust/main/chains/hyperlane-ethereum/src/contracts/validator_announce.rs @@ -10,7 +10,7 @@ use hyperlane_core::{ Announcement, ChainResult, ContractLocator, HyperlaneAbi, HyperlaneChain, HyperlaneContract, HyperlaneDomain, HyperlaneProvider, SignedType, TxOutcome, ValidatorAnnounce, H160, H256, U256, }; -use tracing::{instrument, log::trace}; +use tracing::{instrument, trace}; use crate::{ interfaces::i_validator_announce::{ diff --git a/rust/main/chains/hyperlane-ethereum/src/rpc_clients/trait_builder.rs b/rust/main/chains/hyperlane-ethereum/src/rpc_clients/trait_builder.rs index 45ad0638d6..f6583f6ec6 100644 --- a/rust/main/chains/hyperlane-ethereum/src/rpc_clients/trait_builder.rs +++ b/rust/main/chains/hyperlane-ethereum/src/rpc_clients/trait_builder.rs @@ -304,8 +304,8 @@ where // (These are the default values from ethers doc comments) const COEFFICIENT: f64 = 1.125; const EVERY_SECS: u64 = 90u64; - // 550 gwei is the limit we also use for polygon, so we reuse for consistency - const MAX_GAS_PRICE: u128 = 550 * 10u128.pow(9); + // a 3k gwei limit is chosen to account for `treasure` chain, where the highest gas price observed is 1.2k gwei + const MAX_GAS_PRICE: u128 = 3_000 * 10u128.pow(9); let escalator = GeometricGasPrice::new(COEFFICIENT, EVERY_SECS, MAX_GAS_PRICE.into()); // Check the status of sent txs every eth block or so. The alternative is to subscribe to new blocks and check then, // which adds unnecessary load on the provider. diff --git a/rust/main/chains/hyperlane-ethereum/src/tx.rs b/rust/main/chains/hyperlane-ethereum/src/tx.rs index 4964bb84ea..d967b5f72c 100644 --- a/rust/main/chains/hyperlane-ethereum/src/tx.rs +++ b/rust/main/chains/hyperlane-ethereum/src/tx.rs @@ -1,6 +1,8 @@ +use std::str::FromStr; +use std::sync::Arc; use std::time::Duration; -use std::{ops::Mul, sync::Arc}; +use ethers::types::transaction::eip2718::TypedTransaction; use ethers::{ abi::Detokenize, prelude::{NameOrAddress, TransactionReceipt}, @@ -8,6 +10,7 @@ use ethers::{ types::{Block, Eip1559TransactionRequest, TxHash}, }; use ethers_contract::builders::ContractCall; +use ethers_core::types::H160; use ethers_core::{ types::{BlockNumber, U256 as EthersU256}, utils::{ @@ -49,6 +52,7 @@ pub fn apply_gas_estimate_buffer(gas: U256, domain: &HyperlaneDomain) -> ChainRe } const PENDING_TRANSACTION_POLLING_INTERVAL: Duration = Duration::from_secs(2); +const EVM_RELAYER_ADDRESS: &str = "0x74cae0ecc47b02ed9b9d32e000fd70b9417970c5"; /// Dispatches a transaction, logs the tx id, and returns the result pub(crate) async fn report_tx(tx: ContractCall) -> ChainResult @@ -154,7 +158,7 @@ where } let Ok((base_fee, max_fee, max_priority_fee)) = - estimate_eip1559_fees(provider, None, &latest_block, domain).await + estimate_eip1559_fees(provider, None, &latest_block, domain, &tx.tx).await else { // Is not EIP 1559 chain return Ok(tx.gas(gas_limit)); @@ -202,15 +206,88 @@ where type FeeEstimator = fn(EthersU256, Vec>) -> (EthersU256, EthersU256); +/// Use this to estimate EIP 1559 fees with some chain-specific logic. +async fn estimate_eip1559_fees( + provider: Arc, + estimator: Option, + latest_block: &Block, + domain: &HyperlaneDomain, + tx: &TypedTransaction, +) -> ChainResult<(EthersU256, EthersU256, EthersU256)> +where + M: Middleware + 'static, +{ + if domain.is_zksync_stack() { + estimate_eip1559_fees_zksync(provider, latest_block, tx).await + } else { + estimate_eip1559_fees_default(provider, estimator, latest_block).await + } +} + +async fn estimate_eip1559_fees_zksync( + provider: Arc, + latest_block: &Block, + tx: &TypedTransaction, +) -> ChainResult<(EthersU256, EthersU256, EthersU256)> +where + M: Middleware + 'static, +{ + let base_fee_per_gas = latest_block + .base_fee_per_gas + .ok_or_else(|| ProviderError::CustomError("EIP-1559 not activated".into()))?; + + let response = zksync_estimate_fee(provider, tx).await?; + let max_fee_per_gas = response.max_fee_per_gas; + let max_priority_fee_per_gas = response.max_priority_fee_per_gas; + + Ok((base_fee_per_gas, max_fee_per_gas, max_priority_fee_per_gas)) +} + +async fn zksync_estimate_fee( + provider: Arc, + tx: &TypedTransaction, +) -> ChainResult +where + M: Middleware + 'static, +{ + let mut tx = tx.clone(); + tx.set_from( + // use the sender in the provider if one is set, otherwise default to the EVM relayer address + provider + .default_sender() + .unwrap_or(H160::from_str(EVM_RELAYER_ADDRESS).unwrap()), + ); + + let result = provider + .provider() + .request("zks_estimateFee", [tx.clone()]) + .await?; + tracing::debug!(?result, ?tx, "Successfully fetched zkSync fee estimate"); + Ok(result) +} + +// From +// gas_limit: QUANTITY, 32 bytes - The maximum amount of gas that can be used. +// max_fee_per_gas: QUANTITY, 32 bytes - The maximum fee per unit of gas that the sender is willing to pay. +// max_priority_fee_per_gas: QUANTITY, 32 bytes - The maximum priority fee per unit of gas to incentivize miners. +// gas_per_pubdata_limit: QUANTITY, 32 bytes - The gas limit per unit of public data. +#[derive(Debug, Clone, PartialEq, Eq, serde::Deserialize, serde::Serialize)] +struct ZksyncEstimateFeeResponse { + gas_limit: EthersU256, + max_fee_per_gas: EthersU256, + max_priority_fee_per_gas: EthersU256, + gas_per_pubdata_limit: EthersU256, +} + +/// Logic for a vanilla EVM chain to get EIP-1559 fees. /// Pretty much a copy of the logic in ethers-rs (https://github.com/hyperlane-xyz/ethers-rs/blob/c9ced035628da59376c369be035facda1648577a/ethers-providers/src/provider.rs#L478) /// but returns the base fee as well as the max fee and max priority fee. /// Gets a heuristic recommendation of max fee per gas and max priority fee per gas for /// EIP-1559 compatible transactions. -async fn estimate_eip1559_fees( +async fn estimate_eip1559_fees_default( provider: Arc, estimator: Option, latest_block: &Block, - domain: &HyperlaneDomain, ) -> ChainResult<(EthersU256, EthersU256, EthersU256)> where M: Middleware + 'static, @@ -235,21 +312,7 @@ where eip1559_default_estimator(base_fee_per_gas, fee_history.reward) }; - let gas_price_multiplier = chain_specific_gas_price_multiplier(domain); - Ok(( - base_fee_per_gas.mul(gas_price_multiplier), - max_fee_per_gas.mul(gas_price_multiplier), - max_priority_fee_per_gas.mul(gas_price_multiplier), - )) -} - -fn chain_specific_gas_price_multiplier(domain: &HyperlaneDomain) -> u32 { - match domain.id() { - // treasure (mainnet) and treasuretopaz (testnet) have a gas price multiplier of 2, - // as the gas estimation underestimates the actual gas price. - 61166 | 978658 => 2, - _ => 1, - } + Ok((base_fee_per_gas, max_fee_per_gas, max_priority_fee_per_gas)) } pub(crate) async fn call_with_reorg_period( @@ -270,3 +333,40 @@ where Ok(call) } } + +#[cfg(test)] +mod test { + use std::sync::Arc; + + use ethers::{ + providers::{Http, Provider}, + types::{ + transaction::eip2718::TypedTransaction, Address, Bytes, Eip1559TransactionRequest, + NameOrAddress, + }, + }; + use std::str::FromStr; + use url::Url; + + use crate::tx::zksync_estimate_fee; + + #[ignore = "Not running a flaky test requiring network"] + #[tokio::test] + async fn test_zksync_estimate_fees() { + let url: Url = "https://rpc.treasure.lol".parse().unwrap(); + let http = Http::new(url); + let provider = Arc::new(Provider::new(http)); + // Test tx to call `nonce()` on the Treasure mailbox + let tx = TypedTransaction::Eip1559(Eip1559TransactionRequest { + // the `from` field is None in prod, and gas estimation should be robust to this + from: None, + to: Some(NameOrAddress::Address( + Address::from_str("0x6bD0A2214797Bc81e0b006F7B74d6221BcD8cb6E").unwrap(), + )), + data: Some(Bytes::from(vec![0xaf, 0xfe, 0xd0, 0xe0])), + ..Default::default() + }); + // Require a parsing success + let _response = zksync_estimate_fee(provider, &tx).await.unwrap(); + } +} diff --git a/rust/main/hyperlane-core/src/chain.rs b/rust/main/hyperlane-core/src/chain.rs index 134881bf71..97637fafa5 100644 --- a/rust/main/hyperlane-core/src/chain.rs +++ b/rust/main/hyperlane-core/src/chain.rs @@ -171,11 +171,15 @@ pub enum KnownHyperlaneDomain { SolanaMainnet = 1399811149, Taiko = 167000, Tangle = 5845, + Treasure = 61166, Viction = 88, Worldchain = 480, Xai = 660279, Xlayer = 196, Zetachain = 7000, + Zeronetwork = 543210, + Zklink = 810180, + Zksync = 324, Zircuit = 48900, ZoraMainnet = 7777777, @@ -192,6 +196,7 @@ pub enum KnownHyperlaneDomain { // -- Test chains -- // + Abstracttestnet = 11124, Alfajores = 44787, #[cfg_attr(feature = "strum", strum(serialize = "bsctestnet"))] BinanceSmartChainTestnet = 97, @@ -203,6 +208,7 @@ pub enum KnownHyperlaneDomain { ScrollSepolia = 534351, Sepolia = 11155111, SuperpositionTestnet = 98985, + Treasuretopaz = 978658, } #[derive(Clone, Serialize)] @@ -319,12 +325,12 @@ impl KnownHyperlaneDomain { DegenChain, EclipseMainnet, Endurance, Ethereum, Fraxtal, FuseMainnet, Gnosis, InEvm, Injective, Kroma, Linea, Lisk, Lukso, MantaPacific, Mantle, Merlin, Metis, Mint, Mode, Moonbeam, Neutron, Optimism, Osmosis, Polygon, ProofOfPlay, - ReAl, Redstone, Sanko, Sei, SolanaMainnet, Taiko, Tangle, Viction, Worldchain, Xai, - Xlayer, Zetachain, Zircuit, ZoraMainnet, + ReAl, Redstone, Sanko, Sei, SolanaMainnet, Taiko, Tangle, Treasure, Viction, Worldchain, Xai, + Xlayer, Zeronetwork, Zetachain, Zircuit, Zklink, Zksync, ZoraMainnet, ], Testnet: [ Alfajores, BinanceSmartChainTestnet, Chiado, ConnextSepolia, Fuji, Holesky, MoonbaseAlpha, - PlumeTestnet, ScrollSepolia, Sepolia, SuperpositionTestnet + PlumeTestnet, ScrollSepolia, Sepolia, SuperpositionTestnet, Abstracttestnet, Treasuretopaz ], LocalTestChain: [ Test1, Test2, Test3, FuelTest1, SealevelTest1, SealevelTest2, CosmosTest99990, @@ -338,11 +344,12 @@ impl KnownHyperlaneDomain { many_to_one!(match self { HyperlaneDomainProtocol::Ethereum: [ - Ancient8, Arbitrum, Avalanche, BinanceSmartChain, Blast, Bob, Celo, Cheesechain, Cyber, + Abstracttestnet, Ancient8, Arbitrum, Avalanche, BinanceSmartChain, Blast, Bob, Celo, Cheesechain, Cyber, DegenChain, Endurance, Ethereum, Fraxtal, Fuji, FuseMainnet, Gnosis, InEvm, Kroma, Linea, Lisk, Lukso, MantaPacific, Mantle, Merlin, Metis, Mint, Mode, Moonbeam, Optimism, Polygon, ProofOfPlay, ReAl, Redstone, Sanko, Sei, Tangle, - Taiko, Viction, Worldchain, Xai, Xlayer, Zetachain, Zircuit, ZoraMainnet, + Taiko, Treasure, Treasuretopaz, Viction, Worldchain, Xai, Xlayer, Zeronetwork, Zetachain, Zircuit, ZoraMainnet, + Zklink, Zksync, // Local chains Test1, Test2, Test3, @@ -383,7 +390,9 @@ impl KnownHyperlaneDomain { HyperlaneDomainTechnicalStack::PolkadotSubstrate: [ Moonbeam, Tangle ], - HyperlaneDomainTechnicalStack::ZkSync: [], + HyperlaneDomainTechnicalStack::ZkSync: [ + Abstracttestnet, Treasure, Treasuretopaz, Zeronetwork, Zklink, Zksync, + ], HyperlaneDomainTechnicalStack::Other: [ Avalanche, BinanceSmartChain, Celo, EclipseMainnet, Endurance, Ethereum, FuseMainnet, Gnosis, Injective, Linea, Lukso, Neutron, Osmosis, Polygon, @@ -572,6 +581,13 @@ impl HyperlaneDomain { matches!(self, Self::Known(KnownHyperlaneDomain::Injective)) } + pub const fn is_zksync_stack(&self) -> bool { + matches!( + self.domain_technical_stack(), + HyperlaneDomainTechnicalStack::ZkSync + ) + } + pub const fn index_mode(&self) -> IndexMode { use HyperlaneDomainProtocol::*; let protocol = self.domain_protocol(); From 9558e678b0649c7c30d09c40c5ced3e5fd5f9376 Mon Sep 17 00:00:00 2001 From: Daniel Savu <23065004+daniel-savu@users.noreply.github.com> Date: Tue, 17 Dec 2024 16:56:45 +0000 Subject: [PATCH 20/32] chore: zksync fix images (#5029) ### Description ### Drive-by changes ### Related issues ### Backward compatibility ### Testing --- typescript/infra/config/environments/mainnet3/agent.ts | 6 +++--- typescript/infra/config/environments/testnet4/agent.ts | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/agent.ts b/typescript/infra/config/environments/mainnet3/agent.ts index 2fada6b85c..95dc71fb8d 100644 --- a/typescript/infra/config/environments/mainnet3/agent.ts +++ b/typescript/infra/config/environments/mainnet3/agent.ts @@ -480,7 +480,7 @@ const metricAppContextsGetter = (): MetricAppContext[] => { const relayerResources = { requests: { cpu: '14000m', - memory: '20Gi', + memory: '15Gi', }, }; @@ -546,7 +546,7 @@ const hyperlane: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: '05e90bc-20241216-180035', + tag: '16d5869-20241217-160358', }, blacklist, gasPaymentEnforcement: gasPaymentEnforcement, @@ -581,7 +581,7 @@ const releaseCandidate: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: 'e6fdcc4-20241213-124201', + tag: '16d5869-20241217-160358', }, blacklist, // We're temporarily (ab)using the RC relayer as a way to increase diff --git a/typescript/infra/config/environments/testnet4/agent.ts b/typescript/infra/config/environments/testnet4/agent.ts index 464bea79eb..efe21db9ce 100644 --- a/typescript/infra/config/environments/testnet4/agent.ts +++ b/typescript/infra/config/environments/testnet4/agent.ts @@ -219,7 +219,7 @@ const hyperlane: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: 'e6fdcc4-20241213-124201', + tag: '16d5869-20241217-160358', }, blacklist: [...releaseCandidateHelloworldMatchingList, ...relayBlacklist], gasPaymentEnforcement, @@ -265,7 +265,7 @@ const releaseCandidate: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: 'e6fdcc4-20241213-124201', + tag: '16d5869-20241217-160358', }, whitelist: [...releaseCandidateHelloworldMatchingList], blacklist: relayBlacklist, From d84d8da1fd8afa2bf977cec5b0114a70f7b7d581 Mon Sep 17 00:00:00 2001 From: Danil Nemirovsky Date: Tue, 17 Dec 2024 17:12:36 +0000 Subject: [PATCH 21/32] fix: Revert "chore: update seaorm to latest (#4925)" (#5030) ### Description This reverts commit 58a54545d1c368e1c91db2582e97f00d3d742ea1 and this PR - https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/4925 Scraper reports that query statements are running very slowly with the new version. ### Backward compatibility Yes ### Testing E2E Ethereum and Sealevel test (no regressions) Co-authored-by: Danil Nemirovsky <4614623+ameten@users.noreply.github.com> --- rust/main/Cargo.lock | 723 +++++------------- rust/main/Cargo.toml | 7 +- .../migration/bin/generate_entities.rs | 2 +- .../agents/scraper/migration/bin/init_db.rs | 2 +- .../scraper/migration/bin/recreate_db.rs | 2 +- .../scraper/migration/src/l20230309_types.rs | 4 +- ...0230309_000003_create_table_transaction.rs | 7 +- .../agents/scraper/src/db/generated/block.rs | 4 +- .../agents/scraper/src/db/generated/cursor.rs | 2 +- .../src/db/generated/delivered_message.rs | 6 +- .../agents/scraper/src/db/generated/domain.rs | 10 +- .../scraper/src/db/generated/gas_payment.rs | 24 +- .../scraper/src/db/generated/message.rs | 12 +- .../agents/scraper/src/db/generated/mod.rs | 2 +- .../scraper/src/db/generated/prelude.rs | 2 +- .../scraper/src/db/generated/transaction.rs | 12 +- rust/main/hyperlane-base/Cargo.toml | 3 +- rust/main/rust-toolchain | 2 +- rust/sealevel/Cargo.toml | 12 + 19 files changed, 252 insertions(+), 586 deletions(-) diff --git a/rust/main/Cargo.lock b/rust/main/Cargo.lock index 4fae483a3c..c14e211f03 100644 --- a/rust/main/Cargo.lock +++ b/rust/main/Cargo.lock @@ -41,9 +41,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.17.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -179,55 +179,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "anstream" -version = "0.6.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" - -[[package]] -name = "anstyle-parse" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" -dependencies = [ - "anstyle", - "windows-sys 0.59.0", -] - [[package]] name = "anyhow" version = "1.0.86" @@ -438,7 +389,7 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" dependencies = [ - "event-listener 2.5.3", + "event-listener", ] [[package]] @@ -448,7 +399,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "261803dcc39ba9e72760ba6e16d0199b1eef9fc44e81bffabbebb9f5aea3906c" dependencies = [ "async-mutex", - "event-listener 2.5.3", + "event-listener", ] [[package]] @@ -497,9 +448,9 @@ dependencies = [ [[package]] name = "atoi" -version = "2.0.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +checksum = "d7c57d12312ff59c811c0643f4d80830505833c9ffaebd193d819392b265be8e" dependencies = [ "num-traits", ] @@ -604,15 +555,15 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.63" +version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "321629d8ba6513061f26707241fa9bc89524ff1cd7a915a97ef0c62c666ce1b6" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ "addr2line", "cc", "cfg-if", "libc", - "miniz_oxide 0.4.4", + "miniz_oxide 0.7.4", "object", "rustc-demangle", "serde", @@ -626,6 +577,19 @@ dependencies = [ "derive-new", ] +[[package]] +name = "bae" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b8de67cc41132507eeece2584804efcb15f85ba516e34c944b7667f480397a" +dependencies = [ + "heck 0.3.3", + "proc-macro-error", + "proc-macro2 1.0.86", + "quote 1.0.37", + "syn 1.0.109", +] + [[package]] name = "base16ct" version = "0.1.1" @@ -702,6 +666,17 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d" +[[package]] +name = "bigdecimal" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", +] + [[package]] name = "bigdecimal" version = "0.4.5" @@ -713,7 +688,6 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", - "serde", ] [[package]] @@ -1119,13 +1093,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.2" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" +checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7" dependencies = [ "jobserver", "libc", - "shlex", ] [[package]] @@ -1208,7 +1181,8 @@ checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "atty", "bitflags 1.3.2", - "clap_lex 0.2.4", + "clap_derive", + "clap_lex", "indexmap 1.9.3", "once_cell", "strsim 0.10.0", @@ -1216,38 +1190,17 @@ dependencies = [ "textwrap 0.16.1", ] -[[package]] -name = "clap" -version = "4.5.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.5.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" -dependencies = [ - "anstream", - "anstyle", - "clap_lex 0.7.3", - "strsim 0.11.1", -] - [[package]] name = "clap_derive" -version = "4.5.18" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" dependencies = [ - "heck 0.5.0", + "heck 0.4.1", + "proc-macro-error", "proc-macro2 1.0.86", "quote 1.0.37", - "syn 2.0.77", + "syn 1.0.109", ] [[package]] @@ -1259,12 +1212,6 @@ dependencies = [ "os_str_bytes", ] -[[package]] -name = "clap_lex" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" - [[package]] name = "cloudabi" version = "0.0.3" @@ -1416,12 +1363,6 @@ dependencies = [ "tracing-error", ] -[[package]] -name = "colorchoice" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" - [[package]] name = "combine" version = "3.8.1" @@ -1435,15 +1376,6 @@ dependencies = [ "unreachable", ] -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "config" version = "0.13.4" @@ -1802,21 +1734,6 @@ dependencies = [ "libc", ] -[[package]] -name = "crc" -version = "3.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" - [[package]] name = "crc32fast" version = "1.4.2" @@ -2275,7 +2192,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid 0.9.6", - "pem-rfc7468", "zeroize", ] @@ -2460,6 +2376,15 @@ dependencies = [ "subtle", ] +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys", +] + [[package]] name = "dirs-next" version = "2.0.0" @@ -2470,6 +2395,17 @@ dependencies = [ "dirs-sys-next", ] +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + [[package]] name = "dirs-sys-next" version = "0.1.2" @@ -2698,9 +2634,6 @@ name = "either" version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" -dependencies = [ - "serde", -] [[package]] name = "elliptic-curve" @@ -2859,17 +2792,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "etcetera" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" -dependencies = [ - "cfg-if", - "home", - "windows-sys 0.48.0", -] - [[package]] name = "eth-keystore" version = "0.5.0" @@ -3220,17 +3142,6 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" -[[package]] -name = "event-listener" -version = "5.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - [[package]] name = "eventsource-client" version = "0.12.2" @@ -3366,17 +3277,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "flume" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" -dependencies = [ - "futures-core", - "futures-sink", - "spin 0.9.8", -] - [[package]] name = "fnv" version = "1.0.7" @@ -3897,13 +3797,13 @@ dependencies = [ [[package]] name = "futures-intrusive" -version = "0.5.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" +checksum = "a604f7a68fbf8103337523b1fadc8ade7361ee3f112f7c680ad179651616aed5" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.12.3", + "parking_lot 0.11.2", ] [[package]] @@ -4037,9 +3937,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.26.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "glob" @@ -4156,9 +4056,9 @@ dependencies = [ [[package]] name = "hashlink" -version = "0.9.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ "hashbrown 0.14.5", ] @@ -4223,11 +4123,23 @@ dependencies = [ "winapi", ] +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "heck" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +dependencies = [ + "unicode-segmentation", +] [[package]] name = "heck" @@ -4501,7 +4413,6 @@ dependencies = [ "backtrace", "backtrace-oneline", "bs58 0.5.1", - "cc", "color-eyre", "config", "console-subscriber", @@ -4557,7 +4468,7 @@ dependencies = [ "async-rwlock", "async-trait", "auto_impl 1.2.0", - "bigdecimal", + "bigdecimal 0.4.5", "borsh 0.9.3", "bs58 0.5.1", "bytes", @@ -5046,17 +4957,6 @@ dependencies = [ "regex", ] -[[package]] -name = "inherent" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0122b7114117e64a63ac49f752a5ca4624d534c7b1c7de796ac196381cd2d947" -dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.37", - "syn 2.0.77", -] - [[package]] name = "injective-protobuf" version = "0.2.2" @@ -5122,12 +5022,6 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" -[[package]] -name = "is_terminal_polyfill" -version = "1.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" - [[package]] name = "itertools" version = "0.10.5" @@ -5154,9 +5048,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" dependencies = [ "libc", ] @@ -5237,9 +5131,6 @@ name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -dependencies = [ - "spin 0.9.8", -] [[package]] name = "lazycell" @@ -5353,17 +5244,6 @@ dependencies = [ "libsecp256k1-core", ] -[[package]] -name = "libsqlite3-sys" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" -dependencies = [ - "cc", - "pkg-config", - "vcpkg", -] - [[package]] name = "libz-sys" version = "1.1.16" @@ -5544,12 +5424,11 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.4.4" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", - "autocfg", ] [[package]] @@ -5764,23 +5643,6 @@ dependencies = [ "serde", ] -[[package]] -name = "num-bigint-dig" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" -dependencies = [ - "byteorder", - "lazy_static", - "libm", - "num-integer", - "num-iter", - "num-traits", - "rand 0.8.5", - "smallvec", - "zeroize", -] - [[package]] name = "num-complex" version = "0.2.4" @@ -5880,7 +5742,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", - "libm", ] [[package]] @@ -5973,9 +5834,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.27.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] @@ -6076,15 +5937,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "ordered-float" -version = "3.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" -dependencies = [ - "num-traits", -] - [[package]] name = "ordered-multimap" version = "0.4.3" @@ -6115,27 +5967,25 @@ dependencies = [ [[package]] name = "ouroboros" -version = "0.18.4" +version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "944fa20996a25aded6b4795c6d63f10014a7a83f8be9828a11860b08c5fc4a67" +checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" dependencies = [ "aliasable", "ouroboros_macro", - "static_assertions 1.1.0", ] [[package]] name = "ouroboros_macro" -version = "0.18.4" +version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39b0deead1528fd0e5947a8546a9642a9777c25f6e1e26f34c97b204bbb465bd" +checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" dependencies = [ - "heck 0.4.1", - "itertools 0.12.1", + "Inflector", + "proc-macro-error", "proc-macro2 1.0.86", - "proc-macro2-diagnostics", "quote 1.0.37", - "syn 2.0.77", + "syn 1.0.109", ] [[package]] @@ -6188,12 +6038,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - [[package]] name = "parking_lot" version = "0.11.2" @@ -6338,15 +6182,6 @@ dependencies = [ "base64 0.13.1", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "percent-encoding" version = "2.3.1" @@ -6449,17 +6284,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "pkcs1" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" -dependencies = [ - "der 0.7.9", - "pkcs8 0.10.2", - "spki 0.7.3", -] - [[package]] name = "pkcs8" version = "0.8.0" @@ -6661,28 +6485,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.37", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2 1.0.86", - "quote 1.0.37", - "syn 2.0.77", -] - [[package]] name = "proc-macro2" version = "0.4.30" @@ -6701,19 +6503,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "proc-macro2-diagnostics" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" -dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.37", - "syn 2.0.77", - "version_check", - "yansi", -] - [[package]] name = "prometheus" version = "0.13.4" @@ -7436,26 +7225,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "rsa" -version = "0.9.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47c75d7c5c6b673e58bf54d8544a9f432e3a925b0e80f7cd3602ab5c50c55519" -dependencies = [ - "const-oid 0.9.6", - "digest 0.10.7", - "num-bigint-dig", - "num-integer", - "num-traits", - "pkcs1", - "pkcs8 0.10.2", - "rand_core 0.6.4", - "signature 2.2.0", - "spki 0.7.3", - "subtle", - "zeroize", -] - [[package]] name = "run-locally" version = "0.1.0" @@ -7954,28 +7723,15 @@ dependencies = [ "untrusted 0.9.0", ] -[[package]] -name = "sea-bae" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f694a6ab48f14bc063cfadff30ab551d3c7e46d8f81836c51989d548f44a2a25" -dependencies = [ - "heck 0.4.1", - "proc-macro-error2", - "proc-macro2 1.0.86", - "quote 1.0.37", - "syn 2.0.77", -] - [[package]] name = "sea-orm" -version = "1.1.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5680a8b686985116607ef5f5af2b1f9e1cc2c228330e93101816a0baa279afa" +checksum = "fade86e8d41fd1a4721f84cb834f4ca2783f973cc30e6212b7fafc134f169214" dependencies = [ "async-stream", "async-trait", - "bigdecimal", + "bigdecimal 0.3.1", "chrono", "futures", "log", @@ -7984,10 +7740,10 @@ dependencies = [ "sea-orm-macros", "sea-query", "sea-query-binder", + "sea-strum", "serde", "serde_json", "sqlx", - "strum 0.26.3", "thiserror", "time", "tracing", @@ -7997,14 +7753,13 @@ dependencies = [ [[package]] name = "sea-orm-cli" -version = "1.1.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a157f42d291ccbd6e913b9d9b12dbe2ccbcf0472efc60c8715dd1254083aec" +checksum = "efbf34a2caf70c2e3be9bb1e674e9540f6dfd7c8f40f6f05daf3b9740e476005" dependencies = [ "chrono", - "clap 4.5.21", + "clap 3.2.25", "dotenvy", - "glob", "regex", "sea-schema", "tracing", @@ -8014,26 +7769,25 @@ dependencies = [ [[package]] name = "sea-orm-macros" -version = "1.1.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a239e3bb1b566ad4ec2654d0d193d6ceddfd733487edc9c21a64d214c773910" +checksum = "28936f26d62234ff0be16f80115dbdeb3237fe9c25cf18fbcd1e3b3592360f20" dependencies = [ - "heck 0.4.1", + "bae", + "heck 0.3.3", "proc-macro2 1.0.86", "quote 1.0.37", - "sea-bae", - "syn 2.0.77", - "unicode-ident", + "syn 1.0.109", ] [[package]] name = "sea-orm-migration" -version = "1.1.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63ba07e9f2479cc671758fcb1edee42ff2e32c34b3e67ab41d0af1e41f73c74e" +checksum = "278d3adfd0832b6ffc17d3cfbc574d3695a5c1b38814e0bc8ac238d33f3d87cf" dependencies = [ "async-trait", - "clap 4.5.21", + "clap 3.2.25", "dotenvy", "futures", "sea-orm", @@ -8045,14 +7799,12 @@ dependencies = [ [[package]] name = "sea-query" -version = "0.32.0" +version = "0.28.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff504d13b5e4b52fffcf2fb203d0352a5722fa5151696db768933e41e1e591bb" +checksum = "bbab99b8cd878ab7786157b7eb8df96333a6807cc6e45e8888c85b51534b401a" dependencies = [ - "bigdecimal", + "bigdecimal 0.3.1", "chrono", - "inherent", - "ordered-float", "rust_decimal", "sea-query-derive", "serde_json", @@ -8062,11 +7814,11 @@ dependencies = [ [[package]] name = "sea-query-binder" -version = "0.7.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0019f47430f7995af63deda77e238c17323359af241233ec768aba1faea7608" +checksum = "4cea85029985b40dfbf18318d85fe985c04db7c1b4e5e8e0a0a0cdff5f1e30f9" dependencies = [ - "bigdecimal", + "bigdecimal 0.3.1", "chrono", "rust_decimal", "sea-query", @@ -8078,23 +7830,22 @@ dependencies = [ [[package]] name = "sea-query-derive" -version = "0.4.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9834af2c4bd8c5162f00c89f1701fb6886119a88062cf76fe842ea9e232b9839" +checksum = "63f62030c60f3a691f5fe251713b4e220b306e50a71e1d6f9cce1f24bb781978" dependencies = [ - "darling 0.20.10", "heck 0.4.1", "proc-macro2 1.0.86", "quote 1.0.37", - "syn 2.0.77", + "syn 1.0.109", "thiserror", ] [[package]] name = "sea-schema" -version = "0.16.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aab1592d17860a9a8584d9b549aebcd06f7bdc3ff615f71752486ba0b05b1e6e" +checksum = "eeb2940bb5a10bc6cd05b450ce6cd3993e27fddd7eface2becb97fc5af3a040e" dependencies = [ "futures", "sea-query", @@ -8103,14 +7854,36 @@ dependencies = [ [[package]] name = "sea-schema-derive" -version = "0.3.0" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "debdc8729c37fdbf88472f97fd470393089f997a909e535ff67c544d18cfccf0" +checksum = "56821b7076f5096b8f726e2791ad255a99c82498e08ec477a65a96c461ff1927" dependencies = [ - "heck 0.4.1", + "heck 0.3.3", "proc-macro2 1.0.86", "quote 1.0.37", - "syn 2.0.77", + "syn 1.0.109", +] + +[[package]] +name = "sea-strum" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391d06a6007842cfe79ac6f7f53911b76dfd69fc9a6769f1cf6569d12ce20e1b" +dependencies = [ + "sea-strum_macros", +] + +[[package]] +name = "sea-strum_macros" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69b4397b825df6ccf1e98bcdabef3bbcfc47ff5853983467850eeab878384f21" +dependencies = [ + "heck 0.3.3", + "proc-macro2 1.0.86", + "quote 1.0.37", + "rustversion", + "syn 1.0.109", ] [[package]] @@ -8558,9 +8331,6 @@ name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" -dependencies = [ - "serde", -] [[package]] name = "socket2" @@ -9296,216 +9066,98 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.8.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93334716a037193fac19df402f8571269c84a00852f6a7066b5d2616dcd64d3e" +checksum = "f8de3b03a925878ed54a954f621e64bf55a3c1bd29652d0d1a17830405350188" dependencies = [ "sqlx-core", "sqlx-macros", - "sqlx-mysql", - "sqlx-postgres", - "sqlx-sqlite", ] [[package]] name = "sqlx-core" -version = "0.8.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d8060b456358185f7d50c55d9b5066ad956956fddec42ee2e8567134a8936e" +checksum = "fa8241483a83a3f33aa5fff7e7d9def398ff9990b2752b6c6112b83c6d246029" dependencies = [ + "ahash 0.7.8", "atoi", - "bigdecimal", + "base64 0.13.1", + "bigdecimal 0.3.1", + "bitflags 1.3.2", "byteorder", "bytes", "chrono", - "crc", "crossbeam-queue", + "dirs", + "dotenvy", "either", - "event-listener 5.3.1", + "event-listener", "futures-channel", "futures-core", "futures-intrusive", - "futures-io", "futures-util", - "hashbrown 0.14.5", "hashlink", "hex 0.4.3", - "indexmap 2.5.0", + "hkdf", + "hmac 0.12.1", + "indexmap 1.9.3", + "itoa", + "libc", "log", + "md-5 0.10.6", "memchr", - "native-tls", + "num-bigint 0.4.6", "once_cell", "paste", "percent-encoding", + "rand 0.8.5", "rust_decimal", "serde", "serde_json", + "sha1", "sha2 0.10.8", "smallvec", "sqlformat", + "sqlx-rt", + "stringprep", "thiserror", "time", - "tokio", "tokio-stream", - "tracing", "url", "uuid 1.10.0", + "whoami", ] [[package]] name = "sqlx-macros" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cac0692bcc9de3b073e8d747391827297e075c7710ff6276d9f7a1f3d58c6657" -dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.37", - "sqlx-core", - "sqlx-macros-core", - "syn 2.0.77", -] - -[[package]] -name = "sqlx-macros-core" -version = "0.8.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1804e8a7c7865599c9c79be146dc8a9fd8cc86935fa641d3ea58e5f0688abaa5" +checksum = "9966e64ae989e7e575b19d7265cb79d7fc3cbbdf179835cb0d716f294c2049c9" dependencies = [ "dotenvy", "either", - "heck 0.5.0", - "hex 0.4.3", + "heck 0.4.1", "once_cell", "proc-macro2 1.0.86", "quote 1.0.37", - "serde", "serde_json", - "sha2 0.10.8", "sqlx-core", - "sqlx-mysql", - "sqlx-postgres", - "sqlx-sqlite", - "syn 2.0.77", - "tempfile", - "tokio", + "sqlx-rt", + "syn 1.0.109", "url", ] [[package]] -name = "sqlx-mysql" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64bb4714269afa44aef2755150a0fc19d756fb580a67db8885608cf02f47d06a" -dependencies = [ - "atoi", - "base64 0.22.1", - "bigdecimal", - "bitflags 2.6.0", - "byteorder", - "bytes", - "chrono", - "crc", - "digest 0.10.7", - "dotenvy", - "either", - "futures-channel", - "futures-core", - "futures-io", - "futures-util", - "generic-array 0.14.7", - "hex 0.4.3", - "hkdf", - "hmac 0.12.1", - "itoa", - "log", - "md-5 0.10.6", - "memchr", - "once_cell", - "percent-encoding", - "rand 0.8.5", - "rsa", - "rust_decimal", - "serde", - "sha1", - "sha2 0.10.8", - "smallvec", - "sqlx-core", - "stringprep", - "thiserror", - "time", - "tracing", - "uuid 1.10.0", - "whoami", -] - -[[package]] -name = "sqlx-postgres" -version = "0.8.2" +name = "sqlx-rt" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fa91a732d854c5d7726349bb4bb879bb9478993ceb764247660aee25f67c2f8" +checksum = "804d3f245f894e61b1e6263c84b23ca675d96753b5abfd5cc8597d86806e8024" dependencies = [ - "atoi", - "base64 0.22.1", - "bigdecimal", - "bitflags 2.6.0", - "byteorder", - "chrono", - "crc", - "dotenvy", - "etcetera", - "futures-channel", - "futures-core", - "futures-io", - "futures-util", - "hex 0.4.3", - "hkdf", - "hmac 0.12.1", - "home", - "itoa", - "log", - "md-5 0.10.6", - "memchr", - "num-bigint 0.4.6", + "native-tls", "once_cell", - "rand 0.8.5", - "rust_decimal", - "serde", - "serde_json", - "sha2 0.10.8", - "smallvec", - "sqlx-core", - "stringprep", - "thiserror", - "time", - "tracing", - "uuid 1.10.0", - "whoami", -] - -[[package]] -name = "sqlx-sqlite" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5b2cf34a45953bfd3daaf3db0f7a7878ab9b7a6b91b422d24a7a9e4c857b680" -dependencies = [ - "atoi", - "chrono", - "flume", - "futures-channel", - "futures-core", - "futures-executor", - "futures-intrusive", - "futures-util", - "libsqlite3-sys", - "log", - "percent-encoding", - "serde", - "serde_urlencoded", - "sqlx-core", - "time", - "tracing", - "url", - "uuid 1.10.0", + "tokio", + "tokio-native-tls", ] [[package]] @@ -10698,12 +10350,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - [[package]] name = "uuid" version = "0.8.2" @@ -11032,6 +10678,7 @@ checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" dependencies = [ "redox_syscall 0.5.3", "wasite", + "web-sys", ] [[package]] @@ -11343,12 +10990,6 @@ dependencies = [ "linked-hash-map", ] -[[package]] -name = "yansi" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" - [[package]] name = "yasna" version = "0.5.2" diff --git a/rust/main/Cargo.toml b/rust/main/Cargo.toml index 05f390f006..55cfc1573a 100644 --- a/rust/main/Cargo.toml +++ b/rust/main/Cargo.toml @@ -34,7 +34,6 @@ async-rwlock = "1.3" auto_impl = "1.0" axum = "0.6.1" backtrace = "0.3" -cc = "1.2.2" base64 = "0.21.2" bigdecimal = "0.4.2" bincode = "1.3" @@ -81,7 +80,7 @@ hyperlane-cosmwasm-interface = "=0.0.6-rc6" injective-protobuf = "0.2.2" injective-std = "=0.1.5" itertools = "*" -jobserver = "0.1.32" +jobserver = "=0.1.26" jsonrpc-core = "18.0" k256 = { version = "0.13.4", features = ["arithmetic", "std", "ecdsa"] } lazy_static = "1.5.0" @@ -107,14 +106,14 @@ reqwest = "0.11" ripemd = "0.1.3" rlp = "=0.5.2" rocksdb = "0.21.0" -sea-orm = { version = "1.1.1", features = [ +sea-orm = { version = "0.11.1", features = [ "sqlx-postgres", "runtime-tokio-native-tls", "with-bigdecimal", "with-time", "macros", ] } -sea-orm-migration = { version = "1.1.1", features = [ +sea-orm-migration = { version = "0.11.1", features = [ "sqlx-postgres", "runtime-tokio-native-tls", ] } diff --git a/rust/main/agents/scraper/migration/bin/generate_entities.rs b/rust/main/agents/scraper/migration/bin/generate_entities.rs index b8276e659d..9481ece179 100644 --- a/rust/main/agents/scraper/migration/bin/generate_entities.rs +++ b/rust/main/agents/scraper/migration/bin/generate_entities.rs @@ -7,7 +7,7 @@ mod common; const RAW_DB_PATH: &str = "./agents/scraper/src/db/generated"; const DOCKER_NAME: &str = "scraper-entity-generator"; -const CLI_VERSION: &str = "1.1.1"; +const CLI_VERSION: &str = "0.12.3"; struct PostgresDockerContainer; diff --git a/rust/main/agents/scraper/migration/bin/init_db.rs b/rust/main/agents/scraper/migration/bin/init_db.rs index 2d51a7c83f..661080336f 100644 --- a/rust/main/agents/scraper/migration/bin/init_db.rs +++ b/rust/main/agents/scraper/migration/bin/init_db.rs @@ -4,7 +4,7 @@ use common::*; mod common; -#[tokio::main(flavor = "current_thread")] +#[tokio::main] async fn main() -> Result<(), DbErr> { let db = init().await?; diff --git a/rust/main/agents/scraper/migration/bin/recreate_db.rs b/rust/main/agents/scraper/migration/bin/recreate_db.rs index 1bcbed04dd..ed6b0ac48f 100644 --- a/rust/main/agents/scraper/migration/bin/recreate_db.rs +++ b/rust/main/agents/scraper/migration/bin/recreate_db.rs @@ -3,7 +3,7 @@ use common::*; mod common; -#[tokio::main(flavor = "current_thread")] +#[tokio::main] async fn main() -> Result<(), DbErr> { let db = init().await?; diff --git a/rust/main/agents/scraper/migration/src/l20230309_types.rs b/rust/main/agents/scraper/migration/src/l20230309_types.rs index 39cf811185..06c22bf913 100644 --- a/rust/main/agents/scraper/migration/src/l20230309_types.rs +++ b/rust/main/agents/scraper/migration/src/l20230309_types.rs @@ -2,10 +2,10 @@ use sea_orm_migration::prelude::*; /// Hashes are to be stored as binary. #[allow(non_upper_case_globals)] -pub const Hash: ColumnType = ColumnType::Blob; +pub const Hash: ColumnType = ColumnType::Binary(BlobSize::Tiny); /// Addresses are to be stored as binary. #[allow(non_upper_case_globals)] -pub const Address: ColumnType = ColumnType::Blob; +pub const Address: ColumnType = ColumnType::Binary(BlobSize::Tiny); /// 256-bit integer as base-10 digits: ceil(log_10(2^256)) const SIGNIFICANT_DIGITS_IN_256_BIT_INTEGER: u32 = 78; diff --git a/rust/main/agents/scraper/migration/src/m20230309_000003_create_table_transaction.rs b/rust/main/agents/scraper/migration/src/m20230309_000003_create_table_transaction.rs index b797c31118..283968c6d6 100644 --- a/rust/main/agents/scraper/migration/src/m20230309_000003_create_table_transaction.rs +++ b/rust/main/agents/scraper/migration/src/m20230309_000003_create_table_transaction.rs @@ -53,8 +53,11 @@ impl MigrationTrait for Migration { .col(ColumnDef::new_with_type(Transaction::GasUsed, Wei).not_null()) .col(ColumnDef::new_with_type(Transaction::CumulativeGasUsed, Wei).not_null()) .col( - ColumnDef::new_with_type(Transaction::RawInputData, ColumnType::Blob) - .borrow_mut(), + ColumnDef::new_with_type( + Transaction::RawInputData, + ColumnType::Binary(BlobSize::Blob(None)), + ) + .borrow_mut(), ) .foreign_key( ForeignKey::create() diff --git a/rust/main/agents/scraper/src/db/generated/block.rs b/rust/main/agents/scraper/src/db/generated/block.rs index 772cf64569..098cb839c2 100644 --- a/rust/main/agents/scraper/src/db/generated/block.rs +++ b/rust/main/agents/scraper/src/db/generated/block.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 +//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 use sea_orm::entity::prelude::*; @@ -56,7 +56,7 @@ impl ColumnTrait for Column { Self::Id => ColumnType::BigInteger.def(), Self::TimeCreated => ColumnType::DateTime.def(), Self::Domain => ColumnType::Integer.def(), - Self::Hash => ColumnType::VarBinary(StringLen::None).def().unique(), + Self::Hash => ColumnType::Binary(BlobSize::Blob(None)).def().unique(), Self::Height => ColumnType::BigInteger.def(), Self::Timestamp => ColumnType::DateTime.def(), } diff --git a/rust/main/agents/scraper/src/db/generated/cursor.rs b/rust/main/agents/scraper/src/db/generated/cursor.rs index 0db99f422f..f04b47428c 100644 --- a/rust/main/agents/scraper/src/db/generated/cursor.rs +++ b/rust/main/agents/scraper/src/db/generated/cursor.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 +//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 use sea_orm::entity::prelude::*; diff --git a/rust/main/agents/scraper/src/db/generated/delivered_message.rs b/rust/main/agents/scraper/src/db/generated/delivered_message.rs index 0de9bde96a..a3da2fe6de 100644 --- a/rust/main/agents/scraper/src/db/generated/delivered_message.rs +++ b/rust/main/agents/scraper/src/db/generated/delivered_message.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 +//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 use sea_orm::entity::prelude::*; @@ -57,9 +57,9 @@ impl ColumnTrait for Column { match self { Self::Id => ColumnType::BigInteger.def(), Self::TimeCreated => ColumnType::DateTime.def(), - Self::MsgId => ColumnType::VarBinary(StringLen::None).def().unique(), + Self::MsgId => ColumnType::Binary(BlobSize::Blob(None)).def().unique(), Self::Domain => ColumnType::Integer.def(), - Self::DestinationMailbox => ColumnType::VarBinary(StringLen::None).def(), + Self::DestinationMailbox => ColumnType::Binary(BlobSize::Blob(None)).def(), Self::DestinationTxId => ColumnType::BigInteger.def(), Self::Sequence => ColumnType::BigInteger.def().null(), } diff --git a/rust/main/agents/scraper/src/db/generated/domain.rs b/rust/main/agents/scraper/src/db/generated/domain.rs index 3015d99750..cf1aaa2a7c 100644 --- a/rust/main/agents/scraper/src/db/generated/domain.rs +++ b/rust/main/agents/scraper/src/db/generated/domain.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 +//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 use sea_orm::entity::prelude::*; @@ -52,6 +52,7 @@ pub enum Relation { Block, Cursor, DeliveredMessage, + GasPayment, Message, } @@ -77,6 +78,7 @@ impl RelationTrait for Relation { Self::Block => Entity::has_many(super::block::Entity).into(), Self::Cursor => Entity::has_many(super::cursor::Entity).into(), Self::DeliveredMessage => Entity::has_many(super::delivered_message::Entity).into(), + Self::GasPayment => Entity::has_many(super::gas_payment::Entity).into(), Self::Message => Entity::has_many(super::message::Entity).into(), } } @@ -100,6 +102,12 @@ impl Related for Entity { } } +impl Related for Entity { + fn to() -> RelationDef { + Relation::GasPayment.def() + } +} + impl Related for Entity { fn to() -> RelationDef { Relation::Message.def() diff --git a/rust/main/agents/scraper/src/db/generated/gas_payment.rs b/rust/main/agents/scraper/src/db/generated/gas_payment.rs index 859bbb2df2..5df74b084a 100644 --- a/rust/main/agents/scraper/src/db/generated/gas_payment.rs +++ b/rust/main/agents/scraper/src/db/generated/gas_payment.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 +//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 use sea_orm::entity::prelude::*; @@ -11,8 +11,6 @@ impl EntityName for Entity { } } -/// @NOTE: Replaced all occurrences of `Decimal` with `BigDecimal` -/// due to the following issue: https://github.com/SeaQL/sea-orm/issues/1530 #[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel, Eq)] pub struct Model { pub id: i64, @@ -59,8 +57,8 @@ impl PrimaryKeyTrait for PrimaryKey { #[derive(Copy, Clone, Debug, EnumIter)] pub enum Relation { - Domain2, - Domain1, + Domain, + Origin, Transaction, } @@ -71,14 +69,16 @@ impl ColumnTrait for Column { Self::Id => ColumnType::BigInteger.def(), Self::TimeCreated => ColumnType::DateTime.def(), Self::Domain => ColumnType::Integer.def(), - Self::MsgId => ColumnType::VarBinary(StringLen::None).def(), + Self::MsgId => ColumnType::Binary(BlobSize::Blob(None)).def(), Self::Payment => ColumnType::Decimal(Some((78u32, 0u32))).def(), Self::GasAmount => ColumnType::Decimal(Some((78u32, 0u32))).def(), Self::TxId => ColumnType::BigInteger.def(), Self::LogIndex => ColumnType::BigInteger.def(), Self::Origin => ColumnType::Integer.def(), Self::Destination => ColumnType::Integer.def(), - Self::InterchainGasPaymaster => ColumnType::VarBinary(StringLen::None).def(), + Self::InterchainGasPaymaster => { + ColumnType::Binary(sea_orm::sea_query::BlobSize::Blob(None)).def() + } Self::Sequence => ColumnType::BigInteger.def().null(), } } @@ -87,11 +87,11 @@ impl ColumnTrait for Column { impl RelationTrait for Relation { fn def(&self) -> RelationDef { match self { - Self::Domain2 => Entity::belongs_to(super::domain::Entity) + Self::Domain => Entity::belongs_to(super::domain::Entity) .from(Column::Domain) .to(super::domain::Column::Id) .into(), - Self::Domain1 => Entity::belongs_to(super::domain::Entity) + Self::Origin => Entity::belongs_to(super::domain::Entity) .from(Column::Origin) .to(super::domain::Column::Id) .into(), @@ -103,6 +103,12 @@ impl RelationTrait for Relation { } } +impl Related for Entity { + fn to() -> RelationDef { + Relation::Domain.def() + } +} + impl Related for Entity { fn to() -> RelationDef { Relation::Transaction.def() diff --git a/rust/main/agents/scraper/src/db/generated/message.rs b/rust/main/agents/scraper/src/db/generated/message.rs index dbb11661fb..e06ea5de15 100644 --- a/rust/main/agents/scraper/src/db/generated/message.rs +++ b/rust/main/agents/scraper/src/db/generated/message.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 +//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 use sea_orm::entity::prelude::*; @@ -65,14 +65,14 @@ impl ColumnTrait for Column { match self { Self::Id => ColumnType::BigInteger.def(), Self::TimeCreated => ColumnType::DateTime.def(), - Self::MsgId => ColumnType::VarBinary(StringLen::None).def(), + Self::MsgId => ColumnType::Binary(BlobSize::Blob(None)).def(), Self::Origin => ColumnType::Integer.def(), Self::Destination => ColumnType::Integer.def(), Self::Nonce => ColumnType::Integer.def(), - Self::Sender => ColumnType::VarBinary(StringLen::None).def(), - Self::Recipient => ColumnType::VarBinary(StringLen::None).def(), - Self::MsgBody => ColumnType::VarBinary(StringLen::None).def().null(), - Self::OriginMailbox => ColumnType::VarBinary(StringLen::None).def(), + Self::Sender => ColumnType::Binary(BlobSize::Blob(None)).def(), + Self::Recipient => ColumnType::Binary(BlobSize::Blob(None)).def(), + Self::MsgBody => ColumnType::Binary(BlobSize::Blob(None)).def().null(), + Self::OriginMailbox => ColumnType::Binary(BlobSize::Blob(None)).def(), Self::OriginTxId => ColumnType::BigInteger.def(), } } diff --git a/rust/main/agents/scraper/src/db/generated/mod.rs b/rust/main/agents/scraper/src/db/generated/mod.rs index 8617f9e8c5..929adca9d6 100644 --- a/rust/main/agents/scraper/src/db/generated/mod.rs +++ b/rust/main/agents/scraper/src/db/generated/mod.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 +//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 pub mod prelude; diff --git a/rust/main/agents/scraper/src/db/generated/prelude.rs b/rust/main/agents/scraper/src/db/generated/prelude.rs index db1f04aa1f..1280bf70da 100644 --- a/rust/main/agents/scraper/src/db/generated/prelude.rs +++ b/rust/main/agents/scraper/src/db/generated/prelude.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 +//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 #[allow(unused_imports)] pub use super::{ block::Entity as Block, cursor::Entity as Cursor, diff --git a/rust/main/agents/scraper/src/db/generated/transaction.rs b/rust/main/agents/scraper/src/db/generated/transaction.rs index fd5ad5e529..4f1139c8c9 100644 --- a/rust/main/agents/scraper/src/db/generated/transaction.rs +++ b/rust/main/agents/scraper/src/db/generated/transaction.rs @@ -1,4 +1,4 @@ -//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.1 +//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.3 use sea_orm::entity::prelude::*; @@ -11,8 +11,6 @@ impl EntityName for Entity { } } -/// @NOTE: Replaced all occurrences of `Decimal` with `BigDecimal` -/// due to the following issue: https://github.com/SeaQL/sea-orm/issues/1530 #[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel, Eq)] pub struct Model { pub id: i64, @@ -77,7 +75,7 @@ impl ColumnTrait for Column { match self { Self::Id => ColumnType::BigInteger.def(), Self::TimeCreated => ColumnType::DateTime.def(), - Self::Hash => ColumnType::VarBinary(StringLen::None).def().unique(), + Self::Hash => ColumnType::Binary(BlobSize::Blob(None)).def().unique(), Self::BlockId => ColumnType::BigInteger.def(), Self::GasLimit => ColumnType::Decimal(Some((78u32, 0u32))).def(), Self::MaxPriorityFeePerGas => ColumnType::Decimal(Some((78u32, 0u32))).def().null(), @@ -85,11 +83,11 @@ impl ColumnTrait for Column { Self::GasPrice => ColumnType::Decimal(Some((78u32, 0u32))).def().null(), Self::EffectiveGasPrice => ColumnType::Decimal(Some((78u32, 0u32))).def().null(), Self::Nonce => ColumnType::BigInteger.def(), - Self::Sender => ColumnType::VarBinary(StringLen::None).def(), - Self::Recipient => ColumnType::VarBinary(StringLen::None).def().null(), + Self::Sender => ColumnType::Binary(BlobSize::Blob(None)).def(), + Self::Recipient => ColumnType::Binary(BlobSize::Blob(None)).def().null(), Self::GasUsed => ColumnType::Decimal(Some((78u32, 0u32))).def(), Self::CumulativeGasUsed => ColumnType::Decimal(Some((78u32, 0u32))).def(), - Self::RawInputData => ColumnType::VarBinary(StringLen::None).def().null(), + Self::RawInputData => ColumnType::Binary(BlobSize::Blob(None)).def().null(), } } } diff --git a/rust/main/hyperlane-base/Cargo.toml b/rust/main/hyperlane-base/Cargo.toml index cbffa8a05f..ef25d99405 100644 --- a/rust/main/hyperlane-base/Cargo.toml +++ b/rust/main/hyperlane-base/Cargo.toml @@ -44,7 +44,6 @@ warp.workspace = true ya-gcp.workspace = true backtrace = { workspace = true, optional = true } -cc = { workspace = true, optional = true } backtrace-oneline = { path = "../utils/backtrace-oneline", optional = true } ethers-prometheus = { path = "../ethers-prometheus", features = ["serde"] } @@ -74,6 +73,6 @@ vergen = { version = "8.3.2", features = ["build", "git", "gitcl"] } [features] default = ["oneline-errors", "color-eyre"] -oneline-eyre = ["backtrace-oneline", "backtrace", "cc"] +oneline-eyre = ["backtrace-oneline", "backtrace"] oneline-errors = ["oneline-eyre"] test-utils = ["dep:tempfile"] diff --git a/rust/main/rust-toolchain b/rust/main/rust-toolchain index bbf217f21b..7f466bd2df 100644 --- a/rust/main/rust-toolchain +++ b/rust/main/rust-toolchain @@ -1,3 +1,3 @@ [toolchain] -channel = "1.81.0" +channel = "1.80.1" profile = "default" diff --git a/rust/sealevel/Cargo.toml b/rust/sealevel/Cargo.toml index 2beb4bd3d5..145b9bfcc2 100644 --- a/rust/sealevel/Cargo.toml +++ b/rust/sealevel/Cargo.toml @@ -48,6 +48,7 @@ borsh = "0.9" bs58 = "0.5.0" bytes = "1" clap = "4" +color-eyre = "0.6" config = "0.13.3" console-subscriber = "0.2.0" convert_case = "0.6" @@ -93,6 +94,17 @@ reqwest = "0.11" ripemd = "0.1.3" rlp = "=0.5.2" rocksdb = "0.21.0" +sea-orm = { version = "0.11.1", features = [ + "sqlx-postgres", + "runtime-tokio-native-tls", + "with-bigdecimal", + "with-time", + "macros", +] } +sea-orm-migration = { version = "0.11.1", features = [ + "sqlx-postgres", + "runtime-tokio-native-tls", +] } semver = "1.0" serde = { version = "1.0", features = ["derive"] } serde_bytes = "0.11" From 4340e87bea521acb7f717adeec3ba5150a5a0817 Mon Sep 17 00:00:00 2001 From: Danil Nemirovsky Date: Wed, 18 Dec 2024 10:47:13 +0000 Subject: [PATCH 22/32] fix: Release Scraper with revert of new SeaORM (#5036) ### Description Release Scraper with revert of new SeaORM. We shall add indexes for searching interchain gas payments and delivered messages by sequence and bring back new version of SeaORM. ### Drive-by change Disabled arcadiatestnet2 while their RPC is down to allow Scraper to start ### Backward compatibility Yes ### Testing E2E tests on code change --------- Co-authored-by: Danil Nemirovsky <4614623+ameten@users.noreply.github.com> --- typescript/infra/config/environments/mainnet3/agent.ts | 2 +- typescript/infra/config/environments/testnet4/agent.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/agent.ts b/typescript/infra/config/environments/mainnet3/agent.ts index 95dc71fb8d..b5376d3f8d 100644 --- a/typescript/infra/config/environments/mainnet3/agent.ts +++ b/typescript/infra/config/environments/mainnet3/agent.ts @@ -566,7 +566,7 @@ const hyperlane: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: '05e90bc-20241216-180035', + tag: 'd84d8da-20241217-172447', }, resources: scraperResources, }, diff --git a/typescript/infra/config/environments/testnet4/agent.ts b/typescript/infra/config/environments/testnet4/agent.ts index efe21db9ce..b340968538 100644 --- a/typescript/infra/config/environments/testnet4/agent.ts +++ b/typescript/infra/config/environments/testnet4/agent.ts @@ -113,7 +113,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< alephzeroevmtestnet: true, alfajores: true, arbitrumsepolia: true, - arcadiatestnet2: true, + arcadiatestnet2: false, basesepolia: true, berabartio: true, bsctestnet: true, @@ -250,7 +250,7 @@ const hyperlane: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: '4b280cd-20241206-130519', + tag: 'd84d8da-20241217-172447', }, resources: scraperResources, }, From ddc4d799e868908130162d429e6965cfcb18ecce Mon Sep 17 00:00:00 2001 From: Mohammed Hussan Date: Wed, 18 Dec 2024 15:01:52 +0000 Subject: [PATCH 23/32] fix(warpMonitor): Handle zero balance for warp routers (#5025) ### Description - handle zero balance appropriately in warp monitor ### Testing Manual --- .../warp-routes/monitor/monitor-warp-route-balances.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/typescript/infra/scripts/warp-routes/monitor/monitor-warp-route-balances.ts b/typescript/infra/scripts/warp-routes/monitor/monitor-warp-route-balances.ts index 1591d92b3d..4eecc1f736 100644 --- a/typescript/infra/scripts/warp-routes/monitor/monitor-warp-route-balances.ts +++ b/typescript/infra/scripts/warp-routes/monitor/monitor-warp-route-balances.ts @@ -160,7 +160,7 @@ async function getTokenBridgedBalance( const adapter = token.getHypAdapter(warpCore.multiProvider); const bridgedSupply = await adapter.getBridgedSupply(); - if (!bridgedSupply) { + if (bridgedSupply === undefined) { logger.warn('Bridged supply not found for token', token); return undefined; } @@ -273,7 +273,7 @@ async function tryGetTokenPrice( // We only get a price if the token defines a CoinGecko ID. // This way we can ignore values of certain types of collateralized warp routes, // e.g. Native warp routes on rollups that have been pre-funded. - let coinGeckoId = token.coinGeckoId; + const coinGeckoId = token.coinGeckoId; if (!coinGeckoId) { logger.warn('CoinGecko ID missing for token', token.symbol); From 866106b126606454068087d754cc708db29971ba Mon Sep 17 00:00:00 2001 From: Mohammed Hussan Date: Wed, 18 Dec 2024 15:22:51 +0000 Subject: [PATCH 24/32] feat(funding): Update desired balances per chain for funding (#5040) ### Description - adjust the desired balances for relayer with the aim to maintaining at least 2 days worth of funds --- typescript/infra/config/environments/mainnet3/funding.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/funding.ts b/typescript/infra/config/environments/mainnet3/funding.ts index c03400bc10..81d1251723 100644 --- a/typescript/infra/config/environments/mainnet3/funding.ts +++ b/typescript/infra/config/environments/mainnet3/funding.ts @@ -76,7 +76,7 @@ export const keyFunderConfig: KeyFunderConfig< ink: '0.05', kaia: '250', kroma: '0.05', - linea: '0.2', + linea: '1', lisk: '0.05', lukso: '20', lumia: '1', @@ -89,12 +89,12 @@ export const keyFunderConfig: KeyFunderConfig< mint: '0.05', mode: '0.2', molten: '3', - moonbeam: '5', + moonbeam: '100', morph: '0.05', oortmainnet: '2000', optimism: '0.5', orderly: '0.05', - polygon: '20', + polygon: '40', polygonzkevm: '0.5', polynomialfi: '0.05', prom: '5', @@ -119,7 +119,7 @@ export const keyFunderConfig: KeyFunderConfig< taiko: '0.2', tangle: '2', telos: '100', - treasure: '100', + treasure: '800', unichain: '0.05', // temporarily low until we're able to fund more vana: '0.001', From 7c0c967865f4b599be2db8871aebc7b29f79eb87 Mon Sep 17 00:00:00 2001 From: Daniel Savu <23065004+daniel-savu@users.noreply.github.com> Date: Wed, 18 Dec 2024 17:18:50 +0000 Subject: [PATCH 25/32] fix: operation_status metric inaccuracy (#5002) ### Description The `new_metric` passed into `set_status_and_update_metrics` was actually using the old `status` of the queue operation, causing prepare queue messages to be reflected in metrics as having the status they had in the submit queue. See https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/5001 for more details. ### Related issues - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/5001 ### Backward compatibility Yes ### Testing Will check on RC before releasing --- rust/main/agents/relayer/src/msg/op_queue.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/rust/main/agents/relayer/src/msg/op_queue.rs b/rust/main/agents/relayer/src/msg/op_queue.rs index 95025d391c..99c9dde39f 100644 --- a/rust/main/agents/relayer/src/msg/op_queue.rs +++ b/rust/main/agents/relayer/src/msg/op_queue.rs @@ -29,10 +29,8 @@ impl OpQueue { /// it's very likely that its status has just changed, so this forces the caller to consider the new status #[instrument(skip(self), ret, fields(queue_label=%self.queue_metrics_label), level = "trace")] pub async fn push(&self, mut op: QueueOperation, new_status: Option) { - op.set_status_and_update_metrics( - new_status, - Arc::new(self.get_operation_metric(op.as_ref())), - ); + let new_metric = Arc::new(self.get_new_operation_metric(op.as_ref(), new_status.clone())); + op.set_status_and_update_metrics(new_status, new_metric); self.queue.lock().await.push(Reverse(op)); } @@ -99,12 +97,17 @@ impl OpQueue { } /// Get the metric associated with this operation - fn get_operation_metric(&self, operation: &dyn PendingOperation) -> IntGauge { + fn get_new_operation_metric( + &self, + operation: &dyn PendingOperation, + new_status: Option, + ) -> IntGauge { let (destination, app_context) = operation.get_operation_labels(); + let new_metric_status = new_status.unwrap_or(operation.status()); self.metrics.with_label_values(&[ &destination, &self.queue_metrics_label, - &operation.status().to_string(), + &new_metric_status.to_string(), &app_context, ]) } From 42d73fd5baebfb5990d1c8063cab0166fdb40edd Mon Sep 17 00:00:00 2001 From: Paul Balaji <10051819+paulbalaji@users.noreply.github.com> Date: Wed, 18 Dec 2024 18:27:38 +0000 Subject: [PATCH 26/32] feat: enroll dec 13 batch (#5035) ### Description - feat: enroll dec 13 batch - add merkly/mitosis to arthera, aurora, conflux, conwai, corn, evmos, form, rivalz, sonic, telos - add imperator, engima, luganodes, bware, tesselated to ink - add hashkey to swell and treasure - replace superform on blast with 2 renzo validators ### Drive-by changes - igp updates ### Related issues ### Backward compatibility ### Testing --------- Signed-off-by: pbio <10051819+paulbalaji@users.noreply.github.com> --- .../config/environments/mainnet3/chains.ts | 6 + .../environments/mainnet3/gasPrices.json | 30 ++- .../config/environments/mainnet3/owners.ts | 17 +- .../environments/mainnet3/tokenPrices.json | 215 +++++++++--------- typescript/sdk/src/consts/multisigIsm.ts | 72 ++++-- 5 files changed, 200 insertions(+), 140 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/chains.ts b/typescript/infra/config/environments/mainnet3/chains.ts index b5119aa440..62c5dffdad 100644 --- a/typescript/infra/config/environments/mainnet3/chains.ts +++ b/typescript/infra/config/environments/mainnet3/chains.ts @@ -85,6 +85,12 @@ export const chainMetadataOverrides: ChainMap> = { // gasPrice: 20 * 10 ** 9, // 20 gwei // }, // }, + // degenchain: { + // transactionOverrides: { + // maxFeePerGas: 100 * 10 ** 9, // 100 gwei + // maxPriorityFeePerGas: 10 * 10 ** 9, // 10 gwei + // }, + // }, }; export const getRegistry = async ( diff --git a/typescript/infra/config/environments/mainnet3/gasPrices.json b/typescript/infra/config/environments/mainnet3/gasPrices.json index 03054a4cf7..b260dfee48 100644 --- a/typescript/infra/config/environments/mainnet3/gasPrices.json +++ b/typescript/infra/config/environments/mainnet3/gasPrices.json @@ -24,7 +24,7 @@ "decimals": 9 }, "arthera": { - "amount": "1.025082", + "amount": "1.025064", "decimals": 9 }, "astar": { @@ -36,7 +36,7 @@ "decimals": 9 }, "aurora": { - "amount": "0.05", + "amount": "0.07", "decimals": 9 }, "flame": { @@ -48,7 +48,7 @@ "decimals": 9 }, "b3": { - "amount": "0.001000256", + "amount": "0.001000252", "decimals": 9 }, "base": { @@ -68,7 +68,7 @@ "decimals": 9 }, "boba": { - "amount": "0.001000067", + "amount": "0.001000068", "decimals": 9 }, "bsc": { @@ -159,10 +159,6 @@ "amount": "0.001000252", "decimals": 9 }, - "fractal": { - "amount": "10.0", - "decimals": 9 - }, "fraxtal": { "amount": "0.001000253", "decimals": 9 @@ -212,7 +208,7 @@ "decimals": 9 }, "lisk": { - "amount": "0.001001101", + "amount": "0.001001154", "decimals": 9 }, "lukso": { @@ -228,7 +224,7 @@ "decimals": 9 }, "mantapacific": { - "amount": "0.003000373", + "amount": "0.003000319", "decimals": 9 }, "mantle": { @@ -248,11 +244,11 @@ "decimals": 9 }, "mint": { - "amount": "0.001000252", + "amount": "0.001000256", "decimals": 9 }, "mode": { - "amount": "0.001000264", + "amount": "0.001000252", "decimals": 9 }, "molten": { @@ -276,7 +272,7 @@ "decimals": 9 }, "optimism": { - "amount": "0.001000772", + "amount": "0.001159749", "decimals": 9 }, "orderly": { @@ -300,7 +296,7 @@ "decimals": 9 }, "prom": { - "amount": "128.0", + "amount": "130.0", "decimals": 9 }, "proofofplay": { @@ -340,7 +336,7 @@ "decimals": 9 }, "shibarium": { - "amount": "9.064712705", + "amount": "11.93032412", "decimals": 9 }, "snaxchain": { @@ -384,7 +380,7 @@ "decimals": 9 }, "telos": { - "amount": "521.500627641", + "amount": "522.500627641", "decimals": 9 }, "treasure": { @@ -404,7 +400,7 @@ "decimals": 9 }, "worldchain": { - "amount": "0.001000258", + "amount": "0.001000251", "decimals": 9 }, "xai": { diff --git a/typescript/infra/config/environments/mainnet3/owners.ts b/typescript/infra/config/environments/mainnet3/owners.ts index 5b495d316f..01fe1e84b5 100644 --- a/typescript/infra/config/environments/mainnet3/owners.ts +++ b/typescript/infra/config/environments/mainnet3/owners.ts @@ -62,7 +62,7 @@ export const safes: ChainMap
= { export const icaOwnerChain = 'ethereum'; // Found by running: -// yarn tsx ./scripts/get-owner-ica.ts -e mainnet3 --ownerChain ethereum --destinationChains ... +// yarn tsx ./scripts/keys/get-owner-ica.ts -e mainnet3 --ownerChain ethereum --destinationChains ... export const icas: Partial< Record<(typeof supportedChainNames)[number], Address> > = { @@ -173,6 +173,21 @@ export const icas: Partial< // swell: '0xff8326468e7AaB51c53D3569cf7C45Dd54c11687', // already has a safe lumiaprism: '0xAFfA863646D1bC74ecEC0dB1070f069Af065EBf5', appchain: '0x4F25DFFd10A6D61C365E1a605d07B2ab0E82A7E6', + + // Dec 13, 2024 batch + // ---------------------------------------------------------- + arthera: '0x962e4E5F5e47e1Ab5361eE0B5108Ebeb9Fa5c99B', + aurora: '0x853f40c807cbb08EDd19B326b9b6A669bf3c274c', + conflux: '0xac8f0e306A126312C273080d149ca01d461603FE', + conwai: '0x5926599B8Aff45f1708b804B30213babdAD78C83', + corn: '0x5926599B8Aff45f1708b804B30213babdAD78C83', + evmos: '0x5926599B8Aff45f1708b804B30213babdAD78C83', + form: '0x5926599B8Aff45f1708b804B30213babdAD78C83', + ink: '0xDde4Ce691d1c0579d48BCdd3491aA71472b6cC38', + rivalz: '0xc1e20A0D78E79B94D71d4bDBC8FD0Af7c856Dd7A', + soneium: '0x5926599B8Aff45f1708b804B30213babdAD78C83', + sonic: '0x5926599B8Aff45f1708b804B30213babdAD78C83', + telos: '0xDde4Ce691d1c0579d48BCdd3491aA71472b6cC38', } as const; export const DEPLOYER = '0xa7ECcdb9Be08178f896c26b7BbD8C3D4E844d9Ba'; diff --git a/typescript/infra/config/environments/mainnet3/tokenPrices.json b/typescript/infra/config/environments/mainnet3/tokenPrices.json index 7c3702808b..6d4517e2ad 100644 --- a/typescript/infra/config/environments/mainnet3/tokenPrices.json +++ b/typescript/infra/config/environments/mainnet3/tokenPrices.json @@ -1,112 +1,111 @@ { - "ancient8": "3967.88", - "alephzeroevmmainnet": "0.574132", - "apechain": "1.55", - "appchain": "3967.88", - "arbitrum": "3967.88", - "arbitrumnova": "3967.88", - "arthera": "0.130115", - "astar": "0.073381", - "astarzkevm": "3967.88", - "aurora": "3967.88", - "flame": "6.58", - "avalanche": "49.43", - "b3": "3967.88", - "base": "3967.88", - "bitlayer": "106640", - "blast": "3967.88", - "bob": "3967.88", - "boba": "3967.88", - "bsc": "719.63", - "bsquared": "106640", - "celo": "0.810897", - "cheesechain": "0.00135152", - "chilizmainnet": "0.108762", - "conflux": "0.205619", - "conwai": "0.00468951", - "coredao": "1.35", - "corn": "106640", - "cyber": "3967.88", - "degenchain": "0.0142007", - "dogechain": "0.401903", - "duckchain": "6.06", - "eclipsemainnet": "3967.88", - "endurance": "2.71", - "ethereum": "3967.88", - "everclear": "3967.88", - "evmos": "0.03072161", - "fantom": "1.38", - "flare": "0.0303841", - "flowmainnet": "0.931723", - "form": "3967.88", - "fractal": "0.00058043", - "fraxtal": "3939.37", - "fusemainnet": "0.03904172", - "gnosis": "1.001", - "gravity": "0.0340731", - "harmony": "0.03279832", - "immutablezkevmmainnet": "1.8", - "inevm": "28.72", - "ink": "3967.88", - "injective": "28.72", - "kaia": "0.275014", - "kroma": "3967.88", - "linea": "3967.88", - "lisk": "3967.88", - "lukso": "2.9", - "lumia": "2.03", - "lumiaprism": "2.03", - "mantapacific": "3967.88", - "mantle": "1.21", - "merlin": "106736", - "metal": "3967.88", - "metis": "55.88", - "mint": "3967.88", - "mode": "3967.88", - "molten": "0.419836", - "moonbeam": "0.309739", - "morph": "3967.88", - "neutron": "0.532415", - "oortmainnet": "0.190901", - "optimism": "3967.88", - "orderly": "3967.88", - "osmosis": "0.58828", - "polygon": "0.600874", - "polygonzkevm": "3967.88", - "polynomialfi": "3967.88", - "prom": "6.7", - "proofofplay": "3967.88", - "rarichain": "3967.88", + "ancient8": "3862.21", + "alephzeroevmmainnet": "0.491237", + "apechain": "1.48", + "appchain": "3862.21", + "arbitrum": "3862.21", + "arbitrumnova": "3862.21", + "arthera": "0.079162", + "astar": "0.068176", + "astarzkevm": "3862.21", + "aurora": "3862.21", + "flame": "6.24", + "avalanche": "46.58", + "b3": "3862.21", + "base": "3862.21", + "bitlayer": "104188", + "blast": "3862.21", + "bob": "3862.21", + "boba": "3862.21", + "bsc": "715.42", + "bsquared": "104188", + "celo": "0.763128", + "cheesechain": "0.00147642", + "chilizmainnet": "0.101585", + "conflux": "0.187951", + "conwai": "0.00457053", + "coredao": "1.23", + "corn": "104188", + "cyber": "3862.21", + "degenchain": "0.01304206", + "dogechain": "0.385834", + "duckchain": "5.75", + "eclipsemainnet": "3862.21", + "endurance": "2.42", + "ethereum": "3862.21", + "everclear": "3862.21", + "evmos": "0.02761808", + "fantom": "1.3", + "flare": "0.02941065", + "flowmainnet": "0.856226", + "form": "3862.21", + "fraxtal": "3854.07", + "fusemainnet": "0.034729", + "gnosis": "1.005", + "gravity": "0.03098347", + "harmony": "0.03085585", + "immutablezkevmmainnet": "1.68", + "inevm": "26.54", + "ink": "3862.21", + "injective": "26.54", + "kaia": "0.257712", + "kroma": "3862.21", + "linea": "3862.21", + "lisk": "3862.21", + "lukso": "2.82", + "lumia": "1.89", + "lumiaprism": "1.81", + "mantapacific": "3862.21", + "mantle": "1.19", + "merlin": "104171", + "metal": "3862.21", + "metis": "53.23", + "mint": "3862.21", + "mode": "3862.21", + "molten": "0.504259", + "moonbeam": "0.278919", + "morph": "3862.21", + "neutron": "0.47823", + "oortmainnet": "0.176273", + "optimism": "3862.21", + "orderly": "3862.21", + "osmosis": "0.550513", + "polygon": "0.55632", + "polygonzkevm": "3862.21", + "polynomialfi": "3862.21", + "prom": "6.34", + "proofofplay": "3862.21", + "rarichain": "3862.21", "real": "1", - "redstone": "3967.88", - "rivalz": "3967.88", - "rootstockmainnet": "105807", - "sanko": "60.7", - "scroll": "3967.88", - "sei": "0.574136", - "shibarium": "0.605325", - "snaxchain": "3967.88", - "solanamainnet": "218.06", - "soneium": "3967.88", - "sonic": "1.38", - "stride": "0.73114", - "superseed": "3967.88", - "superpositionmainnet": "3967.88", - "swell": "3967.88", - "taiko": "3967.88", + "redstone": "3862.21", + "rivalz": "3862.21", + "rootstockmainnet": "103948", + "sanko": "62.71", + "scroll": "3862.21", + "sei": "0.517789", + "shibarium": "0.555228", + "snaxchain": "3862.21", + "solanamainnet": "216.87", + "soneium": "3862.21", + "sonic": "1.3", + "stride": "0.658767", + "superseed": "3862.21", + "superpositionmainnet": "3862.21", + "swell": "3862.21", + "taiko": "3862.21", "tangle": "1", - "telos": "0.300211", - "treasure": "0.584585", - "unichain": "3967.88", - "vana": "28.22", - "viction": "0.474985", - "worldchain": "3967.88", - "xai": "0.319313", - "xlayer": "53.91", - "zeronetwork": "3967.88", - "zetachain": "0.721977", - "zircuit": "3967.88", - "zklink": "3967.88", - "zksync": "3967.88", - "zoramainnet": "3967.88" + "telos": "0.300906", + "treasure": "0.535464", + "unichain": "3862.21", + "vana": "17.77", + "viction": "0.43386", + "worldchain": "3862.21", + "xai": "0.292813", + "xlayer": "51.34", + "zeronetwork": "3862.21", + "zetachain": "0.672943", + "zircuit": "3862.21", + "zklink": "3862.21", + "zksync": "3862.21", + "zoramainnet": "3862.21" } diff --git a/typescript/sdk/src/consts/multisigIsm.ts b/typescript/sdk/src/consts/multisigIsm.ts index 7e29f5b70f..0febbb803c 100644 --- a/typescript/sdk/src/consts/multisigIsm.ts +++ b/typescript/sdk/src/consts/multisigIsm.ts @@ -177,12 +177,14 @@ export const defaultMultisigConfigs: ChainMap = { }, arthera: { - threshold: 1, + threshold: 2, validators: [ { address: '0x13710ac11c36c169f62fba95767ae59a1e57098d', alias: AW_VALIDATOR_ALIAS, }, + DEFAULT_MERKLY_VALIDATOR, + DEFAULT_MITOSIS_VALIDATOR, ], }, @@ -211,12 +213,14 @@ export const defaultMultisigConfigs: ChainMap = { }, aurora: { - threshold: 1, + threshold: 2, validators: [ { address: '0x37105aec3ff37c7bb0abdb0b1d75112e1e69fa86', alias: AW_VALIDATOR_ALIAS, }, + DEFAULT_MERKLY_VALIDATOR, + DEFAULT_MITOSIS_VALIDATOR, ], }, @@ -291,7 +295,7 @@ export const defaultMultisigConfigs: ChainMap = { }, blast: { - threshold: 2, + threshold: 3, validators: [ { address: '0xf20c0b09f597597c8d2430d3d72dfddaf09177d1', @@ -299,9 +303,10 @@ export const defaultMultisigConfigs: ChainMap = { }, DEFAULT_MITOSIS_VALIDATOR, { - address: '0xae53467a5c2a9d9420c188d10fef5e1d9b9a5b80', - alias: 'Superform', + address: '0x1652d8ba766821cf01aeea34306dfc1cab964a32', + alias: 'Everclear', }, + { address: '0x54bb0036f777202371429e062fe6aee0d59442f9', alias: 'Renzo' }, ], }, @@ -452,12 +457,14 @@ export const defaultMultisigConfigs: ChainMap = { }, conflux: { - threshold: 1, + threshold: 2, validators: [ { address: '0x113dfa1dc9b0a2efb6ad01981e2aad86d3658490', alias: AW_VALIDATOR_ALIAS, }, + DEFAULT_MERKLY_VALIDATOR, + DEFAULT_MITOSIS_VALIDATOR, ], }, @@ -472,12 +479,14 @@ export const defaultMultisigConfigs: ChainMap = { }, conwai: { - threshold: 1, + threshold: 2, validators: [ { address: '0x949e2cdd7e79f99ee9bbe549540370cdc62e73c3', alias: AW_VALIDATOR_ALIAS, }, + DEFAULT_MERKLY_VALIDATOR, + DEFAULT_MITOSIS_VALIDATOR, ], }, @@ -494,12 +503,14 @@ export const defaultMultisigConfigs: ChainMap = { }, corn: { - threshold: 1, + threshold: 2, validators: [ { address: '0xc80b2e3e38220e02d194a0effa9d5bfe89894c07', alias: AW_VALIDATOR_ALIAS, }, + DEFAULT_MERKLY_VALIDATOR, + DEFAULT_MITOSIS_VALIDATOR, ], }, @@ -646,12 +657,14 @@ export const defaultMultisigConfigs: ChainMap = { }, evmos: { - threshold: 1, + threshold: 2, validators: [ { address: '0x8f82387ad8b7b13aa9e06ed3f77f78a77713afe0', alias: AW_VALIDATOR_ALIAS, }, + DEFAULT_MERKLY_VALIDATOR, + DEFAULT_MITOSIS_VALIDATOR, ], }, @@ -719,12 +732,14 @@ export const defaultMultisigConfigs: ChainMap = { }, form: { - threshold: 1, + threshold: 2, validators: [ { address: '0x58554b2e76167993b5fc000d0070a2f883cd333a', alias: AW_VALIDATOR_ALIAS, }, + DEFAULT_MERKLY_VALIDATOR, + DEFAULT_MITOSIS_VALIDATOR, ], }, @@ -908,12 +923,27 @@ export const defaultMultisigConfigs: ChainMap = { }, ink: { - threshold: 1, + threshold: 4, validators: [ { address: '0xb533b8b104522958b984fb258e0684dec0f1a6a5', alias: AW_VALIDATOR_ALIAS, }, + { + address: '0xd207a6dfd887d91648b672727ff1aef6223cb15a', + alias: 'Imperator', + }, + + { + address: '0xa40203b5301659f1e201848d92f5e81f64f206f5', + alias: 'Enigma', + }, + { + address: '0xff9c1e7b266a36eda0d9177d4236994d94819dc0', + alias: 'Luganodes', + }, + DEFAULT_BWARE_LABS_VALIDATOR, + DEFAULT_TESSELLATED_VALIDATOR, ], }, @@ -1414,12 +1444,14 @@ export const defaultMultisigConfigs: ChainMap = { }, rivalz: { - threshold: 1, + threshold: 2, validators: [ { address: '0xf87c3eb3dde972257b0d6d110bdadcda951c0dc1', alias: AW_VALIDATOR_ALIAS, }, + DEFAULT_MERKLY_VALIDATOR, + DEFAULT_MITOSIS_VALIDATOR, ], }, @@ -1605,12 +1637,14 @@ export const defaultMultisigConfigs: ChainMap = { }, sonic: { - threshold: 1, + threshold: 2, validators: [ { address: '0xa313d72dbbd3fa51a2ed1611ea50c37946fa42f7', alias: AW_VALIDATOR_ALIAS, }, + DEFAULT_MERKLY_VALIDATOR, + DEFAULT_MITOSIS_VALIDATOR, ], }, @@ -1727,6 +1761,10 @@ export const defaultMultisigConfigs: ChainMap = { }, DEFAULT_MERKLY_VALIDATOR, DEFAULT_MITOSIS_VALIDATOR, + { + address: '0x5aed2fd5cc5f9749c455646c86b0db6126cafcbb', + alias: 'Hashkey Cloud', + }, ], }, @@ -1762,12 +1800,14 @@ export const defaultMultisigConfigs: ChainMap = { }, telos: { - threshold: 1, + threshold: 2, validators: [ { address: '0xcb08410b14d3adf0d0646f0c61cd07e0daba8e54', alias: AW_VALIDATOR_ALIAS, }, + DEFAULT_MERKLY_VALIDATOR, + DEFAULT_MITOSIS_VALIDATOR, ], }, @@ -1787,6 +1827,10 @@ export const defaultMultisigConfigs: ChainMap = { alias: 'Treasure', }, DEFAULT_MITOSIS_VALIDATOR, + { + address: '0x5aed2fd5cc5f9749c455646c86b0db6126cafcbb', + alias: 'Hashkey Cloud', + }, ], }, From edc4e68020a70a14aaf05ed5bbc9f4090c9e870a Mon Sep 17 00:00:00 2001 From: Daniel Savu <23065004+daniel-savu@users.noreply.github.com> Date: Wed, 18 Dec 2024 18:45:57 +0000 Subject: [PATCH 27/32] chore: update relayer images (#5046) ### Description to include the operation status metric fix from https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/5002 ### Drive-by changes ### Related issues ### Backward compatibility ### Testing --- typescript/infra/config/environments/mainnet3/agent.ts | 4 ++-- typescript/infra/config/environments/testnet4/agent.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/agent.ts b/typescript/infra/config/environments/mainnet3/agent.ts index b5376d3f8d..29366ebcf0 100644 --- a/typescript/infra/config/environments/mainnet3/agent.ts +++ b/typescript/infra/config/environments/mainnet3/agent.ts @@ -546,7 +546,7 @@ const hyperlane: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: '16d5869-20241217-160358', + tag: '7c0c967-20241218-173053', }, blacklist, gasPaymentEnforcement: gasPaymentEnforcement, @@ -581,7 +581,7 @@ const releaseCandidate: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: '16d5869-20241217-160358', + tag: '7c0c967-20241218-173053', }, blacklist, // We're temporarily (ab)using the RC relayer as a way to increase diff --git a/typescript/infra/config/environments/testnet4/agent.ts b/typescript/infra/config/environments/testnet4/agent.ts index b340968538..d34e53657d 100644 --- a/typescript/infra/config/environments/testnet4/agent.ts +++ b/typescript/infra/config/environments/testnet4/agent.ts @@ -219,7 +219,7 @@ const hyperlane: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: '16d5869-20241217-160358', + tag: '7c0c967-20241218-173053', }, blacklist: [...releaseCandidateHelloworldMatchingList, ...relayBlacklist], gasPaymentEnforcement, @@ -265,7 +265,7 @@ const releaseCandidate: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: '16d5869-20241217-160358', + tag: '7c0c967-20241218-173053', }, whitelist: [...releaseCandidateHelloworldMatchingList], blacklist: relayBlacklist, From 9349ef73ed6847040cb1adf9cff5d5141f08e1b3 Mon Sep 17 00:00:00 2001 From: Yorke Rhodes Date: Wed, 18 Dec 2024 16:03:53 -0500 Subject: [PATCH 28/32] fix: strategy flag propagation (#5033) ### Description `--strategy` flag was not being propagated through context middleware properly ### Drive-by changes ### Related issues ### Backward compatibility ### Testing warp apply e2e tests --- .changeset/polite-bulldogs-sit.md | 5 ++++ typescript/cli/src/config/strategy.ts | 39 +++------------------------ typescript/cli/src/context/context.ts | 11 ++++---- 3 files changed, 15 insertions(+), 40 deletions(-) create mode 100644 .changeset/polite-bulldogs-sit.md diff --git a/.changeset/polite-bulldogs-sit.md b/.changeset/polite-bulldogs-sit.md new file mode 100644 index 0000000000..8acf555fe5 --- /dev/null +++ b/.changeset/polite-bulldogs-sit.md @@ -0,0 +1,5 @@ +--- +"@hyperlane-xyz/cli": patch +--- + +Fix strategy flag propagation diff --git a/typescript/cli/src/config/strategy.ts b/typescript/cli/src/config/strategy.ts index f57c7d3378..cb2abaf437 100644 --- a/typescript/cli/src/config/strategy.ts +++ b/typescript/cli/src/config/strategy.ts @@ -10,17 +10,15 @@ import { import { ProtocolType, assert, - errorToString, isAddress, isPrivateKeyEvm, } from '@hyperlane-xyz/utils'; import { CommandContext } from '../context/types.js'; -import { errorRed, log, logBlue, logGreen, logRed } from '../logger.js'; +import { errorRed, log, logBlue, logGreen } from '../logger.js'; import { runSingleChainSelectionStep } from '../utils/chains.js'; import { indentYamlOrJson, - isFile, readYamlOrJson, writeYamlOrJson, } from '../utils/files.js'; @@ -33,38 +31,9 @@ export async function readChainSubmissionStrategyConfig( filePath: string, ): Promise { log(`Reading submission strategy in ${filePath}`); - try { - const strategyConfig = readYamlOrJson(filePath); - - const parseResult = ChainSubmissionStrategySchema.parse(strategyConfig); - - return parseResult; - } catch (error) { - logRed(`⛔️ Error reading strategy config:`, errorToString(error)); - throw error; // Re-throw to let caller handle the error - } -} - -/** - * Safely reads chain submission strategy config, returns empty object if any errors occur - */ -export async function safeReadChainSubmissionStrategyConfig( - filePath: string, -): Promise { - try { - const trimmedFilePath = filePath.trim(); - if (!isFile(trimmedFilePath)) { - logBlue(`File ${trimmedFilePath} does not exist, returning empty config`); - return {}; - } - return await readChainSubmissionStrategyConfig(trimmedFilePath); - } catch (error) { - logRed( - `Failed to read strategy config, defaulting to empty config:`, - errorToString(error), - ); - return {}; - } + const strategyConfig = readYamlOrJson(filePath); + const parseResult = ChainSubmissionStrategySchema.parse(strategyConfig); + return parseResult; } export async function createStrategyConfig({ diff --git a/typescript/cli/src/context/context.ts b/typescript/cli/src/context/context.ts index 570b233cde..d3bb47d3a9 100644 --- a/typescript/cli/src/context/context.ts +++ b/typescript/cli/src/context/context.ts @@ -16,9 +16,8 @@ import { } from '@hyperlane-xyz/sdk'; import { isHttpsUrl, isNullish, rootLogger } from '@hyperlane-xyz/utils'; -import { DEFAULT_STRATEGY_CONFIG_PATH } from '../commands/options.js'; import { isSignCommand } from '../commands/signCommands.js'; -import { safeReadChainSubmissionStrategyConfig } from '../config/strategy.js'; +import { readChainSubmissionStrategyConfig } from '../config/strategy.js'; import { PROXY_DEPLOYED_URL } from '../consts.js'; import { forkNetworkToMultiProvider, verifyAnvil } from '../deploy/dry-run.js'; import { logBlue } from '../logger.js'; @@ -62,9 +61,9 @@ export async function signerMiddleware(argv: Record) { if (!requiresKey) return argv; - const strategyConfig = await safeReadChainSubmissionStrategyConfig( - strategyPath ?? DEFAULT_STRATEGY_CONFIG_PATH, - ); + const strategyConfig = strategyPath + ? await readChainSubmissionStrategyConfig(strategyPath) + : {}; /** * Intercepts Hyperlane command to determine chains. @@ -106,6 +105,7 @@ export async function getContext({ requiresKey, skipConfirmation, disableProxy = false, + strategyPath, }: ContextSettings): Promise { const registry = getRegistry(registryUri, registryOverrideUri, !disableProxy); @@ -127,6 +127,7 @@ export async function getContext({ key, skipConfirmation: !!skipConfirmation, signerAddress, + strategyPath, } as CommandContext; } From 9f6b8c514b3b60ccac1536efc68b9726480b0721 Mon Sep 17 00:00:00 2001 From: Yorke Rhodes Date: Thu, 19 Dec 2024 06:09:04 -0500 Subject: [PATCH 29/32] feat: implement multi-message relay (#4812) ### Description - Allow self-relaying of all messages if there are multiple in a given dispatch transaction. - Adds `relayAll` method to HyperlaneRelayer in SDK. - Finds and attempts to relay all undelivered messages in the given dispatch tx. ### Drive-by changes - use `getContracts` in HyperlaneCore - add assertions in HyperlaneCore for expected number of process events ### Related issues ### Backward compatibility ### Testing Manual with ICA governance tx ``` $ yarn workspace @hyperlane-xyz/cli hyperlane status --dispatchTx 0x96377bd88332ac86b10bc87ab3c97c89a9edef1046d0179ac8bec215d8964611 --origin ethereum --relay -r /Users/pbio/work/hyperlane-registry/ --overrides '' ``` ``` Hyperlane CLI File /Users/pbio/.hyperlane/strategies/default-strategy.yaml does not exist, returning empty config Checking status of message 0x2f02bc5d50e6e5e3722d1cfe1f44c12f726ddffa0d0702358fca23653b1a1ead on lisk Message 0x2f02bc5d50e6e5e3722d1cfe1f44c12f726ddffa0d0702358fca23653b1a1ead was delivered Checking status of message 0x83a95fe23bdf0d0f5e6d04c9fc2b5af8259c06d7a69e1a3d549eea27f7c68f0c on flowmainnet Message 0x83a95fe23bdf0d0f5e6d04c9fc2b5af8259c06d7a69e1a3d549eea27f7c68f0c was delivered Checking status of message 0xb65fab794926ed121076adb4d590000ac629f036bd1aba7638faa59bc3514efa on cheesechain Message 0xb65fab794926ed121076adb4d590000ac629f036bd1aba7638faa59bc3514efa was delivered Checking status of message 0x75e5f9a914879f74b68c6e557cca0394ecae85d08d48030285235f6904b10756 on superpositionmainnet Message 0x75e5f9a914879f74b68c6e557cca0394ecae85d08d48030285235f6904b10756 was delivered Checking status of message 0xe11da92d16dacc82e5e7ddb9f5b0e4fbbab7250e0980f304b8b79c808e62aad3 on flame Message 0xe11da92d16dacc82e5e7ddb9f5b0e4fbbab7250e0980f304b8b79c808e62aad3 was delivered Checking status of message 0x6207cec7be3f192ccd18850bcb56564d1750f3fdf763fd21136fed8a4a47c209 on kroma Message 0x6207cec7be3f192ccd18850bcb56564d1750f3fdf763fd21136fed8a4a47c209 was delivered Checking status of message 0xd9b7bde4c1195ec474b1d75d1e3c6bb3fe2c991aa84685deaf6d3090ae43c59d on molten Message 0xd9b7bde4c1195ec474b1d75d1e3c6bb3fe2c991aa84685deaf6d3090ae43c59d was delivered Checking status of message 0xa88533a9d8cdbdd6ab1cb656707ed60b18077f45867b29e0099560dafab691f9 on gravity Message 0xa88533a9d8cdbdd6ab1cb656707ed60b18077f45867b29e0099560dafab691f9 was delivered Checking status of message 0xb942a6663af5f35fbd3efec75200c8909d9542428167267a9bbf7878c9ba02a5 on viction Message 0xb942a6663af5f35fbd3efec75200c8909d9542428167267a9bbf7878c9ba02a5 was delivered Checking status of message 0x36e7cb4857bab78d04d04e3c7c43a9f06150c533d51a8157641f8a99090c763d on bitlayer Message 0x36e7cb4857bab78d04d04e3c7c43a9f06150c533d51a8157641f8a99090c763d was delivered Checking status of message 0x11bf61480a63bcb3a77131d9bd5eecf756579675c95a32c7049f3585ed6b6a15 on harmony Message 0x11bf61480a63bcb3a77131d9bd5eecf756579675c95a32c7049f3585ed6b6a15 was delivered Checking status of message 0x146906d5315af3eaa2db01d4b999426df5dfae1d5ea99ef68a274d5a8e351bdc on shibarium Message 0x146906d5315af3eaa2db01d4b999426df5dfae1d5ea99ef68a274d5a8e351bdc was delivered Checking status of message 0x49451d6040aef68faff3163b99d01601f807e3c6f743de523e3c7df227b47314 on rootstockmainnet Message 0x49451d6040aef68faff3163b99d01601f807e3c6f743de523e3c7df227b47314 was delivered Checking status of message 0x716f57169a0faa0a4d895b67a95a82447afae19dd3d62121660cb701b1dd8f0d on xlayer Message 0x716f57169a0faa0a4d895b67a95a82447afae19dd3d62121660cb701b1dd8f0d was delivered Checking status of message 0x170ba3d0e049a1f2585308d7114c05726994b394ab0cf2a4c1ef6a13d005e429 on chilizmainnet Message 0x170ba3d0e049a1f2585308d7114c05726994b394ab0cf2a4c1ef6a13d005e429 was delivered Checking status of message 0x42197cf0eb431ca1b289e48f4b2f8eaf9ccf7b0a16c425b3bb52cd7e9ebb3ffa on cyber Message 0x42197cf0eb431ca1b289e48f4b2f8eaf9ccf7b0a16c425b3bb52cd7e9ebb3ffa was delivered Checking status of message 0x215f8dba14a1fa0f4931abacf0ba59a46691c99b805ea350b6e5d165eb4b5f7d on lukso Message 0x215f8dba14a1fa0f4931abacf0ba59a46691c99b805ea350b6e5d165eb4b5f7d was delivered Checking status of message 0x408d4bb711692901b0c61532c614eb442da7b45f230307705143137a7ce4cb52 on merlin Message 0x408d4bb711692901b0c61532c614eb442da7b45f230307705143137a7ce4cb52 was delivered Checking status of message 0x5b896efa1c70cd321f2867cedaf4be1934929c9877a175d0095e61f4f2d2a2d1 on apechain Message 0x5b896efa1c70cd321f2867cedaf4be1934929c9877a175d0095e61f4f2d2a2d1 was delivered Checking status of message 0xb759a9c039dedd54a0ddab0e970ed7725424a1de42e436c07d28bc67daee609e on mint Message 0xb759a9c039dedd54a0ddab0e970ed7725424a1de42e436c07d28bc67daee609e was delivered Checking status of message 0x00e64e88520ee03e5d88cb61ebc2e7d53524dcd84743433716bad70f94e4b897 on arbitrumnova Message 0x00e64e88520ee03e5d88cb61ebc2e7d53524dcd84743433716bad70f94e4b897 was delivered Checking status of message 0xf204eea06d7d7c64c145e5a62a5922fdc254d1ffe9390c6883e74ce57e809df9 on prom Message 0xf204eea06d7d7c64c145e5a62a5922fdc254d1ffe9390c6883e74ce57e809df9 was delivered Checking status of message 0x125a752d042355bfe6182d80b2553bb2f7c74df3c188376c58b5463d6fb9f370 on astar Message 0x125a752d042355bfe6182d80b2553bb2f7c74df3c188376c58b5463d6fb9f370 was delivered Checking status of message 0x5130d380008fc94b04c9b81dca4ed0a445d189e8b6a82b5dc7cc412e56cd4a9b on astarzkevm Message 0x5130d380008fc94b04c9b81dca4ed0a445d189e8b6a82b5dc7cc412e56cd4a9b was delivered Checking status of message 0x13e53bdd365bb582e9d8ae5169f6a7cc6fb673c60824552c1e1cf44f3836dc3a on morph Message 0x13e53bdd365bb582e9d8ae5169f6a7cc6fb673c60824552c1e1cf44f3836dc3a was delivered Checking status of message 0x811bd7834b02ade059deaad3aea6f2bfb652019ee0b9f73ebc558686d58e7a8b on dogechain Message 0x811bd7834b02ade059deaad3aea6f2bfb652019ee0b9f73ebc558686d58e7a8b was delivered Checking status of message 0x61d0d7a5952aff88d962e0f6891f9e87e841982fffd27f595d9c9b8d88ab60aa on superseed Message 0x61d0d7a5952aff88d962e0f6891f9e87e841982fffd27f595d9c9b8d88ab60aa was delivered Checking status of message 0x23f2afc9ba360a2e11b90582904af09f5f56f2963ffede3118e6e10458c83e50 on moonbeam Message 0x23f2afc9ba360a2e11b90582904af09f5f56f2963ffede3118e6e10458c83e50 was delivered Checking status of message 0x698ae1a2ae198c5d96db7162d8373ad638de647f45a16aeb7512d2b0a9a6c6f7 on sanko Message 0x698ae1a2ae198c5d96db7162d8373ad638de647f45a16aeb7512d2b0a9a6c6f7 was delivered Checking status of message 0xe8740981b523da2806556eb39c9c4050b31e9ab80607ab40ae8bfdd10b130e7e on real Message 0xe8740981b523da2806556eb39c9c4050b31e9ab80607ab40ae8bfdd10b130e7e was delivered Checking status of message 0x6b6bd8a4c6a243a3405df69b08a16438a066ad9397c3f9d7dcb07b46de2c4284 on alephzeroevmmainnet Message 0x6b6bd8a4c6a243a3405df69b08a16438a066ad9397c3f9d7dcb07b46de2c4284 was delivered Checking status of message 0x8d5536254e7df327d13cd0ac1d347ea816c693409f05946933f85120d2453488 on everclear Message 0x8d5536254e7df327d13cd0ac1d347ea816c693409f05946933f85120d2453488 was delivered Checking status of message 0x004e26517383e3a90c8df3528e57208ad0cb091207feee14cb5b5ba654ccfa22 on flare Message 0x004e26517383e3a90c8df3528e57208ad0cb091207feee14cb5b5ba654ccfa22 was delivered Checking status of message 0xea0ffd9380f1c8e4340b7fb7479701472213557d1b647b90c782a7541cd261fa on immutablezkevmmainnet Message 0xea0ffd9380f1c8e4340b7fb7479701472213557d1b647b90c782a7541cd261fa was delivered Checking status of message 0xa907f67a44244da93b9d9cb0bbe270df8044a10be90c4798707a0727e4cae659 on coredao Message 0xa907f67a44244da93b9d9cb0bbe270df8044a10be90c4798707a0727e4cae659 was delivered Checking status of message 0x0649707b3ef5a04d4b22a13402fddb6fded89b8616105ae3e1da541ea617f5ca on worldchain Message 0x0649707b3ef5a04d4b22a13402fddb6fded89b8616105ae3e1da541ea617f5ca was delivered Checking status of message 0xd847f86f99db8d59fa8990ac8a41558f49c758ce4c8074bf2c23c37e81a4d08e on xai Message 0xd847f86f99db8d59fa8990ac8a41558f49c758ce4c8074bf2c23c37e81a4d08e was delivered Checking status of message 0xdd9d0252a9f4b8d571834db046311ad2b76385ef33e14a381d8fdcdb57ed0dd3 on unichain Message 0xdd9d0252a9f4b8d571834db046311ad2b76385ef33e14a381d8fdcdb57ed0dd3 was delivered Checking status of message 0xf72776b71109674e3aec514e4ffea1058c4f2b88224f12068cf328a99f99856a on b3 Message 0xf72776b71109674e3aec514e4ffea1058c4f2b88224f12068cf328a99f99856a was delivered Checking status of message 0xfa889d5fc81bded784b0dc97228372a4947e1320fe04fe442286aa0c94b71bbf on vana Message 0xfa889d5fc81bded784b0dc97228372a4947e1320fe04fe442286aa0c94b71bbf was delivered Checking status of message 0xe197b6e1116dbe8f8bbe7676033143f6a1f82fbfd88f39e2adb4142a379a98bd on endurance Message 0xe197b6e1116dbe8f8bbe7676033143f6a1f82fbfd88f39e2adb4142a379a98bd was delivered Checking status of message 0x67546be1d30a2154c150411a7d5e3cd12d277ad4f55e1bd50277af12f4465ce3 on inevm Message 0x67546be1d30a2154c150411a7d5e3cd12d277ad4f55e1bd50277af12f4465ce3 was delivered Checking status of message 0xd3af75c6f2688b0fa8a68fef0c7bea1bd096ca201ff2443b8ca9b6b33516a8e8 on tangle Message 0xd3af75c6f2688b0fa8a68fef0c7bea1bd096ca201ff2443b8ca9b6b33516a8e8 was delivered Checking status of message 0x180897afcd9ea6b7ea7e73cacca55bd223b6357f201e99657cd23e2b781f3916 on boba Message 0x180897afcd9ea6b7ea7e73cacca55bd223b6357f201e99657cd23e2b781f3916 was delivered Checking status of message 0x9663665c6579d4607e569ff7ed0b9df4e3d2cac4ad5790aa9340356ccec4ddbb on orderly Message 0x9663665c6579d4607e569ff7ed0b9df4e3d2cac4ad5790aa9340356ccec4ddbb was delivered Checking status of message 0x71582853e19ffcd85004928ed2f125b10db015cfeb1f180b06d222628ae356c7 on degenchain Message 0x71582853e19ffcd85004928ed2f125b10db015cfeb1f180b06d222628ae356c7 was delivered Checking status of message 0xbd96b2fb0b938831b20e30414533956e21e0b24df5c55971b1bf143915fd24c6 on oortmainnet Message 0xbd96b2fb0b938831b20e30414533956e21e0b24df5c55971b1bf143915fd24c6 was delivered Checking status of message 0xa0b1a56f4c47c939d47d7c64401b736f0a5797a7e2cdb83e8cb360c61d8b1ec9 on fantom Message 0xa0b1a56f4c47c939d47d7c64401b736f0a5797a7e2cdb83e8cb360c61d8b1ec9 was delivered Checking status of message 0xae2ee30ced87d19f5761e80c564ffff4f6ba98ef87bc0a16c69e5dfd4aafd74b on mantle Message 0xae2ee30ced87d19f5761e80c564ffff4f6ba98ef87bc0a16c69e5dfd4aafd74b was delivered Checking status of message 0x43c48ee511ee24019bb938ecb5ac9159d4b973b52bffc3c9765894f5d118b022 on polynomialfi Message 0x43c48ee511ee24019bb938ecb5ac9159d4b973b52bffc3c9765894f5d118b022 was delivered Checking status of message 0xee54dde1a75c8219f307bbce84fb3eb16fdcc5b05b3609b5adf2b8a32d022232 on bob Message 0xee54dde1a75c8219f307bbce84fb3eb16fdcc5b05b3609b5adf2b8a32d022232 was delivered Checking status of message 0x3ccc0fd020089e3fcb51e5ee057aee6666bd06096ae9c04cff889f5cfbf4b62b on fusemainnet Message 0x3ccc0fd020089e3fcb51e5ee057aee6666bd06096ae9c04cff889f5cfbf4b62b was delivered Checking status of message 0xeb16ee6f398d3a2c4a60edb8a797b5df56b7f8b1b43f336bded666536c038508 on kaia Message 0xeb16ee6f398d3a2c4a60edb8a797b5df56b7f8b1b43f336bded666536c038508 was delivered Checking status of message 0xcf23f9de2c9db41136fb9c2fdfd3f9c47378a7e10296cdc1b2d02440effa1f20 on metal Message 0xcf23f9de2c9db41136fb9c2fdfd3f9c47378a7e10296cdc1b2d02440effa1f20 was delivered Checking status of message 0x172604a47d0b6de9bc40c3ad9eff75294711533646836e12d4c4238be8c07faf on metis Message 0x172604a47d0b6de9bc40c3ad9eff75294711533646836e12d4c4238be8c07faf was delivered Checking status of message 0xc9cf61e11586a8578f2cfc637919954f24bdf011787b751ca9dd107a11a1b5af on rarichain Message 0xc9cf61e11586a8578f2cfc637919954f24bdf011787b751ca9dd107a11a1b5af was delivered Checking status of message 0x01cf143ee8da8d82d9c72f152e25658665d0d2f52a94cf2ebab0d433f9432a69 on snaxchain Message 0x01cf143ee8da8d82d9c72f152e25658665d0d2f52a94cf2ebab0d433f9432a69 was delivered Checking status of message 0x1574e00fffb8737c5a3ab3dd2efbdaec13dfaba98be3cbd9c49fdbb1c34b0275 on polygon Message 0x1574e00fffb8737c5a3ab3dd2efbdaec13dfaba98be3cbd9c49fdbb1c34b0275 was delivered Checking status of message 0x7e2ca4f70b77a70333bc736ba75bc0e70482aacc3d5c1022bf4c74352e14a849 on bsquared Message 0x7e2ca4f70b77a70333bc736ba75bc0e70482aacc3d5c1022bf4c74352e14a849 was delivered Checking status of message 0x84b20bbbdb401d3e42f99b8bb18a78e07812906a2992ec16baa3dc1779ce1dc0 on scroll Message 0x84b20bbbdb401d3e42f99b8bb18a78e07812906a2992ec16baa3dc1779ce1dc0 was delivered Checking status of message 0x082ef17aee560b3497cd61621b7233b919fda83dd729b3c99c97423485891317 on redstone Message 0x082ef17aee560b3497cd61621b7233b919fda83dd729b3c99c97423485891317 was delivered Checking status of message 0xb81a893a09ac7432f678d19d6072da17094a7530ecbeb99d132ce535ee92583b on proofofplay Message 0xb81a893a09ac7432f678d19d6072da17094a7530ecbeb99d132ce535ee92583b was delivered Checking status of message 0x7e2013853d26a64346de2dfe7cfa324e7f497db3865453cddb9c511b2398a9b9 on duckchain Message 0x7e2013853d26a64346de2dfe7cfa324e7f497db3865453cddb9c511b2398a9b9 was delivered Checking status of message 0xe355415b1d57853ac7479d9db40c2c060e80834cb5360e6ff7868bd2d455875b on polygonzkevm Message 0xe355415b1d57853ac7479d9db40c2c060e80834cb5360e6ff7868bd2d455875b was delivered Checking status of message 0xb0391835a971c5936f8407b58bea5cef1f4dd761f2cf875b06107c8cff7fce75 on ancient8 Message 0xb0391835a971c5936f8407b58bea5cef1f4dd761f2cf875b06107c8cff7fce75 was delivered Checking status of message 0xf8a9f9e6468d609711e2596d905f8e3c642f912de06efe79312e88b0d7b2957e on swell Message 0xf8a9f9e6468d609711e2596d905f8e3c642f912de06efe79312e88b0d7b2957e was delivered Checking status of message 0x0fd455f8b27982e6d4cb0f6e082baa8ee42d461073335ab0cefe6c65f9e0c018 on avalanche Message 0x0fd455f8b27982e6d4cb0f6e082baa8ee42d461073335ab0cefe6c65f9e0c018 was delivered Checking status of message 0xaefe33e5517790e3644a28c841cd45ea352e2afb34753fb5268a4778ca52ce66 on gnosis Message 0xaefe33e5517790e3644a28c841cd45ea352e2afb34753fb5268a4778ca52ce66 was delivered Checking status of message 0xbbb2293291a684292e3c6bdaa4bfc9ffd38c7e2b5fcc6edc7ec470f6331f7931 on celo Message 0xbbb2293291a684292e3c6bdaa4bfc9ffd38c7e2b5fcc6edc7ec470f6331f7931 was delivered Checking status of message 0x50aa9ebcbf4ce4ed8d0e21580bf2ae56cf9c2983e0c373463261dfca065e9606 on zoramainnet Message 0x50aa9ebcbf4ce4ed8d0e21580bf2ae56cf9c2983e0c373463261dfca065e9606 was delivered Checking status of message 0xe7d2bd88c7ee856bda482e8db56c49bc35b2212bbf8b74a108e6e4ec146f00a8 on zetachain Message 0xe7d2bd88c7ee856bda482e8db56c49bc35b2212bbf8b74a108e6e4ec146f00a8 was delivered ``` --------- Signed-off-by: pbio <10051819+paulbalaji@users.noreply.github.com> Co-authored-by: pbio <10051819+paulbalaji@users.noreply.github.com> --- .changeset/lovely-planes-end.md | 6 ++ typescript/cli/src/commands/send.ts | 19 +++-- typescript/cli/src/commands/status.ts | 3 +- typescript/cli/src/commands/warp.ts | 4 +- typescript/cli/src/status/message.ts | 77 +++++++-------------- typescript/sdk/src/core/HyperlaneCore.ts | 10 ++- typescript/sdk/src/core/HyperlaneRelayer.ts | 32 +++++++++ 7 files changed, 89 insertions(+), 62 deletions(-) create mode 100644 .changeset/lovely-planes-end.md diff --git a/.changeset/lovely-planes-end.md b/.changeset/lovely-planes-end.md new file mode 100644 index 0000000000..81bd6a8598 --- /dev/null +++ b/.changeset/lovely-planes-end.md @@ -0,0 +1,6 @@ +--- +'@hyperlane-xyz/cli': minor +'@hyperlane-xyz/sdk': minor +--- + +Allow self-relaying of all messages if there are multiple in a given dispatch transaction. diff --git a/typescript/cli/src/commands/send.ts b/typescript/cli/src/commands/send.ts index 1167b3b559..7879523a19 100644 --- a/typescript/cli/src/commands/send.ts +++ b/typescript/cli/src/commands/send.ts @@ -17,17 +17,13 @@ export const sendCommand: CommandModule = { }; /** - * Message command + * Base options for all message/warp send/status commands */ export const messageOptions: { [k: string]: Options } = { origin: { type: 'string', description: 'Origin chain to send message from', }, - destination: { - type: 'string', - description: 'Destination chain to send message to', - }, timeout: { type: 'number', description: 'Timeout in seconds', @@ -45,6 +41,17 @@ export const messageOptions: { [k: string]: Options } = { }, }; +/** + * Options for message/warp send command with destination chain specified + */ +export const messageSendOptions: { [k: string]: Options } = { + ...messageOptions, + destination: { + type: 'string', + description: 'Destination chain to send message to', + }, +}; + export interface MessageOptionsArgTypes { origin?: string; destination?: string; @@ -59,7 +66,7 @@ const messageCommand: CommandModuleWithWriteContext< command: 'message', describe: 'Send a test message to a remote chain', builder: { - ...messageOptions, + ...messageSendOptions, body: { type: 'string', description: 'Optional Message body', diff --git a/typescript/cli/src/commands/status.ts b/typescript/cli/src/commands/status.ts index 2b4c204880..0875b64675 100644 --- a/typescript/cli/src/commands/status.ts +++ b/typescript/cli/src/commands/status.ts @@ -19,12 +19,11 @@ export const statusCommand: CommandModuleWithWriteContext< description: 'Dispatch transaction hash', }, }, - handler: async ({ context, origin, destination, id, relay, dispatchTx }) => { + handler: async ({ context, origin, id, relay, dispatchTx }) => { await checkMessageStatus({ context, dispatchTx, messageId: id, - destination, origin, selfRelay: relay, }); diff --git a/typescript/cli/src/commands/warp.ts b/typescript/cli/src/commands/warp.ts index 3cd99fe6a0..5d09047617 100644 --- a/typescript/cli/src/commands/warp.ts +++ b/typescript/cli/src/commands/warp.ts @@ -40,7 +40,7 @@ import { warpCoreConfigCommandOption, warpDeploymentConfigCommandOption, } from './options.js'; -import { MessageOptionsArgTypes, messageOptions } from './send.js'; +import { MessageOptionsArgTypes, messageSendOptions } from './send.js'; /** * Parent command @@ -245,7 +245,7 @@ const send: CommandModuleWithWriteContext< command: 'send', describe: 'Send a test token transfer on a warp route', builder: { - ...messageOptions, + ...messageSendOptions, symbol: { ...symbolCommandOption, demandOption: false, diff --git a/typescript/cli/src/status/message.ts b/typescript/cli/src/status/message.ts index 5e22aec7b0..b5051b4c92 100644 --- a/typescript/cli/src/status/message.ts +++ b/typescript/cli/src/status/message.ts @@ -2,17 +2,15 @@ import type { TransactionReceipt } from '@ethersproject/providers'; import { input } from '@inquirer/prompts'; import { ChainName, HyperlaneCore, HyperlaneRelayer } from '@hyperlane-xyz/sdk'; -import { assert, parseWarpRouteMessage } from '@hyperlane-xyz/utils'; import { WriteCommandContext } from '../context/types.js'; -import { log, logBlue, logGray, logGreen, logRed } from '../logger.js'; +import { log, logBlue, logGreen, logRed } from '../logger.js'; import { runSingleChainSelectionStep } from '../utils/chains.js'; import { stubMerkleTreeConfig } from '../utils/relay.js'; export async function checkMessageStatus({ context, messageId, - destination, origin, selfRelay, dispatchTx, @@ -20,7 +18,6 @@ export async function checkMessageStatus({ context: WriteCommandContext; dispatchTx?: string; messageId?: string; - destination?: ChainName; origin?: ChainName; selfRelay?: boolean; }) { @@ -31,15 +28,9 @@ export async function checkMessageStatus({ ); } - if (!messageId) { - messageId = await input({ - message: 'Please specify the message id', - }); - } - - const chainAddresses = await context.registry.getAddresses(); + const coreAddresses = await context.registry.getAddresses(); const core = HyperlaneCore.fromAddressesMap( - chainAddresses, + coreAddresses, context.multiProvider, ); @@ -50,6 +41,9 @@ export async function checkMessageStatus({ .getProvider(origin) .getTransactionReceipt(dispatchTx); } else { + messageId ??= await input({ + message: 'Please specify the message id', + }); try { dispatchedReceipt = await core.getDispatchTx(origin, messageId); } catch { @@ -64,48 +58,29 @@ export async function checkMessageStatus({ } } - const messages = core.getDispatchedMessages(dispatchedReceipt!); - const match = messages.find((m) => m.id === messageId); - assert(match, `Message ${messageId} not found in dispatch tx ${dispatchTx}`); - const message = match; - try { - const { amount, recipient } = parseWarpRouteMessage(message.parsed.body); - logGray(`Warping ${amount} to ${recipient}`); - // eslint-disable-next-line no-empty - } catch {} - - let deliveredTx: TransactionReceipt; - - log(`Checking status of message ${messageId} on ${destination}`); - const delivered = await core.isDelivered(message); - if (delivered) { - logGreen(`Message ${messageId} was delivered`); - deliveredTx = await core.getProcessedReceipt(message); - } else { - logBlue(`Message ${messageId} was not yet delivered`); + const messages = core.getDispatchedMessages(dispatchedReceipt); - if (!selfRelay) { - return; + const undelivered = []; + for (const message of messages) { + log( + `Checking status of message ${message.id} on ${message.parsed.destinationChain}`, + ); + const delivered = await core.isDelivered(message); + if (delivered) { + logGreen(`Message ${message.id} was delivered`); + } else { + logBlue(`Message ${message.id} was not yet delivered`); + undelivered.push(message); } + } + if (selfRelay) { const relayer = new HyperlaneRelayer({ core }); - - const hookAddress = await core.getSenderHookAddress(message); - const merkleAddress = chainAddresses[origin].merkleTreeHook; - stubMerkleTreeConfig(relayer, origin, hookAddress, merkleAddress); - - deliveredTx = await relayer.relayMessage( - dispatchedReceipt, - undefined, - message, - ); + for (const message of undelivered) { + const hookAddress = await core.getSenderHookAddress(message); + const merkleAddress = coreAddresses[origin].merkleTreeHook; + stubMerkleTreeConfig(relayer, origin, hookAddress, merkleAddress); + } + await relayer.relayAll(dispatchedReceipt, undelivered); } - - logGreen( - `Message ${messageId} delivered in ${ - context.multiProvider.tryGetExplorerTxUrl(message.parsed.destination, { - hash: deliveredTx.transactionHash, - }) ?? deliveredTx.transactionHash - }`, - ); } diff --git a/typescript/sdk/src/core/HyperlaneCore.ts b/typescript/sdk/src/core/HyperlaneCore.ts index a3130ecd1a..10d4415ee7 100644 --- a/typescript/sdk/src/core/HyperlaneCore.ts +++ b/typescript/sdk/src/core/HyperlaneCore.ts @@ -14,6 +14,7 @@ import { ProtocolType, addBufferToGasLimit, addressToBytes32, + assert, bytes32ToAddress, isZeroishAddress, messageId, @@ -313,7 +314,7 @@ export class HyperlaneCore extends HyperlaneApp { message: DispatchedMessage, ): Promise { const destinationChain = this.getDestination(message); - const mailbox = this.contractsMap[destinationChain].mailbox; + const mailbox = this.getContracts(destinationChain).mailbox; const processedBlock = await mailbox.processedAt(message.id); const events = await mailbox.queryFilter( @@ -321,6 +322,11 @@ export class HyperlaneCore extends HyperlaneApp { processedBlock, processedBlock, ); + + assert( + events.length === 1, + `Expected exactly one process event, got ${events.length}`, + ); const processedEvent = events[0]; return processedEvent.getTransactionReceipt(); } @@ -428,6 +434,8 @@ export class HyperlaneCore extends HyperlaneApp { if (matching.length === 0) { throw new Error(`No dispatch event found for message ${messageId}`); } + + assert(matching.length === 1, 'Multiple dispatch events found'); const event = matching[0]; // only 1 event per message ID return event.getTransactionReceipt(); } diff --git a/typescript/sdk/src/core/HyperlaneRelayer.ts b/typescript/sdk/src/core/HyperlaneRelayer.ts index 9b82f90cbb..c36a37aef3 100644 --- a/typescript/sdk/src/core/HyperlaneRelayer.ts +++ b/typescript/sdk/src/core/HyperlaneRelayer.ts @@ -207,6 +207,38 @@ export class HyperlaneRelayer { return this.getIsmConfig(destinationChain, ism, message); } + async relayAll( + dispatchTx: providers.TransactionReceipt, + messages = HyperlaneCore.getDispatchedMessages(dispatchTx), + ): Promise> { + const destinationMap: ChainMap = {}; + messages.forEach((message) => { + destinationMap[message.parsed.destination] ??= []; + destinationMap[message.parsed.destination].push(message); + }); + + // parallelize relaying to different destinations + return promiseObjAll( + objMap(destinationMap, async (_destination, messages) => { + const receipts: ethers.ContractReceipt[] = []; + // serially relay messages to the same destination + for (const message of messages) { + try { + const receipt = await this.relayMessage( + dispatchTx, + undefined, + message, + ); + receipts.push(receipt); + } catch (e) { + this.logger.error(`Failed to relay message ${message.id}, ${e}`); + } + } + return receipts; + }), + ); + } + async relayMessage( dispatchTx: providers.TransactionReceipt, messageIndex = 0, From 1e187aecadd89fbc9058b651f9bb9dde4ad600c9 Mon Sep 17 00:00:00 2001 From: Trevor Porter Date: Thu, 19 Dec 2024 11:12:11 +0000 Subject: [PATCH 30/32] chore: looser gas payment enforcement policy on Treasure (#5048) ### Description A temporary measure, seems like Treasure likes to overestimate gas limits. One offending message has been flagged as having insufficient payments, see https://discord.com/channels/935678348330434570/1264883412188135555/1319115367167033399 for details ### Drive-by changes ### Related issues ### Backward compatibility ### Testing --- typescript/infra/config/environments/mainnet3/agent.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/typescript/infra/config/environments/mainnet3/agent.ts b/typescript/infra/config/environments/mainnet3/agent.ts index 29366ebcf0..416fe1d008 100644 --- a/typescript/infra/config/environments/mainnet3/agent.ts +++ b/typescript/infra/config/environments/mainnet3/agent.ts @@ -412,6 +412,8 @@ const gasPaymentEnforcement: GasPaymentEnforcement[] = [ matchingList: [ // Temporary workaround due to funky Mantle gas amounts. { destinationDomain: getDomainId('mantle') }, + // Temporary workaround for some high gas amount estimates on Treasure + ...warpRouteMatchingList(WarpRouteIds.ArbitrumTreasureMAGIC), ], }, { From 0e83758f4bdf121dbb69c87762a3564ba46722c2 Mon Sep 17 00:00:00 2001 From: xeno097 Date: Thu, 19 Dec 2024 10:15:03 -0400 Subject: [PATCH 31/32] feat(infra): usdc appchain base + ubtc boba (#5028) ### Description uBTC warp route extension + USDC route that connects AppChain to Base ### Drive-by changes - No ### Backward compatibility - YES ### Testing Manual --------- Co-authored-by: nambrot --- .changeset/neat-apples-marry.md | 5 ++ .registryrc | 2 +- .../getAppchainBaseUSDCWarpConfig.ts | 45 ++++++++++++++++ .../getBobaBsquaredSwellUBTCWarpConfig.ts | 54 +++++++++++++++++++ .../environments/mainnet3/warp/warpIds.ts | 2 + typescript/infra/config/warp.ts | 10 +++- typescript/infra/src/config/warp.ts | 3 ++ 7 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 .changeset/neat-apples-marry.md create mode 100644 typescript/infra/config/environments/mainnet3/warp/configGetters/getAppchainBaseUSDCWarpConfig.ts create mode 100644 typescript/infra/config/environments/mainnet3/warp/configGetters/getBobaBsquaredSwellUBTCWarpConfig.ts diff --git a/.changeset/neat-apples-marry.md b/.changeset/neat-apples-marry.md new file mode 100644 index 0000000000..514ac94ce8 --- /dev/null +++ b/.changeset/neat-apples-marry.md @@ -0,0 +1,5 @@ +--- +'@hyperlane-xyz/infra': minor +--- + +added ubtc route extension config + usdc from appchain to base diff --git a/.registryrc b/.registryrc index 088ae6645a..db55765651 100644 --- a/.registryrc +++ b/.registryrc @@ -1 +1 @@ -d3e1e71965d7d06a8f8761c8255e718699c78f11 +32b4ab3b3df2bedd0d905c6745bcf1c673a60a01 diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getAppchainBaseUSDCWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getAppchainBaseUSDCWarpConfig.ts new file mode 100644 index 0000000000..fce2c5c6ae --- /dev/null +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getAppchainBaseUSDCWarpConfig.ts @@ -0,0 +1,45 @@ +import { ethers } from 'ethers'; + +import { + ChainMap, + HypTokenRouterConfig, + IsmConfig, + TokenType, +} from '@hyperlane-xyz/sdk'; +import { Address } from '@hyperlane-xyz/utils'; + +import { + RouterConfigWithoutOwner, + tokens, +} from '../../../../../src/config/warp.js'; + +const safeOwners: ChainMap
= { + appchain: '0xe3436b3335fa6d4f1b58153079FB360c6Aa83Fd9', + base: '0xE3b50a565fbcdb6CC67B30bEB112f9e7FC855359', +}; + +export const getAppChainBaseUSDCWarpConfig = async ( + routerConfig: ChainMap, +): Promise> => { + const ISM_CONFIG: IsmConfig = ethers.constants.AddressZero; // Use the default ISM + + const appchain: HypTokenRouterConfig = { + mailbox: routerConfig.appchain.mailbox, + owner: safeOwners.appchain, + type: TokenType.synthetic, + interchainSecurityModule: ISM_CONFIG, + }; + + const base: HypTokenRouterConfig = { + mailbox: routerConfig.base.mailbox, + owner: safeOwners.base, + type: TokenType.collateral, + token: tokens.base.USDC, + interchainSecurityModule: ISM_CONFIG, + }; + + return { + appchain, + base, + }; +}; diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getBobaBsquaredSwellUBTCWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getBobaBsquaredSwellUBTCWarpConfig.ts new file mode 100644 index 0000000000..fcd48c686c --- /dev/null +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getBobaBsquaredSwellUBTCWarpConfig.ts @@ -0,0 +1,54 @@ +import { ethers } from 'ethers'; + +import { + ChainMap, + HypTokenRouterConfig, + IsmConfig, + TokenType, +} from '@hyperlane-xyz/sdk'; +import { Address } from '@hyperlane-xyz/utils'; + +import { + RouterConfigWithoutOwner, + tokens, +} from '../../../../../src/config/warp.js'; + +const safeOwners: ChainMap
= { + bsquared: '0x7A363efD42305BeDBA307d25351F8ea157b69A1A', + swell: '0xC11e22A31787394950B31e2DEb1d2b5546689B65', + boba: '0x207FfFa7325fC5d0362aB01605D84B268b61888f', +}; + +export const getBobaBsquaredSwellUBTCWarpConfig = async ( + routerConfig: ChainMap, +): Promise> => { + const ISM_CONFIG: IsmConfig = ethers.constants.AddressZero; // Use the default ISM + + const boba: HypTokenRouterConfig = { + mailbox: routerConfig.boba.mailbox, + owner: safeOwners.boba, + type: TokenType.synthetic, + interchainSecurityModule: ISM_CONFIG, + }; + + const bsquared: HypTokenRouterConfig = { + mailbox: routerConfig.bsquared.mailbox, + owner: safeOwners.bsquared, + type: TokenType.collateral, + token: tokens.bsquared.uBTC, + interchainSecurityModule: ISM_CONFIG, + }; + + const swell: HypTokenRouterConfig = { + mailbox: routerConfig.swell.mailbox, + owner: safeOwners.swell, + type: TokenType.synthetic, + interchainSecurityModule: ISM_CONFIG, + }; + + return { + boba, + bsquared, + swell, + }; +}; diff --git a/typescript/infra/config/environments/mainnet3/warp/warpIds.ts b/typescript/infra/config/environments/mainnet3/warp/warpIds.ts index 2dc43bbae2..d9bf87760d 100644 --- a/typescript/infra/config/environments/mainnet3/warp/warpIds.ts +++ b/typescript/infra/config/environments/mainnet3/warp/warpIds.ts @@ -36,4 +36,6 @@ export enum WarpRouteIds { ArbitrumEthereumMantleModePolygonScrollZeroNetworkUSDT = 'USDT/arbitrum-ethereum-mantle-mode-polygon-scroll-zeronetwork', ArbitrumBaseEthereumLiskOptimismPolygonZeroNetworkUSDC = 'USDC/arbitrum-base-ethereum-lisk-optimism-polygon-zeronetwork', ArbitrumBaseBlastBscEthereumGnosisLiskMantleModeOptimismPolygonScrollZeroNetworkZoraMainnet = 'ETH/arbitrum-base-blast-bsc-ethereum-gnosis-lisk-mantle-mode-optimism-polygon-scroll-zeronetwork-zoramainnet', + AppchainBaseUSDC = 'USDC/appchain-base', + BobaBsquaredSwellUBTC = 'UBTC/boba-bsquared-swell', } diff --git a/typescript/infra/config/warp.ts b/typescript/infra/config/warp.ts index 9f01e26466..c68e2221d9 100644 --- a/typescript/infra/config/warp.ts +++ b/typescript/infra/config/warp.ts @@ -13,6 +13,7 @@ import { import { RouterConfigWithoutOwner } from '../src/config/warp.js'; import { getAncient8EthereumUSDCWarpConfig } from './environments/mainnet3/warp/configGetters/getAncient8EthereumUSDCWarpConfig.js'; +import { getAppChainBaseUSDCWarpConfig } from './environments/mainnet3/warp/configGetters/getAppchainBaseUSDCWarpConfig.js'; import { getArbitrumBaseBlastBscEthereumGnosisMantleModeOptimismPolygonScrollZeroNetworkZoraMainnetETHWarpConfig } from './environments/mainnet3/warp/configGetters/getArbitrumBaseBlastBscEthereumGnosisMantleModeOptimismPolygonScrollZeroNetworkZoraMainnetETHWarpConfig.js'; import { getArbitrumBaseEthereumOptimismPolygonZeroNetworkUSDC } from './environments/mainnet3/warp/configGetters/getArbitrumBaseEthereumOptimismPolygonZeroNetworkUSDCWarpConfig.js'; import { getArbitrumEthereumMantleModePolygonScrollZeroNetworkUSDTWarpConfig } from './environments/mainnet3/warp/configGetters/getArbitrumBscEthereumMantleModePolygonScrollZeronetworkUSDTWarpConfig.js'; @@ -20,6 +21,7 @@ import { getArbitrumEthereumZircuitAmphrETHWarpConfig } from './environments/mai import { getArbitrumNeutronEclipWarpConfig } from './environments/mainnet3/warp/configGetters/getArbitrumNeutronEclipWarpConfig.js'; import { getArbitrumNeutronTiaWarpConfig } from './environments/mainnet3/warp/configGetters/getArbitrumNeutronTiaWarpConfig.js'; import { getBaseZeroNetworkCBBTCWarpConfig } from './environments/mainnet3/warp/configGetters/getBaseZeroNetworkCBBTCWarpConfig.js'; +import { getBobaBsquaredSwellUBTCWarpConfig } from './environments/mainnet3/warp/configGetters/getBobaBsquaredSwellUBTCWarpConfig.js'; import { getEclipseEthereumApxEthWarpConfig } from './environments/mainnet3/warp/configGetters/getEclipseEthereumApxETHWarpConfig.js'; import { getEclipseEthereumSolanaUSDTWarpConfig } from './environments/mainnet3/warp/configGetters/getEclipseEthereumSolanaUSDTWarpConfig.js'; import { getEclipseEthereumWBTCWarpConfig } from './environments/mainnet3/warp/configGetters/getEclipseEthereumWBTCWarpConfig.js'; @@ -79,6 +81,8 @@ export const warpConfigGetterMap: Record = { getArbitrumBaseBlastBscEthereumGnosisMantleModeOptimismPolygonScrollZeroNetworkZoraMainnetETHWarpConfig, [WarpRouteIds.EclipseStrideTIA]: getEclipseStrideTiaWarpConfig, [WarpRouteIds.EclipseStrideSTTIA]: getEclipseStrideStTiaWarpConfig, + [WarpRouteIds.AppchainBaseUSDC]: getAppChainBaseUSDCWarpConfig, + [WarpRouteIds.BobaBsquaredSwellUBTC]: getBobaBsquaredSwellUBTCWarpConfig, [WarpRouteIds.EthereumZircuitRe7LRT]: getEthereumZircuitRe7LRTWarpConfig, }; @@ -93,7 +97,11 @@ export async function getWarpConfig( ); // Strip the owners from the router config const routerConfigWithoutOwner = objMap(routerConfig, (_chain, config) => { - const { owner, ownerOverrides, ...configWithoutOwner } = config; + const { + owner: _owner, + ownerOverrides: _ownerOverrides, + ...configWithoutOwner + } = config; return configWithoutOwner; }); // Isolate the owners from the router config diff --git a/typescript/infra/src/config/warp.ts b/typescript/infra/src/config/warp.ts index f07a5e8fb6..2ceb1c8cb1 100644 --- a/typescript/infra/src/config/warp.ts +++ b/typescript/infra/src/config/warp.ts @@ -21,6 +21,9 @@ export const tokens: ChainMap> = { cbBTC: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf', USDC: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', }, + bsquared: { + uBTC: '0x796e4D53067FF374B89b2Ac101ce0c1f72ccaAc2', + }, arbitrum: { USDT: '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', USDC: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', From a51b50c3c5fe8f2659ae9180539a922f578189f8 Mon Sep 17 00:00:00 2001 From: Mohammed Hussan Date: Thu, 19 Dec 2024 17:46:46 +0000 Subject: [PATCH 32/32] feat(funding): Update desiredBalancePerChain for mainnet chains (#5051) ### Description - update desiredBalancePerChain inline with adjusted high urgency alerts that account for at least 2 days worth of transactions at current usage --- typescript/infra/config/environments/mainnet3/funding.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/funding.ts b/typescript/infra/config/environments/mainnet3/funding.ts index 81d1251723..e16bb07c90 100644 --- a/typescript/infra/config/environments/mainnet3/funding.ts +++ b/typescript/infra/config/environments/mainnet3/funding.ts @@ -46,7 +46,7 @@ export const keyFunderConfig: KeyFunderConfig< boba: '0.05', bsc: '5', bsquared: '0.002', - celo: '3', + celo: '4', cheesechain: '50', chilizmainnet: '200', conflux: '100', @@ -97,7 +97,7 @@ export const keyFunderConfig: KeyFunderConfig< polygon: '40', polygonzkevm: '0.5', polynomialfi: '0.05', - prom: '5', + prom: '18', proofofplay: '0.05', rarichain: '0.05', real: '0.1', @@ -119,7 +119,7 @@ export const keyFunderConfig: KeyFunderConfig< taiko: '0.2', tangle: '2', telos: '100', - treasure: '800', + treasure: '900', unichain: '0.05', // temporarily low until we're able to fund more vana: '0.001',