Hurry! Someone grab a bucket! The faucet was leaking, but it has been deprecated!

Provably Fair

Money Pot uses a simple provably fair scheme, designed to be as easily machine-auditable as possible. It is our
hope that all MoneyPot games automatically and instantly verify the games on your behalf however it's important
that you can, and do verify games yourself

1. We give you a hash

Before you place a bet, we prove that we have committed to an outcome between 0 and
2^{32}-1 (inclusive). We do this by sending you the sha256
hash of the outcome. This has a very important property, if we changed the outcome the
hash would be different, and you could know the results were tampered.

hash = sha256(outcome + '|' + seed)

The seed makes it infeasible for an attacker to brute force all 2^{32} possible outcomes,
but is otherwise useless data. We do not yet reveal the outcome or seed

What is the '|' for?

It prevents any ambiguities as otherwise 923XYZ could be an outcome of 923 and
a seed of XYZ or an outcome of 92 and a seed of 3XYZ

2. You make the bet

A bet consists of:

Wager How much you are paying to make the bet

Hash Which hash you are betting against (from the first section)

Client Seed A number between 0 and 2^{32}-1 which you can use
to influence the final outcome

Payouts A list of ranges and payouts which if the final outcome
lands on, will result in the given payout

A bet must be well-formed, meaning it must be +EV and within the kelly criterion for the house. If the bet can not be
accepted (for example it is trying to win too much) the hash remains valid, and it should be reused.

3. We settle the bet

Once given the bet, we calculate the final outcome:

and find all payout ranges that contain the final outcome are are
summed, and paid. The net profit of a bet is the sum of all containing payout ranges, subtract the original wager.
To allow complete verification of the fairness, we reveal the original outcome and secret which when
hashed together would result in the original given hash.