Skip to content

Trust Score Algorithm

Mohamed Abdelaziz ‬‏ edited this page Jun 25, 2026 · 1 revision

Trust Score Algorithm

Back to Home | See also: Soul System Gate Specifications


Overview

The AxiomID Trust Score is a dynamic, multi-factor reputation metric ranging from 0 to 1000 assigned to every DID. It quantifies behavioral trustworthiness, on-chain history, and social attestation quality.

Score Range: 0 – 1000
Update model: Event-driven (immediate) + Hourly batch recalculation
Storage: Redis (hot cache) + On-chain snapshot (every 24h)


Score Formula

TrustScore(DID) = Σ [ Factor_i × Weight_i × Decay(t_i) ] × SybilResistanceMultiplier

Where:

  • Factor_i = raw score for factor i (0-100)
  • Weight_i = importance weight for factor i
  • Decay(t_i) = time-decay function applied since last event
  • SybilResistanceMultiplier = 0.0 – 1.0 (Sybil penalty)

Scoring Factors

Factor Weight Description Max Points
On-chain Activity 25% Transaction count, contract interactions, age 250
Attestations 30% Verified credentials from trusted issuers 300
Delegation History 15% Successful delegations completed vs. expired 150
Behavioral Signals 20% API usage patterns, response consistency 200
Social Graph 10% Connections to high-trust DIDs 100

Factor 1: On-chain Activity (max 250)

function onChainActivityScore(did: string): number {
  const age = daysActive(did);                    // 0-100 (capped at 365 days)
  const txCount = Math.log10(txCount(did)) * 20;  // logarithmic scale
  const contractCalls = contractInteractions(did) * 1.5;
  return Math.min((age * 0.5 + txCount + contractCalls), 100);
}

Factor 2: Attestations (max 300)

Each attestation has a base value modified by the issuer's trust score:

AttestationValue = BaseValue × (IssuerTrustScore / 1000) × RecencyMultiplier

Base values by type:
  - KYC verification:        50 pts
  - Professional credential:  30 pts
  - Peer attestation:        10 pts
  - Organization membership:  20 pts
  - Biometric binding:       40 pts

Factor 3: Delegation History (max 150)

function delegationScore(did: string): number {
  const completed = completedDelegations(did);
  const failed = failedDelegations(did);          // premature revocations
  const successRate = completed / (completed + failed + 1);
  return successRate * 150;
}

Factor 4: Behavioral Signals (max 200)

Derived from MCP API interaction patterns:

Signal Points
Consistent request patterns +30
No rate-limit violations +25
Verified IP/endpoint binding +20
Low error rate (<1%) +30
Uptime > 99% +40
No suspicious burst patterns +55

Factor 5: Social Graph (max 100)

SocialScore = Σ (ConnectedDID_TrustScore × RelationshipWeight) / NormalizationFactor

Relationship weights:
  - Direct attestor:   0.5
  - Delegator:         0.3
  - Co-attestor:       0.1
  - Inferred network:  0.05

Time Decay Model

All factors decay exponentially with time to prevent stale scores from dominating:

Decay(t) = e^(-λ × t)

Decay constants (λ) by factor:
  On-chain activity:   λ = 0.001  (slow decay, 2-year half-life)
  Attestations:        λ = 0.002  (1-year half-life)
  Delegation:          λ = 0.005  (4-month half-life)
  Behavioral signals:  λ = 0.01   (2-month half-life)
  Social graph:        λ = 0.003  (8-month half-life)
function applyDecay(score: number, lastUpdated: Date, lambda: number): number {
  const t = (Date.now() - lastUpdated.getTime()) / (1000 * 60 * 60 * 24); // days
  return score * Math.exp(-lambda * t);
}

Sybil Resistance

The SybilResistanceMultiplier penalizes suspected Sybil accounts:

SybilMultiplier = 1.0                     (clean)
SybilMultiplier = 0.5                     (suspected - insufficient uniqueness proofs)
SybilMultiplier = 0.1                     (flagged - behavioral anomaly detected)
SybilMultiplier = 0.0                     (confirmed Sybil - frozen)

Sybil detection signals:

  • Multiple DIDs sharing same IP subnet
  • Identical behavioral patterns across DIDs
  • Attestation circular graphs (A attests B, B attests A)
  • Abnormal delegation chain patterns

Trust Tiers

Tier Range Label Access Level
0 0 – 99 Unverified Public read only
1 100 – 299 Basic Standard API access
2 300 – 499 Verified Extended capabilities
3 500 – 699 Trusted Delegation authority
4 700 – 899 High Trust Cross-chain operations
5 900 – 1000 Elite Full system access

Score Events (Triggers)

enum ScoreEvent {
  DID_CREATED            = +10,
  ATTESTATION_RECEIVED   = +variable,
  DELEGATION_COMPLETED   = +15,
  DELEGATION_FAILED      = -20,
  API_VIOLATION          = -50,
  SUSPICIOUS_ACTIVITY    = -100,
  CREDENTIAL_REVOKED     = -30,
  INACTIVITY_DECAY       = automatic,
}

→ Next: Soul System Gate Specifications

Clone this wiki locally