SPLASH
How it worksRules

This is a test network. Every figure on this site is play money. The tokens are free, they are worth nothing, and you cannot buy them. Nothing here is an offer of anything.

How SPLASH works

Three games, one pot of water. Every rule below is enforced by a contract you can read, and every number is one the contract will tell you itself. The addresses are at the bottom.

Getting in

  1. Install Adena, a browser wallet for gno.land.
  2. Add the Onyx test network to it — RPC https://rpc.onyx.testnets.gno.land, chain ID onyx-1.
  3. Get free test tokens from the faucet. Pick Onyx, paste your address.
  4. Press Connect wallet on any game.

Your first purchase signs one transaction that does three things at once: converts some GNOT to the wrapped kind the games use, permits the game to take exactly the ticket price, and buys. One prompt, and it either all happens or none of it does.

The Weekly Draw

A ticket is 10 GNOT and buys 40 entries. Entries are the unit that actually wins — one is 0.25 GNOT of weight — so buying more tickets moves your share smoothly rather than in lumps.

The house takes 5% of each ticket. The rest is the prize, and the whole prize goes to one winner's wallet. The weekly pot is also fed by the Duel: 60% of the Duel's rake lands here, so the pot grows every time anybody flips a coin.

If the draw never runs, you get your money back in full — the gross ticket price, fee included. The house's 5% is held against the week and only earned if a draw actually happens.

The Hourly Draw

A ticket is 1 GNOT. A window is 1,090 blocks, which is about an hour. Same 5% house cut, same full refund if a window never draws, same winner-takes-the-pot.

The page counts down in time because that reads better, but the block number is what the contract obeys. The clock is our estimate of when that block arrives; the block itself is the rule.

The Duel

Two players, matched stakes, a 50/50 coin. Winner takes both, less a 3% rake. Stakes are 10, 50, 200 or 1,000 GNOT.

You put a stake up — one signature. Someone matches it — one signature. That is the whole game. Neither of you signs again and neither of you has to come back. Nothing is kept in your browser, there is no secret to look after and no deadline to miss.

Neither player can steer the coin, and this is the part worth understanding. The moment a stake is matched, the contract names a future drand round — a public random number that does not exist yet. Nobody can know it: not the two players, not us. The round number is written into the duel and shown on the page, so you can see exactly what your flip is waiting on before it happens.

Five to ten minutes later drand publishes that number, anyone can relay it onto the chain, and the contract works out the winner and pays them. We run a process that does the relaying so nobody has to sit and wait, but it is an open call — if we disappeared, anyone at all could settle your duel.

An offer nobody has matched is still yours: cancel it and your stake comes straight back. Once it is matched the coin is in the air, and the round decides it.

Where the randomness comes from

Draws are settled against drand, a public randomness network run by a group of independent organisations. Nobody — not us, not any single one of them — can produce a future value alone.

For the draws, the round that decides is fixed before that draw's first ticket is sold. So by the time anybody has money in, the number that will decide it is already named and nobody alive knows what it is.

For a duel, the round is named the instant the two stakes are matched, and always far enough ahead that it cannot be guessed, raced or waited out. When the time comes, drand publishes it, anyone can relay it onto the chain, and the contract does the arithmetic in the open.

You can check it yourself. Each game shows the drand round it is pinned to; that round's value is published at api.drand.sh for anyone to read.

What we can and cannot do

The contracts

Read any of them. This is the whole product; there is nothing on our server that decides anything.

Why the addresses look like that. A readable name such as gno.land/r/splash/… needs a username from gno.land's registry, and that registry is currently closed to new names pending a governance vote. Until it opens, the only namespace available to anyone is their own wallet address — so that is what you see. The contracts are the same either way.

Where this is going

No dates. Everything below is either already on the chain and checkable, or honestly labelled as not built.

On the chain now

Next

Designed, not built

What we will not do

Written down so it can be held against us.

Known gaps, while this is a test

Who has checked this

No independent firm has audited these contracts. If you are used to seeing an auditor's name here, there isn't one, and you should weigh that.

What has happened: the contracts have been reviewed repeatedly by an automated auditing agent, and the findings — including the unresolved ones above — are written up and acted on. That is a real process and it has caught real defects, including ones that the test suites passed straight through. It is not the same thing as a third-party audit and we are not going to call it one.

The code is not published yet. When it is, every audit goes up with it, unresolved findings included.

← Back to the arcade