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
| Tier | Stake floor (DAIT) | Rights |
|---|---|---|
| User | 0 | submit jobs, pay gas |
| Heavy consumer | 369 | priority queue |
| Node | 3,690 per registered GPU | host compute, earn fees + PoUW credits |
| Supernode | 36,900 per multi-GPU rack | priority routing, 1.25x reward multiplier |
| Validator | 369,000 self-bond | propose blocks |
| Oracle | 3,690,000 + manual approval | DNS, contract negotiation |
Tier-specific slashing
- Node downtime: -3% (300 bps)
- Supernode downtime: -6% (600 bps)
- Bad attestation (any tier): -100%
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
Params- module parameters and full tier tableTierForAddress(addr)- current tier registration for an addressGPUsForAddress(addr)- registered GPU UUIDs for an addressListByTier(tier_id, pagination)- paginated address list per tier
State
KeyPrefixRegistration address -> Registration{tier, joined_height}
KeyPrefixGPU (address, gpu_uuid) -> GPURegistration
KeyPrefixApprovalRequest pending Oracle-tier approvals (gov-gated)
Cross-module hooks
x/tee_attestcallsStakingTiersKeeper.HasGPURegistration(addr, gpu_uuid)when accepting an attestation.x/compute_marketcallsHasTierForProvider(addr, NODE)when acceptingMsgCreateProvider.x/messaginglooks up tier to determine daily message quota baseline.
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
- x/tee_attest consumes the GPU registration to bind attestations
- x/pouw reads tier for slashing rates
- Source: x/staking_tiers/