Skip to main content

Store files on-chain (Disc Minat)

OmbraChain's filesystem is content-addressed and versioned. A "drive" is a site owned by your ox address; each commit is an immutable release; a mutable pointer marks the active version. Writing consumes mined storage capacity, not OMBRA.

The transactions

TxPurpose
WEB_SITE_REGISTERcreate a drive (once)
WEB_FILE_INIT / WEB_FILE_CHUNK / WEB_FILE_FINALIZEupload a content-addressed file in chunks
WEB_RELEASE_PUBLISHbundle files into an immutable version (manifest + Merkle root)
WEB_RELEASE_ACTIVATEset the active version (checkout / rollback)
WEB_FILE_DELETEremove a file and reclaim its bytes
STORAGE_TRANSFERmove free storage capacity to another account

Commit flow

register site (if missing)
→ for each NEW file: FILE_INIT (storageFee 0) → CHUNK… → FINALIZE
→ RELEASE_PUBLISH (manifest of path → fileId)
→ RELEASE_ACTIVATE

Unchanged files are deduped for freefileId = hash(siteId, path, contentHash), so re-committing an unchanged file is skipped. Each commit is a new version; activating an older release is time-travel.

Reading a drive

GET /api/web/site/:siteId/releases → list versions
GET /api/web/release/:releaseId/bundle → files of a version (base64 chunks)
GET /api/web/alias/:alias/bundle → active version by human alias
GET /api/web/file/:fileId/content → raw file bytes

Publish a website

A drive whose files are HTML/CSS/JS is served as a static site at <alias>.ombra-net.com. Set a human alias with WEB_ALIAS_SET. Any MIME type is allowed (post-fork), so you can store code, data, or binaries too.

In the desktop app

Ombra Drive does all of this with buttons: edit locally, Commit to chain, browse Versions, and Checkout any past release.