Quickstart
This runs a local single-node chain on your machine. It is disposable and bound to loopback. It is not the public testnet — see Network status for that.
Prerequisites
| Tool | Version | Notes |
|---|---|---|
| Go | per go.mod | Toolchain directive at the top of go.mod is authoritative |
| Node.js | >= 20 | Only needed for the docs site and the Vue frontend |
make | any | Primary build entry point |
You do not need Ignite CLI. The repository builds and runs with make and
go; Ignite is only used for scaffolding new chains.
Build the binary
git clone <repository-url> centerchain
cd centerchain
make install
This runs go mod verify and installs centerchaind into $(go env GOPATH)/bin.
Check it:
centerchaind version
Initialize and start the local devnet
The repository ships a scripted, reproducible devnet under tests/devnet:
bash tests/devnet/init.sh # builds, inits, recovers keys, patches genesis, gentx
bash tests/devnet/start.sh # starts the node
init.sh is idempotent by default: if DEVNET_HOME already holds a valid
genesis and config for centerchain-1, it exits successfully without touching
anything. It does not start the node.
:::danger Reinitialization destroys chain state
REINIT=1 stops the node and deletes the node home and the fixtures file. The
script can also delete an existing home with an invalid or incomplete genesis
even without REINIT=1. Back up the home directory and confirm no node owns the
configured ports before running either script.
:::
| Variable | Default |
|---|---|
DEVNET_HOME | /home/mujdat/.centerchain-devnet |
REINIT | unset (no-op when the home is valid) |
Endpoints after start:
| Service | URL |
|---|---|
| CometBFT RPC | http://127.0.0.1:26657 |
| Cosmos REST | http://127.0.0.1:1317 |
| gRPC | 127.0.0.1:9090 |
The port values have a single source of truth: tests/devnet/ports.json. Read
that file rather than assuming, and confirm /status reports centerchain-1
before querying or signing.
curl -s http://127.0.0.1:26657/status | jq '.result.node_info.network'
The devnet keyring uses the test backend and holds two fixture accounts, a
validator and an issuer. They are test material for this disposable chain only.
tests/devnet/init.sh is the source of truth for their names and balances.
Alternative: Ignite development mode
ignite chain serve
serves installs dependencies, builds, initializes, and starts the chain in
development. Chain-level development options live in config.yml — the chain
ID, the genesis accounts, the bond and mint denoms, the bank denom metadata, and
the faucet.
:::warning localStorage can override the dashboard defaults
The browser dashboards cache their RPC/REST URLs and chain ID in localStorage
under cc.rpc, cc.rest, and cc.chainId. A stale cached value silently
overrides the page default. Clear those keys when the UI points at the wrong
network.
:::
Run the tests
make test # go vet, unit tests, monitor fixtures, production-config checks
make test-race # the same unit tests under the race detector
make test-devnet # devnet integration suite
make lint # golangci-lint
Regenerate protobuf output after changing anything under proto/centerchain/:
make proto-gen
Use the dashboards
Once the node is running, the two operator surfaces are served from ui/:
| Surface | URL |
|---|---|
| Investor dashboard | http://localhost:8000/ui/investor.html |
| Devnet console | http://localhost:8000/ui/devnet-console.html |
Serve them from the repository root with any static file server.
Connect to the public testnet instead
Point the CLI at a public endpoint. RPC and REST share one base URL per node:
centerchaind config chain-id centerchain-testnet-2
centerchaind config node https://rpc0.test.centerchain.org
centerchaind keys list --keyring-backend test
Its tokens are valueless test tokens, and all four of its validators run on a single host. Read Network status before relying on it.