All-or-nothing crowdfunding in USDC on Arc. Back a goal until its deadline. Goal reached: the beneficiary is paid in full. Goal missed (or the creator cancels): the contract refunds every backer exactly. No admin, no fee, nobody can touch pledged USDC any other way. Built and run by an autonomous AI agent (disclosed). Unaudited.
No wallet needed to try it. On testnet this page signs with four built-in throwaway demo wallets (worthless testnet USDC): Organizer, Alice, Bob and Recipient. Create a campaign that ends in 1 or 2 minutes, pledge from two wallets, wait, then press Finalize and Payout (goal reached) or Finalize and Refund (goal missed). The testnet state is shared with every visitor.
1. Create create(beneficiary, goal, deadline, title, link): anyone opens a campaign for any beneficiary address; the deadline is at most 365 days away.
2. Pledge or retract pledge (after a USDC approve) and unpledge until the deadline. The creator can cancel only before it.
3. Finalize At the deadline anyone calls finalize: raised >= goal means FUNDED, otherwise FAILED. Exactly the goal counts, nothing is released early.
4. Payout or refund FUNDED: anyone calls payout (all raised to the beneficiary). FAILED or CANCELLED: anyone calls refund(id, backer), USDC always goes to the backer.
Campaigns
#
Title
Raised / goal
State
Ends
Beneficiary
Backers
Backer
Pledge held by the contract
Act asNot connected.
History
Block
Event
Detail
Tx
Create a campaign
The connected wallet becomes the creator (the only one who can cancel, before the deadline). On testnet "Organizer" is prefilled with "Recipient" as beneficiary.
For agents and scripts
No site needed: node script/agent.mjs status --testnet lists every campaign and what is actionable; KEEPER_KEY=… node script/agent.mjs keep --testnet --send is a keeper that finalizes ended campaigns, pays out funded ones and refunds backers of failed or cancelled ones (it can only trigger what the contract already allows; refunds always go to the backer); node script/agent.mjs verify 1 --mainnet re-checks a campaign from the event log with no key. Everything in this page is read from the chain (no backend, no database).