A collection of tools and Docker images for running Taiko network components and related infrastructure, maintained by Nethermind.
This repository includes the following components:
- taiko-mono - Taiko monorepo containing:
packages/protocol- Taiko protocol smart contractspackages/taiko-client- Taiko client implementation
- taiko-geth - Taiko's fork of Go Ethereum
- web3signer - Ethereum signing service
- p2p-bootnode - Rust-based P2P bootnode for network discovery
# Fast clone (recommended) - shallow submodules
git clone --recurse-submodules --shallow-submodules --depth 1 https://github.com/NethermindEth/catalyst-toolset.git
# Or standard clone with full history
git clone --recurse-submodules https://github.com/NethermindEth/catalyst-toolset.git
# If you already cloned without submodules
git submodule update --init --recursive# Clone the repo without submodules
git clone https://github.com/NethermindEth/catalyst-toolset.git
cd catalyst-toolset
# Initialize only specific submodules
git submodule update --init taiko-geth
git submodule update --init taiko-monoThe following Docker images are automatically built and published to Docker Hub:
| Component | Image | Latest Tag |
|---|---|---|
| Taiko Client | nethermind/catalyst-taiko-client |
latest |
| Taiko Protocol | nethermind/catalyst-taiko-protocol |
latest |
| Taiko Geth | nethermind/catalyst-taiko-geth |
latest |
| P2P Bootnode | nethermind/catalyst-p2p-bootnode |
latest |
All components can be built using GitHub Actions workflows with flexible version control.
File: .github/workflows/taiko-client_docker_build.yml
Build the Taiko client from any version of the taiko-mono repository.
Manual Trigger:
- Go to Actions β Catalyst Taiko Client - Docker build and push
- Click Run workflow
- Enter
taiko_version:- Branch name (e.g.,
main) - Tag (e.g.,
v1.2.3) - Commit hash (e.g.,
c459c0d)
- Branch name (e.g.,
- Click Run workflow
Example versions:
main # Latest main branch
v1.0.0 # Specific release tag
c459c0d # Specific commit
File: .github/workflows/taiko-protocol_docker_build.yml
Build the Taiko protocol smart contracts from any version of the taiko-mono repository.
Manual Trigger:
- Go to Actions β Catalyst Taiko Protocol - Docker build and push
- Click Run workflow
- Enter
taiko_version(same options as Client) - Click Run workflow
File: .github/workflows/taiko-geth_docker_build.yml
Build Taiko Geth from any version of the taiko-geth repository.
Manual Trigger:
- Go to Actions β Catalyst Taiko Geth - Docker build and push
- Click Run workflow
- Enter
geth_version:- Branch name (e.g.,
taiko) - Tag (e.g.,
v1.0.0) - Commit hash
- Branch name (e.g.,
- Click Run workflow
Default version: taiko (default branch)
File: .github/workflows/p2p-bootnode_docker_build.yml
Build the P2P bootnode from the native code in this repository.
Triggers:
- Push to
masterbranch - Tag matching
catalyst-p2p-bootnode-v* - Manual trigger via Actions
File: .github/workflows/update-submodules.yml
Automatically checks for updates to submodules and creates pull requests.
Schedule: Runs daily at 2 AM UTC
Manual Trigger:
- Go to Actions β Update Submodules
- Click Run workflow
This workflow will create a PR if any submodules have updates available.
You can build different versions of each component independently:
Example Scenario:
# Build Protocol from v1.2.0
Workflow: Taiko Protocol
Input: taiko_version = v1.2.0
# Build Client from latest main
Workflow: Taiko Client
Input: taiko_version = main
# Build Geth from specific commit
Workflow: Taiko Geth
Input: geth_version = abc123defThis allows testing of different component version combinations without modifying the repository.
cd taiko-mono/packages/taiko-client
docker build -t catalyst-taiko-client .cd taiko-mono/packages/protocol
docker build -t catalyst-taiko-protocol .cd taiko-geth
docker build -t catalyst-taiko-geth .cd p2p-bootnode
docker build -t catalyst-p2p-bootnode .# Update all submodules to latest from tracked branches
git submodule update --remote --recursive
# Update specific submodule
git submodule update --remote taiko-mono
# Checkout specific version in submodule
cd taiko-mono
git fetch origin
git checkout v1.2.3
cd ..
git add taiko-mono
git commit -m "Update taiko-mono to v1.2.3"catalyst-toolset/
βββ .github/workflows/ # CI/CD workflows
β βββ taiko-client_docker_build.yml
β βββ taiko-protocol_docker_build.yml
β βββ taiko-geth_docker_build.yml
β βββ p2p-bootnode_docker_build.yml
β βββ update-submodules.yml
βββ p2p-bootnode/ # Native Rust bootnode
βββ taiko-mono/ # Submodule: Taiko monorepo
β βββ packages/
β βββ protocol/ # Smart contracts
β βββ taiko-client/ # Client implementation
βββ taiko-geth/ # Submodule: Taiko Geth
βββ web3signer/ # Submodule: Web3Signer
All Docker builds support both architectures:
linux/amd64linux/arm64
Images are automatically tagged with:
latest- Most recent build<branch-name>- Branch-specific builds<tag-name>- Release tagssha-<commit>- Git commit SHA
- Default behavior: Builds use the pinned submodule commits
- Manual builds: Override with any branch, tag, or commit
- CI builds: Can test any version combination without code changes
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
Each component maintains its own license. See the respective submodule directories for details.
# Minimal clone for CI/development
git clone --depth 1 --recurse-submodules --shallow-submodules \
https://github.com/NethermindEth/catalyst-toolset.gitgit submodule update --init --recursive --jobs 4Only initialize the submodules you need to reduce clone time and disk usage.
Maintained by: Nethermind