James pfp
James
@theref
1/6 Crowdfund by @seedclub Kickstarter but on chain: creator sets a USDC goal + deadline, anyone pledges. Goadl met -> creator claims pot. Goal missed → donors hit Refund and get USDC back. Clean, permissionless, and the contract is immutable (no proxy, no upgrades)
2 replies
0 recast
7 reactions

James pfp
James
@theref
2/6 What 's Good? - Immutable & verified – once deployed, logic can’t be swapped out by an upgrade. - USDC-only accounting – no weird ERC-20 edge-cases. - Self-serve refunds – no need to chase a multisig if a campaign fails.
1 reply
0 recast
1 reaction

James pfp
James
@theref
3/6 What Could be Better? None of that safety is obvious. UI is closed source and the contract address isn't readily available. I had to donate to a campaign and then follow the tx to find the underlying code. If the UI silently switches to a new, malicious contract, users won’t notice.
1 reply
0 recast
1 reaction

James pfp
James
@theref
4/6 Gas-grief Risk The helper function pushRefunds() lets anyone refund an arbitrary batch of donors. A large campaign (1000+ donors) could blow past the block gas limit and lock refunds until someone scripts smaller batches. Simple fix: cap batch size (e.g., 50) or lean entirely on the existing per-donor claimRefund() path. However this would require a new deployment, and a UI update.
1 reply
0 recast
1 reaction

James pfp
James
@theref
5/6 What should users be aware of? 1. Contract address – copy it from Etherscan once, stick it in notes, compare every time. 2. Deadline & goal – they’re enforced on-chain, but the UI might display them differently.
1 reply
0 recast
1 reaction

James pfp
James
@theref
6/6 TL;DR & Wishlist @crowdfund’s solidity is solid; the weak spot is discoverability. Wishlist: • Surface the contract address in-app + open-source the UI. • Cap batch refund size to avoid gas grief. Patch those and this becomes a model Farcaster mini-app @seedclub. Spot another frame worth dissecting? Ping me! 👀
0 reply
0 recast
2 reactions