Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

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 KB

For reference: 1 MB ≈ $0.04. The cost is dynamic and based on the Arweave network price at upload time.