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.)
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.
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:
relayers:
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.