Skip to content

多重彩串关与位图互斥

多重彩互斥校验 除了单期投注外,DeSix 还支持高阶的多重彩串关交易 (Parlay)。 串关允许交易者将不同期数(例如第 10 期、第 11 期、第 12 期)的选择连结在一起。只有当所有选择的期数都预测成功时,该串关单才算中奖。中奖时,各期的赔率会级联相乘,为玩家提供“以小博大”的数十倍高精度赔率乘数。

然而,串关机制在链上实现时面临着复杂的数学冲突和安全风控隐患。DeSix 通过位图互斥算法独立的风控仓位隔离实现了这一机制。


1. 49位位图互斥校验 (Bitmap Mutual Exclusion)

在一个澳门六合彩开奖期内,最终有且仅能有一个数字作为中奖号。如果玩家在同一个串关组合中,对同一期既押注了 8 又押注了 12,在数学上是绝对矛盾的(因为最终结果不可能既是 8 又是 12)。这种投注不仅注定失败,还会空耗用户的本金。

为了在合约底层彻底拦截这种自我矛盾的无效串关,DeSix 设计了 49位 uint64 位图互斥校验

  1. 号码位图化:在 DeSixTypes.sol 中,用户的选号被重构为一个极轻量的位图(numberBitmap),其中第 $k$ 位的 10 代表是否选择了该号码。
  2. 高效位运算:在 DeSixParlay.sol 的下注前置校验中,系统通过 EVM Yul 汇编的内联 SWAR 位操作,对同一串关单中属于同一期数(issueId)的选号位图进行逻辑与(AND)运算。
  3. 互斥阻断:如果位图重叠度或组合校验发现数学上的绝对互斥,合约会抛出 NumbersConflict 并强行回滚交易,保护用户不犯常识性投注错误,同时防御了利用矛盾号码操纵池子最大敞口的潜在攻击。

多重彩 (Parlay) 级联赔率与 49位 Bitmap 互斥校验

串关的中奖赔率是级联相乘的,这会导致极其恐怖的瞬时最大赔付敞口。为此,DeSix 采用了独立的资金风控架构:

  • 级联高精赔率引擎:串关的理论赔率等于各子单赔率的乘积,但为了避免相乘时的精度截断误差,系统将赔率精度(ODDS_PRECISION)提升了百倍至 10,000 进行高精算术运算。
  • 3-Bucket 独立储备:多重彩合约拥有独立的资金储备桶(Parlay lpEquity, Parlay payoutReserve, Parlay refundReserve),不与主 Core 的 LP 资金池共用,防止高倍串关黑天鹅事件将主流动性池抽干。

3. 多重彩安全漏洞修复与加固

在最新的安全审计与 Sprint 27 修复中,我们对 DeSixParlay.sol 进行了两项核心加固:

修复一:P1-2 settleParlayBatch 时间权限旁路

  • 原先漏洞:任何人可以在期数截止 2 小时后调用结算,但此时主 Core 上的开奖结果可能因为遭遇预言机争议而尚未在 DrawManager 中固化。如果提前按不确定的状态结算了串关,会造成严重错判。
  • 修复加固:重构了结算逻辑。在判定串关结算前,多重彩合约会额外向 DrawManager 发起调用,强制校验目标期数(issueId)的预言机生命周期状态是否确为 Finalized (最终固化),彻底堵死了旁路漏洞。

修复二:P2-3 activeIssues 数组增长无清理死锁

  • 原先漏洞:串关合约内部通过一个 activeIssues 数组记录当前运行中的期数。但在期数被主 Core 作废(Void)时,该期数会永久滞留在此数组中,导致 maxActiveIssueExposure() 持续计入已废弃期数的虚拟敞口,从而使 LP 提款(withdrawLP)被永久死锁阻塞。
  • 修复加固:引入了 pruneStaleActiveIssues(过期垃圾期数静默自愈) 机制。系统在每次结算或提款时自动扫描该数组,物理清除已作废或超过 claim 期的残留期数,为 LP 顺利提取资金扫清了障碍。

基于 Base Sepolia 测试网运行。去中心化、透明可验证。