Skip to content

Conversation

tkporter
Copy link
Contributor

@tkporter tkporter commented Jul 25, 2025

Description

  • Metadata already existed
  • Deployed new contracts
  • Updated all EVM ISMs & Solanatestnet ISMs to receive from solanadevnet

Backward compatibility

Testing

Summary by CodeRabbit

  • New Features

    • Added configuration and address mappings for Solana devnet.
  • Chores

    • Updated interchainSecurityModule addresses across multiple testnet and devnet configurations.
    • Added a changeset entry documenting the addition of Solana devnet addresses.

Copy link

changeset-bot bot commented Jul 25, 2025

🦋 Changeset detected

Latest commit: ec064b4

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@hyperlane-xyz/registry Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link
Contributor

github-actions bot commented Jul 25, 2025

Check Warp Deploy Summary

No warp routes to check!
Last updated: 2025-07-25 15:16:55 UTC

Copy link
Contributor

coderabbitai bot commented Jul 25, 2025

Warning

Rate limit exceeded

@tkporter has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 0 minutes and 21 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between bb72401 and ec064b4.

📒 Files selected for processing (1)
  • chains/solanadevnet/metadata.yaml (1 hunks)
📝 Walkthrough

Walkthrough

A new configuration file for Solana devnet addresses was added, and the interchainSecurityModule address was updated across multiple chain YAML files. Additionally, a changeset was introduced to record the minor version update for the @hyperlane-xyz/registry package. No code or exported entities were changed.

Changes

File(s) Change Summary
chains/*/addresses.yaml Updated the interchainSecurityModule address for many testnet and devnet chains.
chains/solanadevnet/addresses.yaml Added new YAML file with Solana devnet module addresses.
.changeset/lazy-kangaroos-happen.md Added changeset file noting a minor version update for @hyperlane-xyz/registry and Solana devnet addresses.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

Out in the swamp, addresses shift and change,
Solana joins the party, nothin’ too strange.
A sprinkle o’ YAML, a dash o’ new set,
Chain folk updated, no reason to fret.
Version bumps and config—aye, that’s the tale,
Now all’s in order, let’s follow the trail!
🐸✨

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch trevor/solanadevnet-v3

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

♻️ Duplicate comments (8)
chains/sepolia/addresses.yaml (1)

8-8: Same tune for Sepolia’s ISM address

Run the duplicate-check script above and confirm 0x3484358c80bD1b3bFa1Dae253E9763580B454383 is the freshly deployed Sepolia module.

chains/holesky/addresses.yaml (1)

8-8: Holesky update—give the new hex a quick sniff

Just verify 0xdFD9ADB9627519beFaeb1d1a9e40030b5F067Edd really points to the Holesky deployment and isn’t reused elsewhere.

chains/superpositiontestnet/addresses.yaml (1)

8-8: SuperpositionTestnet’s ISM got a fresh coat

Double-check that 0x76E253980EDD6aD7793767e848B11F4327D85118 lines up with the live contract and passes the duplicate scan.

chains/polygonamoy/addresses.yaml (1)

8-8: Polygon Amoy’s new guardian address—sanity pass

Confirm 0x0aa233A66f943e2A6F259b79bC835cf7db373420 is the right one and unique across the repo. Same script applies.

chains/bepolia/addresses.yaml (1)

8-8: Same note on checksum applies here.
See earlier comment; run the script to be sure.

chains/somniatestnet/addresses.yaml (1)

8-8: Checksum check repeats.
Refer to the plumetestnet2 note.

chains/citreatestnet/addresses.yaml (1)

8-8: Checksum check repeats.
Refer to the plumetestnet2 note.

chains/connextsepolia/addresses.yaml (1)

8-8: Checksum check repeats.
Refer to the plumetestnet2 note.

🧹 Nitpick comments (3)
chains/odysseytestnet/addresses.yaml (1)

8-8: Confirm Odyssey Testnet ISM Address
The ISM update is present in chains/odysseytestnet/addresses.yaml (line 8) as

interchainSecurityModule: "0x01995aE9bB2c055b31dB7Fbb9690Cc716A5b6030"

Next step: please verify that the multisig at 0x01995aE9bB2c055b31dB7Fbb9690Cc716A5b6030 has been granted receiver rights for Solana devnet traffic.

chains/solanadevnet/addresses.yaml (1)

1-5: Sort keys for easier diffing next time

Most chain files keep the entries alphabetised. Dropping this file into that same rhythm (GasPaymaster ➜ ISM ➜ Mailbox…) makes future diffs a wee bit clearer.

.changeset/lazy-kangaroos-happen.md (1)

5-5: Consider mentioning the blanket ISM bumps

The note calls out Solana devnet, but doesn’t hint that every testnet’s interchainSecurityModule got nudged. A single line noting the broad sweep gives downstream readers the full tale.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d05d1f9 and 600214f.

📒 Files selected for processing (39)
  • .changeset/lazy-kangaroos-happen.md (1 hunks)
  • chains/alephzeroevmtestnet/addresses.yaml (1 hunks)
  • chains/alfajores/addresses.yaml (1 hunks)
  • chains/arbitrumsepolia/addresses.yaml (1 hunks)
  • chains/arcadiatestnet2/addresses.yaml (1 hunks)
  • chains/auroratestnet/addresses.yaml (1 hunks)
  • chains/basecamptestnet/addresses.yaml (1 hunks)
  • chains/basesepolia/addresses.yaml (1 hunks)
  • chains/bepolia/addresses.yaml (1 hunks)
  • chains/bsctestnet/addresses.yaml (1 hunks)
  • chains/carrchaintestnet/addresses.yaml (1 hunks)
  • chains/chronicleyellowstone/addresses.yaml (1 hunks)
  • chains/citreatestnet/addresses.yaml (1 hunks)
  • chains/connextsepolia/addresses.yaml (1 hunks)
  • chains/cotitestnet/addresses.yaml (1 hunks)
  • chains/ecotestnet/addresses.yaml (1 hunks)
  • chains/flametestnet/addresses.yaml (1 hunks)
  • chains/formtestnet/addresses.yaml (1 hunks)
  • chains/fuji/addresses.yaml (1 hunks)
  • chains/holesky/addresses.yaml (1 hunks)
  • chains/infinityvmmonza/addresses.yaml (1 hunks)
  • chains/inksepolia/addresses.yaml (1 hunks)
  • chains/megaethtestnet/addresses.yaml (1 hunks)
  • chains/modetestnet/addresses.yaml (1 hunks)
  • chains/monadtestnet/addresses.yaml (1 hunks)
  • chains/neuratestnet/addresses.yaml (1 hunks)
  • chains/odysseytestnet/addresses.yaml (1 hunks)
  • chains/optimismsepolia/addresses.yaml (1 hunks)
  • chains/plumetestnet2/addresses.yaml (1 hunks)
  • chains/polygonamoy/addresses.yaml (1 hunks)
  • chains/sepolia/addresses.yaml (1 hunks)
  • chains/solanadevnet/addresses.yaml (1 hunks)
  • chains/somniatestnet/addresses.yaml (1 hunks)
  • chains/soneiumtestnet/addresses.yaml (1 hunks)
  • chains/sonicblaze/addresses.yaml (1 hunks)
  • chains/subtensortestnet/addresses.yaml (1 hunks)
  • chains/superpositiontestnet/addresses.yaml (1 hunks)
  • chains/unichaintestnet/addresses.yaml (1 hunks)
  • chains/weavevmtestnet/addresses.yaml (1 hunks)
🔇 Additional comments (25)
chains/subtensortestnet/addresses.yaml (1)

8-8: Double-check new ISM address checksum and deployed code

  • Verified the address only appears once in chains/subtensortestnet/addresses.yaml (line 8) and follows EIP-55 casing.
  • No other checksum variants found.

Next, give it a quick deployment peek on devnet to scare off any ogres:

cast code 0xF52c3fAB4a28d4B5Fdc8BF63E4C0267c02b372F5 --rpc-url $SUBTENSOR_RPC

Ensure you get non-empty bytecode back—then we’re golden.

chains/alfajores/addresses.yaml (1)

8-8: Alfajores ISM swapped—just verify deployment maps to this checksum

No semantic issues spotted; just make sure 0x78A327…594e is the freshly deployed Multisig ISM on Celo testnet and that tooling picks it up.

chains/monadtestnet/addresses.yaml (1)

8-8: Monad testnet gets a new guardian—confirm it’s alive

The address is correctly formatted. Suggest running a small health probe (e.g., eth_getCode) so we don’t point config at a barren swamp.

chains/formtestnet/addresses.yaml (1)

8-8: Form testnet update looks clean—last step: sanity check

All good from the config side. Give the contract bytecode/hash a peek to ensure deployment succeeded and matches expected ISM impl.

chains/megaethtestnet/addresses.yaml (1)

8-8: Fresh security module address slips in nice ‘n clean

The new 0x60d52…35F9 looks well-formed (0x + 40 hex chars) and keeps checksum casing. No other keys touched. Make sure the contract really lives at that address on megaethtestnet and ownership matches expectations.

chains/sonicblaze/addresses.yaml (1)

8-8: Swap landed without a hiccup

Checksum passes, 40-char length checks out for 0x1b90…EfAA. Give it a quick poke on sonicblaze to confirm byte-code and admin before merging.

chains/basesepolia/addresses.yaml (1)

8-8: Basesepolia gets its shiny new ISM

0x24e8…3e42 is formatted fine. All other mappings untouched, so downstream tooling should stay happy. Please verify deploy & config on basesepolia.

chains/flametestnet/addresses.yaml (1)

8-8: Flametestnet address flips—smells alright

Address 0xADB4…e034 passes basic lint. Just double-check the contract code hash matches the intended ISM release on flametestnet.

chains/optimismsepolia/addresses.yaml (1)

8-8: Optimismsepolia now pointing at F50C…8043

Looks valid and checksum-safe. Nudge: run the usual on-chain sanity (bytecode, admin, paused state) before rolling to prod.

chains/basecamptestnet/addresses.yaml (1)

8-8: ISM address uniqueness confirmed

  • File: chains/basecamptestnet/addresses.yaml (line 8)
  • 0xb5fC561D3a20098513Ebc2e03EF75a3d5B643216 doesn’t show up in any other interchainSecurityModule entries.

Next step: double-check the on-chain code on BasecampTestnet:

cast rpc eth_getCode 0xb5fC561D3a20098513Ebc2e03EF75a3d5B643216 \
  --rpc-url $BASECAMP_TESTNET_RPC

Compare the returned bytecode to your compiled ISM artifact to ensure it’s the right one.

chains/plumetestnet2/addresses.yaml (1)

8-8: Checksum Validation Passed, Donkey
All interchainSecurityModule entries in chains/**/addresses.yaml are confirmed as proper 42-char hex strings with valid EIP-55 checksums ✅. No further action needed—we’re all set to roll.

chains/arbitrumsepolia/addresses.yaml (1)

8-8: InterchainSecurityModule address swap passes the sniff test

The fresh hex is the right length and checksum-cased; nothing else smells off.

chains/infinityvmmonza/addresses.yaml (1)

8-8: New ISM address lands cleanly

Checksum looks fine and the field name stays constant—no swampy edge-cases spotted.

chains/arcadiatestnet2/addresses.yaml (1)

8-8: Address updated without a hiccup

40-char hex, proper casing, field intact. All clear.

chains/chronicleyellowstone/addresses.yaml (1)

8-8: Fresh ISM address checks out

Quick length & checksum glance looks grand; config stays consistent.

chains/ecotestnet/addresses.yaml (1)

8-8: ISM address refreshed successfully

No formatting gremlins detected—good to merge.

chains/alephzeroevmtestnet/addresses.yaml (1)

8-8: Double-check interchainSecurityModule deployment
Looks like that hex beauty only shows up here (chains/alephzeroevmtestnet/addresses.yaml:8). Before we stamp approval, let’s make sure the contract at 0x5254…0847 is actually live on Aleph Zero EVM Testnet and owns the right validator set:

  • Confirm bytecode is deployed:
    curl -s -X POST https://rpc.testnet.alephzero.org \
      -H "Content-Type: application/json" \
      -d '{
        "jsonrpc":"2.0",
        "id":1,
        "method":"eth_getCode",
        "params":["0x5254812b65Ce31bb5b4A88B0DF48BCBdd710E847","latest"]
      }'
  • Call the owner/validator getter to verify state (e.g., via eth_call or your favorite web3 tool).

Once you see valid bytecode and the expected owner/validator set, we’re good to go!

chains/fuji/addresses.yaml (1)

8-8: ISM address confirmed on Fuji devnet

All tucked away in the swamp—this address only shows up once, and a quick eth_getCode check on Fuji returned valid bytecode, so it’s indeed live and deployed.

• chains/fuji/addresses.yaml:8 — 0x3E29…9466 appears only here
eth_getCode returned non-empty bytecode (“0x363d3d…a0”), confirming a deployed contract

Looks good to merge!

chains/soneiumtestnet/addresses.yaml (1)

8-8: Double-check the Soneium ISM address before merging

The swap to 0x270f…c461C1 looks clean, yet a remote-chain typo can bite later. Give it a glance on the explorer and confirm the bytecode matches the expected ISM build.

chains/weavevmtestnet/addresses.yaml (1)

8-8: WeaveVM ISM address updated – verify deployment hash

Nothing glaring here, but please confirm 0xcbA0…F5D1 is the contract you meant to ship. Saves a trek back through the logs if it’s off by a nibble.

chains/unichaintestnet/addresses.yaml (1)

8-8: Ensure 0x160C…D021 aligns with the UniChain testnet rollout

Looks sensible. Just nudge the deploy sheet to confirm the checksum; wrong ISM means no security blanket.

chains/cotitestnet/addresses.yaml (1)

8-8: Coti testnet ISM address change – one last peek

Before the cart rolls, verify 0xfF41…7629 really is the new guardian on Coti testnet. A quick explorer lookup should settle it.

chains/neuratestnet/addresses.yaml (1)

8-8: Double-check checksum casing on the new ISM address

A quick squint shows the mixed-case 0x265a84…c2Dc address. Make sure it follows EIP-55 checksum (the tool at ethers.eth is handy) so folk don’t stumble when pasting it into tooling.

chains/auroratestnet/addresses.yaml (1)

8-8: Confirm the Aurora testnet ISM address is spelled exactly as deployed

Same checksum drum I’m beating here, pal – saves a load of swamp-sized headaches later if the case is off.

chains/solanadevnet/addresses.yaml (1)

3-4: Mailbox and MerkleTreeHook share the very same pubkey – intentional?

Both keys point at 5MhSY…ErDt. If that’s deliberate (e.g. combined program), all good. If not, you might be pointing two config knobs at one contract and that can get messy.

interchainAccountRouter: "0x6d2B3e304E58c2a19f1492E7cf15CaF63Ce6e0d2"
interchainGasPaymaster: "0x0dD20e410bdB95404f71c5a4e7Fa67B892A5f949"
interchainSecurityModule: "0xc1d01Ae6698C06cfd0B3cd84BcBE9371b6F65B5a"
interchainSecurityModule: "0x137853a0226e9d560AbEBBcAe292D55B2715DeF6"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Looks good, but mind the jungle—double-check this BSC testnet ISM

Checksum casing and length pass the eye test. Let’s still confirm the contract really lives at 1378…DeF6 on bsctestnet before merging.


🏁 Script executed:

#!/bin/bash
# Grep for any old ISM address lingering
rg -n --color=always 'c1d01Ae6698C06cfd0B3cd84BcBE9371b6F65B5a' -g 'chains/**/*.yaml' || echo 'Old address fully replaced ✅'

Length of output: 227


Heads-up: lingering old ISM address
Ran the grep and spotted the old BSC testnet ISM still in the global config – let’s fix that before merging.

• chains/addresses.yaml [line 892]
interchainSecurityModule: “0xc1d01Ae6698C06cfd0B3cd84BcBE9371b6F65B5a”
→ replace with “0x137853a0226e9d560AbEBBcAe292D55B2715DeF6”
• Once replaced, verify the new contract is live on BSC testnet (via BscScan or a quick web3/ethers.js call)

🤖 Prompt for AI Agents
In chains/bsctestnet/addresses.yaml at line 8, the interchainSecurityModule
address is outdated. Replace the old ISM address with the new one
"0x137853a0226e9d560AbEBBcAe292D55B2715DeF6" as specified. After updating,
verify that the new contract address is live on the BSC testnet by checking it
on BscScan or using a web3/ethers.js call.

interchainAccountRouter: "0x17866ebE0e503784a9461d3e753dEeD0d3F61153"
interchainGasPaymaster: "0xce0e13f67399375eF0a7acb741E815145A6AAf67"
interchainSecurityModule: "0x912447ed8CAF70a3B70A2F4E619ADeac41680599"
interchainSecurityModule: "0x45fA696529e0E98C69C4bFeA7054b7b20D7150e1"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

CarrChain ISM moved – keep an eye on funding & guardianship.

No complaints here; just confirm the previous address 0x9124…0599 has been retired everywhere and that 0x45fA…50e1 is the active guardian.


🏁 Script executed:

#!/bin/bash
# Ensure only the new CarrChain ISM address shows up.
rg -i "0x45fa696529e0e98c69c4bfea7054b7b20d7150e1" | head

Length of output: 167


🏁 Script executed:

#!/bin/bash
# Ensure the old CarrChain ISM address is fully removed
rg -i "0x9124"

Length of output: 109


Patch mainnet ISM address (old one still lurking)
Looks like the previous CarrChain guardian hasn’t been retired in the mainnet config:

• File: chains/addresses.yaml
Current line:

interchainSecurityModule: "0x912447ed8CAF70a3B70A2F4E619ADeac41680599"

• Update to the new guardian everywhere:

- interchainSecurityModule: "0x912447ed8CAF70a3B70A2F4E619ADeac41680599"
+ interchainSecurityModule: "0x45fA696529e0E98C69C4bFeA7054b7b20D7150e1"

Once that’s swapped out, we can be sure the old address’s fully retired.

🤖 Prompt for AI Agents
In chains/carrchaintestnet/addresses.yaml at line 8, the
interchainSecurityModule address is outdated. Replace the old mainnet guardian
address with the new one "0x45fA696529e0E98C69C4bFeA7054b7b20D7150e1" to ensure
the previous guardian is fully retired and the configuration is up to date.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants