validator deploy tweaks (#2784)

### Description

- fixes to deploy testnet4 for agents

### Drive-by changes

- truncating labels to length 63
- adding `.relayer` to `agentConfig.contextChainNames`

### Related issues

- for https://github.com/hyperlane-xyz/issues/issues/574

### Backward compatibility

Yes

### Testing

Manual

---------

Co-authored-by: Trevor Porter <trkporter@ucdavis.edu>
Co-authored-by: Nam Chu Hoai <nambrot@googlemail.com>
pull/2817/head
Kunal Arora 1 year ago committed by GitHub
parent a9e8b17fce
commit 9168cca6d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      rust/README.md
  2. 2
      rust/agents/relayer/src/msg/metadata/base.rs
  3. 4
      rust/agents/relayer/src/msg/metadata/multisig/legacy_multisig.rs
  4. 15
      rust/agents/relayer/src/msg/metadata/multisig/merkle_root_multisig.rs
  5. 17
      rust/agents/relayer/src/msg/metadata/multisig/message_id_multisig.rs
  6. 24
      rust/agents/scraper/migration/src/m20230309_000001_create_table_domain.rs
  7. 2
      rust/agents/scraper/src/db/block_cursor.rs
  8. 29
      rust/agents/validator/src/submit.rs
  9. 31
      rust/agents/validator/src/validator.rs
  10. 2
      rust/chains/hyperlane-ethereum/src/interchain_gas.rs
  11. 2
      rust/config/testnet4_config.json
  12. 4
      rust/helm/agent-common/templates/_helpers.tpl
  13. 2
      rust/helm/hyperlane-agent/templates/external-secret.yaml
  14. 3
      rust/helm/hyperlane-agent/templates/relayer-external-secret.yaml
  15. 4
      rust/hyperlane-base/src/settings/mod.rs
  16. 2
      rust/hyperlane-core/src/utils.rs
  17. 7
      solidity/package.json
  18. 12
      typescript/helloworld/contracts/HelloWorld.sol
  19. 9
      typescript/helloworld/package.json
  20. 3
      typescript/helloworld/src/app/app.ts
  21. 10
      typescript/helloworld/src/multiProtocolApp/evmAdapter.ts
  22. 23
      typescript/helloworld/src/test/helloworld.test.ts
  23. 2
      typescript/infra/config/environments/mainnet2/funding.ts
  24. 4
      typescript/infra/config/environments/mainnet2/helloworld.ts
  25. 10
      typescript/infra/config/environments/testnet4/agent.ts
  26. 4
      typescript/infra/config/environments/testnet4/chains.ts
  27. 2
      typescript/infra/config/environments/testnet4/funding.ts
  28. 4
      typescript/infra/config/environments/testnet4/helloworld.ts
  29. 41
      typescript/infra/config/environments/testnet4/helloworld/hyperlane/addresses.json
  30. 312
      typescript/infra/config/environments/testnet4/helloworld/hyperlane/verification.json
  31. 48
      typescript/infra/config/environments/testnet4/testrecipient/addresses.json
  32. 150
      typescript/infra/config/environments/testnet4/testrecipient/verification.json
  33. 144
      typescript/infra/config/environments/testnet4/validators.ts
  34. 6
      typescript/infra/package.json
  35. 8
      typescript/infra/scripts/agents/utils.ts
  36. 7
      typescript/infra/scripts/announce-validators.ts
  37. 1
      typescript/infra/scripts/deploy.ts
  38. 24
      typescript/infra/scripts/funding/fund-keys-from-deployer.ts
  39. 40
      typescript/infra/scripts/helloworld/kathy.ts
  40. 2
      typescript/infra/scripts/utils.ts
  41. 2
      typescript/infra/src/helloworld/kathy.ts
  42. 9
      typescript/sdk/package.json
  43. 12
      typescript/sdk/src/consts/chainMetadata.ts
  44. 2
      typescript/sdk/src/consts/environments/testnet.json
  45. 5
      typescript/utils/package.json
  46. 24
      yarn.lock

@ -63,9 +63,9 @@ kubectl cp testnet3/fuji-hyperlane-agent-validator-0:/usr/share/hyperlane /tmp/f
Configure additional env variables appropriately:
```bash
HYP_BASE_DB=/tmp/fuji-validator-db
HYP_DB=/tmp/fuji-validator-db
CONFIG_FILES=./config/testnet_config.json
HYP_BASE_TRACING_FMT=pretty
HYP_TRACING_FMT=pretty
DATABASE_URL=<READ_REPLICA_POSTGRES_URL> # for scraper
```

@ -138,7 +138,7 @@ impl BaseMetadataBuilder {
Ok(proof)
}
pub async fn highest_known_nonce(&self) -> Option<u32> {
pub async fn highest_known_leaf_index(&self) -> Option<u32> {
self.origin_prover_sync.read().await.count().checked_sub(1)
}

@ -37,7 +37,7 @@ impl MultisigIsmMetadataBuilder for LegacyMultisigMetadataBuilder {
checkpoint_syncer: &MultisigCheckpointSyncer,
) -> Result<Option<MultisigMetadata>> {
const CTX: &str = "When fetching LegacyMultisig metadata";
unwrap_or_none_result!(highest_nonce, self.highest_known_nonce().await);
unwrap_or_none_result!(highest_leaf_index, self.highest_known_leaf_index().await);
unwrap_or_none_result!(
quorum_checkpoint,
checkpoint_syncer
@ -45,7 +45,7 @@ impl MultisigIsmMetadataBuilder for LegacyMultisigMetadataBuilder {
validators,
threshold as usize,
message.nonce,
highest_nonce,
highest_leaf_index,
)
.await
.context(CTX)?

@ -7,6 +7,7 @@ use derive_new::new;
use eyre::{Context, Result};
use hyperlane_base::MultisigCheckpointSyncer;
use hyperlane_core::{unwrap_or_none_result, HyperlaneMessage, H256};
use tracing::debug;
use crate::msg::metadata::BaseMetadataBuilder;
@ -35,7 +36,11 @@ impl MultisigIsmMetadataBuilder for MerkleRootMultisigMetadataBuilder {
checkpoint_syncer: &MultisigCheckpointSyncer,
) -> Result<Option<MultisigMetadata>> {
const CTX: &str = "When fetching MerkleRootMultisig metadata";
unwrap_or_none_result!(highest_nonce, self.highest_known_nonce().await);
unwrap_or_none_result!(
highest_leaf_index,
self.highest_known_leaf_index().await,
debug!("Couldn't get highest known leaf index")
);
unwrap_or_none_result!(
quorum_checkpoint,
checkpoint_syncer
@ -43,10 +48,11 @@ impl MultisigIsmMetadataBuilder for MerkleRootMultisigMetadataBuilder {
validators,
threshold as usize,
message.nonce,
highest_nonce
highest_leaf_index
)
.await
.context(CTX)?
.context(CTX)?,
debug!("Couldn't get checkpoint in range")
);
unwrap_or_none_result!(
proof,
@ -58,7 +64,8 @@ impl MultisigIsmMetadataBuilder for MerkleRootMultisigMetadataBuilder {
merkle_leaf_id,
self.get_merkle_leaf_id_by_message_id(message.id())
.await
.context(CTX)?
.context(CTX)?,
debug!("Couldn't get merkle proof")
);
Ok(Some(MultisigMetadata::new(
quorum_checkpoint.checkpoint.checkpoint,

@ -7,7 +7,7 @@ use derive_new::new;
use eyre::{Context, Result};
use hyperlane_base::MultisigCheckpointSyncer;
use hyperlane_core::{unwrap_or_none_result, HyperlaneMessage, H256};
use tracing::warn;
use tracing::{debug, trace, warn};
use crate::msg::metadata::BaseMetadataBuilder;
@ -35,12 +35,23 @@ impl MultisigIsmMetadataBuilder for MessageIdMultisigMetadataBuilder {
checkpoint_syncer: &MultisigCheckpointSyncer,
) -> Result<Option<MultisigMetadata>> {
const CTX: &str = "When fetching MessageIdMultisig metadata";
unwrap_or_none_result!(
leaf_index,
self.get_merkle_leaf_id_by_message_id(message.id())
.await
.context(CTX)?,
debug!(
?message,
"No merkle leaf found for message id, must have not been enqueued in the tree"
)
);
unwrap_or_none_result!(
quorum_checkpoint,
checkpoint_syncer
.fetch_checkpoint(validators, threshold as usize, message.nonce)
.fetch_checkpoint(validators, threshold as usize, leaf_index)
.await
.context(CTX)?
.context(CTX)?,
trace!("No quorum checkpoint found")
);
if quorum_checkpoint.checkpoint.message_id != message.id() {

@ -46,6 +46,14 @@ const DOMAINS: &[RawDomain] = &[
is_test_net: false,
is_deprecated: false,
},
RawDomain {
name: "basegoerli",
token: "ETH",
domain: 84531,
chain_id: 84531,
is_test_net: false,
is_deprecated: false,
},
RawDomain {
name: "bsc",
token: "BNB",
@ -150,6 +158,14 @@ const DOMAINS: &[RawDomain] = &[
is_test_net: false,
is_deprecated: false,
},
RawDomain {
name: "scrollsepolia",
token: "ETH",
domain: 534351,
chain_id: 534351,
is_test_net: true,
is_deprecated: false,
},
RawDomain {
name: "sepolia",
token: "ETH",
@ -158,6 +174,14 @@ const DOMAINS: &[RawDomain] = &[
is_test_net: true,
is_deprecated: false,
},
RawDomain {
name: "polygonzkevmtestnet",
token: "ETH",
domain: 1442,
chain_id: 1442,
is_test_net: true,
is_deprecated: false,
},
RawDomain {
name: "test1",
token: "ETH",

@ -91,7 +91,7 @@ impl BlockCursor {
};
debug!(?model, "Inserting cursor");
if let Err(e) = Insert::one(model).exec(&self.db).await {
warn!(error = ?e, "Failed to update database with new cursor")
warn!(error = ?e, "Failed to update database with new cursor. When you just started this, ensure that the migrations included this domain.")
} else {
debug!(cursor = ?*inner, "Updated cursor")
}

@ -3,12 +3,12 @@ use std::sync::Arc;
use std::time::{Duration, Instant};
use std::vec;
use eyre::Result;
use eyre::{bail, Result};
use hyperlane_core::MerkleTreeHook;
use prometheus::IntGauge;
use tokio::time::sleep;
use tracing::instrument;
use tracing::{debug, info};
use tracing::{error, instrument};
use hyperlane_base::{db::HyperlaneRocksDB, CheckpointSyncer, CoreMetrics};
use hyperlane_core::{
@ -84,12 +84,16 @@ impl ValidatorSubmitter {
};
// ingest available messages from DB
while let Some(message) = self
while let Some(insertion) = self
.message_db
.retrieve_message_by_nonce(tree.count() as u32)?
.retrieve_merkle_tree_insertion_by_leaf_index(&(tree.count() as u32))?
{
debug!(index = message.nonce, "Ingesting leaf to tree");
let message_id = message.id();
debug!(
index = insertion.index(),
queue_length = checkpoint_queue.len(),
"Ingesting leaf to tree"
);
let message_id = insertion.message_id();
tree.ingest(message_id);
let checkpoint = self.checkpoint(&tree);
@ -99,6 +103,19 @@ impl ValidatorSubmitter {
message_id,
});
if checkpoint.index == correctness_checkpoint.index {
// We got to the right height, now lets compare whether we got the right tree
if checkpoint.root != correctness_checkpoint.root {
// Bad news, bail
error!(
?checkpoint,
?correctness_checkpoint,
"Incorrect tree root, something went wrong"
);
bail!("Incorrect tree root, something went wrong");
}
}
// compare against every queued checkpoint to prevent ingesting past target
if checkpoint == correctness_checkpoint {
debug!(index = checkpoint.index, "Reached tree consistency");

@ -7,12 +7,12 @@ use futures_util::future::ready;
use hyperlane_base::{
db::{HyperlaneRocksDB, DB},
run_all, BaseAgent, CheckpointSyncer, ContractSyncMetrics, CoreMetrics, HyperlaneAgentCore,
MessageContractSync,
WatermarkContractSync,
};
use hyperlane_core::{
accumulator::incremental::IncrementalMerkle, Announcement, ChainResult, HyperlaneChain,
HyperlaneContract, HyperlaneDomain, HyperlaneSigner, HyperlaneSignerExt, Mailbox,
MerkleTreeHook, TxOutcome, ValidatorAnnounce, H256, U256,
MerkleTreeHook, MerkleTreeInsertion, TxOutcome, ValidatorAnnounce, H256, U256,
};
use hyperlane_ethereum::{SingletonSigner, SingletonSignerHandle};
use tokio::{task::JoinHandle, time::sleep};
@ -30,7 +30,7 @@ pub struct Validator {
#[as_ref]
core: HyperlaneAgentCore,
db: HyperlaneRocksDB,
message_sync: Arc<MessageContractSync>,
merkle_tree_hook_sync: Arc<WatermarkContractSync<MerkleTreeInsertion>>,
mailbox: Arc<dyn Mailbox>,
merkle_tree_hook: Arc<dyn MerkleTreeHook>,
validator_announce: Arc<dyn ValidatorAnnounce>,
@ -75,8 +75,8 @@ impl BaseAgent for Validator {
let contract_sync_metrics = Arc::new(ContractSyncMetrics::new(&metrics));
let message_sync = settings
.build_message_indexer(
let merkle_tree_hook_sync = settings
.build_merkle_tree_hook_indexer(
&settings.origin_chain,
&metrics,
&contract_sync_metrics,
@ -91,7 +91,7 @@ impl BaseAgent for Validator {
db: msg_db,
mailbox: mailbox.into(),
merkle_tree_hook: merkle_tree_hook.into(),
message_sync,
merkle_tree_hook_sync,
validator_announce: validator_announce.into(),
signer,
signer_instance: Some(Box::new(signer_instance)),
@ -129,7 +129,7 @@ impl BaseAgent for Validator {
sleep(self.interval).await;
}
Ok(_) => {
tasks.push(self.run_message_sync().await);
tasks.push(self.run_merkle_tree_hook_sync().await);
for checkpoint_sync_task in self.run_checkpoint_submitters().await {
tasks.push(checkpoint_sync_task);
}
@ -147,20 +147,13 @@ impl BaseAgent for Validator {
}
impl Validator {
async fn run_message_sync(&self) -> Instrumented<JoinHandle<Result<()>>> {
async fn run_merkle_tree_hook_sync(&self) -> Instrumented<JoinHandle<Result<()>>> {
let index_settings =
self.as_ref().settings.chains[self.origin_chain.name()].index_settings();
let contract_sync = self.message_sync.clone();
let cursor = contract_sync
.forward_backward_message_sync_cursor(index_settings)
.await;
tokio::spawn(async move {
contract_sync
.clone()
.sync("dispatched_messages", cursor)
.await
})
.instrument(info_span!("MailboxMessageSyncer"))
let contract_sync = self.merkle_tree_hook_sync.clone();
let cursor = contract_sync.rate_limited_cursor(index_settings).await;
tokio::spawn(async move { contract_sync.clone().sync("merkle_tree_hook", cursor).await })
.instrument(info_span!("MerkleTreeHookSyncer"))
}
async fn run_checkpoint_submitters(&self) -> Vec<Instrumented<JoinHandle<Result<()>>>> {

@ -97,8 +97,6 @@ where
.query_with_meta()
.await?;
println!("found gas payment events: {:?}", events);
Ok(events
.into_iter()
.map(|(log, log_meta)| {

@ -44,7 +44,7 @@
"proxyAdmin": "0x4eDBf5846D973c53AF478cf62aB5bC92807521e3",
"mailbox": "0xEf9F292fcEBC3848bF4bB92a96a04F9ECBb78E59",
"validatorAnnounce": "0x3726EE36a2A9e11a40d1ffD7D9A1A16e0154cDA0",
"merkleTreeHook": "0x48D4ede231344A19c92b9cA9Ac8B453116012169",
"merkleTreeHook": "0x221FA9CBaFcd6c1C3d206571Cf4427703e023FFa",
"storageGasOracle": "0x8356113754C7aCa297Db3089b89F87CC125499fb",
"interchainGasPaymaster": "0x1246529edDcA523AfE5c6b9414299633d2E16697",
"aggregationHook": "0xdBabD76358897E68E4964647C1fb8Bf524f5EFdB",

@ -7,7 +7,7 @@ Expand the name of the chart.
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
We truncate at 63 chars - 11 because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "agent-common.fullname" -}}
@ -49,7 +49,7 @@ app.kubernetes.io/managed-by: {{ .Release.Service }}
Selector labels
*/}}
{{- define "agent-common.selectorLabels" -}}
app.kubernetes.io/name: {{ include "agent-common.name" . }}
app.kubernetes.io/name: {{ include "agent-common.name" . | trunc 63 | trimSuffix "-"}}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

@ -27,7 +27,7 @@ spec:
*/}}
{{- range .Values.hyperlane.chains }}
{{- if not .disabled }}
HYP_BASE_CHAINS_{{ .name | upper }}_CUSTOMRPCURLS: {{ printf "'{{ .%s_rpcs | mustFromJson | join \",\" }}'" .name }}
HYP_CHAINS_{{ .name | upper }}_CUSTOMRPCURLS: {{ printf "'{{ .%s_rpcs | mustFromJson | join \",\" }}'" .name }}
{{- end }}
{{- end }}
data:

@ -26,6 +26,9 @@ spec:
HYP_CHAINS_{{ .name | upper }}_SIGNER_KEY: {{ printf "'{{ .%s_signer_key | toString }}'" .name }}
{{- end }}
{{- if and (eq .signer.type "aws") $.Values.hyperlane.relayer.aws }}
HYP_CHAINS_{{ .name | upper }}_SIGNER_TYPE: aws
HYP_CHAINS_{{ .name | upper }}_SIGNER_ID: {{ .signer.id }}
HYP_CHAINS_{{ .name | upper }}_SIGNER_REGION: {{ .signer.region}}
AWS_ACCESS_KEY_ID: {{ print "'{{ .aws_access_key_id | toString }}'" }}
AWS_SECRET_ACCESS_KEY: {{ print "'{{ .aws_secret_access_key | toString }}'" }}
{{- end }}

@ -45,7 +45,7 @@
//! ```
//!
//! and an environment variable is supplied which defines
//! `HYP_BASE_CHAINS_TEST2_DOMAINID=1`, then the config parser will directly override the value of
//! `HYP_CHAINS_TEST2_DOMAINID=1`, then the config parser will directly override the value of
//! the field found in config to be `1`, since the fields in the environment variable name describe
//! the path traversal to arrive at this field in the JSON config object.
//!
@ -57,7 +57,7 @@
//! 1. The files matching `config/<env>/<config>.json`.
//! 2. The order of configs in `CONFIG_FILES` with each sequential one
//! overwriting previous ones as appropriate.
//! 3. Configuration env vars with the prefix `HYP_BASE` intended
//! 3. Configuration env vars with the prefix `HYP` intended
//! to be shared by multiple agents in the same environment
//! E.g. `export HYP_CHAINS_ARBITRUM_DOMAINID=3000`
//! 5. Arguments passed to the agent on the command line.

@ -243,7 +243,7 @@ macro_rules! unwrap_or_none_result {
($variable_name:ident, $e:expr $(, $else_e:expr)?) => {
let Some($variable_name) = $e
else {
$($else_e)?
$($else_e;)?
return Ok(None);
};
};

@ -1,10 +1,10 @@
{
"name": "@hyperlane-xyz/core",
"description": "Core solidity contracts for Hyperlane",
"version": "1.5.0",
"version": "1.5.4-beta0",
"dependencies": {
"@eth-optimism/contracts": "^0.6.0",
"@hyperlane-xyz/utils": "1.5.0",
"@hyperlane-xyz/utils": "1.5.4-beta0",
"@openzeppelin/contracts": "^4.8.0",
"@openzeppelin/contracts-upgradeable": "^4.8.0"
},
@ -56,5 +56,6 @@
"gas-ci": "yarn gas --check --tolerance 2 || (echo 'Manually update gas snapshot' && exit 1)",
"slither": "slither ."
},
"types": "dist/index.d.ts"
"types": "dist/index.d.ts",
"stableVersion": "1.5.0"
}

@ -71,6 +71,18 @@ contract HelloWorld is Router {
);
}
/**
* @notice Fetches the amount of gas that will be used when a message is
* dispatched to the given domain.
*/
function quoteDispatch(uint32 _destinationDomain, bytes calldata _message)
external
view
returns (uint256)
{
return _quoteDispatch(_destinationDomain, _message);
}
// ============ Internal functions ============
function _metadata(
uint32 /*_destinationDomain*/

@ -1,10 +1,10 @@
{
"name": "@hyperlane-xyz/helloworld",
"description": "A basic skeleton of an Hyperlane app",
"version": "1.5.0",
"version": "1.5.4-beta0",
"dependencies": {
"@hyperlane-xyz/core": "1.5.0",
"@hyperlane-xyz/sdk": "1.5.0",
"@hyperlane-xyz/core": "1.5.4-beta0",
"@hyperlane-xyz/sdk": "1.5.4-beta0",
"@openzeppelin/contracts-upgradeable": "^4.8.0",
"ethers": "^5.7.2"
},
@ -66,5 +66,6 @@
"lodash": "^4.17.21",
"async": "^2.6.4",
"undici": "^5.11"
}
},
"stableVersion": "1.5.0"
}

@ -48,10 +48,11 @@ export class HelloWorldApp extends RouterApp<HelloWorldFactories> {
);
const gasLimit = estimated.mul(12).div(10);
const quote = await sender.quoteDispatch(toDomain, message);
const tx = await sender.sendHelloWorld(toDomain, message, {
...transactionOverrides,
gasLimit,
value,
value: value.add(quote),
});
debug('Sending hello message', {
from,

@ -1,3 +1,5 @@
import { BigNumber, ethers } from 'ethers';
import {
ChainName,
EthersV5Transaction,
@ -35,11 +37,15 @@ export class EvmHelloWorldAdapter
this.chainName,
);
const quote = await contract.callStatic.quoteDispatch(
toDomain,
ethers.utils.toUtf8Bytes(message),
);
// apply gas buffer due to https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/634
const estimated = await contract.estimateGas.sendHelloWorld(
toDomain,
message,
{ ...transactionOverrides, value },
{ ...transactionOverrides, value: BigNumber.from(value).add(quote) },
);
const gasLimit = estimated.mul(12).div(10);
@ -49,7 +55,7 @@ export class EvmHelloWorldAdapter
{
...transactionOverrides,
gasLimit,
value,
value: BigNumber.from(value).add(quote),
},
);
return { transaction: tx, type: ProviderType.EthersV5 };

@ -9,7 +9,6 @@ import {
TestCoreApp,
TestCoreDeployer,
} from '@hyperlane-xyz/sdk';
import { addressToBytes32 } from '@hyperlane-xyz/utils';
import { HelloWorldConfig } from '../deploy/config';
import { HelloWorldDeployer } from '../deploy/deploy';
@ -52,21 +51,15 @@ describe('HelloWorld', async () => {
expect(await remote.received()).to.equal(0);
});
async function quoteGasPayment(body: string) {
return coreApp
.getContracts(localChain)
.mailbox['quoteDispatch(uint32,bytes32,bytes)'](
remoteDomain,
addressToBytes32(remote.address),
Buffer.from(body),
);
}
it('sends a message', async () => {
const body = 'Hello';
const payment = await local['quoteDispatch(uint32,bytes)'](
remoteDomain,
Buffer.from(body),
);
await expect(
local.sendHelloWorld(remoteDomain, body, {
value: await quoteGasPayment(body),
value: payment,
}),
).to.emit(local, 'SentHelloWorld');
// The sent counts are correct
@ -87,8 +80,12 @@ describe('HelloWorld', async () => {
it('handles a message', async () => {
const body = 'World';
const payment = await local['quoteDispatch(uint32,bytes)'](
remoteDomain,
Buffer.from(body),
);
await local.sendHelloWorld(remoteDomain, body, {
value: await quoteGasPayment(body),
value: payment,
});
// Mock processing of the message by Hyperlane
await coreApp.processOutboundMessages(localChain);

@ -9,7 +9,7 @@ import { environment } from './chains';
export const keyFunderConfig: KeyFunderConfig = {
docker: {
repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo',
tag: '8b752d0-20230606-195641',
tag: '9a8d85c-20231013-213905',
},
// We're currently using the same deployer key as mainnet.
// To minimize nonce clobbering we offset the key funder cron

@ -13,7 +13,7 @@ export const hyperlane: HelloWorldConfig = {
kathy: {
docker: {
repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo',
tag: '4c598b9-20230503-205323',
tag: '9a8d85c-20231013-213905',
},
chainsToSkip: [],
runEnv: environment,
@ -34,7 +34,7 @@ export const releaseCandidate: HelloWorldConfig = {
kathy: {
docker: {
repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo',
tag: '25f19b7-20230319-124624',
tag: '9a8d85c-20231013-213905',
},
chainsToSkip: [],
runEnv: environment,

@ -74,7 +74,7 @@ const hyperlane: RootAgentConfig = {
rpcConsensusType: RpcConsensusType.Fallback,
docker: {
repo,
tag: 'ed7569d-20230725-171222',
tag: 'cfaf553-20231009-174623',
},
blacklist: [
...releaseCandidateHelloworldMatchingList,
@ -91,7 +91,7 @@ const hyperlane: RootAgentConfig = {
rpcConsensusType: RpcConsensusType.Fallback,
docker: {
repo,
tag: 'ed7569d-20230725-171222',
tag: 'cfaf553-20231009-174623',
},
chainDockerOverrides: {
[chainMetadata.solanadevnet.name]: {
@ -107,7 +107,7 @@ const hyperlane: RootAgentConfig = {
rpcConsensusType: RpcConsensusType.Fallback,
docker: {
repo,
tag: 'aaddba7-20230620-154941',
tag: 'cfaf553-20231009-174623',
},
},
};
@ -120,7 +120,7 @@ const releaseCandidate: RootAgentConfig = {
rpcConsensusType: RpcConsensusType.Fallback,
docker: {
repo,
tag: 'c7c44b2-20230811-133851',
tag: 'cfaf553-20231009-174623',
},
whitelist: [
...releaseCandidateHelloworldMatchingList,
@ -181,7 +181,7 @@ const releaseCandidate: RootAgentConfig = {
rpcConsensusType: RpcConsensusType.Fallback,
docker: {
repo,
tag: 'ed7569d-20230725-171222',
tag: 'cfaf553-20231009-174623',
},
chains: validatorChainConfig(Contexts.ReleaseCandidate),
},

@ -32,8 +32,8 @@ export const environment = 'testnet4';
const validatorChainNames = [
...supportedChainNames,
chainMetadata.solanadevnet.name,
chainMetadata.proteustestnet.name,
// chainMetadata.solanadevnet.name,
// chainMetadata.proteustestnet.name,
];
const relayerChainNames = validatorChainNames;

@ -9,7 +9,7 @@ import { environment } from './chains';
export const keyFunderConfig: KeyFunderConfig = {
docker: {
repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo',
tag: '8b752d0-20230606-195641',
tag: 'cfaf553-20231009-174629',
},
// We're currently using the same deployer key as testnet2.
// To minimize nonce clobbering we offset the key funder cron

@ -13,7 +13,7 @@ export const hyperlaneHelloworld: HelloWorldConfig = {
kathy: {
docker: {
repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo',
tag: '4c598b9-20230503-205323',
tag: '5601743-20231007-124637',
},
chainsToSkip: [],
runEnv: environment,
@ -33,7 +33,7 @@ export const releaseCandidateHelloworld: HelloWorldConfig = {
kathy: {
docker: {
repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo',
tag: '25f19b7-20230319-124624',
tag: '5601743-20231007-124637',
},
chainsToSkip: [],
runEnv: environment,

@ -1,29 +1,38 @@
{
"basegoerli": {
"router": "0x086E902d2f99BcCEAa28B31747eC6Dc5fd43B1bE"
},
"arbitrumgoerli": {
"router": "0xFd1e3710347659703962934d2381970ae0022227"
},
"optimismgoerli": {
"router": "0x372Cf98E673C235C1abD78DEAA61480e6fe55e46"
},
"scrollsepolia": {
"router": "0x66b71A4e18FbE09a6977A6520B47fEDdffA82a1c"
},
"alfajores": {
"router": "0x477D860f8F41bC69dDD32821F2Bf2C2Af0243F16"
"router": "0xD0Ef694E96Bb695DC829f71956227eD141e3089F"
},
"fuji": {
"router": "0x5da3b8d6F73dF6003A490072106730218c475AAd"
"polygonzkevmtestnet": {
"router": "0x783c4a0bB6663359281aD4a637D5af68F83ae213"
},
"mumbai": {
"router": "0x1A4d8a5eD6C93Af828655e15C44eeE2c2851F0D6"
"sepolia": {
"router": "0xE14FE2a74Ba1E1bD0EE14B780e58fCcc3c95C013"
},
"fuji": {
"router": "0x0B1C1B54f45e02552331D3106e71f5e0b573D5D4"
},
"bsctestnet": {
"router": "0xE09BF59dCA6e622efC33f6fbd8EF85dE45233388"
"router": "0xd0e07a58BC91a686235E542350E63211C7A34c17"
},
"goerli": {
"router": "0x405BFdEcB33230b4Ad93C29ba4499b776CfBa189"
"router": "0x33AA9cFBC7E222B3eC231EcAa58dd846cC393C28"
},
"moonbasealpha": {
"router": "0x89e02C3C7b97bCBa63279E10E2a44e6cEF69E6B2"
},
"optimismgoerli": {
"router": "0x3582d1238cBC812165981E4fFaB0E8D9a4518910"
"router": "0x3Ce607F6FcE5Dfb9821f33504d86E04A4CD0C75f"
},
"arbitrumgoerli": {
"router": "0x339B46496D60b1b6B42e9715DeD8B3D2154dA0Bb"
},
"sepolia": {
"router": "0x5d56B8a669F50193b54319442c6EEE5edD662381"
"mumbai": {
"router": "0x04980C17e2CE26578C82f81207e706e4505FaE3B"
}
}

@ -11,6 +11,36 @@
"address": "0x477D860f8F41bC69dDD32821F2Bf2C2Af0243F16",
"constructorArguments": "000000000000000000000000cc737a94fecaec165abcf12ded095bb13f037685000000000000000000000000f90cb82a76492614d07b82a7658917f3ac811ac1",
"isProxy": false
},
{
"name": "Router",
"address": "0x76bDE8069b3467A459262192509Ad5c00AcbdaF0",
"constructorArguments": "000000000000000000000000ef9f292fcebc3848bf4bb92a96a04f9ecbb78e590000000000000000000000001246529eddca523afe5c6b9414299633d2e16697",
"isProxy": false
},
{
"name": "Router",
"address": "0x39e08602570237433673B1340Da17105cA098EE7",
"constructorArguments": "000000000000000000000000ef9f292fcebc3848bf4bb92a96a04f9ecbb78e590000000000000000000000001246529eddca523afe5c6b9414299633d2e16697",
"isProxy": false
},
{
"name": "Router",
"address": "0x0231C1A2CfDbC2d2FA8363c3eC60c85a458088aE",
"constructorArguments": "000000000000000000000000ef9f292fcebc3848bf4bb92a96a04f9ecbb78e590000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
},
{
"name": "Router",
"address": "0xb58F3D0CA2B26803eA6a64696989102cE301Fd23",
"constructorArguments": "000000000000000000000000ef9f292fcebc3848bf4bb92a96a04f9ecbb78e590000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
},
{
"name": "Router",
"address": "0xD0Ef694E96Bb695DC829f71956227eD141e3089F",
"constructorArguments": "000000000000000000000000ef9f292fcebc3848bf4bb92a96a04f9ecbb78e590000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
}
],
"fuji": [
@ -25,6 +55,24 @@
"address": "0x5da3b8d6F73dF6003A490072106730218c475AAd",
"constructorArguments": "000000000000000000000000cc737a94fecaec165abcf12ded095bb13f037685000000000000000000000000f90cb82a76492614d07b82a7658917f3ac811ac1",
"isProxy": false
},
{
"name": "Router",
"address": "0xE04b1D70d487eFCa454EEBf3821E42Dd41e66609",
"constructorArguments": "0000000000000000000000005b6cff85442b851a8e6eabd2a4e4507b5135b3b00000000000000000000000006895d3916b94b386faa6ec9276756e16dae7480e",
"isProxy": false
},
{
"name": "Router",
"address": "0x6F7A1B7868f14a2f4c36cc561d910aE7958bc8D8",
"constructorArguments": "0000000000000000000000005b6cff85442b851a8e6eabd2a4e4507b5135b3b00000000000000000000000006895d3916b94b386faa6ec9276756e16dae7480e",
"isProxy": false
},
{
"name": "Router",
"address": "0x0B1C1B54f45e02552331D3106e71f5e0b573D5D4",
"constructorArguments": "0000000000000000000000005b6cff85442b851a8e6eabd2a4e4507b5135b3b00000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
}
],
"mumbai": [
@ -39,6 +87,24 @@
"address": "0x1A4d8a5eD6C93Af828655e15C44eeE2c2851F0D6",
"constructorArguments": "000000000000000000000000cc737a94fecaec165abcf12ded095bb13f037685000000000000000000000000f90cb82a76492614d07b82a7658917f3ac811ac1",
"isProxy": false
},
{
"name": "Router",
"address": "0x79B6151129780f5A80DFEF7c1E967b21A9674A7D",
"constructorArguments": "0000000000000000000000002d1889fe5b092cd988972261434f7e5f260411150000000000000000000000008ab67caf605c6ee83cbfefb0d8d67fdd3bf7b591",
"isProxy": false
},
{
"name": "Router",
"address": "0xBEadC848cAB77875d066466b9F3509f069a0a4F5",
"constructorArguments": "0000000000000000000000002d1889fe5b092cd988972261434f7e5f260411150000000000000000000000008ab67caf605c6ee83cbfefb0d8d67fdd3bf7b591",
"isProxy": false
},
{
"name": "Router",
"address": "0x04980C17e2CE26578C82f81207e706e4505FaE3B",
"constructorArguments": "0000000000000000000000002d1889fe5b092cd988972261434f7e5f260411150000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
}
],
"bsctestnet": [
@ -53,6 +119,24 @@
"address": "0xE09BF59dCA6e622efC33f6fbd8EF85dE45233388",
"constructorArguments": "000000000000000000000000cc737a94fecaec165abcf12ded095bb13f037685000000000000000000000000f90cb82a76492614d07b82a7658917f3ac811ac1",
"isProxy": false
},
{
"name": "Router",
"address": "0x5b297d6BBE080B66E6acece8d378F70F02c0Bc41",
"constructorArguments": "00000000000000000000000089280d0b68a246b276a910a518531e2a861ceb650000000000000000000000000dd20e410bdb95404f71c5a4e7fa67b892a5f949",
"isProxy": false
},
{
"name": "Router",
"address": "0x90230E8cf53f4F9aFC2A9777eB0093C0B1C81b59",
"constructorArguments": "00000000000000000000000089280d0b68a246b276a910a518531e2a861ceb650000000000000000000000000dd20e410bdb95404f71c5a4e7fa67b892a5f949",
"isProxy": false
},
{
"name": "Router",
"address": "0xd0e07a58BC91a686235E542350E63211C7A34c17",
"constructorArguments": "00000000000000000000000089280d0b68a246b276a910a518531e2a861ceb650000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
}
],
"goerli": [
@ -67,6 +151,24 @@
"address": "0x405BFdEcB33230b4Ad93C29ba4499b776CfBa189",
"constructorArguments": "000000000000000000000000cc737a94fecaec165abcf12ded095bb13f037685000000000000000000000000f90cb82a76492614d07b82a7658917f3ac811ac1",
"isProxy": false
},
{
"name": "Router",
"address": "0xBF5b89eBdF86560F872603e2063f17b78dFbae02",
"constructorArguments": "000000000000000000000000c4796aabce2a9d774ce4603f5db5fb1605791dbd0000000000000000000000000cd26594ea6c6526927c0f5225ac09f6288e7140",
"isProxy": false
},
{
"name": "Router",
"address": "0xA5F234545270cea8f31A8760b8b7ABcaA3654951",
"constructorArguments": "000000000000000000000000c4796aabce2a9d774ce4603f5db5fb1605791dbd0000000000000000000000000cd26594ea6c6526927c0f5225ac09f6288e7140",
"isProxy": false
},
{
"name": "Router",
"address": "0x33AA9cFBC7E222B3eC231EcAa58dd846cC393C28",
"constructorArguments": "000000000000000000000000c4796aabce2a9d774ce4603f5db5fb1605791dbd0000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
}
],
"moonbasealpha": [
@ -81,6 +183,24 @@
"address": "0x89e02C3C7b97bCBa63279E10E2a44e6cEF69E6B2",
"constructorArguments": "000000000000000000000000cc737a94fecaec165abcf12ded095bb13f037685000000000000000000000000f90cb82a76492614d07b82a7658917f3ac811ac1",
"isProxy": false
},
{
"name": "Router",
"address": "0x36a53DDa7626e5eb62e59a0192Af07b67AF434D8",
"constructorArguments": "00000000000000000000000076189acfa212298d7022624a4633411ee0d2f26f00000000000000000000000092f05669a354a032a84fcfabfd13bee1abc5bfd0",
"isProxy": false
},
{
"name": "Router",
"address": "0x893b57DE7E3dd885F827c74E74F3099C1c250c52",
"constructorArguments": "00000000000000000000000076189acfa212298d7022624a4633411ee0d2f26f00000000000000000000000092f05669a354a032a84fcfabfd13bee1abc5bfd0",
"isProxy": false
},
{
"name": "Router",
"address": "0x3Ce607F6FcE5Dfb9821f33504d86E04A4CD0C75f",
"constructorArguments": "00000000000000000000000076189acfa212298d7022624a4633411ee0d2f26f0000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
}
],
"optimismgoerli": [
@ -95,6 +215,36 @@
"address": "0x3582d1238cBC812165981E4fFaB0E8D9a4518910",
"constructorArguments": "000000000000000000000000cc737a94fecaec165abcf12ded095bb13f037685000000000000000000000000f90cb82a76492614d07b82a7658917f3ac811ac1",
"isProxy": false
},
{
"name": "Router",
"address": "0x050500E43Fa7F245f3012527DE29d22176c594c7",
"constructorArguments": "000000000000000000000000b5f021728ea6223e3948db2da61d612307945ea200000000000000000000000002a7661273528eff3d78cbe7cbd1a717b28b89fc",
"isProxy": false
},
{
"name": "Router",
"address": "0x7Dc5cE596995af8e5D568563038109B9bCA7F7c6",
"constructorArguments": "000000000000000000000000b5f021728ea6223e3948db2da61d612307945ea200000000000000000000000002a7661273528eff3d78cbe7cbd1a717b28b89fc",
"isProxy": false
},
{
"name": "Router",
"address": "0xe7B2e23A9A77556736DBB040A8a5159a80Db73D5",
"constructorArguments": "000000000000000000000000b5f021728ea6223e3948db2da61d612307945ea20000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
},
{
"name": "Router",
"address": "0x138e726C327E9dd0779104B8d42331757CAeeB9F",
"constructorArguments": "000000000000000000000000b5f021728ea6223e3948db2da61d612307945ea20000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
},
{
"name": "Router",
"address": "0x372Cf98E673C235C1abD78DEAA61480e6fe55e46",
"constructorArguments": "000000000000000000000000b5f021728ea6223e3948db2da61d612307945ea20000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
}
],
"arbitrumgoerli": [
@ -109,6 +259,36 @@
"address": "0x339B46496D60b1b6B42e9715DeD8B3D2154dA0Bb",
"constructorArguments": "000000000000000000000000cc737a94fecaec165abcf12ded095bb13f037685000000000000000000000000f90cb82a76492614d07b82a7658917f3ac811ac1",
"isProxy": false
},
{
"name": "Router",
"address": "0xB8D70C9352AA59f5EB138e045117841910c107a3",
"constructorArguments": "00000000000000000000000013dabc0351407d5aaa0a50003a166a73b4febfdc00000000000000000000000076189acfa212298d7022624a4633411ee0d2f26f",
"isProxy": false
},
{
"name": "Router",
"address": "0xA3bAaC7d60d10abA54cC2Ffb4b63469810C5aDc0",
"constructorArguments": "00000000000000000000000013dabc0351407d5aaa0a50003a166a73b4febfdc00000000000000000000000076189acfa212298d7022624a4633411ee0d2f26f",
"isProxy": false
},
{
"name": "Router",
"address": "0x9C63cE44d595cfd97215fcb97d58CFD07a9D6BD7",
"constructorArguments": "00000000000000000000000013dabc0351407d5aaa0a50003a166a73b4febfdc0000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
},
{
"name": "Router",
"address": "0x22C7d91A4533536FE6006EFA46074E2Df8f82e82",
"constructorArguments": "00000000000000000000000013dabc0351407d5aaa0a50003a166a73b4febfdc0000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
},
{
"name": "Router",
"address": "0xFd1e3710347659703962934d2381970ae0022227",
"constructorArguments": "00000000000000000000000013dabc0351407d5aaa0a50003a166a73b4febfdc0000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
}
],
"sepolia": [
@ -117,6 +297,138 @@
"address": "0x5d56B8a669F50193b54319442c6EEE5edD662381",
"constructorArguments": "000000000000000000000000cc737a94fecaec165abcf12ded095bb13f037685000000000000000000000000f987d7edcb5890cb321437d8145e3d51131298b6",
"isProxy": false
},
{
"name": "Router",
"address": "0x8FF62Cd16C689C6541A284c0e2389D4371255Bc2",
"constructorArguments": "00000000000000000000000033abaf6708be03bdf0595da0745a7111b01db8c70000000000000000000000006f2756380fd49228ae25aa7f2817993cb74ecc56",
"isProxy": false
},
{
"name": "Router",
"address": "0x73A7bDa325Ad8E5F591179C4ccA61b0CeF70d05C",
"constructorArguments": "00000000000000000000000033abaf6708be03bdf0595da0745a7111b01db8c70000000000000000000000006f2756380fd49228ae25aa7f2817993cb74ecc56",
"isProxy": false
},
{
"name": "Router",
"address": "0xE14FE2a74Ba1E1bD0EE14B780e58fCcc3c95C013",
"constructorArguments": "00000000000000000000000033abaf6708be03bdf0595da0745a7111b01db8c70000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
}
],
"basegoerli": [
{
"name": "Router",
"address": "0xeAEfB1458b032e75de3e9A3a480d005c426FB1c5",
"constructorArguments": "00000000000000000000000058483b754abb1e8947be63d6b95df75b8249543a00000000000000000000000028b02b97a850872c4d33c3e024fab6499ad96564",
"isProxy": false
},
{
"name": "Router",
"address": "0xae7a78916Ba4c507aCB2F0e474ace545Ff4bF841",
"constructorArguments": "00000000000000000000000058483b754abb1e8947be63d6b95df75b8249543a00000000000000000000000028b02b97a850872c4d33c3e024fab6499ad96564",
"isProxy": false
},
{
"name": "Router",
"address": "0x04438ef7622f5412f82915F59caD4f704C61eA48",
"constructorArguments": "00000000000000000000000058483b754abb1e8947be63d6b95df75b8249543a00000000000000000000000028b02b97a850872c4d33c3e024fab6499ad96564",
"isProxy": false
},
{
"name": "Router",
"address": "0xb94F96D398eA5BAB5CA528EE9Fdc19afaA825818",
"constructorArguments": "00000000000000000000000058483b754abb1e8947be63d6b95df75b8249543a0000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
},
{
"name": "Router",
"address": "0x51A0a100e7BC63Ea7821A3a023B6F17fb94FF011",
"constructorArguments": "00000000000000000000000058483b754abb1e8947be63d6b95df75b8249543a0000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
},
{
"name": "Router",
"address": "0x086E902d2f99BcCEAa28B31747eC6Dc5fd43B1bE",
"constructorArguments": "00000000000000000000000058483b754abb1e8947be63d6b95df75b8249543a0000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
}
],
"scrollsepolia": [
{
"name": "Router",
"address": "0x433f7d6d0cB9eb8FF2902Ad01C1BEd6C09934a33",
"constructorArguments": "0000000000000000000000003c5154a193d6e2955650f9305c8d80c18c814a6800000000000000000000000086fb9f1c124fb20ff130c41a79a432f770f67afd",
"isProxy": false
},
{
"name": "Router",
"address": "0xEe421285728284000ec6c6C55C6F9161faeFfa99",
"constructorArguments": "0000000000000000000000003c5154a193d6e2955650f9305c8d80c18c814a6800000000000000000000000086fb9f1c124fb20ff130c41a79a432f770f67afd",
"isProxy": false
},
{
"name": "Router",
"address": "0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C",
"constructorArguments": "0000000000000000000000003c5154a193d6e2955650f9305c8d80c18c814a6800000000000000000000000086fb9f1c124fb20ff130c41a79a432f770f67afd",
"isProxy": false
},
{
"name": "Router",
"address": "0x783c4a0bB6663359281aD4a637D5af68F83ae213",
"constructorArguments": "0000000000000000000000003c5154a193d6e2955650f9305c8d80c18c814a680000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
},
{
"name": "Router",
"address": "0xeAEfB1458b032e75de3e9A3a480d005c426FB1c5",
"constructorArguments": "0000000000000000000000003c5154a193d6e2955650f9305c8d80c18c814a680000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
},
{
"name": "Router",
"address": "0x66b71A4e18FbE09a6977A6520B47fEDdffA82a1c",
"constructorArguments": "0000000000000000000000003c5154a193d6e2955650f9305c8d80c18c814a680000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
}
],
"polygonzkevmtestnet": [
{
"name": "Router",
"address": "0xD0680F80F4f947968206806C2598Cbc5b6FE5b03",
"constructorArguments": "000000000000000000000000598face78a4302f11e3de0bee1894da0b2cb71f8000000000000000000000000ad34a66bf6db18e858f6b686557075568c6e031c",
"isProxy": false
},
{
"name": "Router",
"address": "0x433f7d6d0cB9eb8FF2902Ad01C1BEd6C09934a33",
"constructorArguments": "000000000000000000000000598face78a4302f11e3de0bee1894da0b2cb71f8000000000000000000000000ad34a66bf6db18e858f6b686557075568c6e031c",
"isProxy": false
},
{
"name": "Router",
"address": "0xEe421285728284000ec6c6C55C6F9161faeFfa99",
"constructorArguments": "000000000000000000000000598face78a4302f11e3de0bee1894da0b2cb71f8000000000000000000000000ad34a66bf6db18e858f6b686557075568c6e031c",
"isProxy": false
},
{
"name": "Router",
"address": "0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C",
"constructorArguments": "000000000000000000000000598face78a4302f11e3de0bee1894da0b2cb71f80000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
},
{
"name": "Router",
"address": "0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9",
"constructorArguments": "000000000000000000000000598face78a4302f11e3de0bee1894da0b2cb71f80000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
},
{
"name": "Router",
"address": "0x783c4a0bB6663359281aD4a637D5af68F83ae213",
"constructorArguments": "000000000000000000000000598face78a4302f11e3de0bee1894da0b2cb71f80000000000000000000000000000000000000000000000000000000000000000",
"isProxy": false
}
]
}

@ -1,38 +1,50 @@
{
"alfajores": {
"TestRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"TestTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb"
"TestRecipient": "0x6489d13AcAd3B8dce4c5B31f375DE4f9451E7b38",
"TestTokenRecipient": "0x92dC0a76452a9D9358D2d2dEd8CddA209DF67c45"
},
"basegoerli": {
"TestRecipient": "0x54Bd02f0f20677e9846F8E9FdB1Abc7315C49C38",
"TestTokenRecipient": "0x5e65279Fb7293a058776e37587398fcc3E9184b1"
},
"fuji": {
"TestRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"TestTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb"
"TestRecipient": "0x44a7e1d76fD8AfA244AdE7278336E3D5C658D398",
"TestTokenRecipient": "0x9CC10c844B3Bbae2444E39991aB027C4A05D1F2e"
},
"mumbai": {
"TestRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"TestTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb"
"TestRecipient": "0xF45A4D54223DA32bf7b5D43a9a460Ef3C94C713B",
"TestTokenRecipient": "0x57d098e6952B6C1c85Ce0B68C9Deada3dCf7D05A"
},
"bsctestnet": {
"TestRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"TestTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb"
"TestRecipient": "0xfbcD1c00a3d809f36cC1A15918694B17B32c0b6c",
"TestTokenRecipient": "0x260f6024119549a40595d0937471e607411E8ea5"
},
"goerli": {
"TestRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"TestTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb"
"TestRecipient": "0x4fC0Ac163eFFEb7890937cB89275B2C231880F22",
"TestTokenRecipient": "0xd8958706B33E20C88679a22203F0AFa6158c834d"
},
"scrollsepolia": {
"TestRecipient": "0xa3AB7E6cE24E6293bD5320A53329Ef2f4DE73fCA",
"TestTokenRecipient": "0xc76E477437065093D353b7d56c81ff54D167B0Ab"
},
"sepolia": {
"TestRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"TestTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb"
"TestRecipient": "0xeDc1A3EDf87187085A3ABb7A9a65E1e7aE370C07",
"TestTokenRecipient": "0x031AD9c560D37baC7d6Bd2d27A2443bAfd10101A"
},
"moonbasealpha": {
"TestRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"TestTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb"
"TestRecipient": "0x68729446296E413f0b7d6E85F2FD128465F0e5D0",
"TestTokenRecipient": "0xEdA6f85f4761A1f9e42FD40CA5a4E8Ce1C764015"
},
"optimismgoerli": {
"TestRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"TestTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb"
"TestRecipient": "0x518eA1802407b4b5AAF3aA92c1A803FfbA9FB7fe",
"TestTokenRecipient": "0xB9E45eA920DE14e95A16Ed5e1275F893552f2e32"
},
"arbitrumgoerli": {
"TestRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"TestTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb"
"TestRecipient": "0x07543860AE9E72aBcF2Bae9827b23621A64Fa416",
"TestTokenRecipient": "0x207db41AB053213451f1a71d936353C9056A0205"
},
"polygonzkevmtestnet": {
"TestRecipient": "0x11918DC33E067C5DA83EEF58E50F856398b8Df4C",
"TestTokenRecipient": "0x04438ef7622f5412f82915F59caD4f704C61eA48"
}
}

@ -2,127 +2,169 @@
"alfajores": [
{
"name": "TestRecipient",
"address": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"isProxy": false,
"constructorArguments": "0x"
"address": "0x6489d13AcAd3B8dce4c5B31f375DE4f9451E7b38",
"constructorArguments": "",
"isProxy": false
},
{
"name": "TestTokenRecipient",
"address": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"isProxy": false,
"constructorArguments": "0x"
"address": "0x92dC0a76452a9D9358D2d2dEd8CddA209DF67c45",
"constructorArguments": "",
"isProxy": false
}
],
"fuji": [
{
"name": "TestRecipient",
"address": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"isProxy": false,
"constructorArguments": "0x"
"address": "0x44a7e1d76fD8AfA244AdE7278336E3D5C658D398",
"constructorArguments": "",
"isProxy": false
},
{
"name": "TestTokenRecipient",
"address": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"isProxy": false,
"constructorArguments": "0x"
"address": "0x9CC10c844B3Bbae2444E39991aB027C4A05D1F2e",
"constructorArguments": "",
"isProxy": false
}
],
"mumbai": [
{
"name": "TestRecipient",
"address": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"isProxy": false,
"constructorArguments": "0x"
"address": "0xF45A4D54223DA32bf7b5D43a9a460Ef3C94C713B",
"constructorArguments": "",
"isProxy": false
},
{
"name": "TestTokenRecipient",
"address": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"isProxy": false,
"constructorArguments": "0x"
"address": "0x57d098e6952B6C1c85Ce0B68C9Deada3dCf7D05A",
"constructorArguments": "",
"isProxy": false
}
],
"bsctestnet": [
{
"name": "TestRecipient",
"address": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"isProxy": false,
"constructorArguments": "0x"
"address": "0xfbcD1c00a3d809f36cC1A15918694B17B32c0b6c",
"constructorArguments": "",
"isProxy": false
},
{
"name": "TestTokenRecipient",
"address": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"isProxy": false,
"constructorArguments": "0x"
"address": "0x260f6024119549a40595d0937471e607411E8ea5",
"constructorArguments": "",
"isProxy": false
}
],
"goerli": [
{
"name": "TestRecipient",
"address": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"isProxy": false,
"constructorArguments": "0x"
"address": "0x4fC0Ac163eFFEb7890937cB89275B2C231880F22",
"constructorArguments": "",
"isProxy": false
},
{
"name": "TestTokenRecipient",
"address": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"isProxy": false,
"constructorArguments": "0x"
"address": "0xd8958706B33E20C88679a22203F0AFa6158c834d",
"constructorArguments": "",
"isProxy": false
}
],
"sepolia": [
{
"name": "TestRecipient",
"address": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"isProxy": false,
"constructorArguments": "0x"
"address": "0xeDc1A3EDf87187085A3ABb7A9a65E1e7aE370C07",
"constructorArguments": "",
"isProxy": false
},
{
"name": "TestTokenRecipient",
"address": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"isProxy": false,
"constructorArguments": "0x"
"address": "0x031AD9c560D37baC7d6Bd2d27A2443bAfd10101A",
"constructorArguments": "",
"isProxy": false
}
],
"moonbasealpha": [
{
"name": "TestRecipient",
"address": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"isProxy": false,
"constructorArguments": "0x"
"address": "0x68729446296E413f0b7d6E85F2FD128465F0e5D0",
"constructorArguments": "",
"isProxy": false
},
{
"name": "TestTokenRecipient",
"address": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"isProxy": false,
"constructorArguments": "0x"
"address": "0xEdA6f85f4761A1f9e42FD40CA5a4E8Ce1C764015",
"constructorArguments": "",
"isProxy": false
}
],
"optimismgoerli": [
{
"name": "TestRecipient",
"address": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"isProxy": false,
"constructorArguments": "0x"
"address": "0x518eA1802407b4b5AAF3aA92c1A803FfbA9FB7fe",
"constructorArguments": "",
"isProxy": false
},
{
"name": "TestTokenRecipient",
"address": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"isProxy": false,
"constructorArguments": "0x"
"address": "0xB9E45eA920DE14e95A16Ed5e1275F893552f2e32",
"constructorArguments": "",
"isProxy": false
}
],
"arbitrumgoerli": [
{
"name": "TestRecipient",
"address": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"isProxy": false,
"constructorArguments": "0x"
"address": "0x07543860AE9E72aBcF2Bae9827b23621A64Fa416",
"constructorArguments": "",
"isProxy": false
},
{
"name": "TestTokenRecipient",
"address": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"isProxy": false,
"constructorArguments": "0x"
"address": "0x207db41AB053213451f1a71d936353C9056A0205",
"constructorArguments": "",
"isProxy": false
}
],
"basegoerli": [
{
"name": "TestRecipient",
"address": "0x54Bd02f0f20677e9846F8E9FdB1Abc7315C49C38",
"constructorArguments": "",
"isProxy": false
},
{
"name": "TestTokenRecipient",
"address": "0x5e65279Fb7293a058776e37587398fcc3E9184b1",
"constructorArguments": "",
"isProxy": false
}
],
"scrollsepolia": [
{
"name": "TestRecipient",
"address": "0xa3AB7E6cE24E6293bD5320A53329Ef2f4DE73fCA",
"constructorArguments": "",
"isProxy": false
},
{
"name": "TestTokenRecipient",
"address": "0xc76E477437065093D353b7d56c81ff54D167B0Ab",
"constructorArguments": "",
"isProxy": false
}
],
"polygonzkevmtestnet": [
{
"name": "TestRecipient",
"address": "0x11918DC33E067C5DA83EEF58E50F856398b8Df4C",
"constructorArguments": "",
"isProxy": false
},
{
"name": "TestTokenRecipient",
"address": "0x04438ef7622f5412f82915F59caD4f704C61eA48",
"constructorArguments": "",
"isProxy": false
}
]
}

@ -68,44 +68,44 @@ export const validatorChainConfig = (
'fuji',
),
},
chiado: {
interval: 5,
reorgPeriod: chainMetadata.chiado.blocks!.reorgPeriod!,
validators: validatorsConfig(
{
[Contexts.Hyperlane]: [
'0x12b1d1354441b900e0a36659ae54c3a9d5d22c57',
'0x06c3757a4b7a912828e523bb8a5f980ddc297356',
'0x0874967a145d70b799ebe9ed861ab7c93faef95a',
],
[Contexts.ReleaseCandidate]: [
'0x7572ffd8af1abc02cc1d234ac750d387fd6768a0',
'0x31b37a32657cf2915d434b409ee86978058fa91c',
'0x32495780512fce64a45aca55ccc02202e9018dc5',
],
},
'chiado',
),
},
lineagoerli: {
interval: 5,
reorgPeriod: chainMetadata.lineagoerli.blocks!.reorgPeriod!,
validators: validatorsConfig(
{
[Contexts.Hyperlane]: [
'0xd767ea1206b8295d7e1267ddd00e56d34f278db6',
'0x4a5d7085ca93c22fbc994dd97857c98fcc745674',
'0x8327779c3c31fa1ffc7f0c9ffae33e4d804bbd8f',
],
[Contexts.ReleaseCandidate]: [
'0x52e2c6db923124e646011d172dea644e1cafe583',
'0x48d540e94ff1acb886df6bfed2b7a92568639364',
'0xe99e3acc543a535b8eeae98f3d6f39015efe0cd0',
],
},
'lineagoerli',
),
},
// chiado: {
// interval: 5,
// reorgPeriod: chainMetadata.chiado.blocks!.reorgPeriod!,
// validators: validatorsConfig(
// {
// [Contexts.Hyperlane]: [
// '0x12b1d1354441b900e0a36659ae54c3a9d5d22c57',
// '0x06c3757a4b7a912828e523bb8a5f980ddc297356',
// '0x0874967a145d70b799ebe9ed861ab7c93faef95a',
// ],
// [Contexts.ReleaseCandidate]: [
// '0x7572ffd8af1abc02cc1d234ac750d387fd6768a0',
// '0x31b37a32657cf2915d434b409ee86978058fa91c',
// '0x32495780512fce64a45aca55ccc02202e9018dc5',
// ],
// },
// 'chiado',
// ),
// },
// lineagoerli: {
// interval: 5,
// reorgPeriod: chainMetadata.lineagoerli.blocks!.reorgPeriod!,
// validators: validatorsConfig(
// {
// [Contexts.Hyperlane]: [
// '0xd767ea1206b8295d7e1267ddd00e56d34f278db6',
// '0x4a5d7085ca93c22fbc994dd97857c98fcc745674',
// '0x8327779c3c31fa1ffc7f0c9ffae33e4d804bbd8f',
// ],
// [Contexts.ReleaseCandidate]: [
// '0x52e2c6db923124e646011d172dea644e1cafe583',
// '0x48d540e94ff1acb886df6bfed2b7a92568639364',
// '0xe99e3acc543a535b8eeae98f3d6f39015efe0cd0',
// ],
// },
// 'lineagoerli',
// ),
// },
mumbai: {
interval: 5,
reorgPeriod: chainMetadata.mumbai.blocks!.reorgPeriod!,
@ -277,39 +277,39 @@ export const validatorChainConfig = (
'polygonzkevmtestnet',
),
},
proteustestnet: {
interval: 5,
reorgPeriod: chainMetadata.proteustestnet.blocks!.reorgPeriod!,
validators: validatorsConfig(
{
[Contexts.Hyperlane]: [
'0x79fc73656abb9eeaa5ee853c4569124f5bdaf9d8',
'0x72840388d5ab57323bc4f6e6d3ddedfd5cc911f0',
'0xd4b2a50c53fc6614bb3cd3198e0fdc03f5da973f',
],
[Contexts.ReleaseCandidate]: [
'0xc2ccc4eab0e8d441235d661e39341ae16c3bf8cd',
],
},
'proteustestnet',
),
},
solanadevnet: {
interval: 10,
reorgPeriod: chainMetadata.solanadevnet.blocks!.reorgPeriod!,
validators: validatorsConfig(
{
[Contexts.Hyperlane]: [
'0xec0f73dbc5b1962a20f7dcbe07c98414025b0c43',
'0x9c20a149dfa09ea9f77f5a7ca09ed44f9c025133',
'0x967c5ecdf2625ae86580bd203b630abaaf85cd62',
],
[Contexts.ReleaseCandidate]: [
'0x21b9eff4d1a6d3122596c7fb80315bf094b6e5c2',
],
},
'solanadevnet',
),
},
// proteustestnet: {
// interval: 5,
// reorgPeriod: chainMetadata.proteustestnet.blocks!.reorgPeriod!,
// validators: validatorsConfig(
// {
// [Contexts.Hyperlane]: [
// '0x79fc73656abb9eeaa5ee853c4569124f5bdaf9d8',
// '0x72840388d5ab57323bc4f6e6d3ddedfd5cc911f0',
// '0xd4b2a50c53fc6614bb3cd3198e0fdc03f5da973f',
// ],
// [Contexts.ReleaseCandidate]: [
// '0xc2ccc4eab0e8d441235d661e39341ae16c3bf8cd',
// ],
// },
// 'proteustestnet',
// ),
// },
// solanadevnet: {
// interval: 10,
// reorgPeriod: chainMetadata.solanadevnet.blocks!.reorgPeriod!,
// validators: validatorsConfig(
// {
// [Contexts.Hyperlane]: [
// '0xec0f73dbc5b1962a20f7dcbe07c98414025b0c43',
// '0x9c20a149dfa09ea9f77f5a7ca09ed44f9c025133',
// '0x967c5ecdf2625ae86580bd203b630abaaf85cd62',
// ],
// [Contexts.ReleaseCandidate]: [
// '0x21b9eff4d1a6d3122596c7fb80315bf094b6e5c2',
// ],
// },
// 'solanadevnet',
// ),
// },
};
};

@ -11,9 +11,9 @@
"@ethersproject/experimental": "^5.7.0",
"@ethersproject/hardware-wallets": "^5.7.0",
"@ethersproject/providers": "^5.7.2",
"@hyperlane-xyz/helloworld": "1.5.0",
"@hyperlane-xyz/sdk": "1.5.0",
"@hyperlane-xyz/utils": "1.5.0",
"@hyperlane-xyz/helloworld": "1.5.4-beta0",
"@hyperlane-xyz/sdk": "1.5.4-beta0",
"@hyperlane-xyz/utils": "1.5.4-beta0",
"@nomiclabs/hardhat-etherscan": "^3.0.3",
"@safe-global/api-kit": "^1.3.0",
"@safe-global/protocol-kit": "^1.2.0",

@ -56,11 +56,9 @@ export class AgentCli {
}
}
await Promise.all(
Object.values(managers).map((m) =>
m.runHelmCommand(command, this.dryRun),
),
);
for (const m of Object.values(managers)) {
await m.runHelmCommand(command, this.dryRun);
}
}
protected async init(

@ -27,10 +27,12 @@ function getArgs() {
.string('location')
.check(({ context, chain, location }) => {
const isSet = [!!context, !!chain, !!location];
if (isSet[0] != isSet[1] && isSet[1] == isSet[2]) {
if (isSet[1] == isSet[2]) {
return true;
} else {
throw new Error('Must specify context OR chain and location');
throw new Error(
'Must set either both or neither of chain and location',
);
}
}).argv;
}
@ -52,6 +54,7 @@ async function main() {
const chains: ChainName[] = [];
if (location) {
chains.push(chain!);
if (location.startsWith('s3://')) {
const validator = await S3Validator.fromStorageLocation(location);
announcements.push({

@ -96,6 +96,7 @@ async function main() {
);
deployer = new LiquidityLayerDeployer(multiProvider);
} else if (module === Modules.TEST_RECIPIENT) {
config = objMap(envConfig.core, (_chain) => true);
deployer = new TestRecipientDeployer(multiProvider);
} else if (module === Modules.TEST_QUERY_SENDER) {
// Get query router addresses

@ -24,7 +24,7 @@ import {
import { DeployEnvironment } from '../../src/config';
import { deployEnvToSdkEnv } from '../../src/config/environment';
import { ContextAndRoles, ContextAndRolesMap } from '../../src/config/funding';
import { AgentRole, Role } from '../../src/roles';
import { ALL_AGENT_ROLES, AgentRole, Role } from '../../src/roles';
import { submitMetrics } from '../../src/utils/metrics';
import {
assertContext,
@ -37,13 +37,18 @@ type L2Chain =
| Chains.optimism
| Chains.optimismgoerli
| Chains.arbitrum
| Chains.arbitrumgoerli;
| Chains.arbitrumgoerli
| Chains.scrollsepolia
| Chains.basegoerli
| Chains.polygonzkevmtestnet;
const L2Chains: ChainName[] = [
Chains.optimism,
Chains.optimismgoerli,
Chains.arbitrum,
Chains.arbitrumgoerli,
Chains.scrollsepolia,
Chains.basegoerli,
];
const L2ToL1: ChainMap<ChainName> = {
@ -51,6 +56,9 @@ const L2ToL1: ChainMap<ChainName> = {
arbitrumgoerli: 'goerli',
optimism: 'ethereum',
arbitrum: 'ethereum',
scrollsepolia: 'sepolia',
basegoerli: 'goerli',
polygonzktestnet: 'goerli',
};
// Missing types declaration for bufio
@ -110,9 +118,7 @@ const desiredBalancePerChain: ChainMap<string> = {
gnosis: '0.1',
basegoerli: '0.05',
scrollsepolia: '0.05',
lineagoerli: '0.1',
polygonzkevmtestnet: '0.01',
chiado: '0.0001',
// unused
test1: '0',
@ -155,6 +161,9 @@ const igpClaimThresholdPerChain: ChainMap<string> = {
optimismgoerli: '1',
arbitrumgoerli: '1',
gnosis: '5',
basegoerli: '0.1',
scrollsepolia: '0.1',
polygonzkevmtestnet: '0.1',
// unused
test1: '0',
test2: '0',
@ -409,7 +418,12 @@ class ContextFunder {
key.context,
key.environment,
).contextChainNames;
for (const chain of chains[role as AgentRole]) {
// If the role is not a relayer, we need to look up the chains for Kathy, so we'll fallback to the relayer
const roleToLookup = ALL_AGENT_ROLES.includes(role as AgentRole)
? role
: Role.Relayer;
const chainsPicked = chains[roleToLookup as AgentRole];
for (const chain of chainsPicked) {
chainKeys[chain].push(key);
}
}

@ -13,7 +13,6 @@ import {
ProviderType,
RpcConsensusType,
TypedTransactionReceipt,
chainMetadata,
} from '@hyperlane-xyz/sdk';
import {
Address,
@ -22,16 +21,19 @@ import {
ensure0x,
error,
log,
objMap,
retryAsync,
timeout,
warn,
} from '@hyperlane-xyz/utils';
import { Contexts } from '../../config/contexts';
import { testnetConfigs } from '../../config/environments/testnet4/chains';
import {
hyperlaneHelloworld,
releaseCandidateHelloworld,
} from '../../config/environments/testnet4/helloworld';
import { owners } from '../../config/environments/testnet4/owners';
import { CloudAgentKey } from '../../src/agents/keys';
import { DeployEnvironment } from '../../src/config/environment';
import { Role } from '../../src/roles';
@ -530,8 +532,8 @@ async function updateWalletBalanceMetricFor(
export function getCoreConfigStub(environment: DeployEnvironment) {
const multiProvider = new MultiProvider({
// Desired chains here. Key must have funds on these chains
fuji: chainMetadata.fuji,
solanadevnet: chainMetadata.solanadevnet,
...testnetConfigs,
// solanadevnet: chainMetadata.solanadevnet,
});
const privateKeyEvm = process.env.KATHY_PRIVATE_KEY_EVM;
@ -540,14 +542,19 @@ export function getCoreConfigStub(environment: DeployEnvironment) {
console.log('evmSigner address', evmSigner.address);
multiProvider.setSharedSigner(evmSigner);
const privateKeySealevel = process.env.KATHY_PRIVATE_KEY_SEALEVEL;
if (!privateKeySealevel)
throw new Error('KATHY_PRIVATE_KEY_SEALEVEL env var not set');
// const privateKeySealevel = process.env.KATHY_PRIVATE_KEY_SEALEVEL;
// if (!privateKeySealevel)
// throw new Error('KATHY_PRIVATE_KEY_SEALEVEL env var not set');
const sealevelSigner = Keypair.fromSeed(
Buffer.from(privateKeySealevel, 'hex'),
);
console.log('sealevelSigner address', sealevelSigner.publicKey.toBase58());
// const sealevelSigner = Keypair.fromSeed(
// Buffer.from(privateKeySealevel, 'hex'),
// );
// console.log('sealevelSigner address', sealevelSigner.publicKey.toBase58());
const testnetKeys = objMap(testnetConfigs, (_, __) => ({
address: evmSigner.address,
privateKey: ensure0x(privateKeyEvm),
}));
return {
helloWorld: {
@ -555,18 +562,9 @@ export function getCoreConfigStub(environment: DeployEnvironment) {
[Contexts.ReleaseCandidate]: releaseCandidateHelloworld,
},
environment,
owners: {
fuji: evmSigner.address,
solanadevnet: sealevelSigner.publicKey.toBase58(),
},
owners: owners,
getMultiProvider: () => multiProvider,
getKeys: () => ({
fuji: { address: evmSigner.address, privateKey: ensure0x(privateKeyEvm) },
solanadevnet: {
address: sealevelSigner.publicKey.toBase58(),
privateKey: privateKeySealevel,
},
}),
getKeys: () => testnetKeys,
} as any;
}

@ -342,7 +342,7 @@ export async function getRouterConfig(
? await multiProvider.getSignerAddress(chain)
: owners[chain],
mailbox: core.getContracts(chain).mailbox.address,
hook: igp.getContracts(chain).interchainGasPaymaster.address,
// hook: igp.getContracts(chain).interchainGasPaymaster.address,
};
}
return config;

@ -67,7 +67,7 @@ function getHelloworldKathyHelmValues(
// the list of chains that kathy will send to. Because Kathy
// will fetch secrets for all chains, regardless of skipping them or
// not, we pass in all chains
chains: agentConfig.contextChainNames,
chains: agentConfig.contextChainNames.relayer,
aws: agentConfig.aws !== undefined,
chainsToSkip: kathyConfig.chainsToSkip,

@ -1,10 +1,10 @@
{
"name": "@hyperlane-xyz/sdk",
"description": "The official SDK for the Hyperlane Network",
"version": "1.5.0",
"version": "1.5.4-beta0",
"dependencies": {
"@hyperlane-xyz/core": "1.5.0",
"@hyperlane-xyz/utils": "1.5.0",
"@hyperlane-xyz/core": "1.5.4-beta0",
"@hyperlane-xyz/utils": "1.5.4-beta0",
"@solana/spl-token": "^0.3.8",
"@solana/web3.js": "^1.78.0",
"@types/coingecko-api": "^1.0.10",
@ -58,5 +58,6 @@
"test:unit": "mocha --config .mocharc.json './src/**/*.test.ts'",
"test:hardhat": "hardhat test $(find ./src -name \"*.hardhat-test.ts\")"
},
"types": "dist/index.d.ts"
"types": "dist/index.d.ts",
"stableVersion": "1.5.0"
}

@ -198,7 +198,11 @@ export const bsctestnet: ChainMetadata = {
protocol: ProtocolType.Ethereum,
displayName: 'BSC Testnet',
nativeToken: bnbToken,
rpcUrls: [{ http: 'https://data-seed-prebsc-1-s3.binance.org:8545' }],
rpcUrls: [
{ http: 'https://bsc-testnet.publicnode.com' },
{ http: 'https://bsc-testnet.public.blastapi.io' },
{ http: 'https://bsc-testnet.blockpi.network/v1/rpc/public' },
],
blockExplorers: [
{
name: 'BscScan',
@ -391,7 +395,11 @@ export const sepolia: ChainMetadata = {
protocol: ProtocolType.Ethereum,
displayName: 'Sepolia',
nativeToken: etherToken,
rpcUrls: [{ http: 'https://endpoints.omniatech.io/v1/eth/sepolia/public' }],
rpcUrls: [
{ http: 'https://ethereum-sepolia.blockpi.network/v1/rpc/public' },
{ http: 'https://eth-sepolia.g.alchemy.com/v2/demo' },
{ http: 'https://rpc.sepolia.org' },
],
blockExplorers: [
{
name: 'Etherscan',

@ -72,7 +72,7 @@
"proxyAdmin": "0x4eDBf5846D973c53AF478cf62aB5bC92807521e3",
"mailbox": "0xEf9F292fcEBC3848bF4bB92a96a04F9ECBb78E59",
"validatorAnnounce": "0x3726EE36a2A9e11a40d1ffD7D9A1A16e0154cDA0",
"merkleTreeHook": "0x48D4ede231344A19c92b9cA9Ac8B453116012169",
"merkleTreeHook": "0x221FA9CBaFcd6c1C3d206571Cf4427703e023FFa",
"storageGasOracle": "0x8356113754C7aCa297Db3089b89F87CC125499fb",
"interchainGasPaymaster": "0x1246529edDcA523AfE5c6b9414299633d2E16697",
"aggregationHook": "0xdBabD76358897E68E4964647C1fb8Bf524f5EFdB",

@ -1,7 +1,7 @@
{
"name": "@hyperlane-xyz/utils",
"description": "General utilities and types for the Hyperlane network",
"version": "1.5.0",
"version": "1.5.4-beta0",
"dependencies": {
"@solana/web3.js": "^1.78.0",
"bignumber.js": "^9.1.1",
@ -32,5 +32,6 @@
"types": "dist/index.d.ts",
"files": [
"/dist"
]
],
"stableVersion": "1.5.0"
}

@ -3930,12 +3930,12 @@ __metadata:
languageName: node
linkType: hard
"@hyperlane-xyz/core@1.5.0, @hyperlane-xyz/core@workspace:solidity":
"@hyperlane-xyz/core@1.5.4-beta0, @hyperlane-xyz/core@workspace:solidity":
version: 0.0.0-use.local
resolution: "@hyperlane-xyz/core@workspace:solidity"
dependencies:
"@eth-optimism/contracts": ^0.6.0
"@hyperlane-xyz/utils": 1.5.0
"@hyperlane-xyz/utils": 1.5.4-beta0
"@nomiclabs/hardhat-ethers": ^2.2.1
"@nomiclabs/hardhat-waffle": ^2.0.3
"@openzeppelin/contracts": ^4.8.0
@ -3958,12 +3958,12 @@ __metadata:
languageName: unknown
linkType: soft
"@hyperlane-xyz/helloworld@1.5.0, @hyperlane-xyz/helloworld@workspace:typescript/helloworld":
"@hyperlane-xyz/helloworld@1.5.4-beta0, @hyperlane-xyz/helloworld@workspace:typescript/helloworld":
version: 0.0.0-use.local
resolution: "@hyperlane-xyz/helloworld@workspace:typescript/helloworld"
dependencies:
"@hyperlane-xyz/core": 1.5.0
"@hyperlane-xyz/sdk": 1.5.0
"@hyperlane-xyz/core": 1.5.4-beta0
"@hyperlane-xyz/sdk": 1.5.4-beta0
"@nomiclabs/hardhat-ethers": ^2.2.1
"@nomiclabs/hardhat-waffle": ^2.0.3
"@openzeppelin/contracts-upgradeable": ^4.8.0
@ -4003,9 +4003,9 @@ __metadata:
"@ethersproject/experimental": ^5.7.0
"@ethersproject/hardware-wallets": ^5.7.0
"@ethersproject/providers": ^5.7.2
"@hyperlane-xyz/helloworld": 1.5.0
"@hyperlane-xyz/sdk": 1.5.0
"@hyperlane-xyz/utils": 1.5.0
"@hyperlane-xyz/helloworld": 1.5.4-beta0
"@hyperlane-xyz/sdk": 1.5.4-beta0
"@hyperlane-xyz/utils": 1.5.4-beta0
"@nomiclabs/hardhat-ethers": ^2.2.1
"@nomiclabs/hardhat-etherscan": ^3.0.3
"@nomiclabs/hardhat-waffle": ^2.0.3
@ -4049,12 +4049,12 @@ __metadata:
languageName: unknown
linkType: soft
"@hyperlane-xyz/sdk@1.5.0, @hyperlane-xyz/sdk@workspace:typescript/sdk":
"@hyperlane-xyz/sdk@1.5.4-beta0, @hyperlane-xyz/sdk@workspace:typescript/sdk":
version: 0.0.0-use.local
resolution: "@hyperlane-xyz/sdk@workspace:typescript/sdk"
dependencies:
"@hyperlane-xyz/core": 1.5.0
"@hyperlane-xyz/utils": 1.5.0
"@hyperlane-xyz/core": 1.5.4-beta0
"@hyperlane-xyz/utils": 1.5.4-beta0
"@nomiclabs/hardhat-ethers": ^2.2.1
"@nomiclabs/hardhat-waffle": ^2.0.3
"@solana/spl-token": ^0.3.8
@ -4084,7 +4084,7 @@ __metadata:
languageName: unknown
linkType: soft
"@hyperlane-xyz/utils@1.5.0, @hyperlane-xyz/utils@workspace:typescript/utils":
"@hyperlane-xyz/utils@1.5.4-beta0, @hyperlane-xyz/utils@workspace:typescript/utils":
version: 0.0.0-use.local
resolution: "@hyperlane-xyz/utils@workspace:typescript/utils"
dependencies:

Loading…
Cancel
Save