daitchain

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.

Phase 0 caveat. Most custom-module message handlers currently return 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

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

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