Accountability Tiers
Every answer in TOC comes with an explicit accountability tier - a clear indicator of who backs the data and how much trust you can place in it. This is computed at POP creation and never changes.
Why Tiers Matter
Traditional oracles provide data without clear accountability. When an oracle reports incorrect data, who compensates affected users? Usually no one.
TOC solves this by making accountability explicit and immutable. When you read a result, you know exactly:
- Who resolved it (resolver trust level)
- Who can adjudicate disputes (TruthKeeper status)
- What financial backing supports the answer
The Three Tiers
Maximum protocol backing. The resolver has SYSTEM trust level (official ecosystem resolver), AND the TruthKeeper is whitelisted (vetted domain expert).
Best for: High-value settlements, critical financial data
TruthKeeper-backed. The TruthKeeper has declared they guarantee this specific resolver. They stake their reputation on its accuracy.
Best for: Prediction markets, event outcomes, balanced risk/reward
Community-backed. Any combination that doesn't meet SYSTEM or TK_GUARANTEED criteria. Maximum flexibility, creator assumes full risk.
Best for: Experimental use cases, low-stakes applications, testing
How Tiers Are Calculated
The tier is computed automatically at POP creation based on two factors:
addGuaranteedResolver(resolver)Resolver Trust Levels
Resolvers have their own trust classification:
| Trust Level | Description |
|---|---|
NONE |
Not registered |
PERMISSIONLESS |
Registered by anyone (default) |
VERIFIED |
Admin-reviewed and approved |
SYSTEM |
Official ecosystem resolver |
TruthKeeper Status
TruthKeepers are domain experts who adjudicate disputes. Their status affects tier calculation:
- Whitelisted - Vetted by protocol admins, enables SYSTEM tier
- Guaranteed Resolvers - TruthKeeper declares specific resolvers they back, enables TK_GUARANTEED tier
Key insight: A TruthKeeper can guarantee a PERMISSIONLESS resolver, elevating POPs using that resolver to TK_GUARANTEED tier. This allows community resolvers to gain trust through expert backing.
Immutable Snapshots
Accountability tiers are computed once at creation and never change. This provides:
- Transparency - Consumers know exactly what backs each answer from the start
- Audit trail - Historical record of trust levels at resolution time
- No downgrades - A POP can't be retroactively demoted if a resolver loses trust
// Tier is stored immutably in the POP struct
struct POP {
address resolver;
POPState state;
AnswerType answerType;
// ... other fields
AccountabilityTier tier; // Set at creation, never changes
}
Choosing the Right Tier
When to use SYSTEM tier
- High-value financial settlements (large derivative positions)
- Critical infrastructure decisions
- Cases where incorrect data could cause significant losses
When to use TK_GUARANTEED tier
- Prediction markets with meaningful stakes
- Insurance protocols with moderate payouts
- Cases where you want expert oversight but don't need full protocol backing
When to use PERMISSIONLESS tier
- Testing and development
- Low-stakes casual predictions
- Experimental resolvers and use cases
- When you have other off-chain verification mechanisms
Reading Tier in Code
// Get result with tier information
ExtensiveResult memory result = registry.getExtensiveResult(popId);
// Check tier before using
if (result.tier == AccountabilityTier.SYSTEM) {
// Maximum confidence - use for high-value settlements
_executeHighValueSettlement(result.result);
} else if (result.tier == AccountabilityTier.TK_GUARANTEED) {
// Good confidence - use for standard operations
_executeStandardSettlement(result.result);
} else {
// PERMISSIONLESS - use with caution
require(settlementValue < LOW_VALUE_THRESHOLD, "Use higher tier");
_executeLowValueSettlement(result.result);
}
Tip: Your protocol can enforce minimum tier requirements. For example, reject settlements above a certain value unless the POP has SYSTEM or TK_GUARANTEED tier.