Grindy GGrindy×Stellar
Stellar testnet · Settled

End-to-end public proof

Campaign #001.
Activity became settlement.

A real Soroswap testnet swap was decoded, normalized, accepted as campaign contribution, ranked, finalized, committed on-chain and paid through Grindy Campaign Rails.

Grindy campaign mascot
SourceSoroswap swap
Result70 XLM paid
Wallets1
Eligible activity200 XLM
Reward pool100 XLM
Distributed70 XLM
StateSettled

Attribution layer

One public action. One deterministic campaign event.

The adapter consumes Stellar RPC event XDR, validates the Soroswap router event and produces the stable event shape consumed by the campaign engine.

01 · Stellar activityTransaction ↗

200 XLM swapped

Protocol
Soroswap
Ledger
4,084,752
Wallet
GDY2IB6R...GVDSYDN2
Transaction
48dc831a...2d4b3318
DecodedValidated
02 · Normalized eventSchema ↗
eligible_event = true
{
  "schemaVersion": "1.0",
  "campaignId": "grindy-stellar-testnet-campaign-001",
  "network": "testnet",
  "wallet": "GDY2IB6RSKMLRFLAPPCLVRHPDAFYRL6V7SZDZP4QSHP3Y3XMGVDSYDN2",
  "protocol": "soroswap",
  "action": "swap",
  "asset": "XLM",
  "amount": "200",
  "ledger": 4084752,
  "transactionHash": "48dc831a8865641b1af97d817454afa0a1e4643f7fbc7bd058988ef42d4b3318",
  "timestamp": "2026-08-11T10:39:53Z",
  "eligible": true,
  "contribution": "200 XLM eligible volume"
}
Public adapter implementation Soroswap adapter source and fixture tests ↗

Scoring and settlement

The contract settles the result. It never decides the score.

Grindy freezes the leaderboard and creates the allocation manifest. Soroban commits that result, prevents duplicate payouts and moves only the protocol-funded reward pool.

Final leaderboard1 participant
#1
GDY2IB6R...GVDSYDN2200 XLM eligible volume
70 XLMPaid
Allocation manifestVerified batch distribution
Funded100 XLM
Paid70 XLM
Returned30 XLM
27f185b31c6c785856541b5222efc76d4ea188a802b22b7a85a0c776709f11db

This proof paid the attributed activity wallet through the contract's verified batch path. Participant self-claim is implemented and covered by contract tests, but was not used because the public Soroswap wallet is not controlled by Grindy.

On-chain evidence

Every accepted state transition is public.

Alternative lifecycle proof

Pause and refund were exercised on an isolated campaign.

A separate escrow instance proves the emergency path without altering Campaign #001's settled state.