Quests & verification

On-chain & smart-contract quests

Reward what people actually do on-chain (holding your NFT, stacking your token, staking, voting, hitting a tier) verified live from the blockchain, with no screenshots and no honor system. If a wallet holds the asset, has staked, made the deposit, or crossed a threshold, the quest verifies it directly against the chain and pays out automatically.

The one-liner
Most loyalty programs reward clicks. With Loyalty Stacker, you can reward proof, and your most valuable community members, the ones who put capital and conviction on the line, finally get recognized for it.

What it is

Two families of on-chain quests, both verified in real time:

Holding quests
  • Reward wallets that hold a specific NFT collection.
  • Reward wallets that hold a minimum balance of a token.
  • Set any threshold you like to separate casual from committed.
Smart-contract quests
  • Read any public, read-only function on any verified contract.
  • Reward when the result meets a condition you set.
  • Staked, whitelisted, voted, reached a tier, and more.
Checked live at the moment of claiming

There’s no manual review, no uploads, and no way to fake it. A wallet either meets the on-chain condition or it doesn’t, measured against live chain state the instant a user claims.

Supported chains

Holding and smart-contract quests run across the major EVM networks.

ChainHolding quests (NFT / token)Smart-contract quests
EthereumYesYes
BaseYesYes
ArbitrumYesYes
OptimismYesYes
PolygonYesYes
BNB ChainYesYes
AvalancheYesYes
SolanaOn the roadmap*(EVM only)
EthereumBaseArbitrumOptimismPolygonBNB ChainAvalanche
Solana status
*Solana support is built and ready to switch on for holding quests; it’s currently held back pending a data-provider upgrade. Smart-contract quests are EVM-only by design.

What you can do

Holding quests

  • Reward anyone holding an NFT from a specific collection: membership pass, PFP, access token.
  • Reward wallets that hold at least X of your token. Set any minimum you like.
  • Gate rewards to a tier of holders (e.g. “hold 1,000+” vs “hold 10,000+”) by running multiple quests with different thresholds.

Smart-contract quests

  • Point at any contract and read a single public, read-only function.
  • Use functions that take no inputs (a global flag or counter) or a single wallet input, which Loyalty Stacker fills in automatically with the claiming user’s wallet, so each user is checked against their own on-chain status.
  • Pull the contract’s interface (ABI) automatically from the block explorer when the contract is verified, or paste it in for unverified contracts. No engineering ticket required.

Compare the result with a simple operator:

True / false checks
e.g. is whitelisted?, has staked?
Number checks
equals, greater than, less than, or greater/less-than-or-equal, e.g. staked balance ≥ 500, tier ≥ 2, votes ≥ 1.

Examples & use cases

Each smart-contract recipe reads one value from a contract and compares it. Set the goal, Loyalty Stacker reads the value live, applies the operator, and pays out on a pass. Filter by family or search the catalogue below.

15 results
NFT collection holder
Holding quests

“Hold a Loyalty Stacker Genesis Pass” → reward the moment a holder claims. Great for membership perks and holder-only campaigns.

Reads
NFT balance (collection)
Operator
> 0
Holder-only drop
Token balance ≥ X
Holding quests

“Hold at least 100 $TOKEN” → reward your committed holders, not just anyone who touched the token once.

Reads
Token balance
Operator
≥ 100
Committed-holder reward
Whale tiers
Holding quests

Run “Hold 1,000+” for silver and “Hold 25,000+” for gold, each with its own reward, just multiple quests with different thresholds.

Reads
Token balance
Operator
≥ 1,000 / ≥ 25,000
Silver / Gold tier
Has staked anything
Smart-contract quests
Reads
staked balance (wallet)
Operator
> 0
“Staker” badge + 200 pts
Staked at least X
Smart-contract quests
Reads
staked balance (wallet)
Operator
≥ X
500 pts for 1,000+ staked
Is on the allowlist
Smart-contract quests
Reads
isWhitelisted(wallet)
Operator
is true
Early-access role
Has minted
Smart-contract quests
Reads
minted count (wallet)
Operator
> 0
“Founding minter” badge
Voted in governance
Smart-contract quests
Reads
governance vote count (wallet)
Operator
≥ 1
“Active voter” badge
Holds enough voting power
Smart-contract quests
Reads
voting power (wallet)
Operator
≥ X
Delegate perks
LP balance ≥ X
Smart-contract quests
Reads
LP token balance (wallet)
Operator
≥ X
Liquidity provider reward
Holds an NFT from a collection
Smart-contract quests
Reads
NFT balance (wallet)
Operator
> 0
Holder-only drop
Reached a tier
Smart-contract quests
Reads
tier / level (wallet)
Operator
≥ N
Tier-N reward ladder
Deposit balance ≥ X
Smart-contract quests
Reads
current deposit/vault balance (wallet)
Operator
≥ X
“Depositor” reward
Protocol milestone hit
Smart-contract quests
Reads
a global counter (e.g. total members)
Operator
≥ N
Community-wide unlock
Account is in good standing
Smart-contract quests
Reads
a status flag (wallet)
Operator
is true
Restore/keep access
One quest, your whole audience
Because the check is wallet-aware, the same quest works for everyone: every claimant is measured against their own on-chain position.
Illustrative: an allowlist check at claim time
contract  →  0xA1b2…f9C3   (Base, verified)
function  →  isWhitelisted(address)
input     →  claimant wallet 0x9f3a…2a1c   (filled in automatically)
returns   →  true
rule      →  is true  →  PASS  →  Early-access role granted

Rewarding trading volume & total deposits

Cumulative metrics like lifetime trading volume or total historical deposits aren’t a single number sitting on most contracts, so they can’t always be read with one function call. There are two reliable ways to reward them: choose the source rather than asking us to replay the chain.

Keep this accurate
Loyalty Stacker does not scan a wallet’s entire transaction history automatically. Trading-volume and deposit rewards are absolutely possible, but they come from either a readable contract value or an aggregating API / subgraph, never from “automatic on-chain history scanning.”

Many staking, vault, and points contracts already track a running total. If that value is public and read-only (e.g. totalDeposited(wallet), a cumulative-volume figure, or a points figure) a smart-contract quest reads it directly: “deposit balance ≥ X”, “points ≥ X”. Done.

Read it directly
function  →  totalDeposited(address)
input     →  claimant wallet
returns   →  12,400
rule      →  ≥ 10,000  →  PASS  →  “Depositor” reward granted

Bottom line: volume and deposit rewards are absolutely possible. You just pick the source (a readable contract value or an aggregating API) rather than asking Loyalty Stacker to replay the chain.

Why it matters

Reward real conviction, not vanity

Capital staked, tokens held, votes cast: these are the actions that signal your strongest community members. Now you can pay them back for it.

Zero fraud, zero manual review

Every claim is verified live against the blockchain. No screenshots to police, no fake submissions to refund.

Self-serve for marketers

Point at a contract, pick a function, set a threshold. The interface is auto-detected and you can test it before you launch, no developer in the loop.

Composable campaigns

Stack holding quests, staking checks, governance participation and tier ladders into a single journey that mirrors how your protocol actually grows.

Cross-chain reach

One program spans Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain and Avalanche.

How it works

Both families verify against live chain state at claim time, so rewards always reflect where a wallet stands right now. The setup differs slightly. Switch between them below.

  1. 1
    Paste the asset contract
    Choose a chain and paste the NFT or token contract address. Loyalty Stacker auto-fills the asset’s name, symbol and image so you can confirm you’ve got the right one.
  2. 2
    Set the minimum
    For token quests, set a minimum amount to qualify. NFT quests default to “holds at least 1.”
  3. 3
    Read current holdings on claim
    When a user claims, Loyalty Stacker reads that wallet’s current holdings live from the chain and checks them against your minimum.
  4. 4
    Pass or fall short
    Meet the bar → the quest completes and the reward (points and/or a badge) is granted instantly. Fall short → the user sees exactly how much they hold versus what’s needed.

Want to reward off-chain actions too: games played, spend, subscriptions, KYC? Pair these with API Integration quests, or step back to the quest engine overview.

Launch your program under your own brand

Quests, referrals, points and wallet cards across Web2 and Web3.

Launch your program