project screenshot 1
project screenshot 2
project screenshot 3

Starship

Let's be sure the code we ship will work in Production. How to sleep in peace?? Answer is Tests, Tests, Tests....... Starship is an automated way to spin up infra using a simple Yaml file. That infra can be used to do all kind of testing (Frontend, Backend, Chain Upgrades, etc.)

Starship

Created At

ETHGlobal Paris

Project Description

The development lifecycle from code to mainnet is very big, testnets take too long and with so many interchain interactions it becomes much more complex. Like in general people use Docker compose methods to emulate an environment, that is a complex process because emulating realyers, multi node setup, multi chain interaction is complex and takes a lot of time with Docker methods.

Starship emulates real chains, relayers, validators at scale within seconds and everything with a simple Yaml input file and we also provide a framework to write test cases in multiple languages (GO, Rust, Javascript) which is integrated with your CI/ CD.

As for this project we are emulating Mini Cosmos, Mini Eth and Axelar network.

How it's Made

In Starship one can define the infra required with a simple config file. The config file one specifies is merged with the default values.yaml(opens in a new tab) file before the infra is spun up. All supported directives are present in the default values.yaml. We will go over most used ones here.

Here is a basic example that will spin up:

2 chains with 2 validators each Hermes relayer between them (by default will create the IBC-transfer ports and channels) Explorer instance: ping-pub with the 2 chains configuration Registry service: Analogus to cosmos/chain-registry, following the same schemas

chains:

  • name: osmosis-1 type: osmosis numValidators: 2 ports: rest: 1313 rpc: 26653
  • name: gaia-1 type: cosmos numValidators: 2 ports: rest: 1317 rpc: 26657

relayers:

  • name: osmos-gaia type: hermes replicas: 1 chains:
    • osmosis-1
    • gaia-1

explorer: enabled: true ports: rest: 8080

registry: enabled: true ports: rest: 8081

Note this is a basic configuration file. We have various other directives and operations we can perform just with the config file directives that we will go into details into.

background image mobile

Join the mailing list

Get the latest news and updates