Skip to content

Architecture

Gatoll separates responsibilities across four layers, keeping settlement trustless while eligibility remains flexible.

Contracts. A PoolFactory deploys one pool per Loot as a minimal-proxy clone. Pools escrow rewards, enforce the claim rules, compute allocations, and handle reclaim. This layer is the source of truth for funds. See smart contracts.

Verifier (backend). The eligibility oracle. It authenticates users, evaluates Gates, and signs EIP-712 claim vouchers. It holds no funds and cannot move them; it can only authorize a claim the contract independently checks.

Indexer. A per-chain service that scans pool events, including creation, contributions, claims, and reclaims, then writes them to a queryable store with confirmation and reorg handling. Product surfaces read campaign state from the indexer instead of hammering RPC, and each Loot page reflects on-chain reality with a clear “pending → confirmed” status.

Embedded wallet. An extension-free wallet, described in identity & wallet, that lets participants authenticate and claim without a browser extension. It is the user-facing key layer that makes zero-friction claiming possible.

create ──▶ PoolFactory deploys pool ──▶ indexer confirms ──▶ Loot goes live
fund ──▶ contribute() (Pending) ──▶ indexer records contributions
claim ──▶ pass Gates ──▶ verifier signs voucher ──▶ pool.claim() ──▶ transfer
end ──▶ reclaim() ──▶ contributors recover unclaimed funds

This split is the heart of the design:

ConcernWhereWhy
Custody & payoutOn-chain (contracts)Must be verifiable and tamper-proof forever
Allocation mathOn-chainThe split cannot be altered after launch
Eligibility (Gates)Off-chain (verifier)Needs Web2 signals and fast iteration
Campaign metadata, socialOff-chain (backend)Rich, mutable, and not value-bearing
Read modelsIndexerFast queries that can be reconciled against chain events

Eligibility is the only thing the protocol trusts off-chain, and even then the verifier can only authorize. The contract still decides who can claim, how much they receive, and whether the claim has already been used. Everything that moves value is on-chain and auditable.

A single backend serves multiple chains, keyed by chain ID, with a separate verifier key and indexer per chain. The same contracts deploy to each network independently. Gatoll currently supports Ethereum mainnet and BNB Smart Chain mainnet; see networks.