The home for Hyperlane core contracts, sdk packages, and other infrastructure
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Trevor Porter 58425a2de3
feat: add Flow <> Ethereum cbBTC warp route to infra, mild refactor to warp config getters (#4868)
4 days ago
.changeset chore: Revert "feat: Add Zerion config generator (#4870)" (#4880) 4 days ago
.codespell feat: Splitting `rust` workspace into `main` and `sealevel` (#4438) 2 months ago
.github chore: parallelise cli e2e tests (#4873) 5 days ago
.husky fix: docker agent build (#4481) 2 months ago
.vscode chore: root repo vscode settings for `rust-analyzer` (#4556) 2 months ago
.yarn chore: Upgrade yarn to 4.5.1 (#4818) 3 weeks ago
rust fix: Make main and sealevel workspaces compilable with our forked dependencies (#4875) 4 days ago
solidity Version Packages (#4848) 5 days ago
tools/grafana feat: validator dashboard template (#4097) 5 months ago
typescript feat: add Flow <> Ethereum cbBTC warp route to infra, mild refactor to warp config getters (#4868) 4 days ago
vectors Support cosmos contract byte lengths other than 32 (#3147) 10 months ago
.dockerignore feat: Report git commit hash as agent metadata (#4282) 3 months ago
.eslintignore Convert packages from CJS to ESM (#3531) 8 months ago
.eslintrc chore: Enable no-restricted-imports eslint rule (#4329) 3 months ago
.gitattributes fix: docker agent build (#4481) 2 months ago
.gitignore chore: new svm warp route artifacts (#4531) 2 months ago
.gitmodules add polygon hook and ism (#3038) 7 months ago
.lintstagedrc Fix prettier + githook (#503) 3 years ago
.nvmrc chore: add .nvmrc to specify node version (#3712) 7 months ago
.prettierignore Sealevel (#2404) 1 year ago
.prettierrc Convert packages from CJS to ESM (#3531) 8 months ago
.registryrc feat: more app contexts (#4874) 5 days ago
.yarnrc.yml chore: Upgrade yarn to 4.5.1 (#4818) 3 weeks ago
CODE_OF_CONDUCT.md Merge branch 'main' into cli-2.0 5 months ago
CONTRIBUTING.md Add code spellcheck CI job (#3467) 8 months ago
DISCLAIMER.md Hyperlane packages and typescript rebrand (#1077) 2 years ago
Dockerfile chore: Upgrade yarn to 4.5.1 (#4818) 3 weeks ago
LICENSE.md chore: add APACHE2.0 license 4 years ago
README.md docs: Add jq as prerequisite since yarn install won't work without it (#4262) 4 months ago
codecov.yml chore: use new forge feature for filtering coverage (#4318) 3 months ago
funding.json chore: create `funding.json` (#3919) 6 months ago
mono.code-workspace chore: include txids in indexing logs; add vscode config for rust-ana… (#4537) 2 months ago
package.json chore: Upgrade yarn to 4.5.1 (#4818) 3 weeks ago
tsconfig.json feat: Improve WarpCore validation errors (#4116) 4 months ago
yarn.lock Version Packages (#4848) 5 days ago

README.md

Hyperlane

GitHub Actions codecov Foundry License: MIT

Versioning

Note this is the branch for Hyperlane v3.

V2 is deprecated in favor of V3. The code for V2 can be found in the v2 branch. For V1 code, refer to the v1 branch.

Overview

Hyperlane is an interchain messaging protocol that allows applications to communicate between blockchains.

Developers can use Hyperlane to share state between blockchains, allowing them to build interchain applications that live natively across multiple chains.

To read more about interchain applications, how the protocol works, and how to integrate with Hyperlane, please see the documentation.

Working on Hyperlane

Prerequisites

Install jq

You need jq installed on your machine. You can download it from official page or use a package manager of your choice.

Foundry

First ensure you have Foundry installed on your machine.

Run the following to install foundryup:

curl -L https://foundry.paradigm.xyz | bash

Then run foundryup to install forge, cast, anvil and chisel.

foundryup

Check out the Foundry Book for more information.

Node

This repository targets v20 of node. We recommend using nvm to manage your node version.

To install nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

To install version 20

nvm install 20
nvm use 20

You should change versions automatically with the .nvmrc file.

Workspaces

This monorepo uses Yarn Workspaces. Installing dependencies, building, testing, and running prettier for all packages can be done from the root directory of the repository.

  • Installing dependencies

    yarn install
    
  • Building

    yarn build
    

If you are using VSCode, you can launch the multi-root workspace with code mono.code-workspace, install the recommended workspace extensions, and use the editor settings.

Logging

The typescript tooling uses Pino based logging, which outputs structured JSON logs by default. The verbosity level and style can be configured with environment variables:

LOG_LEVEL=DEBUG|INFO|WARN|ERROR|OFF
LOG_FORMAT=PRETTY|JSON

Rust

See rust/README.md

Release Agents

  • Tag the commit with the current date in the format agents-yyyy-mm-dd; e.g. agents-2023-03-28.
  • Create a Github Release with a changelog against the previous version titled Agents MMMM DD, YYYY, e.g. Agents March 28, 2023.
  • Include the agent docker image tag in the description of the release
  • Create a summary of change highlights
  • Create a "breaking changes" section with any changes required
  • Deploy agents with the new image tag (if it makes sense to)

Releasing packages to NPM

We use changesets to release to NPM. You can use the release script in package.json to publish.

For an alpha or beta version, follow the directions here.