Ukiyo NetworkDeveloper Docs
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

  1. Ingest ERP, computer vision, and logistics events.
  2. Normalize into a unified production event schema (reject incomplete fields).
  3. Score with a calibrated PyTorch model → scoreBps (0–10000).
  4. Attest EIP-712 typed data over score + evidence Merkle root.
  5. Publish to Arbitrum for freshness; periodically anchor roots to Ethereum L1.

Source classes

SourceLatencyHandling
ERP APIsMinutes–hoursPer-vendor connectors
Computer visionSecondsStreaming inference
LogisticsMinutesPoll + 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