-
Notifications
You must be signed in to change notification settings - Fork 265
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
Sealevel: Kathy messages are sent to/from sealevel chains #2503
Comments
Sealevel support proposalOverviewWe've so far taken a somewhat top-down approach to adding Sealevel support; the warp UI, hyp-deploy have been updated before the SDK and Utils packages. We can continue that trend with HelloWorld/Kathy or we can make a bigger upfront investment and redesign the SDK+Utils now. Option 1: Shortest pathKathy is built around HelloWorld, which is just a thin wrapper around the App/Deployer/Checker abstractions in the SDK. So updating just HelloWorld to be sealevel compatible wouldn't make sense. Sealevel support for Kathy would require a new, parallel HelloWorld version that live alongside the EVM one. This option is still less work than Option 2 but feels short-sighted. Option 2: Multi-env SDKUpdating the common utilities (e.g. address encoder, msg formatter) and SDK primitives (e.g. MultiProvider, App, Checker, Deployer) feels like a daunting task but also seems like the natural next step for Sealevel support. I won't lay out a complete plan just yet until we have agreement on this direction but structural changes would include:
The new architecture would ideally be a plugin-like architecture with sub-packages. Something that allows SDK users to bundle only the libs for the environments they care about. Otherwise all EVM-only users would be unintentionally including in large libs for Sealevel (and soon Cosmos). IMHO, this option is tricky but feasible. |
Continuing on the last post above ^, we decided on Discord to try option 1.5. We will not modify existing classes in SDK but we will add new multi-protocol versions (e.g. So far I've got a Draft PR open with a new MultiProtocolProvider based partly on the one I made for Warp UI. This introduces a new set of Provider-related types and builders, which allow us to support different libraries (Viem, Ethers6, SolanaWeb3, etc.) Next I took a stab at a Children Apps like RouterApp add some functionality like fetching ISMs or quoting gas. We'll def still want those features somewhere. Another step down, TokenApp adds a transfer method, i.e. a method to translate a user intent into a tx. Like @yorhodes pointed out last week, this is where the TokenApp overlaps with my ITokenAdapter in the Warp UI:
I guess it will need to be something like: |
### Description - Reorganize code into separate files - Move in utils from other packages - Fix export structure - Add multi-protocol address utils ### Drive-by changes Lint fix in token package ### Related issues Pre-req for #2503 ### Backward compatibility No, some exports have been removed from the SDK and moved to utils
### Description - Create MultiProtocolProvider - Create ProviderType enum and TypedProvider - Add viem, solana, and ethers6 dev deps to SDK - Upgrade Typescript and Eslint across monorepo (required for Viem) - Break out metadata mgmt code into new ChainMetadataManager class - Implement basic MultiProtocolApp and MultiProtocolRouterApp - Create Evm and Sealevel router adapters - Refactor contract types into separate file to avoid circular dep ### Related issues #2503 ### Backward compatibility Yes
I deployed a helloworld program onto solanadevnet - here's the current state of things:
Wanted to share this stuff ASAP though just to unblock you as much as possible Here's info on how to get the # of sent or received messages and/or the remote routers:
And to send a hello world message from solanadevnet: This is the expected instruction data passed in:
The expected accounts passed in can be found here hyperlane-monorepo/rust/sealevel/programs/helloworld/src/processor.rs Lines 157 to 174 in dd7ff72
/// 0. [writeable] Program storage.
|
### Description - Add support for multi-protocol to the HelloWorld app and Kathy service - Create a new MultiProtocolCore ### Related issues #2503 ### Backward compatibility Yes ### Testing - Tested new Kathy abstraction on existing EVM while we wait for Sealevel Kathy to be unblocked - Tested using local config stubs for both EVM and Sealevel
### Description - Adapter fixes from further testing of multi-protocol Kathy - Add router address for hyperlane context helloworld - Improve stat collection to handle cross-protocol msgs - Re-enable actual env config for Kathy ### Drive-by changes - Fix for transaction hash checking in utils ### Related issues #2503 ### Backward compatibility Yes ### Testing Ran Kathy manually using `getCoreConfigStub` and forced stat output Tested live in cloud with help from @tkporter --------- Co-authored-by: Trevor Porter <trkporter@ucdavis.edu>
Kathy updates for sealevel are now live! |
Partially blocked by #2502 - I think we can start this ticket before that's finished though
Tasks
The text was updated successfully, but these errors were encountered: