Hello everyone and welcome to Funarcade’s seeding event for Multiplayer Baccarat and Crash games. Props to everyone who came before and propagated this method.
We have generated a chain of 10,000,000 SHA256 hashes for each game. Each hash is the hash of the hexadecimal representation of the previous hash.
The last hash for each chain is:
Baccarat: ecda5ee831114c94c3f3502a8e4486839865ac17a19d4852cb25a37436ea77cd
Crash: 4cbac65f734bc42707bdd7a8a58aabd3ce16e27b26914cb5c0a1e1842dc4cc78
formula for generating game results:
Baccarat:
A hash is generated for each round of play, by combining the client and server seeds with the game and round numbers. The first 48 digits of the hash are taken and separated into 6 parts of 8 digits each. Each part represents a card on the table, from a minimum of 4 cards to a maximum of 6.
Example:
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
Card 1: ba7816bf
Card 2: 8f01cfea
Card 3: 414140de
Card 4: 5dae2223
Card 5: b00361a3
Card 6: 96177a9c
The digits of each part are then randomized, and this formula: floor(result* 52) is then used to arrive at a result from 0 - 51.
// Index of 0 to 51: ♥A to ♠K
const CARDS = [
0 - 12: ♥A, ♥2, ♥3 ♥4, ♥5, ♥6, ♥7 ♥8, ♥9, ♥10, ♥J ♥Q, ♥K,
13 - 25: ♦A, ♦2, ♦3, ♦4, ♦5, ♦6, ♦7, ♦8, ♦9, ♦10, ♦J, ♦Q, ♦K,
26 - 39: ♣A, ♣2, ♣3, ♣4, ♣5, ♣6, ♣7, ♣8, ♣9, ♣10, ♣J, ♣Q, ♣K,
39 - 51: ♠A, ♠2, ♠3, ♠4, ♠5, ♠6, ♠7, ♠8, ♠9, ♠10, ♠J, ♠Q, ♠K
];
// Game event translation
const card = CARDS[Math.floor(float * 52)];
Card Order:
Player's first two cards are Cards 1 and 2.
Banker's first two cards are Cards 3 and 4.
If only the Player or Banker draws a third card, it will be Card 5.
If both Player and Banker draw a third card, they will be Cards 5 and 6 respectively.
Card 6 is always the Banker's third card (if drawn).
Crash:
const gameHash = hashChain.pop()
const hmac = createHmac('sha256', gameHash);
// blockHash is the hash of bitcoin block insert chosen block here, and also the resulting hash.
hmac.update(blockHash);
const hex = hmac.digest('hex').substr(0, 8);
const int = parseInt(hex, 16);
// 0.01 will result in 1% house edge with a lowest crashpoint of 1
const crashpoint = Math.max(1, (2 ** 32 / (int + 1)) * (1 - 0.01))
Blockhash to be used as client seed will be Bitcoin Block 810108, which has not yet been mined at the time of posting. Following the established method, we are using the hash of a future bitcoin block as a client seed so players can be certain that we did not pick one in the house's favor.
If someone could quote this post so it is all set in stone, i'd appreciate it. thank you.