Skip to content

Contracts ​

A Farcaster account is managed and secured onchain using the Farcaster contracts. This section provides a high level overview and avoids some implementation details. For the full picture, see the contracts repository.


There are three main contracts deployed on OP Mainnet:

  • Id Registry - creates new accounts
  • Storage Registry - rents storage to accounts
  • Key Registry - adds and removes app keys from accounts

Registry Contracts

The contracts are deployed at the following addresses:

ContractAddress
IdRegistry0x00000000fc6c5f01fc30151999387bb99a9f489b
StorageRegistry0x00000000fcce7f938e7ae6d3c335bd6a1a7c593d
KeyRegistry0x00000000fc1237824fb747abde0ff18990e59b7e

Id Registry ​

The IdRegistry lets users register, transfer and recover Farcaster accounts. An account is identified by a unique number (the fid) which is assigned to an Ethereum address on registration. An Ethereum address may only own one account at a time, though it may transfer it freely to other accounts. It may also specify a recovery address which can transfer the account at any time.

Storage Registry ​

The Storage Registry lets accounts rent storage by making a payment in ETH. The storage prices are set by admins in USD and converted to ETH using a Chainlink oracle. The price increases or decreases based on supply and demand.

Key Registry ​

The Key Registry lets accounts issue keys to apps, so that they can publish messages on their behalf. Keys can be added or removed at any time. To add a key, an account must submit the public key of an EdDSA key pair along with a requestor signature. The requestor can be the account itself or an app that wants to operate on its behalf.