Neynar Documentation
chain_events
All onchain events received from the hub event stream are stored in this table. These events represent any onchain action including registrations, transfers, signer additions/removals, storage rents, etc. Events are never deleted (i.e. this table is append-only).
| Column Name | Data Type | Description |
|---|---|---|
| id | uuid |
Generic identifier specific to this DB (a.k.a. surrogate key) |
| created_at | timestamp with time zone |
When the row was first created in this DB (not the same as the message timestamp!) |
| block_timestamp | timestamp with time zone |
Timestamp of the block this event was emitted in UTC. |
| fid | bigint |
FID of the user that signed the message. |
| chain_id | bigint |
Chain ID. |
| block_number | bigint |
Block number of the block this event was emitted. |
| transaction_index | smallint |
Index of the transaction in the block. |
| log_index | smallint |
Index of the log event in the block. |
| type | smallint |
Type of chain event. |
| block_hash | bytea |
Hash of the block where this event was emitted. |
| transaction_hash | bytea |
Hash of the transaction triggering this event. |
| body | json |
JSON representation of the chain event body (changes shape based on type). |
| raw | bytea |
Raw bytes representing the serialized OnChainEvent protobuf. |
fids
Stores all registered FIDs on the Farcaster network.
| Column Name | Data Type | Description |
|---|---|---|
| fid | bigint |
FID of the user (primary key) |
| created_at | timestamp with time zone |
When the row was first created in this DB (not the same as registration date!) |
| updated_at | timestamp with time zone |
When the row was last updated. |
| registered_at | timestamp with time zone |
Timestamp of the block in which the user was registered. |
| chain_event_id | uuid |
ID of the row in the chain_events table corresponding to this FID’s initial registration. |
| custody_address | bytea |
Address that owns the FID. |
| recovery_address | bytea |
Address that can initiate a recovery for this FID. |
signers
Stores all registered account keys (signers).
| Column Name | Data Type | Description |
|---|---|---|
| id | uuid |
Generic identifier specific to this DB (a.k.a. surrogate key) |
| created_at | timestamp with time zone |
When the row was first created in this DB (not the same as when the key was created on the network!) |
| updated_at | timestamp with time zone |
When the row was last updated. |
| added_at | timestamp with time zone |
Timestamp of the block where this signer was added. |
| removed_at | timestamp with time zone |
Timestamp of the block where this signer was removed. |
| fid | bigint |
FID of the user that authorized this signer. |
| requester_fid | bigint |
FID of the user/app that requested this signer. |
| add_chain_event_id | uuid |
ID of the row in the chain_events table corresponding to the addition of this signer. |
| remove_chain_event_id | uuid |
ID of the row in the chain_events table corresponding to the removal of this signer. |
| key_type | smallint |
Type of key. |
| metadata_type | smallint |
Type of metadata. |
| key | bytea |
Public key bytes. |
| metadata | bytea |
Metadata bytes as stored on the blockchain. |
username_proofs
Stores all username proofs that have been seen. This includes proofs that are no longer valid, which are soft-deleted via the deleted_at column. When querying usernames, you probably want to query the fnames table directly, rather than this table.
| Column Name | Data Type | Description |
|---|---|---|
| id | uuid |
Generic identifier specific to this DB (a.k.a. surrogate key) |
| created_at | timestamp with time zone |
When the row was first created in this DB (not the same as when the key was created on the network!) |
| updated_at | timestamp with time zone |
When the row was last updated. |
| timestamp | timestamp with time zone |
Timestamp of the proof message. |
| deleted_at | timestamp with time zone |
When this proof was revoked or otherwise invalidated. |
| fid | bigint |
FID that the username in the proof belongs to. |
| type | smallint |
Type of proof (either fname or ENS). |
| username | text |
Username, e.g. dwr if an fname, or dwr.eth if an ENS name. |
| signature | bytea |
Proof signature. |
| owner | bytea |
Address of the wallet that owns the ENS name, or the wallet that provided the proof signature. |
fnames
Stores all usernames that are currently registered. Note that in the case a username is deregistered, the row is soft-deleted via the deleted_at column until a new username is registered for the given FID.
messages
All Farcaster messages retrieved from the hub are stored in this table. Messages are never deleted, only soft-deleted (i.e. marked as deleted but not actually removed from the DB).
| Column Name | Data Type | Description |
|---|---|---|
| id | uuid |
Generic identifier specific to this DB (a.k.a. surrogate key) |
| created_at | timestamp with time zone |
When the row was first created in this DB (not the same as the message timestamp!) |
| updated_at | timestamp with time zone |
When the row was last updated. |
| timestamp | timestamp with time zone |
Message timestamp in UTC. |
| deleted_at | timestamp with time zone |
When the message was deleted by the hub (e.g. in response to a CastRemove message, etc.) |
| pruned_at | timestamp with time zone |
When the message was pruned by the hub. |
| revoked_at | timestamp with time zone |
When the message was revoked by the hub due to revocation of the signer that signed the message. |
| fid | bigint |
FID of the user that signed the message. |
| type | smallint |
Message type. |
| hash_scheme | smallint |
Message hash scheme. |
| signature_scheme | smallint |
Message signature scheme. |
| hash | bytea |
Message hash. |
| signature | bytea |
Message signature. |
| signer | bytea |
Signer used to sign this message. |
| body | json |
JSON representation of the body of the message. |
| raw | bytea |
Raw bytes representing the serialized message protobuf. |
casts
Represents a cast authored by a user.
| Column Name | Data Type | Description |
|---|---|---|
| id | uuid |
Generic identifier specific to this DB (a.k.a. surrogate key) |
| created_at | timestamp with time zone |
When the row was first created in this DB (not the same as the message timestamp!) |
| updated_at | timestamp with time zone |
When the row was last updated. |
| timestamp | timestamp with time zone |
Message timestamp in UTC. |
| deleted_at | timestamp with time zone |
When the cast was considered deleted/revoked/pruned by the hub (e.g. in response to a CastRemove message, etc.) |
| fid | bigint |
FID of the user that signed the message. |
| parent_fid | bigint |
If this cast was a reply, the FID of the author of the parent cast. null otherwise. |
| hash | bytea |
Message hash. |
| root_parent_hash | bytea |
If this cast was a reply, the hash of the original cast in the reply chain. null otherwise. |
| parent_hash | bytea |
If this cast was a reply, the hash of the parent cast. null otherwise. |
| root_parent_url | text |
If this cast was a reply, then the URL that the original cast in the reply chain was replying to. |
| parent_url | text |
If this cast was a reply to a URL (e.g. an NFT, a web URL, etc.), the URL. null otherwise. |
| text | text |
The raw text of the cast with mentions removed. |
| embeds | json |
Array of URLs or cast IDs that were embedded with this cast. |
| mentions | json |
Array of FIDs mentioned in the cast. |
| mentions_positions | json |
UTF8 byte offsets of the mentioned FIDs in the cast. |
reactions
Represents a user reacting (liking or recasting) content.
links
Represents a link between two FIDs (e.g. a follow, subscription, etc.)
| Column Name | Data Type | Description |
|---|---|---|
| id | uuid |
Generic identifier specific to this DB (a.k.a. surrogate key) |
| created_at | timestamp with time zone |
When the row was first created in this DB (not when the link itself was created on the network!) |
| updated_at | timestamp with time zone |
When the row was last updated |
| timestamp | timestamp with time zone |
Message timestamp in UTC. |
| deleted_at | timestamp with time zone |
When the link was considered deleted by the hub (e.g. in response to a LinkRemoveMessage message, etc.) |
| fid | bigint |
Farcaster ID (the user ID). |
| target_fid | bigint |
Farcaster ID of the target user. |
| display_timestamp | timestamp with time zone |
When the row was last updated. |
| type | text |
Type of connection between users, e.g. follow. |
| hash | bytea |
Message hash. |
verifications
Represents a user verifying something on the network. Currently, the only verification is proving ownership of an Ethereum wallet address.
| Column Name | Data Type | Description |
|---|---|---|
| id | uuid |
Generic identifier specific to this DB (a.k.a. surrogate key) |
| created_at | timestamp with time zone |
When the row was first created in this DB (not the same as the message timestamp!) |
| updated_at | timestamp with time zone |
When the row was last updated. |
| timestamp | timestamp with time zone |
Message timestamp in UTC. |
| deleted_at | timestamp with time zone |
When the verification was considered deleted by the hub (e.g. in response to a VerificationRemove message, etc.) |
| fid | bigint |
FID of the user that signed the message. |
| hash | bytea |
Message hash. |
| signer_address | bytea |
Address of the wallet being verified. |
| block_hash | bytea |
Block hash of the latest block at the time the ownership was verified. |
| signature | bytea |
Ownership proof signature. |
user_data
Represents data associated with a user (e.g. profile photo, bio, username, etc.)