RE: SteemRollers | Provably Fair SteemDice v.02 (Now we accept STEEM!)

You are viewing a single comment's thread from:

SteemRollers | Provably Fair SteemDice v.02 (Now we accept STEEM!)

in steemrollers •  8 years ago 

Like I already said here, this is not provably fair: nothing stops you from selecting a secret after the fact. You can select the outcome of the first n games per day to your liking, and then mine a matching secret in about 2^n attempts (depending on the chance and actual outcome).

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Honesty, I don't understand how that would work. If you would like to show me an example I would like to see it. If I am reading it right you are saying that multiple secret keys will work for the same rolls?

They broadcast a txid to me.
I take the sha256(txid + key)
Say the result is: f4fe638581903dabc67d4b80ee7e3018bad898dabde1cd1578738fef471812c2
Then I take f4fe and convert it to a decimal to get the roll of 62718.
I am just not seeing how I can reproduce f4fe638581903dabc67d4b80ee7e3018bad898dabde1cd1578738fef471812c2
along with all the other hashes with a different key.

I got this model from SatoshiDice.

If there is a way it is beyond my current understanding. If know of a way to make fair I am all for it.

On the very first roll in a day you can decide if you want that player to win or to lose, then choose a secret that produces the desired outcome:

  1. Choose secret
  2. Compute roll
  3. If roll doesn't match desired outcome, go back to step 1
  4. Publish resulting transaction

This can be extended to the first N rounds in a day. In the following, i denotes the current round number, r_j the roll of round j, t_j the txid of round j:

  1. if i < N, choose desired roll outcome r_i and publish result
  2. else if current round == N, choose desired roll outcome r_N
    2.a select secret
    2.b compute hashes of (t_j + secret) and compare to r_j, if mismatch go back to 2a
    2.c publish result
    2.d save secret as S
  3. else /* i > N */ compute r_i from t_i + S and publish result

I was wrong with my original estimate of 2^n attempts because I overlooked that you publish r_i. In truth you need about 2^(16*N - 15) attempts.

Thank you for trying to explain. It is still over my head. Is there something I could add to make suitably fair for you? In any case my secret key is generated with sha256(str(random())) and changed automatically at midnight then published. I guess there isn't a good way to prove that, but you may look at the wallet results and statistical evidence.

I am all for making it provably fair. To the best of my knowledge it is. I am open to working with you since you seem to have a better grasp on it than I do.

What I think you are saying is don't publish the result until the I find a secret that matches all the results prior to that roll? Once I find a secret that matches every desired result of every roll, then I publish the roll. If so wouldn't that take a ton of computational power do that in the time span of receiving and sending back a transfer? By the time I got past a couple rolls wouldn't it be more cost effective to use that power for mining crypto instead? I am not trying to poke fun or anything. I am just trying to understand it.

What I think you are saying is don't publish the result until the I find a secret that matches all the results prior to that roll? Once I find a secret that matches every desired result of every roll, then I publish the roll.

Exactly!

The computational power required depends on how many rolls you want to fake. For the first one in a day it would be very easy. I think 3-4 should be possible without too much effort.

IMO publishing a hash of the secret at the start of the day would help a lot. I'm not going to say that it would be secure, but I don't currently see how you could cheat then.