{"title":"b2b-reconcile","subtitle":"","coverImg":"","contentType":"text/plain","content":"\n===== B2b 端到端演示 =====\n数据目录: /Users/wufeng/IDbots/project/bots/9/2026-09-17/poker-multiplayer/metaapp/settlement/data/demo-evidence\n服务端口: 59386 | 托管地址: 1PLkWQykrweYLea9vCU82cCdW3h7kCZawd\n\n[1] 存款入账:credited=3\n idq1...p1 +50000000 sats (amount) → 凭证 000001-deposit-7c652d7506fd3d23e5ae7a126d22093b28e8c1aa4c23c9e370830bd1c1d10249.json\n idq1...p2 +30000000 sats (amount) → 凭证 000002-deposit-4deae564f3043b09d0a2fc0384b1b01772d041fcb04be4bef7ac3db17993ba98.json\n idq1...p3 +20000000 sats (amount) → 凭证 000003-deposit-55fbfd00ca239af297891c9e0a64f7d8f67f7c0b5fc870983d8974ae0b0c5016.json\n\n[2] 入座买入(冻结):\n idq1...p1 locked=10000000 | available=40000000\n idq1...p2 locked=10000000 | available=20000000\n idq1...p3 locked=10000000 | available=10000000\n\n[3] §6 结算钩子(/settle/hand):\n H-fa007a600000 seq[7..9] → 凭证 000007-settle-H-fa007a600000.json | 托管负债 100000000\n H-ea0061300000 seq[10..12] → 凭证 000010-settle-H-ea0061300000.json | 托管负债 100000000\n H-da0048000000 seq[13..15] → 凭证 000013-settle-H-da0048000000.json | 托管负债 100000000\n\n[4] 免费桌结算:ok=true | 凭证=无(零链上)\n\n[5] 出金:指令 wd-1789668480313-w7o8a1 → 确认落账 seq=25 → 凭证 000025-withdraw-132d1ee25b87d32fad201ea3699adbb98470796e789e2c239aaae9740bc19e3e.json\n p1 available=20000000 locked=10001400\n\n[6] 离座:unlocked=10001400\n\n[7] 对账(本进程内联,与 CLI 同输入同口径):\n [PASS] R1 重放一致 / 确定性 / 非负余额\n [PASS] R2 逐笔双向匹配(event ↔ chain flow)\n [PASS] R3 托管守恒(链上余额 − 账本负债)\n [PASS] R5 免费模式零链上(mode=free ⇒ 0 tx / 0 凭证)\n 链上快照: /Users/wufeng/IDbots/project/bots/9/2026-09-17/poker-multiplayer/metaapp/settlement/data/demo-evidence/chain.json\n\n[7b] 官方 CLI 复跑:\n 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\n\n=== 托管对账报告 (reconcile.js) ===\n输入: 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\n[PASS] R1 重放一致 / 确定性 / 非负余额\n {\"replayedEvents\":26,\"headHash\":\"bf131a54265ec866248c7c598e52fe3175272d795e83ad2db56dfb5de53bac5c\"}\n[PASS] R2 逐笔双向匹配(event ↔ chain flow)\n {\"spaceEvents\":4,\"chainFlows\":4}\n[PASS] R3 托管守恒(链上余额 − 账本负债)\n {\"custody\":80030000,\"liability\":80030000,\"availableSat\":60001400,\"lockedSat\":20028600,\"diff\":0,\"toleranceSat\":0}\n[SKIP] R4 凭证链完整性\n {\"reason\":\"no receipts file (B2b wires real pins)\"}\n[PASS] R5 免费模式零链上(mode=free ⇒ 0 tx / 0 凭证)\n {\"freeEvents\":9,\"freeReceipts\":0}\n\n结论: PASS (passed=4 skipped=1 failed=0)\n报告已写入: /Users/wufeng/IDbots/project/bots/9/2026-09-17/poker-multiplayer/metaapp/settlement/data/demo-evidence/reconcile-report.json\n\n CLI 复跑结果: PASS(zero-diff)\n\n[8] 汇总:\n 账本事件 26 条 | 托管负债 80030000 sats(space 80000000 + free 30000)\n 凭证 7 条(deposit×3, settle×3, withdraw×1)| 待代发 7\n 复跑产物: chain.json | reconcile-report.json(复跑命令见 [7b])\n 对账结论: PASS\n===== 演示结束 =====\n\n","encryption":"0","createTime":1789668593801,"tags":[],"attachments":[]}