ETH address <> FID Contract

Get an addresses' connected fid on-chain.

Fetching an addresses' connected fid with Neynar's APIsNeynar's Parquet FilesNeynar's Indexer Service or Neynar's Hosted Database is easy, but until now that data wasn't accessible to smart contracts on any L2s. Now, on the Base Mainnet and Sepolia testnet, smart contracts can query the fid linked to any ETH address.

The Contract

ChainAddressDeploy Transaction
Base Mainnet0xdB1eCF22d195dF9e03688C33707b19C68BdEd1420xc61c054a4bc269d4263bd10933a664585ac8878eab1e1afe460220fb18e718ca
Base Sepolia0x3906b52ac27bae8bc5cc8e4e10a99665b78e35ac0x8db23c7bca5cc571cde724fd258ae4d7bf842c3a1b2cf495300bf819ebaea0ce

The Interface

The V4 interface is quite simple:

interface IVerificationsV4Reader {
    function getFid(address verifier) external view returns (uint256 fid);
    function getFidWithEvent(address verifier) external returns (uint256 fid);
    function getFids(address[] calldata verifiers) external view returns (uint256[] memory fid);
}

If the getFid call returns 0there is no verification for that address.

If you can spare the gas and would like us to know that you are using our contract, please use getFidWithEvent.

A simple example of a HelloWorld contract:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;

interface IVerificationsV4Reader {
    function getFid(address verifier) external view returns (uint256 fid);
    function getFidWithEvent(address verifier) external returns (uint256 fid);
    function getFids(address[] calldata verifiers) external view returns (uint256[] memory fid);
}

contract HelloWorld {
    IVerificationsV4Reader immutable verifications;
  
    constructor(IVerificationsV4Reader _verifications) {
       verifications = _verifications;
    }
  
    function requireVerification() public view returns (uint256) {
        uint256 fid = verifications.getFid(msg.sender);
      
        if (fid == 0) {
            revert("!fid");
        }

        return fid;
    }
}

The Future

This experiment will see what we can unlock by bringing more Farcaster data on-chain. If you build something using this, please reach out. We want to hear what you're building and see how we can make it easier.

Further reading