Skip to content

astraly-labs/hyperlane_starknet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ Hyperlane Starknet ⚡

A Starknet implementation of Hyperlane

https://hyperlane.xyz

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.

Supported Features

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

Project structure

Contracts

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.

Pre-requisites

  • Install Scarb (see here)
  • Install Starknet Foundry (see here)

Build

Once installed, you can compile the contracts by executing this command:

scarb build

Format

To format your code:

scarb fmt

Testing

Run the tests using snforge:

snforge test

Integration Tests

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

Scripts

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.

Rust

The rust repository is strictly used for tests purposes.

📖 License

This project is licensed under the MIT license. See LICENSE for more information.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

This project follows the all-contributors specification. Contributions of any kind welcome!