Bullet Game

On the ZVM, chain 69

Russian Roulette in Telegram.

One bullet, one revolver, passed round the table. Whoever fires the bullet loses their stake to the survivors. Stakes are in BULLET, held by an escrow contract for the length of the game: the original Ethereum contracts, redeployed on zvm69.

Play

  1. DM @zvm_bullet_bot /connect. It replies with a secret number.
  2. Call connectAndApprove(secret) on the BULLET contract's Write tab, then send the bot the transaction hash.
  3. Buy BULLET with ZNN; the faucet hands out devnet ZNN.
  4. In the group, /roulette 6 50 starts a six-chamber game at 50 BULLET; /join takes a seat.
  5. /pull to fire, /pass to hand on. /leaderboard ranks the group.

Tokenomics

10,000,000 supply

Liquidity pool
90%
Marketing
10%

5% tax on buys and sells

To liquidity
2%
Sold for ZNN, for gas
2%
Revenue share
1%

A loser's stake

To the survivors
90%
Revenue share
9%
Burned
1%

Wallet-to-wallet transfers are untaxed. Ownership is renounced, so none of this can change.

Provably fair

The chamber is drawn with a VRF when the game starts, committed in newGame, and everything needed to check it is revealed in endGame.

alpha   = "<unix seconds>.<microseconds>,[bet1, bet2, ...]"
beta    = VRF(alpha)
chamber = beta mod revolver size        (the first pull fires chamber 0)
commit  = SHA-256( decimal(chamber) || salt )
zvm-bullet verify -record deployments/zvm69.json <endGame transaction hash>

ECVRF-EDWARDS25519-SHA512-TAI (RFC 9381). The commitment fixes the chamber once play starts; it cannot stop the bot, which picks the moment in alpha, from trying moments first. That is why the bot's own wallets may never play.

Addresses

BULLET token
0xef9282a0512a52091b6b1cb6ac4aec5fe4d7dfcb
Escrow
0xda650bf1788488f5533bf8c822a3f80ddd70413b
BULLET / wZNN pool
0x06f8e601ef6074c6cffc95d7af410baf61f27f21
Bot
0x2ce6ea2da2c289afc7274b2f8623d32b5ae3083b
Revenue share
0xebef33c9796bd38248d01c17ca7f49e6ca614a0a
Marketing
0x394046ae58a833162d72975209ad4c56073fd195
VRF public key
0xd85103289416973816fcd18f235383be8fc8cac8e6ef89ca9090ce9cc5258d28

The escrow is mainnet's TelegramRussianRoulette byte for byte. The token is mainnet's BulletGame with one change: on this chain it routes through Glyphswap, and ETH is ZNN. Both are verified on the explorer.