Skip to content

投注单:一笔交易里的多笔下注

投注单是一种一次性对多个结果下注、而不必逐笔单独签名的方式。你点击结果来收集盘口,设置金额,然后用一笔交易把一切发送出去。

两段话讲清

技术上,投注单就是一笔已签名的 VIZ 交易里的 N 个 pm_place_bet 操作。链上交易在写入层面是原子的:要么整笔生效,要么整笔被拒。所以只要有一注无效 —— 市场已经关闭、余额不足以覆盖所有注的总额、滑点保护被触发 —— 整张投注单都会失败。不存在「一半下注成交了」这种状态,你也永远不必去理清一个只成了一部分的结果。

同时,投注单不是串关(也不是累积过关)。每一注都是投进各自市场奖池的一笔普通独立下注,有自己的赔付。赔率不会相乘:某一注的奖金并不取决于其他注是否命中。投注单省下的是签名,并让一组下注同时发生 —— 但它不会构成「所有结果都必须命中」的组合。带相乘的真正组合是一个单独的协议原语,在下注这一层目前还不存在。

逐步运作

收集。 在事件列表与事件页面(「盘口」视图)中,点击一个结果就会把一注加入投注单:市场、结果、金额(默认 1 Ƶ)以及你的滑点保护。再次点击同一个结果会更新这一注,而不是产生重复项。投注单存放在本地浏览器中 —— 在发送之前,它完全不触碰链。

发送前的检查。 昨天攒下的投注单里,可能还留着一个下注已经关闭的市场。链会拒绝这样一注 —— 连整笔交易一起拒绝,所以客户端会在打开投注单时用与节点相同的规则检查每一注(市场处于活跃状态,且要么是无固定期限的,要么其截止时点尚未过去),把失效的标记出来,并在它们被移除之前不允许发送。流动余额单独检查,针对的是所有注的总额:奖池只接受用自由 VIZ 下注,已质押的份额不计入。

发送。 所有注用同一个密钥(active)签名,并作为一笔交易发出。这里没有网络手续费 —— 上限由账户的能量决定,而按这个尺度衡量,一笔包含 N 注的交易比 N 笔单独交易更便宜。

之后会发生什么。 一旦写入,每一注就各自过自己的日子:在各自市场的奖池里有自己的份额、自己的裁定、自己的自动赔付。在「我的活动」中,它们显示为普通的下注。

需要理解的地方

  • 全有或全无 —— 是在写入层面,而不是在结果层面。 投注单的原子性说的是落入区块,而不是押中与否。一注输了 —— 其余各注照样计算、照样赔付。
  • 赔付不会相乘。 这不是串关。如果你想要更大的风险,就提高某一注的金额,而不是增加注的数量。
  • 一注失效就毁掉整次提交。 市场已关闭、自由 VIZ 不够所有注的总额、最少份额保护被触发 —— 链就会拒绝整张投注单。客户端会提前把这样的注高亮出来。
  • 隐藏下注不进投注单。 提交-揭示与批量模式是有各自揭示窗口的单独路径;只有普通的(「即时」)下注才会被收进投注单。
  • 投注单存在浏览器里。 在你发送之前,它是你设备上的一份草稿:链对它一无所知,换一台设备也不会有它。

相关阅读

  • 下注者 —— 投注单由之构成的那一笔下注的生命周期。
  • 为何用池而非赔率 —— 为什么一注的价格会浮动,以及最少份额保护是做什么用的。
  • 事件与元数据 —— 一场比赛的各条盘口如何被聚合成一张事件卡片,而那里正是构建投注单的便利之处。
  • 隐藏下注(提交-揭示) —— 不属于投注单的那条路径,以及为什么。
  • pm_* 操作 —— 交易由之构建起来的 pm_place_bet 操作。