Why Arweave?
On-chain storage of large files is prohibitively expensive. Inkd solves this by:
- Storing metadata and ownership on Base (cheap, verifiable)
- Storing content (code, artifacts, data) on Arweave (permanent, decentralized)
The on-chain record links to the Arweave hash (ar://TxId). Anyone can verify the content matches the on-chain record.
Permanent by design
Arweave charges a one-time fee to store data forever — no recurring hosting costs, no takedowns. Once uploaded, the content is permanently available at https://arweave.net/TxId.
This makes Inkd useful for:
- Publishing agent binaries that need to run years from now
- Storing audit trails and version history that must be immutable
- Sharing datasets or models with guaranteed availability
Irys
Inkd uses Irys (formerly Bundlr) as the upload layer. Irys handles the Arweave upload mechanics — bundling, payment, and confirmation.
The API server holds an ETH wallet on Base that pays Irys for uploads. This cost is covered by the $2 USDC paid when pushing a version.
Content addressing
Every upload returns an Arweave transaction ID, formatted as ar://TxId. This hash is:
- Content-addressed: the same content always produces the same hash
- Immutable: the content at a given hash can never change
- Permanent: stored on Arweave forever
const { hash } = await client.upload(data, { contentType: "application/json" });
// hash = "ar://QmAbc123..."
// Access at any time:
// https://arweave.net/QmAbc123...Cost
Arweave storage costs are very low and scale with file size:
GET /v1/upload/price?bytes=102400
→ { "costUsdc": "4600", "costUsd": "$0.0046" } // ~100 KBFor reference: 1 MB ≈ $0.04. The cost is dynamic and based on the Arweave network price at upload time.
