Author

Topic: 999xCrash game in Telegram fairness verification and salt decision notification (Read 93 times)

newbie
Activity: 8
Merit: 1
Let me answer your doubts. Players can compare the results of this round with the results of the last N rounds to confirm whether the dealer is cheating. Because we use continuously generated hashes to generate results.
For the specific principle, you can refer to:
https://top.game/help/provably-fair

Well, this time i was wrong, if the result is based on the previous game then you are using a good provably fair engine, i have seen people doing this kind of provably fair for games like crash in the past.

I got confused because i only saw the seed and salt, and for a moment i thought you were taking random salts for each round, casinos like freebitco do it, and i don't feel that's a good provably fair method, but you are implementing a good one, so, good luck with your project and thanks for offering a fair engine to the community, we need more of those.

Thank you.
Our vision is to strive to create a fair gaming environment so that players can enjoy the real joy of the game!
legendary
Activity: 3346
Merit: 3125
Let me answer your doubts. Players can compare the results of this round with the results of the last N rounds to confirm whether the dealer is cheating. Because we use continuously generated hashes to generate results.
For the specific principle, you can refer to:
https://top.game/help/provably-fair

Well, this time i was wrong, if the result is based on the previous game then you are using a good provably fair engine, i have seen people doing this kind of provably fair for games like crash in the past.

I got confused because i only saw the seed and salt, and for a moment i thought you were taking random salts for each round, casinos like freebitco do it, and i don't feel that's a good provably fair method, but you are implementing a good one, so, good luck with your project and thanks for offering a fair engine to the community, we need more of those.
newbie
Activity: 8
Merit: 1
Code:
(seed, salt) => {
    const nBits = 52; // number of most significant bits to use

    // 1. HMAC_SHA256(message=seed, key=salt) 
    const hmac = CryptoJS.HmacSHA256(CryptoJS.enc.Hex.parse(seed), salt);
    seed = hmac.toString(CryptoJS.enc.Hex);

Just an observation, here is different the input seed than the last seed, so, why not use different names for that variable, like seed and serverSeed.

And your provably fair has a problem, is not fair at all, let me explain why.

A true provably fair engine needs a Nonse, that's a number that increases on each bet, that way your seed and salt are the same on each roll, but you provide a "secret seed", that way the user can't predict the next roll, and if the user want to reveal that secret seed, then he must ask for another seed. That's how the perfect provably fair system works. And since you only have a seed and salt that means your salt is dynamic, and you can manipulate that on each roll to decrease the user odds. The only protection for the user is to change the seed each roll.

Let me answer your doubts. Players can compare the results of this round with the results of the last N rounds to confirm whether the dealer is cheating. Because we use continuously generated hashes to generate results.
For the specific principle, you can refer to:
https://top.game/help/provably-fair
newbie
Activity: 8
Merit: 1
Block 40,009,999 has been mined, so we have our salt: mqOPKpO312RmSiIhbBh6w9JZrmAahjBgYd8+LIPjaU8=
https://tonscan.com/blocks/-1/8000000000000000/40009999

legendary
Activity: 3346
Merit: 3125
Code:
(seed, salt) => {
    const nBits = 52; // number of most significant bits to use

    // 1. HMAC_SHA256(message=seed, key=salt) 
    const hmac = CryptoJS.HmacSHA256(CryptoJS.enc.Hex.parse(seed), salt);
    seed = hmac.toString(CryptoJS.enc.Hex);

Just an observation, here is different the input seed than the last seed, so, why not use different names for that variable, like seed and serverSeed.

And your provably fair has a problem, is not fair at all, let me explain why.

A true provably fair engine needs a Nonse, that's a number that increases on each bet, that way your seed and salt are the same on each roll, but you provide a "secret seed", that way the user can't predict the next roll, and if the user want to reveal that secret seed, then he must ask for another seed. That's how the perfect provably fair system works. And since you only have a seed and salt that means your salt is dynamic, and you can manipulate that on each roll to decrease the user odds. The only protection for the user is to change the seed each roll.
newbie
Activity: 8
Merit: 1
Yes
I'm glad you're interested in our platform. Stay tuned!
legendary
Activity: 2114
Merit: 2248
Playgram - The Telegram Casino

So then this is the url; https://top.game/ and you're integrating your casino to the telegram app so users can choose to play there, am I correct?
newbie
Activity: 8
Merit: 1
We are applying our online casino technology to TON. Please look forward to our games.
 Grin
legendary
Activity: 2114
Merit: 2248
Playgram - The Telegram Casino
Would you also have a website where this info will be readily available to users at anytime in the future, including those not active on the forum?

Welcome to the forum looking forward to seeing your casino make an official announcement.
newbie
Activity: 8
Merit: 1
Hello world,

We are about to launch a Crash game in Telegram. In order to provide an absolutely fair game, we will now announce the formula for fairness verification and how to determine the salt:

GAME RESULT FORMULA:
Code:
const gameResult = (seed, salt) => {
    const nBits = 52; // number of most significant bits to use

    // 1. HMAC_SHA256(message=seed, key=salt)  
    const hmac = CryptoJS.HmacSHA256(CryptoJS.enc.Hex.parse(seed), salt);
    seed = hmac.toString(CryptoJS.enc.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)
    X = parseFloat(X.toPrecision(9));

    // 4. X = 90 / (1-X)
    X = 90 / (1 - X);

    // 5. return max(trunc(X), 100)
    const result = Math.floor(X);
    return Math.max(1, result / 100);
  };
 
GET SALT:
Prior to being used for calculation, each game hash is salted with the lowercase + hexadecimal string representation of the hash from pre-selected TON Masterchain block 40,009,999. This block has not been mined yet as of this post, proving that we have not deliberately selected a mined block with a hash that could be favorable to the house. Once block 40,009,999 has been mined, the results will be posted to this thread as a reply.
[/quote]
Jump to: