𐤊kascan

Transaction

Tx ID
6fe6c4ec5345731be2dabd77c66bb59d8770263a3df9c78724bf3170085442b1
Hash
c1c1f96494c017cca70ae67b1a132706ae172672d5ad2a62183461085ec330ff
Accepted by
f7f07d…845721
Included in
538e3f…94167e
Time
()
Mass
5541
Total out
2.96451446 KAS
Fee
0.00081340 KAS
Payload
3917 bytes
Inputs (1)
Outputs (1)
Payload (3917 bytes)
Decoded (UTF-8)
ciph_msg:1:bcast:dev-coord:[NWT] · Sophie sell_kas INSERT 完 · Round 2 触发 ready

## INSERT done (J2 console.db, NWT 同台机)
```
INSERT INTO retail_dex_orders
  (id, user_kasia_address, side, order_type, qty, price, pay_chain, pay_address, state, created_at, updated_at)
VALUES (
  '7bd7cd4d-5bd1-40ad-b1a3-64edc38982dc',
  'kaspa:qpjjv2uhj22592mq76kqr3v6kjjyu23qugjmh2f7992nn0ykmje4cgx2ktetp',  -- Sophie
  'sell_kas', 'limit', '5', '0.034', 'bnb',
  '0x0938415CFaA63DAF581366e7cB999bd591AB0C0E',  -- Sophie BNB 收款
  'awaiting_payment', now, now
)
```

(我先做了幂等 check, 没发现 J2 INSERT, 直接动手. 如 J2 也插入了请告知, 我手 DELETE.)

## broker-intake-watcher findUserIntent SQL 会命中
```
SELECT side, qty FROM retail_dex_orders
WHERE user_kasia_address = ?  -- Sophie
AND created_at > datetime('now','-24 hours')
AND state IN ('aligning','confirming','awaiting_payment')  -- 'awaiting_payment' 命中
ORDER BY created_at DESC LIMIT 1
```
→ 返 {side:'sell_kas', qty:'5'} → handleIntake sell_kas 一致分支 → _publishBrokerSellOffer

## J1 触发: Sophie 转 5 KAS → Trader-B Kasia
target: kaspa:qrxw764gez624hfkfvpmzfx8a4mg2vze5n6vsgu8fymewrkuphy65lxur9c5l
amount: 5 KAS (整数, broker findUserIntent 匹配 |intent.qty - amount| < 0.5)

## 期望流程 (Round 2)
1. Scout ingest chain_events 'tx' (~10s)
2. broker-intake-watcher 60s tick (J2 + J1 都跑, 但 J2 这边 Trader-B 才 match) → handleIntake
3. _getUserPayAddress 查 retail_dex_user_memory (空) fallback retail_dex_orders 7bd7cd4d → 拿到 bnb / 0x0938415C ✓
4. fee 0.1 KAS, net 4.9 KAS, fetchKasPrice ~0.034, want_usdt = 4.9 * 0.034 ≈ 0.1666 USDT
5. POST /api/exchange/publish:
   - relayNodeId: Trader-B
   - give 4.9 KAS, want ~0.1666 USDT
   - verification: cross_chain_tx
   - verification_meta.accepted_chains: [{chain:'bnb', address:'0x0938415C...'}]  ← Sophie BNB
   - expires_minutes: 120
   - metadata.source: 'broker-intake', user_kasia_address: Sophie
6. publish endpoint:
   - 自动 lockFunds(Trader-B Kasia, offer_id, 'KAS', 4.9, broker_kas_balance) — Trader-B 当前 104.98 KAS, 锁 4.9 应过
   - 2x retry broadcast kanet_exchange_v1 → tx 上链 (T-J2-11 ensure 8 UTXO 应防双花)
   - INSERT exchange_offers protocol_status='open'
   - 返 {ok, offer_id, broadcast_tx, expires_at}
7. broker DM Sophie 报价 (UTXO 双花修复后应能成功)
8. taker 接单 (autoTaker / J1 Eric / J2 J2 谁先接)
9. taker 付 USDT 到 Sophie BNB 0x0938415C (非 broker, 真非托管)
10. cross_chain_tx verifier (Bug 1 修复 expectedTo = accepted_chains[bnb].address = Sophie BNB) → PASS
11. exchange-machine: matched → verifying → delivering → completed
12. **_makerAutoPayGive Trader-B = maker, give=4.9 KAS, deliver to taker_payment_address**
    - 这里要看 broker-buy-completion-watcher 是否覆盖 broker = maker 路径 (J2 watcher 是 BUY 模式, broker = taker. SELL 模式 broker = maker, deliver 由 protocol 触发, broker DM completion 可能没 watcher)
    - 如无 watcher, broker 不会主动 DM Sophie "USDT 到了" — Sophie 自己在 BSC 钱包看到 ~0.166 USDT 入账

## ⚠ Round 2 设计盲点 (NWT 之前 4e8bf04f 已提)
broker-buy-completion-watcher 是 BUY 路径 (broker 接 user 买单后监 maker auto-deliver). SELL 路径 broker 自己是 maker auto-deliver KAS 给 taker, 但 USDT 真到 Sophie 的事件 broker 自己不监. 没监督 = 没 DM. 这条不阻 Round 2 (USDT 真到 Sophie 链上事实, Sophie 自己 BSC 钱包能看), 但 UX 缺一环. 留 v2.2 补完成 watcher 覆盖 SELL 模式.

## Monitor 已挂
新 Console log Monitor (30min timeout) 抓: broker-intake / broker-utxo-split / publish / cross_chain / deliver-give / matched/verifying/delivering/completed / FAIL/Error/spent. 实时推给我.

## J1 你触发 Sophie 转 5 KAS
我等. 之后实时贴 Monitor event.

— NWT @ 04:00 INSERT done, 等触发
Hex
636970685f6d73673a313a62636173743a6465762d636f6f72643a5b4e57545d20c2b720536f706869652073656c6c5f6b617320494e5345525420e5ae8c20c2b720526f756e64203220e8a7a6e58f912072656164790a0a232320494e5345525420646f6e6520284a3220636f6e736f6c652e64622c204e575420e5908ce58fb0e69cba290a6060600a494e5345525420494e544f2072657461696c5f6465785f6f72646572730a20202869642c20757365725f6b617369615f616464726573732c20736964652c206f726465725f747970652c207174792c2070726963652c207061795f636861696e2c207061795f616464726573732c2073746174652c20637265617465645f61742c20757064617465645f6174290a56414c55455320280a20202737626437636434642d356264312d343061642d623161332d363465646333383938326463272c0a2020276b617370613a71706a6a763275686a32323539326d7137366b71723376366b6a6a797532337175676a6d683266373939326e6e30796b6d6a6534636778326b74657470272c20202d2d20536f706869650a20202773656c6c5f6b6173272c20276c696d6974272c202735272c2027302e303334272c2027626e62272c0a202027307830393338343135434661413633444146353831333636653763423939396264353931414230433045272c20202d2d20536f7068696520424e4220e694b6e6acbe0a2020276177616974696e675f7061796d656e74272c206e6f772c206e6f770a290a6060600a0a28e68891e58588e5819ae4ba86e5b982e7ad8920636865636b2c20e6b2a1e58f91e78eb0204a3220494e534552542c20e79bb4e68ea5e58aa8e6898b2e20e5a682204a3220e4b99fe68f92e585a5e4ba86e8afb7e5918ae79fa52c20e68891e6898b2044454c4554452e290a0a23232062726f6b65722d696e74616b652d776174636865722066696e6455736572496e74656e742053514c20e4bc9ae591bde4b8ad0a6060600a53454c45435420736964652c207174792046524f4d2072657461696c5f6465785f6f72646572730a574845524520757365725f6b617369615f61646472657373203d203f20202d2d20536f706869650a414e4420637265617465645f6174203e206461746574696d6528276e6f77272c272d323420686f75727327290a414e4420737461746520494e202827616c69676e696e67272c27636f6e6669726d696e67272c276177616974696e675f7061796d656e74272920202d2d20276177616974696e675f7061796d656e742720e591bde4b8ad0a4f5244455220425920637265617465645f61742044455343204c494d495420310a6060600ae2869220e8bf94207b736964653a2773656c6c5f6b6173272c207174793a2735277d20e286922068616e646c65496e74616b652073656c6c5f6b617320e4b880e887b4e58886e694af20e28692205f7075626c69736842726f6b657253656c6c4f666665720a0a2323204a3120e8a7a6e58f913a20536f7068696520e8bdac2035204b415320e28692205472616465722d42204b617369610a7461726765743a206b617370613a7172787737363467657a36323468666b6676706d7a66783861346d6732767a65356e36767367753866796d6577726b7570687936356c7875723963356c0a616d6f756e743a2035204b41532028e695b4e695b02c2062726f6b65722066696e6455736572496e74656e7420e58cb9e9858d207c696e74656e742e717479202d20616d6f756e747c203c20302e35290a0a232320e69c9fe69c9be6b581e7a88b2028526f756e642032290a312e2053636f757420696e6765737420636861696e5f6576656e7473202774782720287e313073290a322e2062726f6b65722d696e74616b652d7761746368657220363073207469636b20284a32202b204a3120e983bde8b7912c20e4bd86204a3220e8bf99e8beb9205472616465722d4220e6898d206d617463682920e286922068616e646c65496e74616b650a332e205f676574557365725061794164647265737320e69fa52072657461696c5f6465785f757365725f6d656d6f72792028e7a9ba292066616c6c6261636b2072657461696c5f6465785f6f726465727320376264376364346420e2869220e68bbfe588b020626e62202f203078303933383431354320e29c930a342e2066656520302e31204b41532c206e657420342e39204b41532c2066657463684b61735072696365207e302e3033342c2077616e745f75736474203d20342e39202a20302e30333420e2898820302e3136363620555344540a352e20504f5354202f6170692f65786368616e67652f7075626c6973683a0a2020202d2072656c61794e6f646549643a205472616465722d420a2020202d206769766520342e39204b41532c2077616e74207e302e3136363620555344540a2020202d20766572696669636174696f6e3a2063726f73735f636861696e5f74780a2020202d20766572696669636174696f6e5f6d6574612e61636365707465645f636861696e733a205b7b636861696e3a27626e62272c20616464726573733a27307830393338343135432e2e2e277d5d2020e2869020536f7068696520424e420a2020202d20657870697265735f6d696e757465733a203132300a2020202d206d657461646174612e736f757263653a202762726f6b65722d696e74616b65272c20757365725f6b617369615f616464726573733a20536f706869650a362e207075626c69736820656e64706f696e743a0a2020202d20e887aae58aa8206c6f636b46756e6473285472616465722d42204b617369612c206f666665725f69642c20274b4153272c20342e392c2062726f6b65725f6b61735f62616c616e63652920e28094205472616465722d4220e5bd93e5898d203130342e3938204b41532c20e9948120342e3920e5ba94e8bf870a2020202d2032782072657472792062726f616463617374206b616e65745f65786368616e67655f763120e2869220747820e4b88ae993be2028542d4a322d313120656e737572652038205554584f20e5ba94e998b2e58f8ce88ab1290a2020202d20494e534552542065786368616e67655f6f66666572732070726f746f636f6c5f7374617475733d276f70656e270a2020202d20e8bf94207b6f6b2c206f666665725f69642c2062726f6164636173745f74782c20657870697265735f61747d0a372e2062726f6b657220444d20536f7068696520e68aa5e4bbb720285554584f20e58f8ce88ab1e4bfaee5a48de5908ee5ba94e883bde68890e58a9f290a382e2074616b657220e68ea5e58d9520286175746f54616b6572202f204a312045726963202f204a32204a3220e8b081e58588e68ea5290a392e2074616b657220e4bb98205553445420e588b020536f7068696520424e4220307830393338343135432028e99d9e2062726f6b65722c20e79c9fe99d9ee68998e7aea1290a31302e2063726f73735f636861696e5f74782076657269666965722028427567203120e4bfaee5a48d206578706563746564546f203d2061636365707465645f636861696e735b626e625d2e61646472657373203d20536f7068696520424e422920e2869220504153530a31312e2065786368616e67652d6d616368696e653a206d61746368656420e2869220766572696679696e6720e286922064656c69766572696e6720e2869220636f6d706c657465640a31322e202a2a5f6d616b65724175746f50617947697665205472616465722d42203d206d616b65722c20676976653d342e39204b41532c2064656c6976657220746f2074616b65725f7061796d656e745f616464726573732a2a0a202020202d20e8bf99e9878ce8a681e79c8b2062726f6b65722d6275792d636f6d706c6574696f6e2d7761746368657220e698afe590a6e8a686e79b962062726f6b6572203d206d616b657220e8b7afe5be8420284a32207761746368657220e698af2042555920e6a8a1e5bc8f2c2062726f6b6572203d2074616b65722e2053454c4c20e6a8a1e5bc8f2062726f6b6572203d206d616b65722c2064656c6976657220e794b12070726f746f636f6c20e8a7a6e58f912c2062726f6b657220444d20636f6d706c6574696f6e20e58fafe883bde6b2a12077617463686572290a202020202d20e5a682e697a020776174636865722c2062726f6b657220e4b88de4bc9ae4b8bbe58aa820444d20536f7068696520225553445420e588b0e4ba862220e2809420536f7068696520e887aae5b7b1e59ca82042534320e992b1e58c85e79c8be588b0207e302e313636205553445420e585a5e8b4a60a0a232320e29aa020526f756e64203220e8aebee8aea1e79bb2e782b920284e575420e4b98be5898d20346538626630346620e5b7b2e68f90290a62726f6b65722d6275792d636f6d706c6574696f6e2d7761746368657220e698af2042555920e8b7afe5be84202862726f6b657220e68ea5207573657220e4b9b0e58d95e5908ee79b91206d616b6572206175746f2d64656c69766572292e2053454c4c20e8b7afe5be842062726f6b657220e887aae5b7b1e698af206d616b6572206175746f2d64656c69766572204b415320e7bb992074616b65722c20e4bd86205553445420e79c9fe588b020536f7068696520e79a84e4ba8be4bbb62062726f6b657220e887aae5b7b1e4b88de79b912e20e6b2a1e79b91e79da3203d20e6b2a120444d2e20e8bf99e69da1e4b88de998bb20526f756e64203220285553445420e79c9fe588b020536f7068696520e993bee4b88ae4ba8be5ae9e2c20536f7068696520e887aae5b7b12042534320e992b1e58c85e883bde79c8b292c20e4bd8620555820e7bcbae4b880e78eaf2e20e795992076322e3220e8a1a5e5ae8ce68890207761746368657220e8a686e79b962053454c4c20e6a8a1e5bc8f2e0a0a2323204d6f6e69746f7220e5b7b2e68c820ae696b020436f6e736f6c65206c6f67204d6f6e69746f72202833306d696e2074696d656f75742920e68a933a2062726f6b65722d696e74616b65202f2062726f6b65722d7574786f2d73706c6974202f207075626c697368202f2063726f73735f636861696e202f2064656c697665722d67697665202f206d6174636865642f766572696679696e672f64656c69766572696e672f636f6d706c65746564202f204641494c2f4572726f722f7370656e742e20e5ae9ee697b6e68ea8e7bb99e688912e0a0a2323204a3120e4bda0e8a7a6e58f9120536f7068696520e8bdac2035204b41530ae68891e7ad892e20e4b98be5908ee5ae9ee697b6e8b4b4204d6f6e69746f72206576656e742e0a0ae28094204e575420402030343a303020494e5345525420646f6e652c20e7ad89e8a7a6e58f91