IOTA Storage
IOTA Storage is a decentralized storage network for large files (blobs) built on IOTA Rebased. Move contracts on IOTA coordinate the network: they register and pay for blobs, track the storage nodes and their stake, and certify that each blob is available. The data itself lives on the storage nodes, spread across them with erasure coding. On top of the network there are an aggregator and a publisher (HTTP), and Sites: static websites stored on the network and reachable through IOTA Names.
IOTA Storage runs only on IOTA testnet: 4 storage nodes operated by the project, 100 shards, 1-day epochs and test prices. The network may be redeployed and data may be lost. Everything stored on the network is public.
Why
IOTA Rebased has Move smart contracts and objects, but no place to store large files such as images, videos, datasets or whole websites. IOTA Storage adds that layer, so that someone with only an IOTA wallet can store data:
- Everything in IOTA. Storage is paid in IOTA, and storage nodes stake IOTA. There is no other token and no other chain involved.
- You own your blobs. Each stored blob has a
Blobobject in your wallet. You renew, transfer or delete it with ordinary IOTA transactions. - Verified on-chain. A blob is certified on IOTA with an aggregated BLS signature of storage nodes that hold a quorum of shards. The contract checks the signature and the quorum.
- Resilient. Any blob can be rebuilt from about a third of the shards, so data survives storage nodes going offline.
- A project treasury. A share of the storage payments goes to a treasury of the project.
What you can do today
- Store files as blobs, paying in IOTA from your wallet, and renew, transfer or delete them.
- Read any blob over HTTP through the public aggregator,
https://aggregator.iotastorage.com. - Publish static websites (Sites), served at
https://<site ID in base36>.iotastorage.com/or athttps://<name>.iotastorage.com/through an IOTA Names name.
There are two ways to use the network:
- The app, at app.iotastorage.com, with an IOTA wallet in your browser. See Getting started.
- The reference tools: a Node.js command line for Sites (
sitio.mjs, see Sites CLI) and a JavaScript client. They live in the project repository, which is not public yet.
Architecture
user (IOTA wallet) storage nodes
│ 1. encodes locally: slivers + metadata + blob ID
│ 2. reserve_space + register_blob, pays in IOTA ─────▶ · BlobRegistered → accept the data
│ 3. metadata and slivers of its shards to each node ─▶ · check metadata ↔ blob ID
│ 4. confirmations signed with BLS ◀─────────────────── · sign (epoch, blob ID)
│ 5. certify_blob: aggregated signature + bitmap ─▶ IOTA checks quorum (2f+1 shards) and signature
│ 6. read: primary slivers from ≥ n−2f shards ◀──────── · serve slivers
▼ decodes and checks the blob ID
IOTA ── almacen: System (BLS committee, prices), Staking (stake in IOTA, epochs), Blob, Treasury
· the Blob belongs to the user: extend (renew), transfer, delete
aggregator (HTTP, reads from the nodes) · publisher (HTTP, stores and pays on behalf of a client)
on top: Sites (Site object on IOTA → portal → aggregator)
- The client encodes the file locally into slivers and computes its blob ID, without contacting the network.
- It registers the blob on IOTA (
reserve_spaceandregister_blob) and pays in IOTA in the same transaction. - It sends the metadata and the slivers of each shard to the storage node that holds that shard.
- Each node checks the metadata against the blob ID and returns a confirmation signed with BLS.
- With confirmations from nodes that hold a quorum of shards, the client calls
certify_blob. The contract verifies the aggregated signature. From then on, the blob is available. - To read, a client (or the aggregator) fetches enough primary slivers, decodes them and checks that the result has the expected blob ID.
Public endpoints
| URL | What it is |
|---|---|
https://aggregator.iotastorage.com/v1/… | Aggregator: reads blobs over HTTP. Public. |
https://publisher.iotastorage.com/v1/… | Publisher: stores blobs over HTTP. Requires a token; used by the project. |
https://nodo-1.iotastorage.com … nodo-4 | Storage nodes. |
https://<site ID in base36>.iotastorage.com/ | Sites portal. |
https://<name>.iotastorage.com/ | Sites portal through IOTA Names (<name>.iota). |
https://app.iotastorage.com | The app. |
IOTA Storage is an independent project. It is not affiliated with, endorsed by or associated with the IOTA Foundation.