devnet · zchain-poker-devnetPLAY 娱乐筹码 · REAL 托管映射 · v1 托管网络
finality: soft accepted → BFT ordered → proven → finalized/claimable
四种状态来自技术方案 §5.1。v1 当前实际达到 soft accepted(桌级软确认)与 proven(批次证明);BFT ordered 与 finalized/claimable 属于 v1.5 / Phase 2 路线图,尚未上线。软确认不代表最终确认,也不能单独授权 REAL 提现。

ZChain Poker 文档 · docs v1.3.0-alpha (ABI v1.3)

四阶段最终性

软确认不是最终确认。最终性按四级标注,REAL 提现有双重门槛。

状态机

soft accepted ──(BFT, v1.5)──▶ BFT ordered ──(STARK verify)──▶ proven ──(finality gate)──▶ finalized/claimable

soft accepted

Sequencer 把操作写入软确认链(SoftConfirmFrame,ed25519 签名 + 哈希链)。毫秒级反馈,仅代表运营方承诺。WAL append + fsync 原子提交:WAL 失败则零状态变更。

BFT ordered

v1.5 引入 4–7 validator 对批次根/提款根/状态根做最终确认。当前不存在——每页页眉的最终性图例已注明。

proven

证明管道按批次出证,verify 走真实 STARK 验证路径后,mark_proven 只推进最大连续前缀:证明乱序、失败、worker 崩溃都不会错误推进水位(M4-ACC-6)。

finalized/claimable(REAL 提现门槛,ABI §9)

REAL note 提现申请要求来源 op 同时满足:

  1. proven_watermark >= op_index(连续前缀语义 = 该 op 已证明);
  2. 批次根证据覆盖该 op(batch_covered_through = Some(t)t >= opNone 一律拒绝——op 0 与"尚无批次根"在裸数值下不可区分,用 Option 存在性判定)。

不满足即 WithdrawalNotFinalized { op_index, watermark },计 withdrawal_finality_rejected_total。幂等语义:已受理的同 id 同载荷重复申请返回既有条目。

PLAY note 豁免双重门槛(软确认即可提)。withdrawal_requires_finality = false 为显式 opt-out,仅限测试/开发,禁止生产配置

provenance

LedgerState.note_origins 记录每个 note 承诺的铸出 op,消费后不删除(提现销毁后托管打款侧仍可查;WAL 重放重建)。账本外 note 没有 provenance,无法构造门槛证据。