Proof of Transfer

Creating Claims

How to define transfer constraints and create a claim

Navigate to /create or click "Create Claim" in the header.

Create claim form

Step 1: Fill the form

Claim message

A description of what this claim is about (e.g., "Donated to community pool Q1 2024"). Must be 10–1000 characters.

Token information

FieldDescription
ChainEthereum, Optimism, BNB Chain, Polygon, Base, Arbitrum, or Scroll
Token TypeERC-20, ERC-721, or ERC-1155
Prover RoleSender — the prover sent the tokens. Recipient — the prover received the tokens
Token AddressThe token contract address. Validated automatically — shows token name and symbol if found
Counterparty AddressThe other party's address or ENS name (e.g., vitalik.eth). If the prover is sender, this is the recipient. If the prover is recipient, this is the sender

Constraints (optional)

FieldDescription
Min / Max AmountRange for total transfer amount. 0 = no constraint
Min / Max CountRange for number of transfers. E.g., "at least 3" ensures multiple transactions
Start DateOnly include transfers after this date
End DateOnly include transfers before this date (required)

Step 2: Fetch transfers

Click "Fetch Transfers". The app queries the blockchain for token transfers matching your constraints and displays them in a scrollable preview.

A claim can include up to 5,000 transfers. A single proof can cover up to 50 transfers from one wallet.

  • Toggle "My Transfers" (when wallet connected) to filter to your address
  • Changing token, chain, counterparty, or date fields resets the preview
  • If no transfers found, you cannot proceed

Step 3: Create the claim

Click "Create Claim". The app sorts transfers by timestamp, hashes them, builds a merkle tree, stores the claim with the merkle root, and redirects to the home page.

The claim is now public — anyone can view its transfers and generate proofs against it.

On this page