The Provably Fair process we use:


1. We create a server 'seed' to generate our random numbers.

2. We add 20 symbol secret (which doesn't participate in the draw of the number, its sole purpose is to secure the server seed) with the server seed, and we show you a SHA256 hash of the server seed before the beginning of the game.

3. We take the client seed and we combine it with the server seed to get the roll result.


Use the following .NET script to verify the outcome was indeed random:

Dim ServerSeed As Integer = 1234567
Dim ServerSecret As String = "ABCDEFG12345"
Dim ServerSHA256 As String = Me.SHA256(ServerSeed.ToString & "-" & ServerSecret)
Dim ClientSeed As Integer = 7654321
Dim ClientNumber As Double = Me.DiceRoll(ServerSeed, ClientSeed)

Function DiceRoll(ByVal ServerSeed As Integer, ByVal ClientSeed As Integer) As Double
    Dim r As New MersenneTwister.MTRandom((ServerSeed + ClientSeed))
    Return (r.genrand_real3 * 100).ToString("0.####")
End Function

Function SHA256(ByVal value As String) As String
    Dim v() As Byte = System.Text.Encoding.UTF8.GetBytes(value)
    Dim p As New System.Security.Cryptography.SHA256CryptoServiceProvider
    Dim h() as Byte = p.ComputeHash(v)
    Dim s As String = ""
    For Each b As Byte In h
        s = (s & b.ToString("x2"))
    Next
    Return s
End Function