Farcaster hubs / Snapchain
github.com · Storage · 1 record · JSON
Farcaster hubs / Snapchain โ storage RENT, actively metered Storage
fails: quotaemail?card?R
| 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 |
| Per-object cap | not stated |
| Retention | not stated |
| Egress | n/a โ hubs replicate messages, media is a URL in the cast body pointing at an external host (often Cloudflare Images / imgur). |
| Identity | email (placeholder) not published |
| Binding | none no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit |
| 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 | Rent model means capacity is explicitly priced, which is the opposite of the brief. Snapchain (2025 rewrite) preserves the rent model. |
| Notes | 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. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
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 (2)
{
"verdict_note": "PLAN.md ยง3.2 rules fails-quota by default, because no row in this set clears 500 GiB per unit for a user.",
"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 or withheld values (9)
$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.interfaceinterface-unknown$.per_object_cap.notesnot-extracted$.per_object_cap.statednot-extracted$.retention.notesnot-extracted$.retention.statednot-extracted