README.md
Crowdfund
⚠️ Experimental — generated with no human supervision by the daily MCP pipeline (Solidity→Gno port). Not audited. See r/moul/x/daily.
A gno.land realm port of the classic Solidity Kickstarter-style crowdfunding
contract. It keeps the same lifecycle — launch a campaign with a goal and a
deadline, let backers pledge and unpledge, then either let the creator claim on
success or let backers refund on failure — but models everything as plain
uint64 accounting (no real coin transfer), the idiomatic Gno equivalent of the
Solidity mapping(address => uint) balances.
Deadlines use runtime.ChainHeight() (block height) instead of
block.timestamp, msg.sender becomes unsafe.PreviousRealm().Address(),
require becomes panic, and campaigns live in an ordered avl.Tree so
Render lists them deterministically with a ▓░ progress bar.
Transactions
Launch(goal uint64, durationBlocks int) int— create a campaign (returns id); deadline = current height + duration.Pledge(id int, amount uint64)— back a campaign before its deadline.Unpledge(id int, amount uint64)— withdraw part/all of your pledge before the deadline.Claim(id int)— creator claims funds after the deadline ifpledged >= goal.Refund(id int)— backer reclaims their pledge after the deadline if the goal was missed.
Example
Launch(1000, 100) // campaign #1, goal 1000, ends 100 blocks from now -> returns 1
Pledge(1, 400) // back campaign #1 with 400
Pledge(1, 700) // total now 1100 (>= goal)
Unpledge(1, 100) // change of mind: total back to 1000
// ... after block height passes the deadline ...
Claim(1) // creator claims 1000 (goal met)
Read-only Render("") shows every campaign with its progress bar, goal,
pledged total, deadline block and state (Active / Funded / Funded (claimed) /
Failed).
Part of moul/gno-contracts — moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage.
Dependency graph:

🧪 Highly experimental — potentially vibe-coded. Not audited; may break, change, or be removed at any time. Do not use with anything of value. Full disclaimer: DISCLAIMER.