NEAR HACKATHON · Privacy & Private AI · AI Security

Attested Arena

Model competitions anyone can fund and everyone can trust.

Delta League just showed what an open community can do: in one week, people editing weights took a 0.8B model from 17.4% to 53.4%. The natural next step is to let anyone run competitions like that — on their own problems, with their own prize money — and still have every result trusted by people who were not in the room. That takes three things no leaderboard has had together: a test set nobody can leak or tune, scores nobody has to take on faith, and prizes that pay out by rule.

An exam with no keeper

Code inside the judge's enclave designs each task from its own randomness; a model in NEAR AI's confidential inference only puts it into words. Each task is sealed to the exact build that made it and opened once, in a duel — the sponsor, the operator and we cannot read one before it is used.

Scores you can re-check

Models answer inside NEAR AI's confidential inference and sign every answer there. Scores come from open checker code. This page re-checks all of it in your browser, from NEAR state.

Prizes that pay by rule

A sponsor funds a season; a model that proves it is better earns progress tokens that redeem for the pool — paid by a contract that trusts nothing but the judge's signature.

A full season ran on the NEAR blockchain (testnet): season5.attested-arena.testnet. Source, tests and the command-line checker: github.com/zavodil/attested-arena. Evidence saved with this page: web/evidence.

ArchitectureThe exam lives where nobody can read it; the record and the money, where everybody can

Read it left to right. People are NEAR accounts. They only talk to the arena — one smart contract per season on the NEAR blockchain, with no access keys, so its rules cannot change. Only the arena calls the judge, and only the judge talks to the models; both run in hardware enclaves nobody can look inside. Point at a promise under the diagram to see where it is enforced.

PEOPLE each one a NEAR account NEAR BLOCKCHAIN the public record and the money HARDWARE ENCLAVES · TEE the neutral ground: nobody can look inside Sponsors want a better model Entrants challenge the champion Anyone re-checks every claim from the chain, with the judge's own code Arena smart contract LOCKED one per season; no access keys, so no rule can change Exam commitment one Merkle root, fixed before any duel Judge's code hash and key the only signature it accepts Every result, signed lost duels too, then each task revealed Prize pool and progress tokens confirmed gains mint, tokens redeem WHY A CHAIN · nobody holds the money · results public and timestamped · entry deposits held by code, not by us · the judge checks who called it Judge on OutLayer · Intel TDX a WebAssembly program, run from its published file by hash, never upgraded · designs tasks from enclave randomness · seals each one, publishes its hash · works only for a keyless arena · checks each model's attestation · scores with open checker code, signs Keys from NEAR MPC network (CKD) bound to this code's hash: any other version gets other keys, opens nothing Models NEAR AI confidential inference: Intel TDX and NVIDIA confidential GPUs · one words each task, a second reads it back · champion vs challenger, same tasks · every answer signed inside its TEE next: weight deltas, served by hash funds the pool enters a model paid by rule public record calls the judge signed result into its callback tasks signed answers 1 An exam with no keeper a test set no one has seen, not even us 2 Scores anyone can re-check signed in TEEs, re-run from the chain 3 Prizes paid by rule a bounty paid by a contract with no keys

The seasonSeason 5: one prize, three challengers, a hundred sealed tasks

For the hackathon we ran the arena end to end on the NEAR blockchain (testnet). Seasons 0–4 were trial runs that shook out the pipeline; season 5 is the one this page proves, from the first sealed task to the payout. The sponsor and the entrants are our own test accounts. The judge runs on OutLayer, the models on NEAR AI's confidential inference; the money is testnet NEAR.

The prize

5 NEAR

Put up by arena-sponsor.testnet and held by the arena. A model that proves a gain over the champion earns progress tokens, one per point of gain, that redeem for the pool. With no record, the sponsor takes the pool back.

The rules

Fixed at deploy, unchangeable

  • first champion: Qwen3-VL-30B-A3B-Instruct; 3 models may enter
  • entry deposit 0.1 NEAR, returned after the season
  • both models answer the same 5 tasks per portion; a sequential test (H1: the challenger wins 70% of the tasks they disagree on; α 5%, β 10%) decides within 6 portions
  • a passed test earns a confirmation on fresh tasks; the gain is counted there only
The exam

100 sealed tasks

104 written in 13 batches, 100 admitted by code: who-sits-where puzzles (7 batches) and texts written to exact rules (6 batches). Designed by code in the judge, worded by DeepSeek-V4.1-Flash-1017, read back by Qwen3.8-27B. The root was fixed before the first duel; each task is used once, then published.

The entrants

EntrantModelAgainst the championPortionsResult
arena-bob.testnetglm-5.3-flashQwen3-VL-30B-A3B-Instruct11record, +33.33 points — the new champion, redeemed the pool
arena-alice.testnetQwen3.6-35B-A3B-FP8glm-5.3-flash4rejected — the test found it no better
arena-carol.testnetglm-5.3-flash (the champion's own model, entered again)glm-5.3-flash5not proven — the pool ran out before the test could decide

What happened, in order

  1. 1The judge was published and pinned. Build c05fb8cc38…557b7a, key fb0fc7517d…d97406, said by the build itself in BX2D1mez…8uB6zc.
  2. 2The arena was deployed and locked. season5.attested-arena.testnet has no access key: its code — which decides which tasks a portion may open — cannot change.
  3. 3The exam was made inside the enclaves. 13 batches: code in the judge designed the tasks, a model in NEAR AI's TEE worded them; 104 written, 100 admitted by code, each sealed to the judge's build. Nobody saw them.
  4. 4The pool was committed. Merkle root 7a8f2a3663cd…266b06 over 100 leaves, fixed by DUHXtS3F…RrkE81 before any duel.
  5. 5Models dueled. 3 duels, 19 judged portions, 95 tasks used once and revealed with their results, 190 answers.
  6. 6A record was confirmed and paid. 1 confirmed record; 33.33 progress tokens minted for the gain on the confirmation tasks; the sponsors' 5.00 NEAR redeemed by their holder.

ProofWhat this season proves

Six claims about season 5. None of them asks you to trust this page: as it opened, your browser checked every one with the judge's own code, compiled to WebAssembly, and Intel's quote verifier, on NEAR's state for the season. Each card lists its checks with the values computed; one button reads NEAR live and checks again. The same checks run from a terminal with arena-verify.

Checking in this browser…
Commitment

The exam was fixed before the first duel, and every task used came from it

  • the Merkle root over the leaves on chain equals the root fixed at seal
  • every batch's leaves are the ones the judge signed
  • every revealed task is canonical JSON that hashes to its committed leaf
Checking…
Authorship

Only this build of the judge wrote, sealed and scored it

  • the build announced its own key on chain, and the arena pinned that key
  • every batch, portion and reveal is signed by that key and names this arena and operator
  • every evidence blob hashes to the digest its result signed
Checking…
Provenance

Every answer came from the named model, inside its TEE

  • each request is rebuilt byte for byte from the task with the judge's code
  • each answer's EIP-191 signature covers that request and response and recovers to the model's key
  • that key's Intel TDX quote verifies against Intel's collateral, is bound to the hash of exactly these requests, and NVIDIA passed its GPUs
Checking…
Scores

Every score is the checker's verdict, not the judge's word

  • every answer is scored again in this browser with the judge's own checker code, compiled to WebAssembly
  • every result must equal what the judge signed
Checking…
Rules

Duels, tokens and payouts followed the rules

  • each duel's sequential test is replayed from the signed results and must end as on chain
  • the progress tokens minted equal the confirmed gains
  • each payout is exactly balance × pool / supply
Checking…
Sealing

Nobody could peek at a task

  • the operator calling the judge directly for a sealed task: refused
  • another build declaring the judge's exact key: the task does not open
  • the arena account has no key at all
Checking…

Step 1The judge

The judge is an OutLayer app: a WebAssembly program that runs inside an Intel TDX enclave. It is run straight from its published file, named by the file's sha256 — never as an upgradable project. Its keys come from the NEAR MPC network's confidential key derivation (CKD), bound to that hash (bind: "wasm"): any other build, ours included, gets other keys. The build is reproducible: ./judge/build.sh gives the same sha256.

Build (sha256)Judge key
c05fb8cc385d29a08a4aa68732757cbae49d55494b3a61d86251102fcc557b7a
the wasm on FastFS
fb0fc7517df836d61fe64be897d18bcaf6981b7fb9942d0f2e2a47a849d97406
What is proven hereThe key the arena pinned is the key this exact build announced in its own on-chain run, and every result the arena accepted is signed by it. A later build — even one we publish — signs with a different key and is refused.
re-check: only this build of the judge wrote, sealed and scored it

Step 2The exam nobody saw

For each batch, code in the enclave designed the tasks from the enclave's randomness, a model in NEAR AI's confidential inference wrote the wording, a second model read it back, and code decided admission. Only ciphertexts and leaf hashes left the enclave; the arena fixed the Merkle root over them before the first duel.

FamilyBatchesWrittenAdmitted
seating75652
lines64848
Every batch, with its signed admission counts
BatchFamilyWrittenAdmittedKept out
0seating88—
1lines88—
2seating88—
3lines88—
4seating86{'malformed': 2}
5lines88—
6seating87{'malformed': 1}
7lines88—
8seating88—
9lines88—
10seating88—
11lines88—
12seating87{'malformed': 1}
What is proven hereThe pool was committed before any task was used, no task outside it was ever scored, and every task is public now and provably one of the committed ones. Before its use, no one could open one — the attempts below failed.
re-check: the exam was fixed before the first duel, and every task used came from it · re-check: nobody could peek at a task

Step 3Duels

Both models answer the same tasks. A sequential test (SPRT: H1 “the challenger wins 70% of the tasks they disagree on”, α 5%, β 10%) decides; a passed test earns a confirmation on fresh tasks, and the gain is measured there. A run that fails — here, one that outlived OutLayer's 200-block window for returning a result — spends its tasks unopened.

Duel 0: glm-5.3-flash (entered by arena-bob.testnet) vs champion Qwen3-VL-30B-A3B-Instruct — record, +33.33 points

arena-bob.testnet received 33.33 progress tokens: the gain on the confirmation tasks only.

PortionPhaseTasksChampion rightChallenger right
0Test0–40/53/5signed by the judge
1Test5–90/51/5signed by the judge
2Test10–140/54/5signed by the judge
3Test15–19no result: tasks spent unopenedthe run produced no output
4Test20–240/51/5signed by the judge
5Confirm25–291/54/5signed by the judge
6Confirm30–341/52/5signed by the judge
7Confirm35–390/52/5signed by the judge
8Confirm40–440/51/5signed by the judge
9Confirm45–490/51/5signed by the judge
10Confirm50–540/52/5signed by the judge
Task 0 (seating) — revealed after portion 0
At the cinema, six friends took a single row of seats. Nico sat somewhere between Jun and Ivo. Wren sat somewhere to the left of Jun. Wren and Vera sat in neighbouring seats. Ivo sat in the first or the last seat. Vera also sat in the first or the last seat. Hugo sat somewhere to the left of Jun.
ModelAnswerCheckerTEE signer
Qwen3-VL-30B-A3B-Instruct
(no <answer> block) …least 1, but we already have:
- Seat 1: Vera
- Seat 2: Wren
- Seat 6: Ivo

So available seats: 3, 4, 5

People left: Nico, Jun, Hugo

So Jun, Nico, Hugo must be in seats 3, 4, 5

Now, Jun must be in 3
no <answer> block0x2665…645462
glm-5.3-flash
Vera, Wren, Hugo, Jun, Nico, Ivo
right0x3b75…24fa0c
Task 1 (seating) — revealed after portion 0
On a bus trip, seven passengers settled into one row of seats. Jun sat somewhere between Dara and Uma. Dara and Pia sat in neighbouring seats. Quin and Dara sat in neighbouring seats. Dara sat somewhere between Dmitri and Uma. Jun sat somewhere between Uma and Elsa. Elsa and Jun sat in neighbouring seats. Jun sat somewhere to the left of Dara. Dara sat somewhere between Uma and Quin.
ModelAnswerCheckerTEE signer
Qwen3-VL-30B-A3B-Instruct
(no <answer> block) …tri are to the left of Dara, and Uma to the right.

So the order must be: Quin, Dmitri, Dara, Uma — but wait, Quin and Dmitri are both on the left — but we don’t know their order.

But Dara is between
no <answer> block0x2665…645462
glm-5.3-flash
(no <answer> block) …
no <answer> block0x3b75…24fa0c

Duel 1: Qwen3.6-35B-A3B-FP8 (entered by arena-alice.testnet) vs champion glm-5.3-flash — Rejected

PortionPhaseTasksChampion rightChallenger right
11Test55–591/50/5signed by the judge
12Test60–641/50/5signed by the judge
13Test65–691/50/5signed by the judge
14Test70–743/50/5signed by the judge
Task 55 (lines) — revealed after portion 11
Write a short text about the life of a honeybee.

Rules:
1. The text has exactly 6 lines.
2. Read from top to bottom, the first letters of the lines spell "ASLAHE".
3. Line 3 does not contain the letter "o", in either case.
4. The word "honey" appears exactly 1 time in the text, in any case.
5. The last word of the text is "her".

Definitions: a line is a non-empty line of text; empty lines do not count. A word is a run of the letters A-Z and a-z, with apostrophes allowed inside it; digits, hyphens and all other characters separate words. The first letter of a line is the first letter A-Z or a-z on it.
ModelAnswerCheckerTEE signer
glm-5.3-flash
(no <answer> block) ….

Line 5: "Hardworking foragers gather nectar, turning it into honey." 

Line 6: "Every worker serves the queen, and all the hive adores her." Ends with "her". Good.

Let me check first letters: A, S
no <answer> block0x3b75…24fa0c
Qwen3.6-35B-A3B-FP8
A tiny bee wakes at dawn.
Searching for sweet nectar.
She visits many flowers.
Gathering pollen with care.
Making honey for the hive.
She serves her colony.
the lines begin with "ASSGMS", not "ASLAHE"0xfdbd…1e8ddf
Task 56 (lines) — revealed after portion 11
Write a short text about why we dream at night.

Rules:
1. The text has exactly 6 lines.
2. Read from top to bottom, the first letters of the lines spell "NSOYWS".
3. Line 2 has exactly 9 words.
4. Line 1 does not contain the letter "l", in either case.
5. The last word of the text is "mystery".

Definitions: a line is a non-empty line of text; empty lines do not count. A word is a run of the letters A-Z and a-z, with apostrophes allowed inside it; digits, hyphens and all other characters separate words. The first letter of a line is the first letter A-Z or a-z on it.
ModelAnswerCheckerTEE signer
glm-5.3-flash
(no <answer> block) … emotions.
Others see dreams as rehearsal for threats we might face.
Your sleeping brain stays active, weaving images from memory.
While science offers theories, no single answer exists.
So each night
no <answer> block0x3b75…24fa0c
Qwen3.6-35B-A3B-FP8
Night brings visions to the mind
Sleeping brains process daily events
Often we recall strange scenes
Yearning for answers remains
We seek understanding always
Such a deep mystery
line 2 has 5 words, not 90xfdbd…1e8ddf

Duel 2: glm-5.3-flash (entered by arena-carol.testnet) vs champion glm-5.3-flash — NotProven

The champion's own model, entered again. At temperature 0 the same model still answered 3 of 25 tasks differently from itself (GPU batching is not bit-exact). The test treats that as noise: no record, nothing minted.

PortionPhaseTasksChampion rightChallenger right
15Test75–793/52/5signed by the judge
16Test80–841/50/5signed by the judge
17Test85–895/55/5signed by the judge
18Test90–945/55/5signed by the judge
19Test95–992/51/5signed by the judge
Task 75 (lines) — revealed after portion 15
Write a short text about the work of a museum guard.

Rules:
1. The text has exactly 6 lines.
2. Read from top to bottom, the first letters of the lines spell "MIVSCA".
3. Line 5 has exactly 9 words.
4. Line 4 does not contain the letter "l", in either case.
5. The last word of the text is "home".

Definitions: a line is a non-empty line of text; empty lines do not count. A word is a run of the letters A-Z and a-z, with apostrophes allowed inside it; digits, hyphens and all other characters separate words. The first letter of a line is the first letter A-Z or a-z on it.
ModelAnswerCheckerTEE signer
glm-5.3-flash
Museum guards keep watch over treasures old and rare.
In quiet rooms, they walk softly among the art.
Vigilant eyes scan every corner for harm or theft.
Steady steps echo as they pace each dim room.
Careful hands never touch the paintings, yet they protect
At closing time, they lock the doors and head home.
right0x3b75…24fa0c
glm-5.3-flash
Museum guards stand watch through quiet halls.
In dim galleries, they notice every step.
Vigilant eyes protect paintings from harm.
Steady footsteps guard each precious room.
Careful checks keep every canvas and frame safe tonight.
At closing time, the tired guard walks home.
right0x3b75…24fa0c
Task 76 (lines) — revealed after portion 15
Write a short text about why the sky turns red at sunset.

Rules:
1. The text has exactly 6 lines.
2. Read from top to bottom, the first letters of the lines spell "STWDSE".
3. Line 1 has exactly 10 words.
4. The word "slightly" appears exactly 1 time in the text, in any case.
5. The last word of the text is "picture".

Definitions: a line is a non-empty line of text; empty lines do not count. A word is a run of the letters A-Z and a-z, with apostrophes allowed inside it; digits, hyphens and all other characters separate words. The first letter of a line is the first letter A-Z or a-z on it.
ModelAnswerCheckerTEE signer
glm-5.3-flash
Sunlight travels a long path through the air at sunset.
The atmosphere scatters away blue light, leaving warm red tones.
Waves with shorter wavelengths scatter strongly, while longer red waves survive.
Dust and tiny particles slightly deepen the glowing crimson shade.
Sunsets look redder near the horizon because light bends more.
Every evening paints the sky like a beautiful, stunning picture.
right0x3b75…24fa0c
glm-5.3-flash
Sunlight travels a long path through the air at sunset.
The atmosphere scatters blue light away, leaving warm red tones.
Waves of shorter blue light scatter widely, while longer red waves survive.
Dust and haze slightly shift the remaining orange and crimson hues.
So the horizon glows with fiery colors as the sun sinks.
Every evening paints a different, breathtaking picture.
right0x3b75…24fa0c
What is proven hereEvery answer in every duel was produced by the named model inside its TEE (Intel TDX quote and NVIDIA verdict, bound to the hash of exactly these requests), every score is what the open checker says, and every duel ended where the test, replayed from the signed results, ends.
re-check: every answer came from the named model, inside its TEE · re-check: every score is the checker's verdict, not the judge's word · re-check: duels, tokens and payouts followed the rules

AttacksTrying to get around it

AttemptWhat happenedTransaction
The operator calls the judge's own build directly, not through the arena, asking it to open a sealed task that was never opened.Refused: {"error": "this operation is taken only from the arena season5.attested-arena.testnet itself, not from `attested-arena.testnet`"}CNSeM6er…yZazx6
The operator runs another build that declares the judge's exact pool key (bind: wasm, caller: signer) on the same ciphertext with the same aad.Does not open: {"error": "Encryption key error: decryption failed", "opened": false}Equ9rzkR…runKNp

And in the contract's tests (contract/src/tests.rs): a result signed by any other build is refused; a result for another arena or operator is refused; evidence other than the signed evidence is refused; a portion must score exactly the tasks it was given; entering the champion's own model earns nothing; a challenger that passes by luck fails the confirmation.

What is proven hereThe operator — the one party that runs the season — cannot open a task early, and neither can any other build of the code.
re-check: nobody could peek at a task

Step 4Money

Sponsors put 5.00 NEAR into the season's pool. Each path out is one rule: redeem pays balance × pool / supply (both fixed at close) and burns the tokens; with no record, reclaim returns each sponsor's own deposit; refund_deposit returns every entry's deposit, whatever its duel did.

AccountCallTransaction
arena-sponsor.testnetsponsor — put into the poolF7qBnUiB…N2Gkph
arena-bob.testnetenter — entered a model: z-ai/glm-5.3-flash7aDA6aHr…uytPdY
arena-alice.testnetenter — entered a model: Qwen/Qwen3.6-35B-A3B-FP84xno5XCw…Qbnx7Z
arena-carol.testnetenter — entered a model: z-ai/glm-5.3-flash53nUEPFM…LQqW5y
attested-arena.testnetclose — closed the season7qQag4wz…6uf4gL
arena-bob.testnetredeem — redeemed all its progress tokens for its share of the poolGPC8pNQx…UxRwep
arena-bob.testnetrefund_deposit — took back its entry depositAJpVmp4e…QKG2rC
arena-alice.testnetrefund_deposit — took back its entry depositHNLWrFLn…p5rcZv
arena-carol.testnetrefund_deposit — took back its entry depositFYHjL3Z7…jan98w
What is proven hereTokens were minted only for the confirmed gain, and the payout was exactly the one rule.
re-check: duels, tokens and payouts followed the rules

DesignWhy each choice

ChoiceWhy
The judge runs from its wasm URL, not as a projectA project's keys survive upgrades, so its owner could ship a version that dumps the pool. Keys derived from the build's sha256 die with the build.
The arena is locked, and the judge checks itThe contract decides which tasks a portion may open. With no key on its account nobody can swap that code mid-season, and the judge refuses an arena that still has one.
Code designs the task; a model only writes wordsModels cannot reliably write conditions consistent with their own answer — in our first test 5 of 6 failed their own check. Code guarantees exactly one answer; a second model checks the wording.
Admission borrowed from olympiad problem settingCodeforces Polygon and the Kattis/ICPC format already solved 'is this task sound': the author's solution passes, known wrong answers fail, damaged solutions fail, a reader understands the same task.
Each task used once, revealed at onceA fixed hidden set leaks through its scores. A one-use task leaks nothing about the next one, so it can be published immediately.
Paired duels, SPRT, confirmationGenerated pools drift in difficulty; only a paired comparison is immune. SPRT stops as soon as the evidence is enough. Confirmation on fresh tasks defeats picking the luckiest of many tries.
Gain measured on confirmation tasks onlyThe tasks that decided whether a challenger got a confirmation are biased in its favour; the ones after are not.
The contract trusts only a signatureNo oracle, no relay: the judge's signed result arrives in the arena's own callback through OutLayer's yield/resume, and the contract checks the build's key.
Reproducible buildsThe judge's sha256 is its identity and the contract's hash is what NEAR runs; both rebuild to the same bytes from the repository.

NextWeights, not just models

This season's duels run between NEAR AI's catalog models, because its confidential inference serves its own catalog only. The arena is written for Delta League's format (delta.submission.v1, a version named by the hash of its content). One step is missing: if NEAR AI serves an uploaded weight delta under its content hash, the response signature it already makes — model_id:sha256(request):sha256(response) — binds every answer to exact weights. Then a company can put its own kind of problem and its own prize behind a season, and anyone who improves a model at it gets paid — with nobody, the company included, able to leak or tune the test.

TrustWhat you still trust

Not the operator, not the organiser, and not this page.

TerminalThe same checks, from a terminal

$ cargo run --release -p arena-verify -- --arena season5.attested-arena.testnet

Season season5.attested-arena.testnet: "Closed" — judge build c05fb8cc385d29a08a4aa68732757cbae49d55494b3a61d86251102fcc557b7a
  judge key fb0fc7517df836d61fe64be897d18bcaf6981b7fb9942d0f2e2a47a849d97406  (https://test.fastfs.io/attested-arena.testnet/outlayer.testnet/c05fb8cc385d29a08a4aa68732757cbae49d55494b3a61d86251102fcc557b7a.wasm)

1. The pool
  100 tasks, root 7a8f2a3663cddc17e5dc17ac0f36c4e44939e7e3702e709acb72688049266b06

2. Batches — generated inside the TEE, admitted by code
  generated 104, admitted 100; kept out: {"malformed": 4}

3. Portions — every task, answer, signature and score
  portion 3: failed, its 5 tasks spent unopened (the run produced no output)
  95 tasks opened and proven into the root, 190 answers re-scored

4. Duels — the test replayed from the signed results
  duel 0: z-ai/glm-5.3-flash vs champion Qwen/Qwen3-VL-30B-A3B-Instruct → {"Record":{"gain_centi":3333}}
  duel 1: Qwen/Qwen3.6-35B-A3B-FP8 vs champion z-ai/glm-5.3-flash → "Rejected"
  duel 2: z-ai/glm-5.3-flash vs champion z-ai/glm-5.3-flash → "NotProven"

5. Tasks never opened (unused, or spent by a failed run), revealed after the season
  5 tasks opened and proven into the root

39 checks passed, 0 broken.

On chainWhat NEAR itself answers

Raw answers of NEAR RPC for this season, rendered as they came.

the arena has no keys and runs the reproducible build
the arena has no keys and runs the reproducible build
seal fixes the merkle root before any duel
seal fixes the merkle root before any duel
a portion the arena calls the judge and checks its signature
a portion the arena calls the judge and checks its signature
progress tokens redeemed for the sponsors pool
progress tokens redeemed for the sponsors pool