> ## Documentation Index
> Fetch the complete documentation index at: https://docs.driftidentity.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# The Oracle: Turning Real Effort Into On-Chain Stats

> The Skill Drift Oracle verifies your real-world actions and signs stat updates using EIP-712 signatures. Learn how reporting works and what it costs.

The **DriftID Oracle** is the bridge between what you do in the real world and what appears on-chain in your Drift ID. Without it, nothing would stop anyone from fabricating stat increases. The Oracle evaluates your reported actions, assigns a stat gain, and cryptographically signs the result so the protocol can verify its authenticity before writing anything to the chain.

## How reporting works

<Steps>
  <Step title="You act">
    You perform a real-world action — studying, training, creating, mentoring, or any other meaningful effort.
  </Step>

  <Step title="You report">
    You submit the action through the DriftID app, selecting which stat you are targeting with that activity.
  </Step>

  <Step title="Oracle evaluates">
    The Oracle reviews your submission and rolls a value between +1 and +5, representing the stat increase you have earned.
  </Step>

  <Step title="Oracle signs">
    The Oracle creates an EIP-712 typed data signature that authorizes the specific stat update for your address.
  </Step>

  <Step title="You submit on-chain">
    You call `updateStatsWithSignature()` on the Profile contract, passing the Oracle's signature. The contract verifies it and updates your stats.
  </Step>
</Steps>

## EIP-712 signatures

The protocol uses the **EIP-712 standard** for typed data signing. This gives you three important guarantees about every stat update you submit:

* **Non-replayability**: Each signature includes a unique nonce tied to your address, so the same signature cannot be used twice.
* **Immutability**: The stat values are fixed at signing time. You cannot alter them after the Oracle has authorized the update.
* **Verifiability**: The contract cryptographically confirms the signer's identity before accepting any update.

The signed payload includes the following fields:

```solidity theme={null}
struct UpdateStats {
  address owner;
  uint256 profileId;
  uint64 focus;
  uint64 discipline;
  uint64 social;
  uint64 risk;
  uint256 nonce;
}
```

## Cooldown between reports

To ensure organic growth and prevent stat grinding, the Oracle enforces a **24-hour cooldown** between reports:

```solidity theme={null}
uint256 public constant REPORT_COOLDOWN = 1 days;
```

You cannot submit a second report until 24 hours have passed since your last one. This is enforced at the contract level, not just in the app.

## Oracle fee

Each report costs a small fee of approximately **\$0.50 equivalent in ETH**. This covers:

* Gas costs for the signing operation
* Oracle infrastructure maintenance
* Incentives for future decentralization

## Phase 2: The Jury system

In Phase 2, the protocol will transition from a centralized Oracle to a **decentralized Jury system**. High-stat Drifters will verify the actions of newer users, creating a meritocratic verification layer where only the proven can validate the aspiring.

<Note>
  The Oracle is currently centralized for Phase 1. This is a deliberate trade-off to ensure security while the protocol bootstraps its user base.
</Note>
