Claim & Settlement
A claim settles only against a voucher the verifier signed for a participant who passed the Gates. The contract re-checks everything on-chain before releasing funds.
The EIP-712 voucher
Section titled “The EIP-712 voucher”The voucher is an EIP-712 typed-data signature over a ClaimAuth struct. The domain binds the signature to a specific pool:
domain = { name: "GatollRewardPool", version: "1", chainId, verifyingContract: <pool address>}
ClaimAuth = { address poolAddress; // the target pool address recipient; // who may claim uint256 amount; // fungible amount or NFT count uint256[] tokenIds; // NFT ids (empty otherwise) uint256 deadline; // expiry (unix seconds) uint256 nonce; // single-use, issued by the verifier}The flow
Section titled “The flow”- The participant passes the Loot’s Gates.
- The verifier issues a
ClaimAuthfor the participant’s wallet, pins a single-usenoncefor that(pool, recipient), sets a shortdeadline, and signs it. - The participant submits
claim(auth, signature)to the pool. - The pool verifies and, if everything holds, computes or reads the allocation and transfers it.
For Random and Equal Loots the voucher carries a zero allocation and the contract computes the amount at claim time; for Custom Loots the verifier signs the exact amount or token IDs.
On-chain verification
Section titled “On-chain verification”The pool independently checks, before moving any funds:
- the signature recovers to the pool’s snapshotted verifier address;
poolAddressequals this pool (no cross-pool reuse);recipientequals the caller (no one else can use your voucher);deadlinehas not passed;- the
noncehas not been used; - the recipient has not already claimed, and a seat is available.
Replay protection
Section titled “Replay protection”Four independent properties make a voucher non-replayable: it is bound to one pool (domain + poolAddress), to one recipient, to a single-use nonce the contract burns on use, and to a short deadline. On top of that, the contract enforces one claim per wallet per Loot. A leaked or reused voucher is inert — it can only ever do exactly what the verifier authorized, once.
This is the crux of Gatoll’s trust model: the verifier decides eligibility, but the contract decides settlement. Even a misbehaving verifier cannot make the pool pay an ineligible address twice or pay against the wrong pool.