Bitcoin Forum
May 09, 2024, 09:55:39 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Warning: One or more bitcointalk.org users have reported that they strongly believe that the creator of this topic is a scammer. (Login to see the detailed trust ratings.) While the bitcointalk.org administration does not verify such claims, you should proceed with extreme caution.
Pages: [1]
  Print  
Author Topic: busteth.com probably fair seeding evet  (Read 189 times)
fulluser (OP)
Member
**
Offline Offline

Activity: 122
Merit: 10


View Profile
September 17, 2017, 03:21:21 AM
 #1

Disclaimer: I was hired by busteth.com to make this seeding event and therefore set up the provably fair system on the game. I will not be part of the team that will manage this site.

This will reuse the idea posted by Ryan and used for Bustabit.

  • A chain of 10 million sha256 hashes was generated, starting with a Server Secret that has been repeatedly fed the output of sha256 hash back into itself 10 million times.
    The final hash in the chain is: 75cbd770ca8fb67eca373b80b0fde7decca0e953ba201d895ba64b6029c889fa, by publicizing it here we are preventing any ability to pick an alternate sha256 chain.
  • SteemCrashwill play through that chain of hashes, in reverse order, and use the hashes to determine the crash point.
  • To avoid criticism that the Server Secret used in step 1 was carefully chosen to generate lots of "bad" crash points, each hash in the chain will be salted with a client seed, which we have no control of.
    The client seed will be the block hash of a Ethereum  block that hasn't yet been mined: block 4,283,000.

The reference code (javascript) is as follows:

The method to create the hash chain is simply sha256:
Code:
function genGameHash(serverSeed) {
  return crypto.createHash('sha256').update(serverSeed).digest('hex');
}

The method to convert a game hash, mix it with the picked client seed to a money pot multiplier:
Code:
function crashPointFromHash(serverSeed, clientSeed) {
  function divisible(hash, mod) {
    // We will read in 4 hex at a time, but the first chunk might be a bit smaller
    // So ABCDEFGHIJ should be chunked like  AB CDEF GHIJ
    var val = 0;
    
    var o = hash.length % 4;
    for (var i = o > 0 ? o - 4 : 0; i < hash.length; i += 4) {
      val = ((val << 16) + parseInt(hash.substring(i, i+4), 16)) % mod;
    }

    return val === 0;
  }

  var hash = crypto.createHmac('sha256', serverSeed).update(clientSeed).digest('hex');

  /* In 1 of 101 games the game crashes instantly. */
  if (divisible(hash, 101))
     return 0;

  /* Use the most significant 52-bit from the hash
     to calculate the crash point */
  var h = parseInt(hash.slice(0,52/4),16);
  var e = Math.pow(2,52);

  return Math.floor((100 * e - h) / (e - h));
}

The chain could be generated with code such as:
Code:
var serverSecret =  'If you knew this, you could steal all my money';
var clientSeed = '0000examplehash';

var gamesToGenerate = 1e7;

var serverSeed = serverSecret;

for (var game = gamesToGenerate; game > 0; --game) {
  serverSeed = genGameHash(serverSeed);
  console.log('Game ' +  game + ' has a crash point of ' + (crashPointFromHash(serverSeed, clientSeed) / 100).toFixed(2) +'x', '\t\tHash: ' + serverSeed);
}

var terminatingHash = genGameHash(serverSeed);

console.log('The final hash is: ', terminatingHash);


Using our chosen starting serverSeed, the hash terminating the chain is 75cbd770ca8fb67eca373b80b0fde7decca0e953ba201d895ba64b6029c889fa. That is to say, the first game's hash played under the new provably fair scheme, when hashed will be 75cbd770ca8fb67eca373b80b0fde7decca0e953ba201d895ba64b6029c889fa
Each block is stacked on top of the previous one. Adding another block to the top makes all lower blocks more difficult to remove: there is more "weight" above each block. A transaction in a block 6 blocks deep (6 confirmations) will be very difficult to remove.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715291739
Hero Member
*
Offline Offline

Posts: 1715291739

View Profile Personal Message (Offline)

Ignore
1715291739
Reply with quote  #2

1715291739
Report to moderator
1715291739
Hero Member
*
Offline Offline

Posts: 1715291739

View Profile Personal Message (Offline)

Ignore
1715291739
Reply with quote  #2

1715291739
Report to moderator
1715291739
Hero Member
*
Offline Offline

Posts: 1715291739

View Profile Personal Message (Offline)

Ignore
1715291739
Reply with quote  #2

1715291739
Report to moderator
RHavar
Legendary
*
Offline Offline

Activity: 2557
Merit: 1886



View Profile
September 17, 2017, 03:27:12 AM
 #2

I've created an archive of the details:
http://archive.is/6lqXb

and quoting the message to prevent editing.

Please note, this is not an endorsement of the site (I have never heard of it until just now). I am just quoting it to prevent editing

Disclaimer: I was hired by busteth.com to make this seeding event and therefore set up the provably fair system on the game. I will not be part of the team that will manage this site.

This will reuse the idea posted by Ryan and used for Bustabit.

  • A chain of 10 million sha256 hashes was generated, starting with a Server Secret that has been repeatedly fed the output of sha256 hash back into itself 10 million times.
    The final hash in the chain is: 75cbd770ca8fb67eca373b80b0fde7decca0e953ba201d895ba64b6029c889fa, by publicizing it here we are preventing any ability to pick an alternate sha256 chain.
  • SteemCrashwill play through that chain of hashes, in reverse order, and use the hashes to determine the crash point.
  • To avoid criticism that the Server Secret used in step 1 was carefully chosen to generate lots of "bad" crash points, each hash in the chain will be salted with a client seed, which we have no control of.
    The client seed will be the block hash of a Ethereum  block that hasn't yet been mined: block 4,283,000.

The reference code (javascript) is as follows:

The method to create the hash chain is simply sha256:
Code:
function genGameHash(serverSeed) {
  return crypto.createHash('sha256').update(serverSeed).digest('hex');
}

The method to convert a game hash, mix it with the picked client seed to a money pot multiplier:
Code:
function crashPointFromHash(serverSeed, clientSeed) {
  function divisible(hash, mod) {
    // We will read in 4 hex at a time, but the first chunk might be a bit smaller
    // So ABCDEFGHIJ should be chunked like  AB CDEF GHIJ
    var val = 0;
    
    var o = hash.length % 4;
    for (var i = o > 0 ? o - 4 : 0; i < hash.length; i += 4) {
      val = ((val << 16) + parseInt(hash.substring(i, i+4), 16)) % mod;
    }

    return val === 0;
  }

  var hash = crypto.createHmac('sha256', serverSeed).update(clientSeed).digest('hex');

  /* In 1 of 101 games the game crashes instantly. */
  if (divisible(hash, 101))
     return 0;

  /* Use the most significant 52-bit from the hash
     to calculate the crash point */
  var h = parseInt(hash.slice(0,52/4),16);
  var e = Math.pow(2,52);

  return Math.floor((100 * e - h) / (e - h));
}

The chain could be generated with code such as:
Code:
var serverSecret =  'If you knew this, you could steal all my money';
var clientSeed = '0000examplehash';

var gamesToGenerate = 1e7;

var serverSeed = serverSecret;

for (var game = gamesToGenerate; game > 0; --game) {
  serverSeed = genGameHash(serverSeed);
  console.log('Game ' +  game + ' has a crash point of ' + (crashPointFromHash(serverSeed, clientSeed) / 100).toFixed(2) +'x', '\t\tHash: ' + serverSeed);
}

var terminatingHash = genGameHash(serverSeed);

console.log('The final hash is: ', terminatingHash);


Using our chosen starting serverSeed, the hash terminating the chain is 75cbd770ca8fb67eca373b80b0fde7decca0e953ba201d895ba64b6029c889fa. That is to say, the first game's hash played under the new provably fair scheme, when hashed will be 75cbd770ca8fb67eca373b80b0fde7decca0e953ba201d895ba64b6029c889fa

Check out gamblingsitefinder.com for a decent list/rankings of crypto casinos. Note: I have no affiliation or interest in it, and don't even agree with all the rankings ... but it's the only uncorrupted review site I'm aware of.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!