daitchain

x/staking_tiers Real (skeleton)

Six-tier locked-stake schema. Each tier is a stake floor and a set of rights. Ties together every other DAIT module: x/compute_market checks Node tier before allowing a provider, x/messaging uses tier for daily quota, x/pouw uses tier for slashing, x/tee_attest uses tier as a registration prerequisite.

The tiers

TierStake floor (DAIT)Rights
User0submit jobs, pay gas
Heavy consumer369priority queue
Node3,690 per registered GPUhost compute, earn fees + PoUW credits
Supernode36,900 per multi-GPU rackpriority routing, 1.25x reward multiplier
Validator369,000 self-bondpropose blocks
Oracle3,690,000 + manual approvalDNS, contract negotiation

Tier-specific slashing

The keeper exposes SlashFractionFor(tier, offense) and SlashFractionForBadAttestation() for the slashing pipeline to call.

Messages

MsgRegisterTier   { signer, tier_id }
MsgUpgradeTier    { signer, new_tier_id }
MsgUnregister     { signer }
MsgRegisterGPU    { signer, gpu_uuid, attestation_pubkey }
MsgUnregisterGPU  { signer, gpu_uuid }
MsgUpdateParams   { authority, params }   // gov-only

Queries

State

KeyPrefixRegistration       address -> Registration{tier, joined_height}
KeyPrefixGPU                (address, gpu_uuid) -> GPURegistration
KeyPrefixApprovalRequest    pending Oracle-tier approvals (gov-gated)

Cross-module hooks

What's wired today

Real Module wiring, params storage, KV layout, all read queries (Params, TierForAddress, GPUsForAddress, ListByTier), ValidateBasic for every Msg, gov-only MsgUpdateParams.

Phase 1 Msg handlers (RegisterTier, UpgradeTier, RegisterGPU, UnregisterGPU) currently return ErrNotImplemented. Slashing pipeline integration, Oracle approval queue, tier auto-demotion on stake unbonding.

See also