To make it fair (the hourly game):
1) generate a digit ranging from 0 to 9.
2) make the system do this 4 times (so it generates 4 digits seperately in 4 steps, instead of generating a 4-digit number in 1 step).
3) the 4 digits together now for a number 0000-9999 (number 10.000 would be gone but number 0000 could be used as jackpot).
Use 1 Server Seed Hash (SHA-256) and 1 server seed per game (so not per digit, but per 4 digits) but do make 4 different client seeds (1 for each digit) per game. So all the 4 digits can be generated using the same "key", just using a different client seed for each digit.
Also, the client seeds should be generated in a way that the client seed of one digit will not influence the generation of a client seed of a next digit for that same game, ofcourse.
And if possible, give more transparency on how the calculations are exactly done. Hashes converted to numbers, how it's done. By not knowing the server seed before the game, there's no way that would cause any harm i suppose ?
What i typed here is ofcourse still not 100% proof of fair play but i still have my doubts, like many others, on how the number is currently generated and there are possible ways to manipulate it in order to never (or barely) hit the jackpot. This 'method of generating' i wrote is still absolutely NOT legit or finished to be used, but might be a start to a provably fair game that makes people more certain they play something... fair. Hitting the jackpot right now just doesn't look like a 1/10.000 chance. Who can tell anyway? I'm not a scripter but i hope, in case you truly want your game to be provably fair to everybody, you will use a system like this and have a game where every number created, has an equal 1/10.000 chance of being created. And if that means the jackpot should contain less money for you to make some profits, that's fine by me. We all understand you can't give away more BTC than what the advertisement etc pays you, and respect a fair cut that goes to you in proportion to the work you put into this. Yet don't forget about the people making this happen for you :-) some more transparency would be very appreciated so we can all enjoy this game even more without questions being raised!
-Rnbin
Ok, let me explain how a roll is calculated at the moment ...
First, go to the multiply btc page and make a roll of 1 satoshi. Then click the PROVABLY FAIR link. There you can see the 2 strings that were created for your last roll (not the seeds, scroll down that box and you will see STRING1 and STRING2).
Then visit
http://www.freeformatter.com/hmac-generator.html and in that page enter STRING1 in the message box and STRING2 in the secret box. Also select SHA512 in the message digest algorithm dropdown menu. Then click on the COMPUTE HMAC button.
Then you will get a long string, of which you need to only copy the first 8 characters. Then visit
http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html and enter in those 8 characters in the HEXADECIMAL box.
The DECIMAL box on that page will then show a number, take this number and divide it by 429496.7295. Then round up the number that you get. That is your rolled number.
So, basically by providing you with the SHA256 hash of the server seed, and the client seed and nonce in unhashed form, you can be sure that the number to be rolled was not changed by the server mid-way. To verify the SHA256 hash of the server seed, go to
http://www.xorbin.com/tools/sha256-hash-calculator, enter in the server seed in the data box and then click the calculate button. The hash generated will be the same as the server seed hash that is shown to you.
I do not see how implementing what you are suggesting will change anything tbh. Only difference will be is that instead of 1 client seed, 4 will be generated and it will be a lot tougher for users to verify their rolls if they wish to. The best solution in my opinion would be to let users enter in their own client seed which is what I am working on. Only problem is that implementing it will add a whole new level of complication to the code which is why it will take me some time to do it as I want to make sure it doesn't end up breaking anything.