Skip to content

FAQ

Signatures

How do I generate an EIP-712 signature?

See the contract reference docs for documentation on each EIP-712 signature, including Typescript code examples.

If you're using Typescript/JS, the @farcaster/hub-web package includes tools for generating and working with EIP-712 signatures. To ensure you're using the correct addresses and typehashes, we recommend importing the ABIs and EIP-712 types from the contracts module or using the provided Eip712Signer helper.

See the "Working with EIP-712 signatures" example app in the hub monorepo for a reference that demonstrates each signature and contract call.

How can I debug an invalid EIP-712 signature?

To help debug EIP-712 signing, every contract that uses EIP-712 signatures exposes its domain separator and typehashes as constants along with a hashTypedDataV4 helper view. If you're constructing signatures in Solidity or another low level language, you can use these to help debug.

Reference

Where is the full contract source code?

The contracts repo is on Github here.

Where do I get contract ABIs?

Find contract ABIs and deployment addresses here.

Where can I find audit reports?

Past audit reports are linked from the contracts repo.

Are the Farcaster contracts deployed to a testnet?

No. Consider using network forking to test or develop against the OP mainnet contracts.

Data

How do I find a user’s custody address?

Call the custodyOf function on the IdRegistry.

How do I find a user’s recovery address?

Call the recoveryOf function on the IdRegistry.

How do I find an account’s fid?

Call the idOf function on the IdRegistry.

How do I look up the account keys for my fid?

Call the keysOf function on the KeyRegistry.

Other

What is an app fid? How do I get one?

An "app fid" is no different than any other Farcaster ID: it just represents an application rather than an individual user. You can register an app fid directly through the Bundler or IdGateway, or use a Farcaster client to register an account for your app. Since you'll need to sign key request metadata from the wallet that owns your app fid, keep the private key secure.