A Starknet implementation of Hyperlane
This repository is an implementation of the Hyperlane protocol for Starknet app-chains. You can learn more about Hyperlane here.
The implementation guidelines can be found here.
Feature | Supported |
---|---|
Mailbox | ✅ |
Merkle Tree Hook | ✅ |
Protocol Fee Hook | ✅ |
Aggregation Hook | ❌ |
Routing Hook | ✅ (unaudited) |
Pausable Hook | ❌ |
Multisig ISM | ✅ |
Pausable ISM | ✅ |
Aggregation ISM | ✅ |
Routing ISM | ✅ |
Interchain Gas Payment | ❌ |
Warp Routes | ✅ |
The contracts are located in the contracts/
directory. It's a scarb
project, so you can use the scarb
CLI to build it.
It uses Starknet Foundry
for tests.
See the contracts README for more information.
Once installed, you can compile the contracts by executing this command:
scarb build
To format your code:
scarb fmt
Run the tests using snforge:
snforge test
To run the integration tests:
Once installed, build the contracts:
cd contracts && scarb build && cd -
Open another terminal, start a new Katana instance:
katana -b 1000 &
Run evm -> strk messaging test on the first terminal:
cd rust && cargo test -- test_mailbox_evm_to_strk
Once the test passed, kill the katana instance:
pkill katana
Restart another instance for the second test (strk -> evm):
cd rust && cargo test -- test_mailbox_strk_to_evm
This section details the steps to deploy Hyperlane contracts on Starknet.
We have a set of javascript scripts available for this purpose. To use them, you first need to install dependencies and populate the env variables:
cd scripts/
bun install # or using npm
cp .env.example .env # populate the variables inside
(in the .env
, the beneficiary address is the account that will be used to recover funds from the protocol fee)
From there, you can run either:
bun run deploy
to deploy the Hyperlane contracts,- or
bun run update-hooks
to update the hooks of the deployed contract.
Constructors parameters can be specified in the contract_config.json
.
The rust repository is strictly used for tests purposes.
This project is licensed under the MIT license. See LICENSE for more information.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!