Skip to content

Architecture

Gatoll separates concerns across four layers so that settlement stays trustless while eligibility stays flexible.

Contracts. A PoolFactory deploys one pool per Loot as a minimal-proxy clone. Pools escrow the 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 will independently re-check.

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

Embedded wallet. A pluginless wallet (see 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

The 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 reconcilable 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, how much, and once. 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 launches first on BNB Chain; see networks.