
===== B2b 端到端演示 =====
数据目录: /Users/wufeng/IDbots/project/bots/9/2026-09-17/poker-multiplayer/metaapp/settlement/data/demo-evidence
服务端口: 61757 ｜ 托管地址: 1PLkWQykrweYLea9vCU82cCdW3h7kCZawd

[1] 存款入账：credited=3
    idq1...p1 +50000000 sats (amount) → 凭证 000001-deposit-7c652d7506fd3d23e5ae7a126d22093b28e8c1aa4c23c9e370830bd1c1d10249.json
    idq1...p2 +30000000 sats (amount) → 凭证 000002-deposit-4deae564f3043b09d0a2fc0384b1b01772d041fcb04be4bef7ac3db17993ba98.json
    idq1...p3 +20000000 sats (amount) → 凭证 000003-deposit-55fbfd00ca239af297891c9e0a64f7d8f67f7c0b5fc870983d8974ae0b0c5016.json

[2] 入座买入（冻结）:
    idq1...p1 locked=10000000 ｜ available=40000000
    idq1...p2 locked=10000000 ｜ available=20000000
    idq1...p3 locked=10000000 ｜ available=10000000

[3] §6 结算钩子（/settle/hand）:
    H-fa007a600000 seq[7..9] → 凭证 000007-settle-H-fa007a600000.json ｜ 托管负债 100000000
    H-ea0061300000 seq[10..12] → 凭证 000010-settle-H-ea0061300000.json ｜ 托管负债 100000000
    H-da0048000000 seq[13..15] → 凭证 000013-settle-H-da0048000000.json ｜ 托管负债 100000000

[4] 免费桌结算：ok=true ｜ 凭证=无（零链上）

[5] 出金：指令 wd-1789669060346-swzgvs → 确认落账 seq=25 → 凭证 000025-withdraw-132d1ee25b87d32fad201ea3699adbb98470796e789e2c239aaae9740bc19e3e.json
    p1 available=20000000 locked=10001400

[6] 离座：unlocked=10001400

[7] 对账（本进程内联，与 CLI 同输入同口径）:
    [PASS] R1 重放一致 / 确定性 / 非负余额
    [PASS] R2 逐笔双向匹配（event ↔ chain flow）
    [PASS] R3 托管守恒（链上余额 − 账本负债）
    [PASS] R5 免费模式零链上（mode=free ⇒ 0 tx / 0 凭证）
    链上快照: /Users/wufeng/IDbots/project/bots/9/2026-09-17/poker-multiplayer/metaapp/settlement/data/demo-evidence/chain.json

[7b] 官方 CLI 复跑:
    node tools/reconcile.js --ledger /Users/wufeng/IDbots/project/bots/9/2026-09-17/poker-multiplayer/metaapp/settlement/data/demo-evidence/ledger.jsonl --chain /Users/wufeng/IDbots/project/bots/9/2026-09-17/poker-multiplayer/metaapp/settlement/data/demo-evidence/chain.json --receipts /Users/wufeng/IDbots/project/bots/9/2026-09-17/poker-multiplayer/metaapp/settlement/data/demo-evidence/receipts.jsonl --report /Users/wufeng/IDbots/project/bots/9/2026-09-17/poker-multiplayer/metaapp/settlement/data/demo-evidence/reconcile-report.json --mode all

=== 托管对账报告 (reconcile.js) ===
输入: ledger=/Users/wufeng/IDbots/project/bots/9/2026-09-17/poker-multiplayer/metaapp/settlement/data/demo-evidence/ledger.jsonl chain=/Users/wufeng/IDbots/project/bots/9/2026-09-17/poker-multiplayer/metaapp/settlement/data/demo-evidence/chain.json receipts=/Users/wufeng/IDbots/project/bots/9/2026-09-17/poker-multiplayer/metaapp/settlement/data/demo-evidence/receipts.jsonl mode=all
[PASS] R1 重放一致 / 确定性 / 非负余额
       {"replayedEvents":26,"headHash":"981c84b63fa86b844ee21454edf19644fcd43c23bba97216b6746d6eb1b0584e"}
[PASS] R2 逐笔双向匹配（event ↔ chain flow）
       {"spaceEvents":4,"chainFlows":4}
[PASS] R3 托管守恒（链上余额 − 账本负债）
       {"custody":80030000,"liability":80030000,"availableSat":60001400,"lockedSat":20028600,"diff":0,"toleranceSat":0}
[SKIP] R4 凭证链完整性
       {"reason":"no receipts file (B2b wires real pins)"}
[PASS] R5 免费模式零链上（mode=free ⇒ 0 tx / 0 凭证）
       {"freeEvents":9,"freeReceipts":0}

结论: PASS  (passed=4 skipped=1 failed=0)
报告已写入: /Users/wufeng/IDbots/project/bots/9/2026-09-17/poker-multiplayer/metaapp/settlement/data/demo-evidence/reconcile-report.json

    CLI 复跑结果: PASS（zero-diff）

[8] 汇总:
    账本事件 26 条 ｜ 托管负债 80030000 sats（space 80000000 + free 30000）
    凭证 7 条（deposit×3, settle×3, withdraw×1）｜ 待代发 7
    复跑产物: chain.json ｜ reconcile-report.json（复跑命令见 [7b]）
    对账结论: PASS
===== 演示结束 =====

