The contract
Every method this app can call, and what each one costs.
0x533CED45454C3BeA3c2eC378997aF002c4822899On GENLAYER STUDIO. Source version 4. An entry deposit is 0 GEN, an appeal bond is 0 GEN, and the award fee is 0% - all read from the contract, not from this page. Run npm run verify to check this deployment against the source in the repo.
open_roundWRITE(title, summary, criteria, weights, primary, windows, eligibility)Escrows the budget and freezes the criteria. There is no method that edits either afterwards.
check_criteriaWRITE(criteria)The scorability gate. Final in both directions, so criteria cannot be re-asked until they pass.
commitWRITE(round_id, commitment)Stores a sha256 that binds your own address. Costs the entry deposit.
amendWRITE(round_id, bid_index, commitment)Replaces a sealed digest while the commit window is open.
withdrawWRITE(round_id, bid_index)Cancels a sealed bid before the window closes and returns the deposit.
revealWRITE(round_id, bid_index, salt, proposal)Refused unless the hash of address, proposal and salt matches what was sealed. Eligibility is not re-checked, so a bid sealed in good faith can always be opened.
scoreWRITE(round_id, bid_index)Permissionless. Runs the comparative consensus that grades one bid.
appeal_scoreWRITE(round_id, bid_index, argument)Once per bid, by its own bidder, against a bond forfeited unless the re-score raises the total.
resolve_appealWRITE(round_id, bid_index)Permissionless. Re-scores the bid with the argument in front of the network.
askWRITE(round_id, question)Open to any address. Closes with the commit window.
answerWRITE(round_id, question_index, reply)Buyer only, once, and closes with the commit window.
awardWRITE(round_id)Buyer first, then anyone once the decision window has passed.
declineWRITE(round_id, why)Returns the budget, and the deposit of every bidder who turned up. A commitment nobody ever opened still forfeits. Never charges the fee.
expireWRITE(round_id)Abandons a round that cannot be awarded, so escrow is never stranded. Refuses while an appeal is open: resolving one is permissionless, so that is not a dead end.
sweepWRITE(round_id)Marks bids that were never revealed, so the record matches reality.
claimWRITE(round_id, bid_index)Each bidder pulls what they are owed. Nothing is pushed.
collect_forfeitsWRITE(round_id)Permissionless. Sends the deposits of bidders who never revealed to the treasury, which is what pays for scoring the bids that did arrive.
transfer_ownershipWRITE(new_owner)Owner only. Refuses the zero address, so the role cannot be dropped by accident.
set_termsWRITE(fee_bps, entry_deposit, appeal_bond)Owner only, and it never reaches a round that already exists.
set_treasuryWRITE(treasury)Owner only. Where the award fee is sent.
termsREADFees, deposits and every published limit.
statsREADRunning totals: rounds, bids, escrow, payouts.
checkREAD(digest)The stored scorability verdict for a criteria set. Read before publishing, so wording already judged is never re-asked.
rounds_pageREAD(offset, limit)A page of rounds, newest first.
roundREAD(round_id)One round with its frozen criteria and weights.
bidsREAD(round_id)Every scorecard, proposals cut to a preview.
bidREAD(round_id, bid_index)One bid with its proposal in full.
questionsREAD(round_id)Every clarification, asked and answered.
bidderREAD(address)What an address entered, opened, scored and won.
buyerREAD(address)What an address published, awarded and declined.