The docker-compose-chaosnet.yml Compose Specification configures Docker services to set up a fully functional, local development environment tailored for Nibiru Chain, orchestrating several Nibiru-specific containers.
Features:
- Different ports are utilized to mimic a multi-chain configuration on a single machine.
- Enables testing of cross-chain transactions, chain health monitoring, and more in a local Docker context across two chains.
docker compose -f docker-compose-chaosnet.yml updocker compose -f docker-compose-chaosnet.yml --profile ibc up docker compose -f docker-compose-chaosnet.yml --profile heartmonitor updocker compose up: Start the services.docker compose down: Stop the services.docker compose restart: Restart all services.docker compose ps: List containers, their status, ports, etc.docker compose logs: View std output from containers
nibiru-0andnibiru-1(Service): Represents two distinct Nibiru Chain nodes (nibiru-0 and nibiru-1) running on different ports, using unique mnemonics and chain IDs, imitating two independent blockchain networks.
pricefeeder-0andpricefeeder-1(Service): Two price feeder services that push price data to the respective Nibiru nodes.
An IBC relayer is set up to connect the two chains using hermes.
hermes-keys-task-0andhermes-keys-task-1(Service): Tasks to generate keys for the validators onnibiru-0andnibiru-1.hermes-client-connection-channel-task(Service): Creates a new channel between the two chains AND a client connection underlying this new channel.hermes(Service): Runs and maintains an IBC relayer for the two chains. Relayers are off-chain processes responsible for reading data from one chain and submitting it to another. These relayers listen for IBC events on one chain, then construct and broadcast a corresponding transaction to the other chain. Relayers essentially submit packets between chains.
Brief IBC reference:
Put simply, connections represent a secure communication line between two blockchain to transfer IBC packets (data). Once a connection is established, light client of two chains, usually called the source chain and destination chain, is established.
Once a connection is established, channels can be formed. A channel represents a logical pathway for specific types communication over the connection (like token transfers and other relaying of IBC packets.
-
heartmonitor-db: A postgres database for the heart monitor. -
heartmonitor: An indexing solution that populates a DB based on events and block responses emitted from Nibiru nodes. -
graphql: GraphQL API for the heart monitor data. Used in the Nibiru web app and other off-chain tools.
Repository: NibiruChain/go-heartmonitor.