ETH address <> FID Contract
Get an addresses' connected fid on-chain.
Fetching an addresses' connected fid with Neynar's APIs, Neynar's Parquet Files, Neynar'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
Chain | Address | Deploy Transaction |
---|---|---|
Base Mainnet | 0xdB1eCF22d195dF9e03688C33707b19C68BdEd142 | 0xc61c054a4bc269d4263bd10933a664585ac8878eab1e1afe460220fb18e718ca |
Base Sepolia | 0x3906b52ac27bae8bc5cc8e4e10a99665b78e35ac | 0x8db23c7bca5cc571cde724fd258ae4d7bf842c3a1b2cf495300bf819ebaea0ce |
- Read the Proxy Contract on the Base Sepolia Explorer. This is the upgradeable proxy contract you should use.
- Verifications V4 Code on the Base Sepelia Explorer. This is an upgradeable implementation contract. There is no state here. This is the code that the proxy contract is currently using.
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 0
there 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
Updated 23 days ago