月亮

当火箭飞向月球时,与其他玩家一起玩。

月球是一款玩家押注虚拟月球坠落的游戏。游戏以火箭发射开始,一轮月亮将在天空中缓缓升起。玩家们对他们认为月球会“坠落”的时间进行投注。下注时间窗口随着第一个玩家的下注而打开。当月亮坠落时,游戏结束,持有赌注的玩家获胜。月亮在天空中停留的时间越长,乘数就越高,从而增加了一直下注直到崩溃的玩家的潜在奖金。

  • 乘数始终在 [1, 100] 范围内,玩家可以选择 [1.01, 100] 范围内的任何乘数。

  • 假设玩家选择 X。在没有额外赌场优势的理想 Moon 游戏中,到达 X 后火箭坠毁的概率为

P(Crash after X)1XP(\text{Crash after } X) \approx \frac{1}{X}

  • 随机结果的生成应该使得上述概率成立。为此,使用以下公式生成火箭坠毁的乘数

Crash Point=10000H10000100H\text{Crash Point} = \frac{10000 - H}{10000 - 100H}

其中 H 由下式给出

H=Random uint256 mod 9901100H = \frac{\text{Random uint256 mod 9901}}{100}
  • 例如,x2之前和之后发生崩溃的概率为

P(Crashbeforex2)0.5075,P(Crashafterx2)0.4925.P(Crash before x2)≈0.5075,P(Crash after x2)≈0.4925.

  • 如果 VRF 以 9901 为模生成的随机数是 66 的倍数,则火箭会立即在 1 处坠毁。这为游戏增加了约 1.5% 的赌场优势,总计高达约 3% 的优势。在这种情况下,上面相同的概率由下式给出

P(Crashbeforex2)0.515,P(Crashafterx2)0.485.P(Crash before x2)≈0.515,P(Crash after x2)≈0.485.

下面是一个示例代码片段,总结了乘数的生成方式:

def getMultiplier():
    
    # Representing VRF's output
    random_number = random.randint(0, 2 ** 256 - 1) 
    
    # Taking modulo 9901
    HH = random_number % 9901 
    
    # Additional 1.5% edge
    if HH % 66 == 0: 
      return 1
    
    H = HH / 100
    return (10000 - H) / (10000 - 100 * H)

Last updated