Author

Topic: Bustabit (v2) Seeding Event (Read 2785 times)

newbie
Activity: 14
Merit: 28
February 15, 2021, 09:25:16 AM
#28
Bustabitv2 has been launched (under new ownership)!


The original hash for v1 provably fair was "ac4b6c46171daa0189b679bd7523c7bab6410f7155a21635b7e0ecdf370a9000" if anyone wants to check future games

Can I know what hash is used after the Bustabit v1? I can't find these hashes "ac4b6c46171daa0189b679bd7523c7bab6410f7155a21635b7e0ecdf370a9000" and "86728f5fc3bd99db94d3cdaf105d67788194e9701bf95d049ad0e1ee3d004277" on 4.2 million hashes.

Edit: Nevermind, I've found it. 9f57575fd54cd441e962448537e155ace9555df10cd27fa817bbcaf48a59ebcf
legendary
Activity: 2604
Merit: 2353
May 29, 2020, 12:37:54 PM
#27
Is there any way to prove house edge is 1%?
Yes! RHavar has just explained it in another thread :

Thank you very much for these very precise and clear clarifications RHavar.  Smiley

But now, I don't understand why you're dividing "97" by this number :
crash = Math.floor(97 / crash);

I'm sorry for these questions but I'm trying to understand how that works.
TYVM RHavar

So the first thing to note is that a final outcome of 123 means a multiplier of 1.23x. So `123 / crash` is easier to reason about if you think of it more like `1.23/crash` in maths terms. And as we already discussed, `crash` is evenly distributed between 0 and 1. So if you wanted to simply turn it into a multiplier you'd do:   `100 / crash`  ... but no casino is going to do that, as they need a house edge for themselves. I know bustabit effectively uses `99 / crash` to make a house edge of 1%, but rocketpot is using `97 / crash` which is going to result in a significantly higher edge (of which some will be used to fund the bonuses/jackpots/other benefit thats bustabit might not have).

It's the "99" of
Code:
// 4. X = 99 / (1-X)
  X = 99 / (1 - X)
newbie
Activity: 47
Merit: 0
November 26, 2018, 05:04:03 AM
#26
Is there any way to prove house edge is 1%?
member
Activity: 226
Merit: 30
so.. hru?
April 15, 2018, 12:23:30 PM
#25
is possible 3 times x1 in a row?

ì


not to sidetrack, but on Bustabit v1 i seen 4 1x mixed in with 0x in a row
copper member
Activity: 32
Merit: 0
April 15, 2018, 12:10:54 PM
#24
is possible 3 times x1 in a row?

ì
sr. member
Activity: 528
Merit: 368
February 07, 2018, 09:58:23 AM
#23
I've put together a short overview of what's new in version 2 of bustabit in its new announcement thread. I'll post all news and future updates there as well.
full member
Activity: 230
Merit: 154
I'm a web dev :D
January 27, 2018, 05:52:29 PM
#22
Here's a script to verify the games on v2: https://jsfiddle.net/Dexon95/2fmuxLza/embedded/result/
legendary
Activity: 2030
Merit: 1189
January 27, 2018, 02:14:54 PM
#21
No bonus aspect of the game?

Not run by Ryan?

Pass.
hero member
Activity: 1008
Merit: 1012
January 27, 2018, 12:43:22 PM
#20
Bustabitv2 has been launched (under new ownership)!


The original hash for v1 provably fair was "ac4b6c46171daa0189b679bd7523c7bab6410f7155a21635b7e0ecdf370a9000" if anyone wants to check future games
Congratulations on the new launch of the site.
I am assuming it is the same old website address because there was nothing telling us different to use to get to the V2 of the site.
Just hope it allows users to win something just like bustadice did in it's first few days. Wink
newbie
Activity: 11
Merit: 0
January 27, 2018, 11:07:01 AM
#19
hi Ryan ,
Please tell me old Bot work here
legendary
Activity: 2940
Merit: 1333
January 27, 2018, 03:01:08 AM
#18
It might make sense to look at future games, to check if that's the motivation for the new hash chain (or the timing of the release of it).

Oh yes, that's a good point. It could be that the players were due for a good green streak, and so you've decided to switch to a new random sequence.

It seems unlikely that there are any long enough streaks to make it worth your while switching, but at least it's a plausible reason for people to want to be able to examine the whole chain.
legendary
Activity: 2940
Merit: 1333
January 26, 2018, 06:11:19 PM
#17
Ryan, when Bustabit v1 is taken down, could you reveal the 10,000,000th game's hash (the first generated hash)? For legitness.

Why would you care about the hashes of any of the games which were never played?

Do you realize that all the games which have been played can already be verified?
full member
Activity: 274
Merit: 133
January 26, 2018, 04:58:31 PM
#16
Waiting...

If everything goes according to plan, it should be launched in < 24 hours =)
That soon? Shocked
Congratulations on a timely release then.
Can't wait to get busting my bits on there. Grin
member
Activity: 221
Merit: 13
January 26, 2018, 12:39:33 PM
#15
Awesome news, people will be peaked for the new release  Smiley
full member
Activity: 230
Merit: 154
I'm a web dev :D
January 23, 2018, 06:09:34 PM
#14
Block 505750 has been mined, so we have our client seed: 0000000000000000004d6ec16dafe9d8370958664c1dc422f452892264c59526

Hype Cheesy
legendary
Activity: 3402
Merit: 1227
Top Crypto Casino
January 23, 2018, 01:55:34 PM
#13
In a few days I will be releasing version 2 of bustabit. The principle of our provably fair system remains the same, but the algorithm that converts game hashes to game results has changed. Therefore I'm holding a new seeding event.

Starting with a secret I've generated a chain of 10,000,000 SHA256 hashes. Each element is the hash of the lowercase, hexadecimal string representation of the previous hash. The hash of the chain's last element is 86728f5fc3bd99db94d3cdaf105d67788194e9701bf95d049ad0e1ee3d004277.

Every game maps to a hash in the chain: The 10,000,000th element of the chain is the hash of game #1 and the first element in the chain is the hash of game #10,000,000. To verify that a hash belongs to a game #n, simply hash it n times and compare the result with the terminating hash.

To calculate a game's result from its hash:
Code:
const crypto = require("crypto")

function gameResult(seed, salt) {
  const nBits = 52 // number of most significant bits to use

  // 1. HMAC_SHA256(key=salt, message=seed)
  const hmac = crypto.createHmac("sha256", salt)
  hmac.update(seed)
  seed = hmac.digest("hex")

  // 2. r = 52 most significant bits
  seed = seed.slice(0, nBits/4)
  const r = parseInt(seed, 16)

  // 3. X = r / 2^52
  let X = r / Math.pow(2, nBits) // uniformly distributed in [0; 1)

  // 4. X = 99 / (1-X)
  X = 99 / (1 - X)

  // 5. return max(trunc(X), 100)
  const result = Math.floor(X)
  return Math.max(1, result / 100)
}


Before being used to calculate the corresponding result, each game hash is salted with the lowercase, hexadecimal string representation of the hash of bitcoin block 505750. This block has not been mined yet, proving that I have not deliberately picked a chain that is unfavorable for players.

Really curious to see V2

Quoting for reference.


Edit: just noticed Dooglus did it way better than me
hero member
Activity: 1008
Merit: 1012
January 23, 2018, 10:53:56 AM
#12
Yeah I have been waiting for this site release for a while.
Can't wait to pour another close to 5btc into this reloaded version of the site now. Cheesy

When will it be officially launched and will you be having some kind of competition during the launch? Grin
sr. member
Activity: 574
Merit: 272
Buy Bitcoin!
January 23, 2018, 08:23:38 AM
#11
In a few days I will be releasing version 2 of bustabit. The principle of our provably fair system remains the same, but the algorithm that converts game hashes to game results has changed. Therefore I'm holding a new seeding event.

Starting with a secret I've generated a chain of 10,000,000 SHA256 hashes. Each element is the hash of the lowercase, hexadecimal string representation of the previous hash. The hash of the chain's last element is 86728f5fc3bd99db94d3cdaf105d67788194e9701bf95d049ad0e1ee3d004277.

Every game maps to a hash in the chain: The 10,000,000th element of the chain is the hash of game #1 and the first element in the chain is the hash of game #10,000,000. To verify that a hash belongs to a game #n, simply hash it n times and compare the result with the terminating hash.

To calculate a game's result from its hash:
Code:
const crypto = require("crypto")

function gameResult(seed, salt) {
  const nBits = 52 // number of most significant bits to use

  // 1. HMAC_SHA256(key=salt, message=seed)
  const hmac = crypto.createHmac("sha256", salt)
  hmac.update(seed)
  seed = hmac.digest("hex")

  // 2. r = 52 most significant bits
  seed = seed.slice(0, nBits/4)
  const r = parseInt(seed, 16)

  // 3. X = r / 2^52
  let X = r / Math.pow(2, nBits) // uniformly distributed in [0; 1)

  // 4. X = 99 / (1-X)
  X = 99 / (1 - X)

  // 5. return max(trunc(X), 100)
  const result = Math.floor(X)
  return Math.max(1, result / 100)
}


Before being used to calculate the corresponding result, each game hash is salted with the lowercase, hexadecimal string representation of the hash of bitcoin block 505750. This block has not been mined yet, proving that I have not deliberately picked a chain that is unfavorable for players.


I have been waiting a while for BaB2.
member
Activity: 126
Merit: 22
January 23, 2018, 04:32:51 AM
#10
So, house edge is fixed now at 1%
And 0.99x busts are present
member
Activity: 126
Merit: 22
January 23, 2018, 04:16:19 AM
#9
In a few days I will be releasing version 2 of bustabit. The principle of our provably fair system remains the same, but the algorithm that converts game hashes to game results has changed. Therefore I'm holding a new seeding event.

Starting with a secret I've generated a chain of 10,000,000 SHA256 hashes. Each element is the hash of the lowercase, hexadecimal string representation of the previous hash. The hash of the chain's last element is 86728f5fc3bd99db94d3cdaf105d67788194e9701bf95d049ad0e1ee3d004277.

Every game maps to a hash in the chain: The 10,000,000th element of the chain is the hash of game #1 and the first element in the chain is the hash of game #10,000,000. To verify that a hash belongs to a game #n, simply hash it n times and compare the result with the terminating hash.

To calculate a game's result from its hash:
Code:
const crypto = require("crypto")

function gameResult(seed, salt) {
  const nBits = 52 // number of most significant bits to use

  // 1. HMAC_SHA256(key=salt, message=seed)
  const hmac = crypto.createHmac("sha256", salt)
  hmac.update(seed)
  seed = hmac.digest("hex")

  // 2. r = 52 most significant bits
  seed = seed.slice(0, nBits/4)
  const r = parseInt(seed, 16)

  // 3. X = r / 2^52
  let X = r / Math.pow(2, nBits) // uniformly distributed in [0; 1)

  // 4. X = 99 / (1-X)
  X = 99 / (1 - X)

  // 5. return max(trunc(X), 100)
  const result = Math.floor(X)
  return Math.max(1, result / 100)
}


Before being used to calculate the corresponding result, each game hash is salted with the lowercase, hexadecimal string representation of the hash of bitcoin block 505750. This block has not been mined yet, proving that I have not deliberately picked a chain that is unfavorable for players.
Finally!
legendary
Activity: 2940
Merit: 1333
January 23, 2018, 03:10:49 AM
#8
I put the sha256 hash of OP's message in the Bitcoin blockchain:

Quote
# download a copy of the message
$ wget -q https://just-dice.com/misc/signing-event-2.txt

# show the start of its first line
$ head -n 1 signing-event-2.txt | cut -c 1-150
In a few days I will be releasing version 2 of bustabit. The principle of our provably fair system remains the same, but the algorithm that converts g

# show the start of its last line
$ tail -n 1 signing-event-2.txt | cut -c 1-150
Before being used to calculate the corresponding result, each game hash is salted with the lowercase, hexadecimal string representation of the hash of

# compute the hash of the message
$ sha256sum signing-event-2.txt
a015693871d8bde65f57ec82f52f6b192e9a11fa26a37e63e17dc3092c6c7fab  signing-event-2.txt

# create, sign, and broadcast a transaction containing the hash
$ bitcoin-cli sendrawtransaction $(bitcoin-cli signrawtransaction $(bitcoin-cli createrawtransaction '[{"txid":"2c5a01bc4bfb0dfde815ebbe7f08e0c93c3b2d40d220021095c06938abf3b29e","vout":0}]' '{"bc1qnle0kjvz4wyju49m00krxztdqu5ygak00nft37":1.265456, "data":"a015693871d8bde65f57ec82f52f6b192e9a11fa26a37e63e17dc3092c6c7fab"}' 0 true) | grep hex | cut -d'"' -f4)
b6439e1c9eb3915b3cc89871d2c2479f3f1847f0c7bab252c3ebc503b8f6d344

# check that the transaction includes the hash of the message
$ bitcoin-cli getrawtransaction b6439e1c9eb3915b3cc89871d2c2479f3f1847f0c7bab252c3ebc503b8f6d344 true | grep "RETURN a01569"
        "asm": "OP_RETURN a015693871d8bde65f57ec82f52f6b192e9a11fa26a37e63e17dc3092c6c7fab",

It was included in block 505672. Block 505750 still hasn't been mined.
legendary
Activity: 2030
Merit: 1189
January 22, 2018, 10:59:12 PM
#7
In a few days I will be releasing version 2 of bustabit. The principle of our provably fair system remains the same, but the algorithm that converts game hashes to game results has changed. Therefore I'm holding a new seeding event.

Starting with a secret I've generated a chain of 10,000,000 SHA256 hashes. Each element is the hash of the lowercase, hexadecimal string representation of the previous hash. The hash of the chain's last element is 86728f5fc3bd99db94d3cdaf105d67788194e9701bf95d049ad0e1ee3d004277.

Every game maps to a hash in the chain: The 10,000,000th element of the chain is the hash of game #1 and the first element in the chain is the hash of game #10,000,000. To verify that a hash belongs to a game #n, simply hash it n times and compare the result with the terminating hash.

To calculate a game's result from its hash:
Code:
const crypto = require("crypto")

function gameResult(seed, salt) {
  const nBits = 52 // number of most significant bits to use

  // 1. HMAC_SHA256(key=salt, message=seed)
  const hmac = crypto.createHmac("sha256", salt)
  hmac.update(seed)
  seed = hmac.digest("hex")

  // 2. r = 52 most significant bits
  seed = seed.slice(0, nBits/4)
  const r = parseInt(seed, 16)

  // 3. X = r / 2^52
  let X = r / Math.pow(2, nBits) // uniformly distributed in [0; 1)

  // 4. X = 99 / (1-X)
  X = 99 / (1 - X)

  // 5. return max(trunc(X), 100)
  const result = Math.floor(X)
  return Math.max(1, result / 100)
}


Before being used to calculate the corresponding result, each game hash is salted with the lowercase, hexadecimal string representation of the hash of bitcoin block 505750. This block has not been mined yet, proving that I have not deliberately picked a chain that is unfavorable for players.

The current block is 505641.
legendary
Activity: 2772
Merit: 3284
January 22, 2018, 09:49:45 PM
#6
In a few days I will be releasing version 2 of bustabit. The principle of our provably fair system remains the same, but the algorithm that converts game hashes to game results has changed. Therefore I'm holding a new seeding event.

Starting with a secret I've generated a chain of 10,000,000 SHA256 hashes. Each element is the hash of the lowercase, hexadecimal string representation of the previous hash. The hash of the chain's last element is 86728f5fc3bd99db94d3cdaf105d67788194e9701bf95d049ad0e1ee3d004277.

Every game maps to a hash in the chain: The 10,000,000th element of the chain is the hash of game #1 and the first element in the chain is the hash of game #10,000,000. To verify that a hash belongs to a game #n, simply hash it n times and compare the result with the terminating hash.

To calculate a game's result from its hash:
Code:
const crypto = require("crypto")

function gameResult(seed, salt) {
  const nBits = 52 // number of most significant bits to use

  // 1. HMAC_SHA256(key=salt, message=seed)
  const hmac = crypto.createHmac("sha256", salt)
  hmac.update(seed)
  seed = hmac.digest("hex")

  // 2. r = 52 most significant bits
  seed = seed.slice(0, nBits/4)
  const r = parseInt(seed, 16)

  // 3. X = r / 2^52
  let X = r / Math.pow(2, nBits) // uniformly distributed in [0; 1)

  // 4. X = 99 / (1-X)
  X = 99 / (1 - X)

  // 5. return max(trunc(X), 100)
  const result = Math.floor(X)
  return Math.max(1, result / 100)
}


Before being used to calculate the corresponding result, each game hash is salted with the lowercase, hexadecimal string representation of the hash of bitcoin block 505750. This block has not been mined yet, proving that I have not deliberately picked a chain that is unfavorable for players.
legendary
Activity: 2940
Merit: 1333
January 22, 2018, 09:16:05 PM
#5
The current Bitcoin block height is 505626 by the way. Block 505750 hasn't been mined yet, but will be in the next 24 hours or so.
legendary
Activity: 2940
Merit: 1333
January 22, 2018, 09:13:06 PM
#4
In a few days I will be releasing version 2 of bustabit. The principle of our provably fair system remains the same, but the algorithm that converts game hashes to game results has changed. Therefore I'm holding a new seeding event.

Starting with a secret I've generated a chain of 10,000,000 SHA256 hashes. Each element is the hash of the lowercase, hexadecimal string representation of the previous hash. The hash of the chain's last element is 86728f5fc3bd99db94d3cdaf105d67788194e9701bf95d049ad0e1ee3d004277.

Every game maps to a hash in the chain: The 10,000,000th element of the chain is the hash of game #1 and the first element in the chain is the hash of game #10,000,000. To verify that a hash belongs to a game #n, simply hash it n times and compare the result with the terminating hash.

To calculate a game's result from its hash:
Code:
const crypto = require("crypto")

function gameResult(seed, salt) {
  const nBits = 52 // number of most significant bits to use

  // 1. HMAC_SHA256(key=salt, message=seed)
  const hmac = crypto.createHmac("sha256", salt)
  hmac.update(seed)
  seed = hmac.digest("hex")

  // 2. r = 52 most significant bits
  seed = seed.slice(0, nBits/4)
  const r = parseInt(seed, 16)

  // 3. X = r / 2^52
  let X = r / Math.pow(2, nBits) // uniformly distributed in [0; 1)

  // 4. X = 99 / (1-X)
  X = 99 / (1 - X)

  // 5. return max(trunc(X), 100)
  const result = Math.floor(X)
  return Math.max(1, result / 100)
}


Before being used to calculate the corresponding result, each game hash is salted with the lowercase, hexadecimal string representation of the hash of bitcoin block 505750. This block has not been mined yet, proving that I have not deliberately picked a chain that is unfavorable for players.

Ryan asked me to quote this. So I'm quoting this.
hero member
Activity: 1008
Merit: 1012
January 22, 2018, 08:21:41 PM
#3
It has been a while since you announced a new version of the site would be released and I think it is just about time to unveil it.
Seems like a year now since I first heard about the site getting redesigned and slapping a Version 2 to the splash screen. Wink
legendary
Activity: 2198
Merit: 1014
Bitdice is scam scam scammmmmmmmmmmmmmmmmmmmmmmmmm
January 22, 2018, 07:46:42 PM
#2
In a few days I will be releasing version 2 of bustabit. The principle of our provably fair system remains the same, but the algorithm that converts game hashes to game results has changed. Therefore I'm holding a new seeding event.

Starting with a secret I've generated a chain of 10,000,000 SHA256 hashes. Each element is the hash of the lowercase, hexadecimal string representation of the previous hash. The hash of the chain's last element is 86728f5fc3bd99db94d3cdaf105d67788194e9701bf95d049ad0e1ee3d004277.

Every game maps to a hash in the chain: The 10,000,000th element of the chain is the hash of game #1 and the first element in the chain is the hash of game #10,000,000. To verify that a hash belongs to a game #n, simply hash it n times and compare the result with the terminating hash.

To calculate a game's result from its hash:
Code:
const crypto = require("crypto")

function gameResult(seed, salt) {
  const nBits = 52 // number of most significant bits to use

  // 1. HMAC_SHA256(key=salt, message=seed)
  const hmac = crypto.createHmac("sha256", salt)
  hmac.update(seed)
  seed = hmac.digest("hex")

  // 2. r = 52 most significant bits
  seed = seed.slice(0, nBits/4)
  const r = parseInt(seed, 16)

  // 3. X = r / 2^52
  let X = r / Math.pow(2, nBits) // uniformly distributed in [0; 1)

  // 4. X = 99 / (1-X)
  X = 99 / (1 - X)

  // 5. return max(trunc(X), 100)
  const result = Math.floor(X)
  return Math.max(1, result / 100)
}


Before being used to calculate the corresponding result, each game hash is salted with the lowercase, hexadecimal string representation of the hash of bitcoin block 505750. This block has not been mined yet, proving that I have not deliberately picked a chain that is unfavorable for players.
legendary
Activity: 1463
Merit: 1886
January 22, 2018, 07:05:18 PM
#1
In a few days I will be releasing version 2 of bustabit. The principle of our provably fair system remains the same, but the algorithm that converts game hashes to game results has changed. Therefore I'm holding a new seeding event.

Starting with a secret I've generated a chain of 10,000,000 SHA256 hashes. Each element is the hash of the lowercase, hexadecimal string representation of the previous hash. The hash of the chain's last element is 86728f5fc3bd99db94d3cdaf105d67788194e9701bf95d049ad0e1ee3d004277.

Every game maps to a hash in the chain: The 10,000,000th element of the chain is the hash of game #1 and the first element in the chain is the hash of game #10,000,000. To verify that a hash belongs to a game #n, simply hash it n times and compare the result with the terminating hash.

To calculate a game's result from its hash:
Code:
const crypto = require("crypto")

function gameResult(seed, salt) {
  const nBits = 52 // number of most significant bits to use

  // 1. HMAC_SHA256(key=salt, message=seed)
  const hmac = crypto.createHmac("sha256", salt)
  hmac.update(seed)
  seed = hmac.digest("hex")

  // 2. r = 52 most significant bits
  seed = seed.slice(0, nBits/4)
  const r = parseInt(seed, 16)

  // 3. X = r / 2^52
  let X = r / Math.pow(2, nBits) // uniformly distributed in [0; 1)

  // 4. X = 99 / (1-X)
  X = 99 / (1 - X)

  // 5. return max(trunc(X), 100)
  const result = Math.floor(X)
  return Math.max(1, result / 100)
}


Before being used to calculate the corresponding result, each game hash is salted with the lowercase, hexadecimal string representation of the hash of bitcoin block 505750. This block has not been mined yet, proving that I have not deliberately picked a chain that is unfavorable for players.
Jump to: