Teller

Whitepaper

Teller is a bank-run game on Robinhood Chain. Put $TELLER in the bank, decide when to walk out, and the people who stay split what the leavers left behind plus a vault of tokenized JPM stock.

The problem

Bank runs are the oldest game in finance. When people think others will pull out, they rush to pull out first. Most tokens reward exactly that: whoever sells first wins and whoever holds pays for it.

The idea

Teller turns the run into a game with fair rules. Stayers always get their full deposit back. Leaving early costs you, and every coin a leaver leaves behind goes to the people who stayed. Exit amounts are sealed, so nobody can see how big a run is until it is revealed.

How it works

  1. The doors open. For 8 hours anyone can deposit $TELLER. You can also take it back out in this window, with no cost.
  2. The vault locks. The season runs 24 hours in 6 shifts of 4 hours. Shift 0 is locked for everyone.
  3. Seal your exit. In shifts 1 to 5, the first 3 hours are for sealing. You send only a hash of how much you want to take out, so the amount stays hidden.
  4. Reveal it. The last hour of the shift is for revealing. You show the amount and the secret salt. You get the shift's exit rate on that amount and the rest stays behind for the stayers. Reveal 0 and you stay in.
  5. Miss the reveal and 5% of your stake moves to the coins left behind. You stay in the bank.
  6. The bell rings. After shift 5 the season is final. Everyone with a stake left claims it back plus a share of the coins left behind. Those who never walked out also split the season's JPM vault. The next season's deposit window opens right after.

Every rule and number

RuleValue in the contract
Deposit window8 hours at the start of every cycle. Deposits and free withdrawals only happen here.
Season length24 hours, 6 shifts of 4 hours (shift 0 to shift 5)
Full cycle32 hours: 8h deposit window plus 24h season, then the next season starts
Shift 0Locked. No sealing or revealing.
Seal windowFirst 3 hours of shifts 1 to 5. One seal per wallet per shift.
Reveal windowLast 1 hour of the same shift
Exit payoutShift 1: 60%, shift 2: 70%, shift 3: 80%, shift 4: 90%, shift 5: 100% of the amount taken out (exitRate(k) = 50 + 10k)
What is left behindThe other part of every exit (40% in shift 1 down to 0% in shift 5) goes to the stayers
Missed reveal penalty5% of your stake at the time you sealed (SLASH_BPS = 500), added to the coins left behind
Partial exitsYou can take out part of your stake. Any exit above 0 gives up your share of that season's JPM vault.
BluffRevealing an amount of 0 keeps you in with no penalty
Stayer payout ($TELLER)Your stake plus coins left behind times your stake divided by all stakes left at the end
Stayer payout (JPM)Season JPM vault times your stake divided by the stakes of everyone who never exited
Season JPM vaultAll JPM in the contract that no other season has reserved, fixed when the season opens
Empty seasonCoins left behind roll into the next season that has stakers. If nobody stayed in without exiting, the season's JPM vault is released for the next season's vault.
Sealed hashkeccak256(abi.encode(season, shift, wallet, amount, salt))
ClaimsAfter the season ends, once per wallet per season

How the vault is funded

The team sends 1% of $TELLER trading fees into the Teller contract as tokenized JPM stock. Whatever JPM is in the contract and not already set aside for another season becomes the vault for the next season that opens.

What the owner can do

The contract has an owner. These are its only powers, all in Teller.sol:

Closing the obvious attacks

Proof

Real actions on the Teller contract, each with its transaction. More on the proof page.

  • No game actions yet.

Contracts and wallets

Robinhood Chain, chain ID 4663.

WhatAddress and links
Teller game contractHolds deposits, runs the shifts, pays exits and claims.0x69a8D5f6BBb7B04DD7189c66760bf42c74b30064
JPM vault tokenTokenized JPM stock paid to stayers.0x07c44dA0848960bFf894F17584dB8B2F60B2409E
Keeper walletAnyone can open, close and settle a season. Our keeper wallet does it on schedule so nobody has to wait. It never holds or moves player funds.0x93DF4CF32aFFBe539d8D14118ba43a43c7eb8EFb