-
-
Notifications
You must be signed in to change notification settings - Fork 6
Trust Score Algorithm
Mohamed Abdelaziz edited this page Jun 25, 2026
·
1 revision
Back to Home | See also: Soul System Gate Specifications
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)
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)
| 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 |
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);
}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
function delegationScore(did: string): number {
const completed = completedDelegations(did);
const failed = failedDelegations(did); // premature revocations
const successRate = completed / (completed + failed + 1);
return successRate * 150;
}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 |
SocialScore = Σ (ConnectedDID_TrustScore × RelationshipWeight) / NormalizationFactor
Relationship weights:
- Direct attestor: 0.5
- Delegator: 0.3
- Co-attestor: 0.1
- Inferred network: 0.05
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);
}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
| 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 |
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