Integrate/Onchain & Attribution

Onchain & Attribution

OnFRA operates as a verified ERC-8004 reputation agent on Celo mainnet. Learn how to verify records onchain and attribute transactions back to your platform.

Deployed contracts (Celo mainnet)

The core OnFRA attestation contracts are deployed on Celo mainnet (chain ID 42220). Lenders and developers can call these contracts directly to verify reputations.

ContractAddressExplorer
OnchainReporter (Proxy)0xE7621aF5dE3806ba26115bdC89190c65ed835C21Celoscan
ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432Celoscan
ERC-8004 Reputation Registry0x8004BAa17C55a88189AE136b182e5fdA19dE9b63Celoscan

ERC-8004 Agent ID

OnFRA is registered on the Celo ERC-8004 Identity Registry under Agent ID 9219. You can inspect the onchain identity, services, and reputation summaries at:

8004scan.io/agents/celo/9219

Transaction attribution tags

Attribution tags allow ecosystem aggregators and off-chain indexers to credit transactions back to your dApp or platform. On Celo, this is standardized via trailing transaction calldata suffixes.

Smart contracts on EVM ignore trailing calldata past the function arguments boundary, so adding this tag incurs only a minimal gas cost (~16 gas per byte) and never affects execution.

How to derive and append suffixes

Use Celo's official @celo/attribution-tags helper along with viemto encode and append suffixes to the data payload:

import { toDataSuffix } from "@celo/attribution-tags";
import { concat } from "viem";

// 1. Get the configured attribution tag (e.g. "onfra")
const attributionTag = process.env.NEXT_PUBLIC_ATTRIBUTION_TAG || "onfra";

// 2. Derive the hex suffix
const tagSuffix = toDataSuffix(attributionTag);

// 3. Append suffix to contract call data
const taggedData = concat([originalCalldata, tagSuffix]);

// 4. Send transaction with the tagged data
const hash = await walletClient.sendTransaction({
  to: TARGET_CONTRACT_ADDRESS,
  data: taggedData,
  type: "legacy"
});