Quickstart
Spin up a 4-node DAIT devnet on a single machine in roughly five minutes. No GPUs required for this path; TEE attestation paths are stubbed in dev mode and accept any quote.
ErrNotImplemented. The chain boots,
produces blocks, and accepts standard Cosmos transactions today; the
Phase 1 milestone (Q3 2026) lights up the DAIT-specific message
handlers. The quickstart below is the one we use internally for
ceremony rehearsal.
Prerequisites
- Linux or macOS host. Ubuntu 22.04+ tested.
go1.22+,make,git.python3,openssl,jqfor the genesis tooling.- Roughly 8 GB RAM and 20 GB free disk for a 4-node local devnet.
1. Build the binary
git clone https://github.com/dait-chain/dait-chain cd dait-chain make build ln -sf "$(pwd)/build/evmd" /usr/local/bin/daitd
The chain currently builds as evmd (the upstream cosmos/evm fork name); the symlink to daitd matches the operator scripts. Once the DAIT-branded binary is vendored the symlink step goes away.
2. Generate keys for 4 monikers
cd scripts/devnet DAIT_APPLY=1 ./gen-validator-keys.sh
This writes /tmp/dait-keys/dait-validator-{1..4}/ with consensus + operator keys plus a manifest.json. The script is dry-run by default; the DAIT_APPLY=1 prefix is required to actually mutate disk.
3. Build the canonical genesis
DAIT_APPLY=1 ./gen-genesis.sh
Produces /tmp/dait-genesis/genesis.json with the four pre-registered validators, default DAIT module params, and a small bank balance for the operator addresses so they can self-bond at start.
4. Boot the trinity
for n in 1 2 3; do HOME_DIR=/tmp/dait-keys/dait-validator-$n \ P2P_PORT=$((26656 + 100*(n-1))) \ RPC_PORT=$((26657 + 100*(n-1))) \ DAIT_APPLY=1 ./start-devnet.sh single --moniker dait-validator-$n & done
You should see all three daitd processes commit a block within ~3 seconds. CometBFT requires >=2/3 voting power for block 1, so the chain refuses to advance until at least two of the three are connected.
5. Promote validator 4 (the Quartet step)
HOME_DIR=/tmp/dait-keys/dait-validator-4 \ DAIT_APPLY=1 ./start-devnet.sh quartet
This broadcasts MsgCreateValidator from validator-4's operator key. After the next block, the active validator set is 4. This rehearses the on-chain validator-add flow that runs in production at Hour 1 of the real ceremony.
6. Verify
./start-devnet.sh verify
Prints height, peer count, and the active validator set. Quorum-at-risk warnings print on stderr if only one validator is voting.
What you have now
- A 4-validator local chain producing blocks at
~999ms. - Cosmos REST on
http://127.0.0.1:1317(validator-1). - Tendermint RPC on
http://127.0.0.1:26657. - EVM JSON-RPC on
http://127.0.0.1:8545. ChainID4090. - gRPC on
127.0.0.1:9090.
Hello world: send a tx
# standard cosmos bank send (works today) daitd tx bank send \ $(daitd keys show dait-validator-1 -a --keyring-backend test --home /tmp/dait-keys/dait-validator-1) \ dait1examplerecipientaddress... \ 100udait \ --keyring-backend test \ --home /tmp/dait-keys/dait-validator-1 \ --chain-id dait_4090-1 -y
What is not wired yet
The DAIT-specific Msg handlers (MsgVerifyAttestation, MsgCommitReceipt, MsgRegisterTier, etc.) compile against the proto stubs but return ErrNotImplemented. They go live with Phase 1 alpha. Everything cosmos-sdk-standard works today: bank, staking, gov, distribution, IBC.
See also
- Run a validator for production hardware sizing
- Run a compute host for the TEE setup path
- EVM JSON-RPC for ethers / viem / web3.js usage