在这一页
扫雷(加密版)
在这一页
简介
本页面针对常见于完全基于加密货币的互联网赌场中的扫雷版本。游戏在一个5x5的方格上进行,目标是在网格中选出没有地雷的方格。请勿将其与该版本的游戏相混淆。
规则
- 游戏在一个5x5的方格网格上进行。
- 玩家选择投注金额和1到24个地雷的数量。
- 游戏将随机在网格中放置玩家所选数量的地雷。此时地雷位置对玩家隐藏。
- 在每个决策点时,游戏会显示如果玩家下一次选择成功,其赌注将增加至多少。
- 玩家从网格剩余方格中选择一个。
- 如果玩家选择的方格包含地雷,则地雷爆炸游戏结束。玩家将损失全部赌注。
- 反之,如果玩家选择的方格没有地雷(以比特币标志表示),则其赌注将增加。
- 玩家可选择按当前赌注金额兑现退出,或继续选择。若选择继续,则返回第5步。
在我所玩的版本中,游戏的预期回报率为99%,此处将游戏定义为玩家要么收集奖励要么损失筹码。首次选择的回报率为99%,同一局游戏中后续所有选择的回报率均为100%。据我推测,这种玩家回报率应该是可配置的。
示例
在上图中,我选择了三个雷区和0.00001 BTC(约合0.10美元)的赌注。
在上图中,我成功选择了顶行左起第二列的方块。我的投注金额增加至0.00001076比特币。这是根据我下注前的本金、22/25的成功选择概率倒数以及99%的回报率计算得出:0.00001 × (25/22) × 0.99 = 0.00001125。
在上图中,我成功选中了顶行中间列的方块。我的投注金额增加至0.00001286个比特币。这是基于我的初始投注额、成功完成两次选择的概率倒数以及99%的回报率计算得出:0.00001 × (25/22) × (24/21) × 0.99 = 0.00001286。
在上图中,我成功选中了顶行右列的第三个方块。我的投注金额增加至0.00001479比特币。这是基于我的初始投注额、连续三次成功选择的概率倒数以及99%的回报率计算得出:0.00001 × (25/22) × (24/21) × (23/20) × 0.99 = 0.00001286。
在上图中,我成功选择了从顶部数第二行、从左数第二列的第四个方块。我的赌注增加到了0.00001712 BTC。这是基于我的初始赌注、成功完成四次选择的概率倒数以及99%的回报率计算得出的:0.00001 × (25/22) × (24/21) × (23/20) × (22/19) × 0.99 = 0.00001712。
在上图中,我成功选择了中间行左起第一列的第五个方格。我的投注金额增加至0.00001997 BTC。这是基于我的初始投注额、连续五次成功选择的概率倒数以及99%的回报率计算得出:0.00001 × (25/22) × (24/21) × (23/20) × (22/19) × (21/18) × 0.99 = 0.00001997。
在上图中,我成功选中了中间行中间列的第六个方块。我的投注金额增加至0.00002350比特币。这是基于我的初始投注额、连续六次成功选择的概率倒数以及99%的回报率计算得出:0.00001 × (25/22) × (24/21) × (23/20) × (22/19) × (21/18) × (20/17) × 0.99 = 0.00002350。游戏界面显示,若我能成功选中下一个方块,"下次兑现"金额将达到0.00002790比特币。
在上图中,我选择兑现并取回0.00002350个比特币。这包括我最初下注的0.00001个比特币和0.00001350个比特币的盈利。游戏向我显示了地雷布置的位置。
在上图中,我成功选择了从上往下第二行、从左往右第二列的方块。我的赌注增加到了0.00001712个比特币。这是基于我的初始赌注、连续四次成功选择的概率倒数以及99%的回报率计算得出的:0.00001 × (25/22) × (24/21) × (23/20) × (22/19) × 0.99 = 0.00001712。
分析
在我于CryptoGames所玩的版本中,首次选择的玩家回报率为99%。之后每次选择的回报率均为100%。玩家的赌注始终会基于初始投注额及游戏进程中该阶段的达成概率,向下舍入至0.00000001 BTC(比特币)。换言之,舍入误差不会复利计算,而仅单次应用。
如果被迫说出游戏的整体回报率,我会说是99%,至少对于CryptoGames平台上的版本而言,这是基于每笔已结算的投注计算的——投注只有在亏损或兑现时才被视作已结算。
公平游戏流程的运作方式是,0到20号方格中出现地雷的概率略高于21到24号方格。具体而言,21到24号单元格的概率降低了1/4096。这使得在单雷单选的游戏中,选择0到20号方格的回报率为98.97%,而选择21到24号方格的回报率为99.00%。
公平游戏
本部分仅供实际验证游戏结果确属预先确定的人士参阅。前提是读者已熟悉通过密码学实现的“公平游戏”运作机制。若需了解基础知识,请参阅我关于骰子(加密版本)的页面说明。
在扫雷游戏中,游戏必须预先确定网格上最多24个地雷的位置。这些位置的编号如下:
对于CryptoGames平台,玩家将找到赌场种子值的SHA512哈希值,其后跟随数字零,再接着是玩家自己的种子值。随后,为确定首个地雷的位置,玩家需将哈希值的前两个字符转换为十进制数,再对该数字取模25运算。寻找下一个地雷位置时,玩家将重复相同流程,但改为使用哈希值的第三与第四位字符。此过程将持续重复,每次沿哈希值向后推进两个字符位置,直至所有地雷位置均被确定。
在极不可能发生哈希耗尽位置的情况下,玩家将重复相同流程,唯一区别是在赌场种子和玩家种子之间使用数字1而非0,以寻找额外雷区。
为了节省您的时间,我编写了一个扫雷程序来轻松定位地雷位置。只需在第4行输入客户种子,在第5行输入服务器种子,然后点击“执行代码”。程序会在代码下方的“结果”框中告知您地雷的位置。我还保存了代码副本,您可以通过点击下方按钮查看。
$client_seed = "lKB0F28tMdLhrEn6nZ6aJGm9FSZB3bwehn47NhUk";
$server_seed = "nG1QqpFtZFoqJLMl0fE55olfP6KbptpKOInScVh9";
$mines=3;
$step=0;
$mines_found=0;
$position=0;
$combined_seed = $server_seed.$step.$client_seed;
echo "Combined seed = $combined_seed\n";
$combined_hash = hash('sha512', $combined_seed);
echo "Hash of combined seed = $combined_hash\n";
do
{
$first_two=substr($combined_hash,$position,2);
$hex_to_dec=hexdec($first_two);
$mine_location=$hex_to_dec%25;
$repeat=0;
if ($mines_found>0)
{
for ($i=0; $i<$mines_found; $i++)
{
if ( $mine_location == $mine_array[$i])
{ $repeat=1; }
}
}
if ($repeat==0)
{
$mine_array[$mines_found] = $mine_location;
$mines_found++;
echo "Mine at $mine_location\n";
}
$position+=2;
if ($position==128)
{
$position=0;
$step++;
}
}
while ($mines_found<$mines);
// 程序
// 1. 将“步长”设为0,“位置”设为0。
// 2. 连接服务器与客户端种子、步骤以及服务器种子,按此顺序。
// 3. 生成步骤2中字符串的SHA-512哈希值。
// 4. 将步骤3中哈希“位置”开始的前两个字符从
十六进制转换为十进制。
// 5. 将步骤4除以25并取余数。
// 6. 如果步骤5的结果是唯一的,对于游戏来说,那么那里将会放置一个地雷。
// 7. 地雷位置将按以下方式编号:
// 0 1 2 3 4
// 5 6 7 8 9
// 10 11 12 13 14
// 15 16 17 18 19
// 20 21 22 23 24
// 8. 如果所有地雷位置都已确定则停止,否则将“位置”前进2并返回第4步
// 9. 在极不可能的情况下,若“位置”达到128(哈希值的末端),则将“步进”增加1,将“位置”重置为0,并返回步骤2。
?
外部链接
我论坛中关于扫雷的讨论位于Wizard of Vegas.