Skip to content
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

Helloworld program and tooling #2744

Merged
merged 77 commits into from
Oct 3, 2023
Merged

Conversation

tkporter
Copy link
Collaborator

@tkporter tkporter commented Sep 20, 2023

Description

  • HelloWorld program added to rust/sealevel/programs/helloworld
  • Some changes to the Sealevel tooling
    • Refactored the old warp-route-specific deploy management into a more generic framework for idempotently deploying and managing router apps in Sealevel
      • Added helloworld deploy tooling
      • Added ISM & owner checking to this router deployment tooling
    • Added --require-tx-approval to prevent txs from being called without first prompting
    • Added a bunch of new commands for creating txs with certain instructions that were needed along the way -- e.g. setting an ISM, deploying a specific multisig ISM (previously only one would be deployed as a part of core deploy
    • Added a command for configuring multisig ISMs, multisig-ism-message-id configure, that takes in a JSON file of multisig ISM configs and applies them onchain
    • A bit of cleanup / refactor - e.g. removed some old commands like mailbox receive
  • Added foreignDeployments into RouterApp
    • Because RouterApp takes in contractsMap: HyperlaneContractsMap<Factories>,, which require attached contracts, a new readonly foreignDeployments: ChainMap<Address> = {}, is added to the constructor
    • These foreignDeployments are considered in the return value of remoteChains(chainName: string), but not in chains() -- this means that chains() now concretely means "chains that can be deployed to / interacted with and that there is an entry in contractsMap for, and remoteChains(chainName: string) returns any and all remote chains, regardless of whether they can be deployed to / interacted with
  • Added complete ISM support to the HyperlaneRouterChecker
    • when checking the ISM, if there's not a match and the ISM is a config, then the ISM will be deployed
    • Also added RouterViolation, before it'd just throw if there was a violation
  • Updated the Helloworld, IGP, and core tooling to work when AEE deployments are also configured
  • Moved to Routing ISM -> Aggregation ISM -> Merkle / Message ID multisig setup

Some things to note:

  • atm there are a few places that have a TODO saying to remove something after some multisig txs are executed, I plan to revisit these after we get some sigs
  • I've deployed the mainnet sealevel version of helloworld, but haven't been able to enroll it in the EVM chains yet. Waiting for some multisig activity here

Drive-by changes

Related issues

#2502

Backward compatibility

I believe it should all be backward compatible

Testing

Deployed, ran checkers, etc

tkporter added 30 commits August 8, 2023 17:29
Copy link
Contributor

@daniel-savu daniel-savu left a comment

Choose a reason for hiding this comment

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

Submitting first round of comments as I need to refresh the page due to the new commit :/

rust/sealevel/client/src/helloworld.rs Outdated Show resolved Hide resolved
rust/sealevel/client/src/router.rs Show resolved Hide resolved
rust/sealevel/client/src/multisig_ism.rs Outdated Show resolved Hide resolved
rust/sealevel/client/src/router.rs Outdated Show resolved Hide resolved
Copy link
Contributor

@daniel-savu daniel-savu left a comment

Choose a reason for hiding this comment

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

LGTM, mostly reviewed the client changes and since it's just scripting I avoided being very nitpicky. I also didn't focus too much on the router / gas filtering logic, let me know if I should ✌️

rust/sealevel/client/src/router.rs Outdated Show resolved Hide resolved
@tkporter tkporter enabled auto-merge (squash) October 3, 2023 13:22
@tkporter tkporter disabled auto-merge October 3, 2023 13:22
@tkporter tkporter merged commit 3f3306c into main Oct 3, 2023
@tkporter tkporter deleted the trevor/helloworld-program-and-tooling branch October 3, 2023 14:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

3 participants