Skip to main content
The local game accepts GEM or LocalUSD and delivers three ERC-20 prizes from pre-funded inventory. It is separate from the app’s animated gacha and sample balances.
The game and randomness adapter only deploy on chain 31337. The operator chooses entropy; this is not VRF or fair production randomness. The local game is not ready to accept real paid entries.

Two entry methods

Grant a limited benefit allowance to the game through the reserve. spinWithGems(minimumDebit, deadline) burns the configured GEM amount and sends the reference debit to the game. GEM itself never transfers.
The fixture costs 1 GEM or 1 LocalUSD, independent of frontend simulation prices. Combining a GEM discount with cash is not implemented. Payment, inventory reservation and request creation succeed or revert together.

From entry to delivery

1

Fund inventory first

An immutable table identifies each token, amount and GRAPL reference value. The fixture holds ORBIT and SORBIT. A pending spin locks three times each prize amount, covering any possible three-slot outcome.
2

Accept the request atomically

Insufficient unlocked inventory reverts the entry, including payment or burn. Reserved inventory cannot fund another spin. Entry does not automatically buy winning tokens from a market.
3

Fulfill once

The configured adapter returns operator-selected entropy. Each slot hashes entropy, request ID and slot, then selects by modulo prize count. Repeated and unauthorized callbacks revert; a prize token can repeat in one bag.
4

Deliver tokens

The game marks fulfillment, releases worst-case locks and transfers prizes to the recorded player. PrizeDelivered records quantities and reference values; BagDelivered records their sum. Transfer failure rolls back fulfillment.

Reference value is not a market quote

Configured GRAPL prize values are not live USD prices or guaranteed liquidation values. Odds, inventory funding and promotional value need an approved economic model. No automatic launch contribution percentage has been finalized.

Pending requests and production gaps

Fulfillment works during a game pause, but accepted local requests have no timeout, cancellation or refund if the operator never responds. Production needs secure randomness, recovery handling, budgets, approved odds and independent review. The app’s animation changes fixture state only. It neither chooses an onchain outcome nor confirms delivery. Compare environments under availability.