Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

README.md

2.72 Kb · 61 lines

English Auction

⚠️ Experimental — generated with no human supervision by the daily MCP pipeline (Solidity→Gno port). Not audited. See r/moul/x/daily.


An idiomatic gno.land port of the classic Solidity English (ascending-bid) auction. It ports the core mechanics — a seller opens an auction, bidders submit strictly increasing bids, the displaced top bid becomes refundable, and after a block deadline anyone can settle it — into a single realm that hosts many concurrent auctions.

Solidity's msg.sender maps to unsafe.PreviousRealm().Address(), block.number to runtime.ChainHeight(), require to panic, and events to chain.Emit. There is no real coin transfer: bid amounts and refunds are tracked as plain uint64 accounting in ordered avl.Trees (mirroring Solidity's pendingReturns withdraw pattern). Auctions and pending refunds are keyed so Render can iterate deterministically.

Transactions

  • Start(cur, item string, durationBlocks int64) int64 — open an auction (caller becomes the seller); ends at ChainHeight() + durationBlocks. Returns the id.
  • Bid(cur, id int64, amount uint64) — bid; must strictly exceed the current highest. The prior top bid becomes refundable.
  • Withdraw(cur, id int64) uint64 — reclaim your displaced bids for an auction.
  • End(cur, id int64) — after the deadline, award the item to the top bidder.

Example calls

# open a 100-block auction for a painting -> returns id 1
Start("Vintage painting", 100)

# two bidders compete (amounts are accounting units, not real coins)
Bid(1, 500)     # alice
Bid(1, 750)     # bob outbids -> alice's 500 is now refundable
Withdraw(1)     # alice reclaims 500

# once ChainHeight() >= endHeight, anyone settles it
End(1)          # item awarded to bob at 750

Visit the realm to see the live table of auctions: item, highest bid + bidder, blocks remaining or ended, and the winner.


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:

gno.land/r/moul/x/daily/englishauction/v0 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.