Hi there,
We built Bitcoin Arena: games and prediction markets on Bitcoin. It is fully decentralized. There is no company running the rounds, no central server and no custodian. Anyone can run a node, and anyone can offer an app. It’s live on testnet4, and we need people outside the team to try both.
There’s no token and nothing to buy. Test sats are free and have no value.
Anyone can run a node
- Install it on Windows, macOS or Linux. A setup window walks you through it.
- Post a bond on Bitcoin and take a seat.
- Host apps, verify rounds and earn a share of the fees.
- No permission needed. Your bond is your ticket in.
Anyone can offer an app
- Write your game and sign it, and any node can host it.
- The nodes replay every round with your rules.
- There’s no approval and no listing fee.
- You earn 2% of every paid round in your app.
How a round stays honest
- A Bitcoin block hash draws the committee of nodes, so nobody picks who decides.
- Stakes lock in a Fedimint federation run by the nodes.
- A result counts only when 5 of 7 nodes confirm the same one, and anyone can object for 10 minutes.
How you can help
- Run a node on testnet4 and tell us where setup was hard.
- Build a small app and tell us what’s missing in the docs.
- Play Tick Tock Next Block, Rock Paper Scissors or the 15-minute Bitcoin Up or Down market and try to break it.
Would you run a node or build an app on this? If not, what’s stopping you? Honest criticism helps us most. Reply here or join us:
Discord: https://discord.gg/9zZbASZyue
X: https://x.com/bitcoinarena_io
Try it: https://bitcoinarena.io/?utm_source=sn&utm_medium=forum
Run a node: https://docs.bitcoinarena.io/?utm_source=sn&utm_medium=forum#run
Build a game: https://docs.bitcoinarena.io/?utm_source=sn&utm_medium=forum#game
Code: https://github.com/bitcoinarena
Thank you very much!
Best regards
Bitcoin Arena Team
Nice idea! [1] So you're using a 5 of 7 threshold on a committee selected by blockhash randomness, is that right? How do you deal with committee members going offline and potentially stalling outcomes?
what does that part mean, though? If I object to an outcome that was attested by the committee, does it go to some other committee, or ..?
[1] In the vaguest possible way this is what I was imagining in writing up "LN-GAP".
Thanks for the question.
Yes, it’s 5 of 7, drawn each round from a block that doesn't exist yet when the round is published.
We draw 9 and seat the first 7 who show up. If fewer than 5 do, the round doesn't open. If a committee stalls after people paid in, the entry is void and the stake comes back, at worst when the lock expires after 144 blocks.
An objection doesn't go to another committee, and nobody votes. You post the transcript with the signed receipts, and anyone can replay it and see the result is wrong. That blocks finality, the same committee has to re-run it, and whoever signed the false result gets slashed. A second wrong result voids the entry and refunds it.
The spec also has about 3 random nodes outside the committee replay every paid round and object if it's wrong. The draw is secret, so the committee doesn't know who's checking. This will be implemented next week with the next major version.
what's your mechanism for slashing? there's false results (didn't follow an agreed ruleset) and equivocation: for equivocation, even staying entirely within Bitcoin transactions, it's possible to talk about slashing although it's still tricky (where do the slashed funds go, without covenants?). for 'false results' (like didn't follow the rules of some game), how would slashing work?
Both work the same way, with no covenants. The bond has a k-of-m arbitration script path, and that's the slash. Bitcoin can't check a game replay, so the proof stays off chain: for a false result it's the transcript, the signed receipts and a replay that doesn't match; for equivocation it's the two signatures. Anyone can verify it, and the slashing tx commits to its hash.
So you do trust arbitration not to slash without cause, and for where the money goes: half to affected players, the rest to other nodes and developers. It can't touch player stakes, so slashing is deterrence only.
We've tested live slashes on testnet4.
So it's one committee that has a 5 of 7 threshold for judgement. then if there's an objection, you just re-run the .. decision (you said 'not a vote' but i don't get why you said that).
this can be problematic with player-committee member collusion (same with any entities really, including nodes and developers).
You're right, "not a vote" was badly put: the same committee re-runs it and 5 of 7 sign again. But replay is deterministic, so one honest replay proves them wrong, and a second wrong result voids the entry.
Collusion can get back some of the slash, but not enough to pay. Five bonds are at least 10x the pool, so even getting half back loses 5x for a gain of 1x.
You've found two real problems, though. Your question about where slashed funds go without covenants showed that our arbitrators could simply take a bond. We're fixing that.
And on collusion: today the players' half goes to the player named in the false result. If a committee inflates a friend's result, the friend gets it. We need to fix that too.
Thanks for the critical questions, they really help.
Testnet4 is a great bonus, it helps newbies learn without risk. This web wallet and faucet may help too.
Does it work with ~lightning or just onchain?
Thanks for the question!
It’s 100% Lightning. Only the nodes need to make on-chain transactions.
There’s also a faucet built directly into the app that automatically deposits testnet4 Lightning sats into the user’s wallet, so the whole process is pretty seamless.
And of course, I wouldn’t consider running the network on mainnet without extensive testing first :)