Home / Storage
Farcaster hubs / Snapchain — storage RENT, actively metered
github.com/farcasterxyz/protocol/blob/main/docs/SPECIFICATIOFarcasterstorage/farcaster-hubs-snapchain-storage-rent-actively-meteredJSONcomparereport an errorprovider JSON
- Free allowance
- Storage is allocated in integer units per fid and must be BOUGHT from the Storage Registry contract on Optimism (0x00000000fcCe7f938e7aE6D3c335bD6a1a7c593D).
- Verdict
- fails: quotathe free allowance is too small to matter
- Cost
- free tier
- Identity
- email?placeholder, not evidence; card unknown, phone unknown
- Binding limit
- noneno named constraint binds
- Evidence
- reported2 sources; a third party said so
- Freshness
- stale on 2026-11-05checked 2026-10-21 (inherited); stale on 2026-11-05
| Free tier | Storage is allocated in integer units per fid and must be BOUGHT from the Storage Registry contract on Optimism (0x00000000fcCe7f938e7aE6D3c335bD6a1a7c593D). Each CRDT specifies messages-per-unit, so the unit is a message count, not bytes. unit mixed; metered on stored-bytes |
|---|
| Price | none stated |
|---|
| Identity | email (placeholder) not published |
|---|
| Egress | n/a — hubs replicate messages, media is a URL in the cast body pointing at an external host (often Cloudflare Images / imgur). |
|---|
| Per-object cap | not stated |
|---|
| Retention | not stated |
|---|
| Interface | unknown grpc |
|---|
| Tooling | gRPC hub API (submitMessage); @farcaster/hub-nodejs. Storage must be purchased on-chain before a message is accepted. |
|---|
| Composes with | None. Media is never stored by the protocol — a cast embed is a plain URL. Farcaster is a message log with paid rent, not a file store. |
|---|
| Reliability | Snapchain (2025 rewrite) preserves the rent model. |
|---|
| Parsed numbers | |
|---|
Evidence 2
| date | source | what it proved |
|---|
| 2026-10-21 | raw.githubusercontent.com/farcasterxyz/protocol/main/docs/SP | 'The Storage registry contract keeps track of the storage allocated to each fid. The storage for an fid is denominated in integer units. Each CRDT specifies the number of messages it can store per unit.'; 'For a message to be accepted, the fid must be registered in the Id registry, and signed with a valid signer present in the Key registry, and the fid must have enough storage allocated in the Storage registry.' |
| 2026-10-21 | docs.farcaster.xyz/learn/architecture/storage | probe: GET -> 404 (moved); docs.farcaster.xyz is a Next.js shell with no server-rendered quota table |
More fields 1
| dead end | {"failure_class": "quota","why": "Storage is allocated in integer units per fid and must be BOUGHT from the Storage Registry contract on Optimism (0x00000000fcCe7f938e7aE6D3c335bD6a1a7c593D). Each CRDT specifies messages-per-unit, so the unit is a message count, not bytes.","retry_when": null,"first_recorded": "2026-10-21"} |
|---|
Unknown values 5
- interface: the access interface was not established
- per object cap notes: the field may be stated in a source that was not read
- per object cap stated: the field may be stated in a source that was not read
- retention notes: the field may be stated in a source that was not read
- retention stated: the field may be stated in a source that was not read