PotDrive
Open Drive

PotDrive Documentation

Storage middleware for Portaldot V3

PotDrive writes files into Portaldot's own TransactionStorage pallet, addresses them with standard IPFS CIDs, and lets any reader verify every byte against its hash.

Portaldot V3 runs TransactionStorage, the pallet behind Polkadot's Bulletin chain. Block producers keep stored data for 100,800 blocks and must prove they still hold it. The node serves it by CID over a bitswap RPC. Before PotDrive there was no SDK, gateway or app for it, and it held no data.

PotDrive is the missing layer on top of that pallet:

  • Content-defined chunking (FastCDC) with chain-level deduplication, so a new version of a file only pays for what changed.
  • One-signature uploads for any number of blocks, through a throwaway in-tab upload key.
  • UnixFS files and folders, including static websites served from the chain.
  • Verified reads everywhere: the Drive, the gateway, the SDK and the CLI re-hash every block.
  • A Solidity registry on Revive for ownership and prepaid keep-alive, called from the same Polkadot wallet.
The PotDrive Drive: sections, file list and details panel

Architecture

Browser · SDK · CLIFastCDC chunkingblake2b-256 CIDsUnixFS dag-pbAES-256-GCM (private)re-hash every readYour wallet1 × utility.batchAllUpload keyin-tab · swept afterPotDriveRegistrySolidity on RevivePortaldot V3 nodeTransactionStorage store · renew · checkProofindexed-tx DB (blake2b)bitswap_v1_geteth-rpc (Revive)Readers/ipfs/<cid>/<path>Range · sites · verifyKeeperdaily · renewclaims renewed()revive.callfundstore × nbitswap · verifiedrenew
Solid arrows write to Portaldot. Dashed arrows read.

Browse the docs

Quickstart

Store your first file from the Drive, the SDK or the CLI.

TransactionStorage

How Portaldot holds data: indexing, retention, renewals and storage proofs.

Content addressing

Blake2b CIDs, UnixFS DAGs, FastCDC chunking and deduplication.

One-signature uploads

The upload key, its lifecycle, and why blocks can't share a batch.

Verification and trust

What a reader checks, what it trusts, and what validators prove.

Gasless uploads

Upload with 0 tPOT: a relay pays through Portaldot's MetaTx pallet.

Versions

New versions link to the old one and only pay for blocks that changed.

Private files

Client-side AES-256-GCM, the envelope format and share links.

Share with a wallet

Seal a private file's key to another address with X25519 inbox keys.

NFTs

Mint on Portaldot's native Nfts pallet with media stored on Portaldot.

Host a website

Deploy a static site as a UnixFS directory and serve it from the chain.

Keep-alive

Prepaid renewals and the keeper that spends them.

SDK

Every exported function, with signatures and examples.

CLI

put, get, deploy, info, renew and ls.

React

usePotFile, <PotImage> and <PotVideo>: verified files in any React app.

MCP server

Let AI agents read, store and deploy on Portaldot.

Gateway API

HTTP routes, Range requests, headers and status codes.

Registry contracts

Solidity on Revive that hashes with Portaldot's blake2b, decodes UnixFS and checks wallet signatures.

Security model

Threats, what PotDrive does about each, and what it doesn't.

Costs and limits

Measured fees, sizes, retention and known constraints.

Edit this page on GitHub