fshy

fshy / Storage

Farcaster hubs / Snapchain

github.com · Storage · 1 record · JSON

Farcaster hubs / Snapchain โ€” storage RENT, actively metered Storage

fails: quotaemail?card?R

github.com/farcasterxyz/protocol/blob/main/docs/SPECIFICATIO · farcaster · storage/farcaster-hubs-snapchain-storage-rent-actively-metered · JSON · compare

Free tierStorage 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
Pricenone stated
Per-object capnot stated
Retentionnot stated
Egressn/a โ€” hubs replicate messages, media is a URL in the cast body pointing at an external host (often Cloudflare Images / imgur).
Identityemail (placeholder) not published
Bindingnone no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit
Interfaceunknown grpc
ToolinggRPC hub API (submitMessage); @farcaster/hub-nodejs. Storage must be purchased on-chain before a message is accepted.
Composes withNone. 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.
ReliabilityRent model means capacity is explicitly priced, which is the opposite of the brief. Snapchain (2025 rewrite) preserves the rent model.
NotesStorage 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 rungreported One page read moves it to documented.
Checked2026-10-21 (inherited); stale on 2026-11-04
Evidence (2)
datesourcewhat it proved
2026-10-21raw.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-21docs.farcaster.xyz/learn/architecture/storageprobe: 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_when process
  • $.free_tier.notes process
  • $.identity_cost.detail defaulted
  • $.identity_cost.kind identity-defaulted
  • $.interface interface-unknown
  • $.per_object_cap.notes not-extracted
  • $.per_object_cap.stated not-extracted
  • $.retention.notes not-extracted
  • $.retention.stated not-extracted