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 | ❌ |
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 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!
This section details the steps to deploy Hyperlane contracts on Starknet. Note that the deployment script will set a basic configuration for all the required contracts. Further configuration process might be required based on the use case. Constructors parameters can be specified in the contract_config.json
.
Firstly, set the following environment variables, important for the deployment process:
STARKNET_RPC_URL=
ACCOUNT_ADDRESS=
BENEFICIARY_ADDRESS=
NETWORK=
PRIVATE_KEY=
The beneficiary address is the account that will be used to recover funds from the protocol fee.
Once set, the contracts can be deployed using this command( assuming ts-node
is installed):
ts-node deploy.ts