-
Notifications
You must be signed in to change notification settings - Fork 545
feat: deploy to solanadevnet #6797
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #6797 +/- ##
=====================================
Coverage 0.00% 0.00%
=====================================
Files 1 1
Lines 14 14
=====================================
Misses 14 14
🚀 New features to boost your workflow:
|
| @@ -1 +1 @@ | |||
| 46aa193b85107269facaa13423fb4686a5e31acb | |||
| 600214faeaedbe6b1a26090e70389d7a415ba11f | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
will change to a main commit once hyperlane-xyz/hyperlane-registry#1069 is merged
… trevor/solanadevnet-v3
|
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 6 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the 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. 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughA new Solana Devnet testnet chain, Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant InfraConfig
participant ChainEnum
participant Validator
participant GasOracle
participant MultisigISM
participant SolanaDevnet
User->>InfraConfig: Deploys/updates configs
InfraConfig->>ChainEnum: Recognizes solanadevnet domain
InfraConfig->>Validator: Registers solanadevnet validator
InfraConfig->>GasOracle: Sets gas/oracle params for solanadevnet
InfraConfig->>MultisigISM: Sets ISM threshold/validators for solanadevnet
User->>SolanaDevnet: Interacts via updated configs and infrastructure
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~18 minutes Poem
✨ Finishing Touches🧪 Generate unit tests
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed 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)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🧹 Nitpick comments (3)
typescript/infra/config/environments/testnet4/funding.ts (1)
84-125: Might want to consider adding solanadevnet to the other funding sections too.I notice
solanadevnetis missing from bothdesiredKathyBalancePerChainandigpClaimThresholdPerChainconfigurations. While it might not need funding, having it explicitly listed (even with '0' values) would make the configuration more complete and consistent.Consider adding these entries for completeness:
desiredKathyBalancePerChain: { // ... other entries + solanadevnet: '0', solanatestnet: '0', // ... rest }, igpClaimThresholdPerChain: { // ... other entries + solanadevnet: '0', solanatestnet: '0', // ... rest },rust/sealevel/environments/testnet4/multisig-ism-message-id/solanatestnet/hyperlane/multisig-config.json (1)
39-65: Quick sanity pass on new validator addressesLoads of fresh networks added in this hunk. Worth running an automated lint to ensure:
- Each
validators[0]string is exactly 42 chars (0x+ 40 hex).- No duplicate addresses got pasted by accident between chains.
- All lower-case to keep checksum tooling happy (or use checksummed case consistently).
Tell me if ye’d like a tiny script to scan the JSON for length / duplication – happy to whip one up.
Also applies to: 76-85, 132-140
rust/sealevel/environments/testnet4/gas-oracle-configs.json (1)
68-85: Duplicate-looking overhead & gasPrice combos – intentional?Top-level
solanadevnetrepeats some links already present undersolanatestnet, but gas/overhead values differ (e.g.overhead: 600000vs151966). Make sure the agent picking which entry to read (local vs remote direction) grabs the right numbers, else fee estimates could swing wildly.A small comment block in the file explaining directionality would stop future heads-scratching.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (19)
.registryrc(1 hunks)rust/main/config/testnet_config.json(38 hunks)rust/main/hyperlane-core/src/chain.rs(3 hunks)rust/sealevel/environments/testnet4/gas-oracle-configs.json(3 hunks)rust/sealevel/environments/testnet4/multisig-ism-message-id/solanadevnet/hyperlane/multisig-config.json(1 hunks)rust/sealevel/environments/testnet4/multisig-ism-message-id/solanatestnet/hyperlane/multisig-config.json(8 hunks)rust/sealevel/environments/testnet4/solanadevnet/core/program-ids.json(1 hunks)rust/sealevel/environments/testnet4/warp-routes/SOL-solanadevnet/program-ids.json(1 hunks)rust/sealevel/environments/testnet4/warp-routes/SOL-solanadevnet/token-config.json(1 hunks)typescript/infra/config/environments/testnet4/agent.ts(6 hunks)typescript/infra/config/environments/testnet4/aw-validators/hyperlane.json(1 hunks)typescript/infra/config/environments/testnet4/funding.ts(1 hunks)typescript/infra/config/environments/testnet4/gasPrices.json(1 hunks)typescript/infra/config/environments/testnet4/owners.ts(1 hunks)typescript/infra/config/environments/testnet4/supportedChainNames.ts(1 hunks)typescript/infra/config/environments/testnet4/tokenPrices.json(1 hunks)typescript/infra/config/environments/testnet4/validators.ts(1 hunks)typescript/infra/scripts/sealevel-helpers/print-gas-oracles.ts(1 hunks)typescript/sdk/src/consts/multisigIsm.ts(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
typescript/infra/config/environments/testnet4/validators.ts (1)
typescript/infra/config/registry.ts (1)
getReorgPeriod(94-97)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (64)
- GitHub Check: infra-test
- GitHub Check: cli-e2e-matrix (cosmosnative, warp-rebalancer)
- GitHub Check: cli-e2e-matrix (cosmosnative, warp-check)
- GitHub Check: cli-e2e-matrix (cosmosnative, warp-send)
- GitHub Check: cli-e2e-matrix (cosmosnative, warp-extend-recovery)
- GitHub Check: cli-e2e-matrix (cosmosnative, warp-bridge-1)
- GitHub Check: cli-e2e-matrix (cosmosnative, warp-extend-config)
- GitHub Check: cli-e2e-matrix (cosmosnative, warp-deploy)
- GitHub Check: cli-e2e-matrix (cosmosnative, warp-read)
- GitHub Check: cli-e2e-matrix (ethereum, warp-init)
- GitHub Check: cli-e2e-matrix (cosmosnative, warp-apply)
- GitHub Check: cli-e2e-matrix (cosmosnative, warp-extend-basic)
- GitHub Check: cli-e2e-matrix (cosmosnative, warp-init)
- GitHub Check: cli-e2e-matrix (cosmosnative, relay)
- GitHub Check: cli-e2e-matrix (cosmosnative, core-deploy)
- GitHub Check: cli-e2e-matrix (cosmosnative, core-apply)
- GitHub Check: cli-e2e-matrix (ethereum, warp-send)
- GitHub Check: cli-e2e-matrix (cosmosnative, warp-bridge-2)
- GitHub Check: cli-e2e-matrix (cosmosnative, core-read)
- GitHub Check: cli-e2e-matrix (cosmosnative, core-init)
- GitHub Check: cli-e2e-matrix (ethereum, warp-rebalancer)
- GitHub Check: cli-e2e-matrix (cosmosnative, warp-apply-submitters)
- GitHub Check: cli-e2e-matrix (ethereum, warp-read)
- GitHub Check: cli-e2e-matrix (ethereum, warp-extend-recovery)
- GitHub Check: cli-e2e-matrix (ethereum, warp-bridge-1)
- GitHub Check: cli-e2e-matrix (cosmosnative, core-check)
- GitHub Check: cli-e2e-matrix (ethereum, warp-extend-config)
- GitHub Check: cli-e2e-matrix (ethereum, warp-check)
- GitHub Check: cli-e2e-matrix (ethereum, warp-extend-basic)
- GitHub Check: cli-e2e-matrix (ethereum, warp-apply)
- GitHub Check: cli-e2e-matrix (ethereum, warp-apply-submitters)
- GitHub Check: cli-e2e-matrix (ethereum, warp-bridge-2)
- GitHub Check: cli-e2e-matrix (ethereum, warp-deploy)
- GitHub Check: cli-e2e-matrix (ethereum, core-read)
- GitHub Check: cli-e2e-matrix (ethereum, relay)
- GitHub Check: cli-e2e-matrix (ethereum, core-deploy)
- GitHub Check: cli-e2e-matrix (ethereum, core-apply)
- GitHub Check: cli-e2e-matrix (ethereum, core-init)
- GitHub Check: cli-e2e-matrix (ethereum, core-check)
- GitHub Check: env-test-matrix (mainnet3, optimism, core)
- GitHub Check: env-test-matrix (mainnet3, inevm, core)
- GitHub Check: env-test-matrix (mainnet3, ethereum, core)
- GitHub Check: env-test-matrix (mainnet3, arbitrum, core)
- GitHub Check: env-test-matrix (mainnet3, optimism, igp)
- GitHub Check: env-test-matrix (testnet4, sepolia, core)
- GitHub Check: env-test-matrix (mainnet3, inevm, igp)
- GitHub Check: env-test-matrix (mainnet3, arbitrum, igp)
- GitHub Check: env-test-matrix (mainnet3, ethereum, igp)
- GitHub Check: coverage-run
- GitHub Check: cosmos-sdk-e2e-run
- GitHub Check: cli-install-test-run
- GitHub Check: yarn-test-run
- GitHub Check: build-and-push-to-gcr
- GitHub Check: build-and-push-to-gcr
- GitHub Check: e2e-matrix (starknet)
- GitHub Check: e2e-matrix (cosmosnative)
- GitHub Check: e2e-matrix (evm)
- GitHub Check: e2e-matrix (sealevel)
- GitHub Check: e2e-matrix (cosmwasm)
- GitHub Check: agent-configs (mainnet3)
- GitHub Check: agent-configs (testnet4)
- GitHub Check: lint-rs
- GitHub Check: test-rs
- GitHub Check: lander-coverage
🔇 Additional comments (21)
.registryrc (1)
1-1: Mind the registry commit while it’s still greener than a swamp.The new hash looks fine in isolation, but please double-check that the referenced commit in hyperlane-registry is already merged on
main; otherwise the infra scripts may fetch a dangling state once this PR lands.
If PR #1069 is still in flight, consider holding or bumping the hash again after it merges.typescript/infra/config/environments/testnet4/tokenPrices.json (1)
41-42: Looks good – price table keeps its onions in order.
solanadevnetslots neatly betweensepoliaandsolanatestnet, value mirrors its sibling nets, and no duplicates appear. No action needed.typescript/infra/config/environments/testnet4/aw-validators/hyperlane.json (1)
133-135: Confirm validator address ties into multisig threshold, aye?We’re adding a single validator for
solanadevnet. Make sure:
- The same address shows up in the multisig-ISM config with a matching threshold of 1.
- Any agent or relayer allow-lists include this key.
A quick grep across
multisig-config.jsonand the TS constants should do.typescript/infra/config/environments/testnet4/gasPrices.json (1)
158-161: Double-check gas price decimals – only one digit?
solanadevnetis set todecimals: 1while most Solana-flavoured entries stick with 1 or 9. Confirm this matches the unit expected by downstream funding scripts; otherwise folks might end up short on lamports faster than a donkey on ice.typescript/infra/config/environments/testnet4/owners.ts (1)
23-25: Ownership stanza keeps parity with sibling Solana nets.
solanadevnetflagged as “SVM not supported here” just likesolanatestnet. Consistent and tidy – no further swamp-stirring required.typescript/infra/config/environments/testnet4/funding.ts (1)
72-72: Well, look what we got here - another SVM chain joining the party!The addition looks good and follows the same pattern as other Solana chains. Setting the balance to '0' is consistent with the "no funding for SVM chains" approach.
typescript/infra/config/environments/testnet4/supportedChainNames.ts (1)
42-42: Nice and tidy addition there!Adding
solanadevnetto the supported chain names list is spot on. Good job keeping it in alphabetical order betweensepoliaandsolanatestnet- that's the kind of attention to detail that keeps things organized.typescript/infra/scripts/sealevel-helpers/print-gas-oracles.ts (1)
140-146: Please verify the Solanatestnet warp-route directory and configsI confirmed the new Solanadevnet routes exist under
rust/sealevel/environments/testnet4/warp-routes/SOL-solanadevnet/token-config.json
and the multisig files under testnet4 look good.However, I didn’t find a plain
SOL-solanatestnetfolder—only
SOL-solanatestnet-sonicsvmtestnet/. Make sure your new connections for
starknetsepolia,sepolia, andparadexsepoliaare actually defined in that directory (or update it as needed).– Verify that
token-config.jsoninSOL-solanatestnet-sonicsvmtestnet/includes entries for those three chains.
– Confirm the directory name aligns with what your script expects.rust/sealevel/environments/testnet4/warp-routes/SOL-solanadevnet/program-ids.json (1)
1-10: Program IDs look solid—JSON can be mergedRan a quick length check on both base58 entries (44 chars each) and confirmed the hex strings are 32-byte public keys. Everything’s formatted properly and there are no red flags.
rust/sealevel/environments/testnet4/solanadevnet/core/program-ids.json (1)
1-8: Verified Solana Program ID FormatAll six program IDs are 44 characters long—so they’re properly formatted Base58 Solana addresses.
Next steps:
- Run a quick RPC check to ensure each program is actually deployed on your solanadevnet cluster. For example:
solana account 5MhSYXV2wZPLv21h1xiaG8R9Ddq9Nw5n1sfwDxVaErDt --url https://api.devnet.solana.com- Repeat for the other IDs to confirm they exist and are owned by an executable account.
typescript/infra/config/environments/testnet4/agent.ts (1)
88-88: Well, well, looks like we got ourselves a new swamp resident!The
solanadevnetadditions across all agent roles are consistent and follow the established pattern. Good to see it's enabled for Validator, Relayer, and Scraper - that's what ya need for a proper testnet deployment.Also applies to: 140-140, 192-192
typescript/infra/config/environments/testnet4/validators.ts (1)
610-619: Now that's a proper validator setup for the new chain!The
solanadevnetvalidator configuration looks solid - follows all the right patterns with the 5-second interval, proper reorg period handling, and a single validator address for the Hyperlane context. Perfect for getting this testnet up and running.rust/sealevel/environments/testnet4/warp-routes/SOL-solanadevnet/token-config.json (1)
1-14: Double-check the InterchainGasPaymaster addressesConfiguration looks solid—native vs synthetic is correct, 9 decimals on point, and metadata is in place. I tried an automated base58 decode but the sandbox didn’t have the
base58module, so I couldn’t verify those keys. Please confirm these are valid Solana base58 public keys:• File: rust/sealevel/environments/testnet4/warp-routes/SOL-solanadevnet/token-config.json (lines 1–14)
– hBHAApi5ZoeCYHqDdCKkCzVKmBdwywdT3hMqe327eZB (solanatestnet)
– 254Aisi2cNsehJkfagbxrdvPEUbojJPsU5FfmrEFF41C (solanadevnet)Once you’ve verified them, we’re good to roll!
rust/main/config/testnet_config.json (1)
30-36: No duplicate interchainSecurityModule addresses detected – manual deployment check still neededI ran the uniqueness check against rust/main/config/testnet_config.json and found no duplicates. That said, you’ll still want to confirm each address truly points at the live testnet ISM (e.g. verify code-hash or version tag) before we push this to prod—one mistyped hex and the whole lane’s borked.
Please double-check the following ranges in testnet_config.json:
- Lines 30–36
- Lines 96–100
- Lines 168–172
- Lines 238–242
- Lines 306–311
rust/sealevel/environments/testnet4/multisig-ism-message-id/solanadevnet/hyperlane/multisig-config.json (1)
1-355: Well-structured multisig configuration, looks good to me!This configuration file covers a comprehensive range of testnet environments with sensible threshold settings. The consistent structure across all 72 testnet configs makes it easy to maintain, and the threshold choices (1 for single validators, 2 for multi-validator setups) strike the right balance for testnet security without over-complicating things.
typescript/sdk/src/consts/multisigIsm.ts (1)
2112-2120: Solid config for the new development network!The solanadevnet multisig setup looks just right for a dev environment - threshold of 1 with a single Abacus Works validator keeps things simple while maintaining the multisig structure. This matches the pattern you've got for other development networks and should work well for testing and development purposes.
rust/main/hyperlane-core/src/chain.rs (3)
332-332: Nice domain ID choice there!The SolanaDevnet domain ID (1399811151) follows the logical sequence after SolanaMainnet (1399811149) and SolanaTestnet (1399811150). Clean and consistent - just how we like our domain numbering.
515-515: Right where it belongs!Adding SolanaDevnet to the testnet classification makes perfect sense for a development network. Keeps everything organized and properly categorized.
557-557: Proper protocol grouping!Placing SolanaDevnet with the other Sealevel protocol domains is spot on. It keeps all the Solana-based networks together where they belong in the protocol classification.
rust/sealevel/environments/testnet4/multisig-ism-message-id/solanatestnet/hyperlane/multisig-config.json (1)
285-291: Threshold 1 leaves the gate wide-open – double-check security assumptionsYer entry for
solanadevnetsetsthresholdto1, meaning a single validator can sign off on every message. That’s fine if the validator address is rock-solid and under tight control, but it’s a big risk if decentralisation or fault-tolerance is desired.
Give this a once-over with the security folk: do ye really want single-sig authority here, or should the threshold bump to 2+ like the heavier-used chains?rust/sealevel/environments/testnet4/gas-oracle-configs.json (1)
44-50: Token decimals mismatch might biteFor
solanatestnet → solanadevnetyou’ve set:tokenExchangeRate: "1500000000000000" # 1.5 × 10¹⁵ tokenDecimals: 9While that lines up (1 unit == 1.5 SOL lamports), most other chains use 18-decimals and a 1.5 × 10¹⁹ exchange rate. Just double-check any maths downstream isn’t assuming 18-decimals everywhere, else conversions will ogre-smash balances.
| @@ -1 +1 @@ | |||
| 7c3439aa17ec03d064732d3d3e6bdae73dd6f98a | |||
| 600214faeaedbe6b1a26090e70389d7a415ba11f | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
update after merging hyperlane-xyz/hyperlane-registry#1069 (review)
| }, | ||
| { | ||
| address: '0x967c5ecdf2625ae86580bd203b630abaaf85cd62', | ||
| address: '0x6424142536c9e40b61076571cba83a255835b799', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
how come this changed?
| PragmaDevnet = 6363709, | ||
| ScrollSepolia = 534351, | ||
| Sepolia = 11155111, | ||
| SolanaDevnet = 1399811151, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why does this need to be added this time?
Description
Drive-by changes
Related issues
Backward compatibility
Testing
Summary by CodeRabbit
New Features
Configuration Updates
Bug Fixes