隐藏下注:提交-揭示与批量
有时候,你的下注不被提前看到是很要紧的 —— 这样它就无法被抄袭,也无法被针对性地博弈。两阶段的隐藏下注就是为此而生:先把它「封起来」(提交),然后再揭示(揭示)。下面看它为什么存在,以及如果你不揭示会发生什么。
两段话讲清
一笔普通下注在链上立刻可见 —— 结果、金额、时间。隐藏下注把这些遮住直到揭示:你押上托管并以提交的形式记下这笔下注(pm_commit_bet),而不显示押的是哪个结果、押了多少。之后,在揭示窗口内你把它揭示出来(pm_reveal_bet),它便像任何其他下注一样进入彩池。在揭示之前没人知道你的持仓 —— 这就是对抄袭、抢跑以及狙击大额下注的防护。
私密性伴随着责任:如果你在窗口内未能揭示这笔下注,没收(forfeit)就会启动 —— 部分托管(罚则部分)进入市场的 forfeit_pool(归赢家),其余退还。隐藏下注只在启用了批量模式(allow_batch)的市场上有效,并且要求一个最低托管额(pm_min_batch_bet)。
逐步运作
提交。 pm_commit_bet:你押上托管(≥ pm_min_batch_bet,量级为 1 VIZ),并以密封形式记下这笔下注。链上显示你押了些什么,但不显示结果与金额。托管被扣划。
揭示窗口。 你会得到一个有限的窗口(纪元 + pm_reveal_window_blocks,量级为几分钟)。你必须在其中揭示。
揭示。 pm_reveal_bet:你公开结果与金额,下注按当前价格进入彩池 —— 从此它就是一笔普通下注。为了揭示,客户端需要你那笔提交的 commit_id(get_account_commits)。
未揭示 → 没收。 错过窗口,没收就自动发生:罚则(托管的一部分,由 no_reveal_fee_percent 设定)进入市场的 forfeit_pool,余额退还。这就是占了一个位置却没把下注完成的代价。
为什么存在
- 意图的私密性。 大玩家不希望自己的下注在进入彩池之前被抄袭或被针对性地博弈。
- 反狙击。 隐藏阶段让偷看并抢跑他人的下注变得更难。
- 批量。 提交被收集起来并成批揭示 —— 这是一种更公平、更私密的下注轮次模式。
你需要理解的地方
- 两个阶段,两个动作。 提交与揭示是不同的操作,中间夹着一个窗口。忘了揭示,你就损失掉罚则部分。
- 揭示是强制的。 没收不是 bug,而是把开了头的事做完的激励;罚则通过 forfeit_pool 归于赢家。
- 仅在 allow_batch 市场上。 并非每个市场都支持隐藏下注。
- 你需要 commit_id。 为了揭示,客户端会取出你未结的提交(
get_account_commits)—— 没有它就没有可揭示的东西。 - 终止开关。 整个提交-揭示是一个带中位数投票开关(
pm_commit_reveal_enabled)的子系统;验证者无需硬分叉即可停用它。