Knowledge Base
Storage Lifecycle and Oracle Flow
Storage Lifecycle and Oracle Flow
The storage lifecycle joins three layers: a short-lived backend upload, an on-chain ObjectID storage object, and a decentralized oracle task that performs IPFS persistence.
1. Temporary upload
The user uploads a file to the Storage API. The backend returns a temporary URL, file metadata, SHA-256 hash and expiration time. The temporary URL is designed to be consumed by oracle nodes and is not the long-term storage reference.
2. Quote and task preparation
The dApp prepares a STORAGE oracle payload. Typical fields include task type, requested nodes, retention days, source URL, file name, MIME type, declared bytes, SHA-256 hash and consensus policy. The pricing model can include base task cost, download bytes and retention days.
3. Sponsored transaction
The user signs the business operation, while the ObjectID backend sponsors the IOTA gas side of the transaction according to backend policy. The backend validates that the transaction contains exactly one allowed storage Move call before signing as gas sponsor.
4. On-chain object creation
The Move function create_storage_with_oracle_task consumes OID_STORAGE_CREDIT, creates the oracle task, and creates the user’s OIDStorageObject. The storage object initially has a pending oracle status.
5. Oracle execution and IPFS result
Oracle nodes fetch the temporary file, validate size and hash constraints, upload the bytes to IPFS, and return deterministic result data including the IPFS CID, content hash, MIME type, size and retention information.
6. Retention and renewal
Retention can be extended by topping up the oracle task. The current implementation exposes extend_storage_retention_with_oracle_top_up, which burns additional storage credits, adds IOTA task budget, updates the oracle task and extends the planned deletion timestamp.

