Skip to content
Terra Ledger
Paid evaluationStage 03 of 05

00/Test project

Deal one honest hand of poker between two strangers.

A deliberately narrow slice of the real problem: two players, one heads-up hand, no trusted dealer, settled on-chain. Small enough to finish in ten days. Hard enough that finishing it tells us almost everything we need to know.

Parameters

Window
10 calendar days
Stipend
$2,000 individual / $5,000 team
Network
Tezos Shadownet
Languages
TypeScript + LIGO or SmartPy
Review
60 min with 2 engineers
Feedback
Written, in every case

We pay for this, and we do not ship it

Ten days is real work, so there is a stipend on submission whether or not we make an offer. The brief is also deliberately narrowed to be representative but useless to us — heads-up only, no table server, no seats, no side pots.

Your work stays yours

We claim no ownership over anything you submit. Publish it, reuse it in another application, put it on your GitHub — it is your code. All we ask is that you do not publish our specification alongside it.

01/The brief

Build a two-player hand that neither player can cheat

Two processes, no shared trusted party, a real deck, a real betting round, and real (testnet) money moving at the end. Everything below is the complete deliverable set.

01Core

Shuffle & deal protocol

Implement a two-party commutative-encryption shuffle in TypeScript. Each party encrypts the deck under its own key, the deck is permuted, and cards are decrypted only for their intended recipient. Neither party may learn a card that has not been dealt to them.

02Core

Settlement contract

A LIGO contract on Shadownet that escrows two buy-ins, accepts the agreed final state signed by both parties, and pays out. Include a unilateral timeout path so a player abandoned mid-hand can still recover funds.

03Core

Hand evaluator

A seven-card evaluator that returns a total ordering over hands. Correctness matters far more than speed, but tell us the complexity you achieved and why you chose that approach.

04Core

Headless harness

A CLI or test harness that plays a full heads-up hand end to end between two processes — shuffle, deal, a betting round, showdown, on-chain settlement — with no human input.

05Core

Adversarial write-up

Two pages. How would a hostile player cheat your implementation, which of those attacks your code already prevents, and which you would address before real money touched it.

06Optional

Anything you consider missing

Optional and deliberately open. If you think the specification above is wrong somewhere, ignore it and show us the better version — but say why in the write-up.

02/Definition of done

The single command we will run

If this sequence completes on a clean clone with only the README to guide us, your submission has cleared the bar. Everything after that is a question of quality rather than completion.

Two processes should negotiate a shuffle, deal two hole cards each, run a single betting round, reveal the board, determine a winner, and have the Shadownet contract pay out — with no human in the loop and no party ever able to read a card it should not see.

terminal

$ npm install

$ npm run deploy:shadownet

$ npm run play:headsup

✓ deck shuffled — 52 cards, mutually encrypted

✓ hole cards dealt — 2 per player

✓ betting round complete

✓ showdown — player_b wins with a flush

✓ settled — op hash oo7Kx…9Qm2

03/Assessment

Exactly how we score it

Published in advance, because a hidden rubric tests your ability to guess rather than your ability to engineer.

Laptop and phone displaying live market candlestick charts
30%

Protocol correctness

Does the shuffle actually hold its security property, or does it merely look like it does? We will read this against the literature.

25%

Contract quality

Entrypoint design, failure paths, gas sanity, and whether the timeout path can be abused by the party who invokes it.

20%

Engineering judgement

What you chose to build properly, what you chose to stub, and whether you can articulate the difference.

15%

Testing

Test vectors for the evaluator, adversarial cases for the protocol, and a harness someone else can actually run.

10%

Communication

The write-up and the README. Can a new engineer clone this and be productive in an hour?

Note the weighting: protocol correctness and contract quality together are 55%. A submission with an elegant UI and an unsound shuffle scores far worse than an ugly CLI that gets the cryptography right.

04/Ground rules

The terms, in full

  • Ten calendar days from the day we send the brief. Tell us if you need more and we will almost always agree — we would rather see considered work than a rushed submission.
  • We pay a $2,000 stipend on submission, per individual or $5,000 per team, whether or not we make an offer.
  • Use any language you like for the harness, but the client-facing code should be TypeScript and the contract should be LIGO or SmartPy.
  • AI assistance is fine and expected. You will be asked to defend every design decision in the review, so do not submit anything you cannot explain.
  • Deploy to Shadownet, not mainnet. Testnet tez is free from the faucet.
  • Submit a git repository — a link or an archive. Include a README that says how to run it and what you did not finish.
  • Your submission remains yours. We do not take ownership of test-project work and we do not ship it.

05/Support

What we hand you on day one

  • The full 40-page poker specification, as it stands today.
  • Read access to the existing Rock-Paper-Scissors contracts as a reference implementation.
  • The third-party audit report on our FA2 contracts, so you can see the review standard you will be held to.
  • A Shadownet endpoint, funded test accounts, and an hour of the CTO's time during the window if you get stuck.

Ready

Ask for the brief

The full brief, the specification, the Shadownet endpoint and funded test accounts go out within one business day of the technical conversation. The clock starts when you tell us you are ready — not when we send it.

Applying for one of the two design seats instead? There is a separate paid commission with the same window, the same stipend and the same promise that we do not ship it — the design commission.