Architecture
Oracle Architecture
The oracle converts plant reality into a cryptographically attested Fulfillment Probability Score. Consumers verify authenticity, integrity, freshness, and fail-closed availability semantics.
Pipeline
- Ingest ERP, computer vision, and logistics events.
- Normalize into a unified production event schema (reject incomplete fields).
- Score with a calibrated PyTorch model →
scoreBps(0–10000). - Attest EIP-712 typed data over score + evidence Merkle root.
- Publish to Arbitrum for freshness; periodically anchor roots to Ethereum L1.
Source classes
| Source | Latency | Handling |
|---|---|---|
| ERP APIs | Minutes–hours | Per-vendor connectors |
| Computer vision | Seconds | Streaming inference |
| Logistics | Minutes | Poll + webhooks |
Streaming backbone
erp.orders.raw ──┐ vision.frames ──┼──▶ normalizer ──▶ production.events.normalized ──▶ scorer logistics.ship ──┘
Kafka topics are partitioned by source class. The normalizer never silently imputes required fields — missing data fails closed instead of inventing confidence.
Score payload
struct Score {
bytes32 orderId;
uint16 scoreBps; // 0–10000
uint64 timestamp;
bytes32 dataRoot; // Merkle root of supporting evidence
}Two-tier publication
- Arbitrum One — every update for cheap freshness under blob economics.
- Ethereum L1 — periodic Merkle root for hard finality.
Operator note
Consumers must distinguish no score from score of zero. Use lastPublishedAt and oracle state; reject scores outside your freshness window.
Related
Whitepaper (design rationale):ukiyo.network/whitepapers/oracle