Getting Started
Developing interoperability technology—or working across multiple chains simultaneously—requires a complex local development setup. You'll often need to run various chains and off-chain services concurrently. Consider a simple application that aggregates traffic from Ethereum, Solana, and Hyperliquid. Such an application would need to operate:
Development Environments:
- Ethereum devnet
- Arbitrum devnet (required for Hyperliquid settlement)
- Solana devnet
- Hyperliquid devnet
Services:
- Relayer
- Indexer
- Database
- Frontend
Programming Languages and Tools:
- Solidity (via solc)
- Rust
- Golang
- Typescript
- Docker
This list continues to grow as projects become more sophisticated. Managing tool versions across different developers becomes a significant challenge. Currently, there are two main approaches for handling complex setups like this: Bazel and Nix. Throughout this book, we'll use Nix—our Goblin-approved solution—to manage these development environments efficiently.