Skip to content

Sealed Storage reference ​

Shapes and identifiers behind Sealed Storage. The exhaustive, always-current API is auto-generated from the @meddleware/sealed-storage-client SDK — see SDK API.

Deployed identifiers (testnet) ​

ThingID
sealed_storage package0x0c8f73490b14836e6a7a724fb46b242cb061d04a5f193fd637159997f8a1773d
PolicyConfig object (version gate)0xee0403ba15c250223527150d147f29bedfb1ec46bb2282c341be462ff0ad7d1a

Mainnet is pending; the app is enabled by configuration once the package and key-server committee are available.

The manifest ​

The portable pointer produced when you seal a file. It contains no secrets:

json
{
  "policyType": "nft-gate",     // which policy sealed this content
  "id": "…",                     // Seal identity (hex) — required to decrypt; cannot be recomputed
  "blobId": "…",                 // Walrus blob id of the ciphertext
  "network": "testnet",
  "params": { "gateId": "0x…" }, // non-secret policy params (e.g. which gate)
  "label": "optional human label"
}

Keep the manifest safe — its id (the encryption identity) is needed to locate and decrypt the ciphertext.

Policies on-chain ​

Each policy encodes its access condition into the encryption identity and is checked on-chain by the sealed_storage Move package. The policies, identity layouts and the content-pointer registry are documented with the Move package and imported here at build time:

Threshold committee ​

Decryption uses a t-of-n committee of key servers (e.g. 2 of 3). Encryption targets all configured servers; decryption needs a threshold of them to release shares. A short-lived session key (signed once per session) authorises the release.

Discoverable content pointer (optional) ​

Apps can publish a public pointer so pass-holders can discover gate-unlockable content. Anyone can publish a pointer under any gate with any label — it grants nothing on its own and must not be trusted as proof of who made the content. Its exact shape is in the on-chain overview.

SDK API ​

The full @meddleware/sealed-storage-client API — the SealController, the policy registry, both built-in providers, and the manifest/byte helpers — is generated here:

Writing your own policy or integrating the SDK?

See the Sealed Storage integration guide on the developer site — SDK setup, encrypt/store/decrypt flow, policy authoring in Move, and Vue composables.

2026 Meddleware. All jams preserved.