Provably fair

Every round result comes from a secret server seed we commit to in advance and a public EOS block that is produced after the round locks. Neither side can steer the result, and anyone can recompute it.
1We commit firstEvery round gets a secret server seed. Its SHA-256 hash is shown before anyone bets, so we can't change the seed later.
2EOS adds a public seedWhen a flip is joined or betting closes, we pick a future EOS block. Its id can't be predicted by us or anyone else.
3Anyone can checkSHA-256 of server seed, block id and round number decides the result. The server seed is shown once the round ended.

Verify a result

Server seed hash… Input…SHA-256…Number…Rule…
Result…

How results are made

The same code runs on our server. Paste the seeds of a round and run it with Node.js to get the same result.
const crypto = require('crypto');
const Chance = require('chance'); // npm install chance@1.1.13

const seedServer = '...'; // server seed, shown once the round ended
const seedPublic = '...'; // id of the EOS block
const round = 1; // round number

// Hash of the server seed, shown before the round
console.log(crypto.createHash('sha256').update(seedServer).digest('hex'));

// The seeds and the round decide the numbers
const hash = crypto.createHash('sha256').update(`${seedServer}:${seedPublic}:${round}`).digest('hex');
const chance = new Chance(hash);

const headsBet = 1000; // value of the heads side
const pot = 2000; // value of both sides

// Ticket from 1 to 1,000,000, heads wins up to its share of the pot
const ticket = chance.integer({ min: 1, max: 1000000 });
const headsTickets = Math.round(headsBet / pot * 1000000);

console.log(ticket <= headsTickets ? 'heads' : 'tails');

Recent rounds

GameRoundEOS blockResult