Skip to main content

Consensus protocol

OmbraChain combines three independent reward mechanisms that together form the consensus:

MechanismReward subjectTriggerSection
PoATUMiner that produced AI inferenceTASK_REWARD per taskPoATU
PoTUBlock proposerEvery block (burn-based)PoTU
Validator AttestationValidators that signed last blockFixed reward at proposalAttestation

Plus universal rules:

  • All txs are Ed25519-signed and canonically hashed
  • Block production is deterministic per proposer slot
  • Fee splits and burn rates depend on fork height (see Forks)

Flow per block

1. Mempool collects signed txs

2. Proposer slot opens (round-robin via attestation list)

3. Proposer assembles block:
- Selects pending txs ordered by fee desc, then arrival
- Computes block hash = sha256(canonicalJson(blockHeader))
- Signs block with Ed25519

4. Validators receive block, verify:
- Block hash matches re-computed hash
- Proposer signature valid
- Every tx signature valid
- Every tx state-transition valid

5. Validators broadcast ATTESTATION (signed block hash)

6. Once attestation quorum reached, block is final

7. Rewards applied:
- TASK_REWARD txs in block → PoATU to miners
- Proposer earns block burn floor (PoTU)
- Validators that attested → ATTESTATION_REWARD

Comparison

FeaturePoW (Bitcoin)PoS (Ethereum)PoATU (OmbraChain)
Energy useHigh (hash brute force)Low (stake-weighted)Medium (AI inference)
Work outcomeDiscarded hashesNone — pure attestationUsable AI output (chat, images, code)
Reward sourceCoinbase + feesFees + issuanceTask fees + thinking tokens
Hardware lock-inASIC-friendlyAny nodeGPU-friendly (LLM inference)
Sybil resistanceHash power costStake sizeProvable AI work + attestation

Determinism

Two independent nodes that replay the same block sequence MUST reach byte-identical state. This requires:

  • Canonical JSON — insertion-order serialization, no whitespace, BigInteger fields stringified
  • Sorted iteration — any map iteration in state transitions uses sorted keys
  • No system time — txs carry their own timestamps, never use Date.now() in apply logic
  • Bounded numeric — all amounts in BigInt micro-OMBRA, never floats

Cross-language SDKs (TS, Python, Java, C#, C++, Rust, Go) all produce bit-exact tx hashes from the same input.

Next: PoATU →