ZooBC 维基
应用与在 ZooBC 上开发

单人投注

有六种游戏是独自与庄家对赌的:双骰子、抛硬币、轮盘、老虎机、彩票和 crash。一笔投注就是一笔只有一个席位的 CreateApp 交易。它的结果来自下注时尚不存在的随机性,赢了由应用池支付。

下注

投注者发送 CreateApp,其中包含游戏类型(16 到 21)、投注内容和赌注,赌注以 ZBC 或某种代币计。投注执行时,赌注转入应用池。任何账户都可以投注,包括使用以太坊式或比特币式密钥的账户,这类账户不能在多人游戏中入座(多人应用)。

末尾附加一个字节 N(1 到 100),就会用同一个种子把同一笔投注进行 N 次,赌注在各次之间平均分配。

结果何时、如何抽出

被打包进区块 N 的投注在区块 N + 2 用该区块的种子结算,大约在 30 秒之后。每个区块的种子由其出块者用可验证随机函数根据前一个种子算出(区块种子(VRF)),因此当投注正落入区块 N 时,区块 N + 2 的种子还不存在。没有人能预测结果,收录该投注的出块者也无法先看到结果。如果位于 N + 2 的区块是由投注者自己的节点产出的(比较的是所有者账户),这笔投注会等待一个由其他人产出的更靠后的区块。

抽取的结果是该种子与应用 id 的哈希,使用专属的标签:

r = LE64(first 8 bytes of SHA3-256("zbc-apps" ‖ seed ‖ LE64(app id) ‖ LE64(0)))

多次投注中的第一次使用 r;之后各次使用以 r 为种子的 splitmix64 生成器的输出。任何人都可以根据公开数据重新计算结果并核对赔付。没有需要揭示的秘密,也没有每日批量开奖:每笔投注都单独结算。

投注落入区块 N,由区块 N + 2 的种子决定,下注时没有人能看到这个种子。
投注落入区块 N,由区块 N + 2 的种子决定,下注时没有人能看到这个种子。

赔付表

游戏投注赢了赔付庄家优势
抛硬币(17)正面或反面1.98×1%
双骰子(16)小于 7 或大于 72.28×5%
幸运 75.70×5%
精确总点数34.20 ÷ 组合数(2 或 12:34.2×)5%
轮盘(18)单个号码36×1/37,约 2.7%
红或黑2×约 2.7%
老虎机(19)三个 7、其他三连、任意一对50×、15×、1.8×约 10.7%
彩票(20)0 到 99 中的一个号码90×10%
crash(21)1.01× 到 10.00× 之间的目标 T崩盘点达到 T 时赔 T约 1%

对于精确的骰子总点数,组合数是两颗骰子凑出该点数的方式数:6 − |7 − 总点数|。轮盘有 37 个格子,0 为绿色,颜色与真实的欧式轮盘一致。老虎机有三个转轮,每个转轮有八种符号,期望回报为 457.4/512。在 crash 中,目标在下注时就已固定;没有提前兑现的走子。

庄家优势内置于每张赔付表中。抛硬币时你有一半的机会赢,赢了返还赌注的 1.98 倍,因此平均而言每押 1 ZBC 会收回 0.5 × 1.98 = 0.99 ZBC,剩下的 1% 留在应用池。输了则什么都不转移,因为赌注已经在池中。

每种单人游戏的庄家优势,从抛硬币的 1% 到老虎机的约 10.7%。
每种单人游戏的庄家优势,从抛硬币的 1% 到老虎机的约 10.7%。

投注上限

在接受一笔投注之前,节点会计算它可能产生的最大赔付(而不是平均赔付),并与上限比较,上限为池中赌注所用资产余额的 5%:

largest payout ≤ floor(pool balance × 500 ÷ 10,000)

最大赔付对骰子而言是该投注自身的倍数,抛硬币为 1.98×,轮盘为 36×,老虎机为 50×,彩票为 90×,crash 为 T。超过上限的投注在提交时即被拒绝(“bet too large for the apps pool”),而仍然进入了区块的投注则是一次付费空操作。

有了这个上限,任何一次幸运的结果都无法掏空该池。第二项限制,即每区块额度,可以把一笔非常大的奖金分摊到多个区块支付(应用池)。

另见