开奖算法.md 1.4 KB

开奖算法

抢庄牛牛的开奖算法,是通过加密算法预先生成,庄家不可能对游戏开奖结果进行篡改,每一盘的开奖结果,可以通过开奖工具验证结果。

算法流程

算法的设计理念:结果可证伪、防篡改、完全随机。

算法使用到两个种子来确保随机性:

  • 服务器种子: 服务器随机生成
  • 客户端种子: 昨天由指定地址进行Trx转账,生成的块ID

每天的0点,会对每一间房间,生成10万期的开奖结果,用于当天的开奖。如果没有使用完,则丢弃,第二天0点重新生成。

服务器随机获取一个服务器种子A,对服务器种子A进行哈希运算得到H1: Hash(A) = H1, 然后再对H1进行哈希运算得到H2: Hash(H1) = H2,一直循环得到H100000。

生成了种子之后,当天第一期的开奖使用H100000和客户端种子,进行哈希运算,得到K1: Hash(H100000 + 客户端种子) = K1,通过K1,计算每张牌的值。

假设生成的K1是: 40 2a d5 82 e5 eb be 47 54 16 7a 82 9c dc 15 45 96 2c e0 5b 4f c8 d6 20 95 f3 1c c5 24 9f 34 14,一共有64位,对应的牌型:

  • 座位1: 0x40 0xeb 0x7a 0x45 0x4f 0xf3 ==> Q, 1, 2, 8, 10
  • 座位2: 0x2a 0xbe 0x82 0x96 0xc8 0x1c ==> 3, 4, 4, 2, J
  • 座位3: 0xd5 0x47 0x9c 0x2c 0xd6 0xc5 ==> 4, 1, 9, 8, 5
  • 座位4: 0x8x 0x54 0xdc 0xe0 0x20 0x24 ==> 7, 2, 3, 7, 1
  • 座位5: 0xe5 0x16 0x15 0x5b 0x95 0x9f ==> K, 8, 6, 8, 3