5-Bucket 资金储备强隔离与清偿性公式

为了防范传统博彩平台最常见且致命的“庄家赖账、资金池挤兑、平台跑路”等信用危机,DeSix 在智能合约中设计了 5-Bucket 隔离储备会计系统。 这套系统将合约内的所有 USDC 资产按照其业务属性划分为 5 个物理隔离的资金桶(Buckets),并在每一次状态变更时通过链上断言(Assert)强制执行清偿能力不变量。
1. 5 个资金桶的定义与职责
合约内累积的所有 USDC 余额,在记账层面被严格切分为以下 5 个部分,任何一个部分都不得被其他用途越权挪用:
┌────────────────────────────────────────────────────────┐
│ USDC 总余额 │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ LP 权益 │ │ 派奖储备 │ │ 退款储备 │ │ 手续费 │ │
│ │(lpEquity)│ │(payout │ │(refund │ │ 储备 │ │
│ │ │ │ Reserve) │ │ Reserve) │ │(feeRes.) │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ │
│ │ 挖矿储备 │ │
│ │(realYield│ │
│ │ Accrued) │ │
│ └──────────┘ │
└────────────────────────────────────────────────────────┘- LP 权益桶 (
$.lpEquity):- 指流动性提供者(LP)的真实净值。
- 它包含了 LP 存入的本金加上交易者投注亏损后沉淀的做市盈利,扣除交易者中奖派发的亏损。
- 这是做市商的专有权益,任何协议费用或玩家奖金池都不能直接稀释此桶。
- 派奖储备桶 (
$.payoutReserve):- 当某一期投注截止、产生中奖提案时,系统自动将这部分中奖玩家的“预计最大理论赔付额”从 LP 权益桶中划拨出来,锁定在派奖桶中。
- 中奖玩家在领奖(
claim)时,资金只能由此桶兑付。
- 退款储备桶 (
$.refundReserve):- 如果某一期因预言机故障、争议最终流转为
Voided(已作废) 状态,系统将把该期所有参与者的投注金总额一次性结转入退款储备桶。 - 玩家进行退款领回(
claimRefund)时,由此桶支出。
- 如果某一期因预言机故障、争议最终流转为
- 手续费储备桶 (
$.feeReserve):- 累积每笔投注产生的 0.3% 协议手续费。
- 该储备仅用于分发(
distributeProtocolFees)给国库、运营团队、回购和矿池分红,与玩家赔付隔离。
- 挖矿分红桶 (
$.realYieldFeeAccrued):- 专用于累积协议手续费分发中属于 Miner 共享的 25% 现金流红利,用户可以在此一键提取 USDC 算力分红。
2. 核心偿付能力不变量
在 DeSixCore 合约中,每一次涉及 USDC 变动的外部调用(如下注、做市、提现、领奖、退款等)在结束前都必须调用 _assertSolvency()。 合约强制执行以下偿付能力不变量不等式:
$$\text{usdc.balanceOf}(\text{address(this)}) \ge \text{lpEquity} + \text{payoutReserve} + \text{refundReserve} + \text{feeReserve} + \text{realYieldFeeAccrued}$$
如果任何代码漏洞或外部操纵导致等式右侧的记账总和超过了合约实际持有的 USDC 余额,交易将在链上自动触发回滚 (Revert)。这在数学上彻底杜绝了平台出现“资不抵债”或“超额提取”的可能性。
3. P0-3 资金错配漏洞与硬化隔离
在最新的安全审计与 Sprint 27 修复中,我们针对 _voidIssueBatchInternal(作废期数)中存在的资金漏洞进行了加固:
- 原先漏洞:为了防范 Gas DoS 攻击,作废期数采用了 O(1) 复杂度的作废设计(直接更改期数状态而不遍历订单)。但旧版本在 void 发生的瞬间,未能将该期总投注额
issue.totalStake从lpEquity扣减并注入refundReserve。这导致后续退款发生时直接从lpEquity扣款,导致lpEquity承担了退款的直接挤兑风险,违反了隔离不变量。 - 修复硬化:
- 重构后,在 void 瞬间,合约自动且一次性将该期
issue.totalStake从lpEquity中减除,并全额注入refundReserve,在账户层面完成瞬间划转。 claimRefund被修改为强制且唯一由refundReserve兑付,不再允许碰触lpEquity。
- 重构后,在 void 瞬间,合约自动且一次性将该期
- 修复成效:使得退款资金在作废发生的第一时间就完成了物理隔离,保证了
getTVL()(TVL 仅返回lpEquity)在任何时候都反映真实的 LP 净资产,不再包含待退玩家本金。