Contracts

Deployed addresses, interface summary and the EIP-712 domain. The verified source on BscScan is authoritative.

Deployment

ContractAnonFund
NetworkBNB Chain · chain id 56
Address0xEdF59883C7A4c67A368E465BFa4ED7a962546c09
Deployed at block125,475,317
CompilerSolidity 0.8.30, optimizer 200 runs, EVM cancun
DependenciesOpenZeppelin EIP712, ECDSA
SourceVerified on BscScan

Campaign struct

struct Campaign {
    address creator;     // wallet that created the campaign
    address claimKey;    // address of the off-chain claim key
    bool    active;      // accepting donations
    uint256 goal;        // informational target, wei
    uint256 raised;      // lifetime donations, wei
    uint256 balance;     // unclaimed, wei
    string  title;       // 1..80 bytes
    string  description; // 0..1000 bytes
}

Functions

SignatureNotes
createCampaign(string title, string description, uint256 goal, address claimKey) → uint256Creates a campaign owned by msg.sender. Emits CampaignCreated.
donate(uint256 campaignId) payableAdds msg.value to the campaign. Reverts if closed or zero. Emits Donated.
claim(uint256 campaignId, address recipient, uint256 amount, bytes signature)Pays amount to recipient given a valid claim-key signature. Emits Claimed.
setActive(uint256 campaignId, bool active)Creator only. Opens or closes donations. Emits CampaignStatusChanged.
rotateClaimKey(uint256 campaignId, address newClaimKey)Creator only. Replaces the claim key and bumps the nonce. Emits ClaimKeyRotated.
claimDigest(uint256 campaignId, address recipient, uint256 amount, uint256 nonce) → bytes32EIP-712 digest the claim key must sign.
getCampaign(uint256 campaignId) → CampaignFull campaign struct.
getCampaigns(uint256 offset, uint256 limit) → (uint256[] ids, Campaign[] page)Paginated list, newest first.
campaignCount() → uint256Number of campaigns ever created.
nonces(uint256 campaignId) → uint256Current claim nonce.

Events

SignatureNotes
CampaignCreated(uint256 indexed campaignId, address indexed creator, string title, uint256 goal)New campaign.
Donated(uint256 indexed campaignId, uint256 amount)Donation received.
Claimed(uint256 indexed campaignId, uint256 amount)Funds released. Recipient intentionally omitted.
CampaignStatusChanged(uint256 indexed campaignId, bool active)Opened or closed.
ClaimKeyRotated(uint256 indexed campaignId)Claim key replaced.

Custom errors

UnknownCampaign() InvalidClaimKey() InvalidTitle() DescriptionTooLong() ZeroAmount() CampaignInactive() NotCreator() InsufficientBalance() InvalidSignature() InvalidRecipient() TransferFailed()

EIP-712 domain

{
  "name": "AnonFund",
  "version": "1",
  "chainId": 56,
  "verifyingContract": "0xEdF59883C7A4c67A368E465BFa4ED7a962546c09"
}

Claim(uint256 campaignId,address recipient,uint256 amount,uint256 nonce)

Integrating

Everything the site does is a plain contract call; no backend, indexer or API key is involved. To list campaigns, call getCampaigns(0, n). To watch activity, subscribe to the events above. To build an alternative claim client, read nonces(id), sign the typed data with the claim key, and call claim from any funded wallet.