Find the wallet's events
Check Redis freshness first. Pull from tonapi when stale and refresh the activity cache.
TonAttest turns real STON.fi activity into programmable, signed proof. Your app defines the rule. We resolve the chain, evaluate the evidence and return an attestation your backend can verify offline.
TonAttest reads a wallet's real STON.fi history and checks it against a rule you define in code — swap amounts, pools, tokens, and how long liquidity actually stayed. Nothing is self-reported by the user.
The result is an Ed25519 attestation your backend verifies offline against a pinned key. We never hold funds, issue a token, or touch the payout — eligibility is the entire product.
See how it worksThe architecture keeps the differentiated logic — rules, evidence and attestations — independent from the data provider and from reward settlement.
Rules are composable condition trees. The SDK provides typed builders while the service evaluates bounded, explainable logic and returns evidence for every leaf.
Both conditions must be satisfied. This is where simple transaction filters become a reusable campaign primitive.
The highest-risk technical component is isolated behind a decoding layer. Known STON.fi router/pool addresses and official SDK structures turn raw chain events into normalized activity.
Check Redis freshness first. Pull from tonapi when stale and refresh the activity cache.
Match known addresses and decode Jetton transfer payloads using official STON.fi SDK types.
Normalize action, token, pool, amount and timestamp so the rule engine can evaluate deterministic activity.
The service verifies on claim. No permanent eligibility state is trusted; the current activity is resolved, evaluated and signed.
The system is designed to make common reward farming expensive without pretending a rule engine can solve coordinated identity attacks.
Use |buys − sells| per token pair instead of gross volume by default.
Limit maximum rewardable volume per wallet for each campaign.
Require minimum time between qualifying actions.
tx_hash is unique in the activity cache, so one event cannot count twice.
Optionally ignore wallets younger than a configured number of days.
Multi-wallet rings remain unsolved in v1. Apps can combine attestations with their own identity layer.
The v1 architecture deliberately avoids running a custom TON indexer. A DataProvider boundary lets the data layer evolve without rewriting the rules engine.
The grant scope stays narrow: verify and attest first, then expand only after the primitive is used.
SWAP + LP_ADD, composable rules, evidence, signed attestations, SDK, docs and demo Mini App.
Optional settlement, webhooks, duration scheduler, dashboard, self-hosted indexer and additional protocols.
Attribution graphs, reputation signals and stronger Sybil heuristics.
Define a rule, call verify, check the signature. Whether you run a Mini App, a game economy or a liquidity programme, the integration is the same three steps — and nothing custodial ever touches your users' funds.
Read the docsWrite the rule in your code. Verify against the chain. Consume a proof your backend can verify offline.