feat: bootstrap cmd + Docker ZK support + ICT framework + Nix #261
Open
hard-nett wants to merge 7 commits into
Open
feat: bootstrap cmd + Docker ZK support + ICT framework + Nix #261hard-nett wants to merge 7 commits into
hard-nett wants to merge 7 commits into
Conversation
…, and thin Python installer - Add `terpd bootstrap` with --network (morocco-1/90u-4), --cosmovisor, --service, --pruning flags - Multi-RPC failover uses distinct endpoints instead of duplicating one - Add `terpd statesync` debug/test subcommands (list, info, query, test, fetch) - Create thin Python installer that delegates node setup to `terpd bootstrap` - Register StatesyncCmd and BootstrapCmd in root, add Bootstrap config to app.toml Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Python installer belongs on the terp.network website, not in terp-core. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- bootstrap: fix genesis URL to terpnetwork/networks repo, remove dead RPC endpoint, add --setup-only flag for headless setup - Dockerfile: add WASMVM_SOURCE arg (github/local) for ZK-flavored builds - docker.mk: overhaul with multi-target builds (runtime, oline, localterp), ZK dep staging, and WASMVM_SOURCE-aware go.mod rewriting - Add ict-E2E workflow (replaces old interchaintest-E2E) - Add ict.mk makefile for interchain test runner - Add bootstrap_ict_test.go with production RPC connectivity tests - Bump buf.yaml cosmos-sdk proto dep to v0.53.0
Three devShells for unified developer experience: - nix develop .#vanilla — Go-only, downloads prebuilt wasmvm - nix develop .#zk — Go + Rust nightly, compiles zk-wasmvm locally - nix develop (default) — full env with dep tooling (cargo-sort, python) Includes: Go 1.26, golangci-lint, gofumpt, buf, make, gcc, Docker, cargo-sort, and direnv integration via .envrc. WASMVM_SOURCE and TERP_FLAVOR env vars set per shell to match the Docker build arg convention from docker.mk.
Adds terpd snapshot -o <file> --home <dir> that: - Freezes a running terpd process (SIGSTOP/SIGCONT), never SIGTERM (safe for PID 1 in containers) - Extracts data/ + wasm/ only (never config/ — preserves node identity) - Supports lz4/zstd/gzip compression - Reads pruning config and measures actual data size for context - Includes --split flag for chunking large archives - Fully network-agnostic: no chain-id, denom, or network assumptions Includes ICT test (snapshot_ict_test.go) that validates the full cycle: local chain → extract snapshot → verify resume → restore to new node → verify peer sync → chunk and reassemble. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
terpnetwork/networksrepo, remove dead RPC endpoint (rpc.terp.network), add--setup-onlyflag for headless node setup without startingWASMVM_SOURCEbuild arg (github/local) enables building ZK-flavored terpd images from localzk-wasmvmfork alongside standard upstream buildsmake docker-stage-zk), WASMVM_SOURCE-awarego.modrewriting for reproducible buildsict-E2E.ymlworkflow (replaces oldinterchaintest-E2E),ict.mkmakefile, andbootstrap_ict_test.gowith production RPC connectivity testsbuf.yamlcosmos-sdk dep updated to v0.53.0Test plan
go build ./cmd/terpd— vanilla build succeedsterpd bootstrap --network morocco-1 --setup-only— headless bootstrap completesmake docker-build— standard Docker image buildsmake docker-build WASMVM_SOURCE=local— ZK Docker image builds (requires staged zk-deps)go test -tags ict ./cmd/terpd/cmd/ -run TestProductionRPC— RPC connectivity test passes