consensus

Halot uses deterministic verifier selection plus simple majority voting. This page focuses on how the network decides approval, rejection, or escalation before anything is submitted for final settlement.


Verifier Selection

Verifiers are selected from the 0G registry using an assignmentSeed during job preparation. Selection is uniform across eligible verifiers for the service category and optional service filter; stake does not weight the draw in the current registry contract.

Attestation Quorum

Each selected verifier evaluates the provider's output using an isolated TeeML enclave. Once they finish, they submit a signed attestation back to the protocol.

Majority Rule

const majority = Math.floor(totalAssigned / 2) + 1;

For standard services with 3 verifiers, a quorum of 2 is required. For critical services with 7 verifiers, a quorum of 4 is required.

Cryptographic Attestations

Attestations use EIP-191 signatures to prove that the evaluation was performed by the registered verifier identity. The aggregator verifies these signatures before tallying the vote.

ts
TeeProofSchema = z.object({
  chatId: z.string(),
  digest: z.string(),             // Hash of TEE evaluation output
  signature: z.string(),          // TEE enclave signature
  signerAddress: z.string(),      // TEE signer address
  signatureUrl: z.string(),       // Optional: hosted signature proof
  providerAddress: z.string(),    // Optional: 0G Compute provider
})

Trust Tiers

Halot uses trust tiers to control jury size, not weighted seniority. A higher trust level simply asks for more eligible verifiers and therefore a larger majority threshold.

standard

3 Verifiers

trust tier

Default for most jobs. Fast and efficient.

thorough

5 Verifiers

trust tier

Larger jury for more expensive or failure-sensitive work.

critical

7 Verifiers

trust tier

The Supreme Court. Used for high-value settlement.

Conflicts & Escalation

If every assigned verifier votes and there is still no majority, the job becomes escalated. Escalation increases the trust tier and draws a fresh jury:

  1. 1

    Tier Bump

    The job's trust level is automatically promoted to the next tier (e.g., Standard → Thorough).

  2. 2

    Salted Re-selection

    A new jury is selected from the registry using a salted seed, and prior attesters are excluded from the new round.

  3. 3

    Hindsight Justice

    When settlement eventually succeeds, only verifiers whose votes match the final decision share the verifier pool across all rounds.

Economic Accountability

Halot uses winner-takes-the-pool economics for verifier rewards. Matching the final decision matters more than being early, and non-matching votes earn nothing from the verifier pool. Once a majority exists, the flow moves into settlement.

ts
const winners = attestations.filter(
  (attestation) => attestation.decision === finalDecision
).length;

const verifierPool = Number(job.breakdown.verifierFee) + Number(job.breakdown.computeFee);
const verifierShare = winners === 0 ? 0 : verifierPool / winners;