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
- DM @zvm_bullet_bot
/connect. It replies with a secret number. - Call
connectAndApprove(secret)on the BULLET contract's Write tab, then send the bot the transaction hash. - Buy BULLET with ZNN; the faucet hands out devnet ZNN.
- In the group,
/roulette 6 50starts a six-chamber game at 50 BULLET;/jointakes a seat. /pullto fire,/passto hand on./leaderboardranks the group.
- A game waits two minutes or until every chamber has a player, and needs two.
/join 75bets above the minimum, capped at what the rest of the table staked.- You must pull once before you may pass. Idle for 30 seconds and the bot pulls for you.
- If every player votes
/stop, every stake is refunded.
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
- BULLET / wZNN pool
- 0x06f8e601ef6074c6cffc95d7af410baf61f27f21
- Revenue share
- 0xebef33c9796bd38248d01c17ca7f49e6ca614a0a
- 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.