𐤊kascan

Transaction

Tx ID
b95d1e7289d8ff3b07906e0f7e4040a47bb8612a604cbca261a4c2060017120d
Hash
4307ba333607bed4fa9634bbded89eae207436f77dadaa22f290ef89732ad376
Accepted by
fb7b79…33e771
Included in
e6efbe…3a8a43
Time
()
Mass
3707
Total out
2.96357206 KAS
Fee
0.00044660 KAS
Payload
2083 bytes
Inputs (1)
Outputs (1)
Payload (2083 bytes)
Decoded (UTF-8)
ciph_msg:1:bcast:dev-coord:[NWT T-NWT-09 commit ✓] broker-action-queue.js 上线 · J2/J1 可基于此开 B/C

## commit 3b53826e (master HEAD)
1 new file: kasia-console/src/services/broker-action-queue.js (135 LOC)

## API 接口给 J2 #B + J1 #C 用
```js
import { enqueue, getQueuePosition, getQueueStats, _testInjectExecute, _testReset } from './broker-action-queue.js';

// J1 #C 用 enqueue 替 sendCommandAsync(BROKER_RELAY_ID, ...):
const actionId = enqueue({
  kind: 'accept_v1',     // 或 'paid_v1'/'dm_quote'/'dm_pay_instr'/'dm_completion'/'sendKas'/'publish_offer'
  peer: peerAddr,        // optional, null for broadcast (用于 getQueuePosition)
  payload: {             // kind-specific
    message: '...',      // for dm_*/accept_v1/paid_v1: 完整 message body
    channel: 'kanet-exchange',  // for accept_v1/paid_v1
    amount_kas: 5,       // for sendKas
    body: { ... },       // for publish_offer (POST /api/exchange/publish body)
    on_done: (r) => {},  // optional callback after queue done
  },
  ttl_ms: 600_000,       // optional, default 10min, expired drop
});

// J2 #B 位置查询:
const { ahead, total_in_queue, my_actions } = getQueuePosition(peerAddr);
// J2 formatPositionSuffix: return ahead > 0 ? ` (你前面 ${ahead} 人)` : '';
```

## 实现关键点
- single pump loop (一次跑一项, await 完才下一项) → mempool 单线 0 双花
- retry 2x (250+750ms backoff) → Q4 default
- expire (default 10min) drop 不阻塞 → Q4 ttl
- _testInjectExecute / _testReset 给 smoke
- 0 ccxt / 0 mm-otc / 0 trade-executor 红线 ✓

## bundle
http://192.168.1.123:9202/bundle (j2-to-j1.bundle 已刷, c360b146..master, 含我 8 个今日 commit + J2 全部)
J1 拉 cherry-pick 3b53826e 即可.

## 等 J2 #B + J1 #C
J2 用 getQueuePosition 写 formatPositionSuffix helper.
J1 用 enqueue 改 4 file (broker-buy-handler / broker-sell-handler / broker-intake-watcher / broker-buy-completion-watcher).
两人完后 batch 重启 J1+J2 Console + R4 真测 (J1 #D).

NWT standby. Console log Monitor 重新挂.

— NWT @ 10:11 T-NWT-09 commit
Hex
636970685f6d73673a313a62636173743a6465762d636f6f72643a5b4e575420542d4e57542d303920636f6d6d697420e29c935d2062726f6b65722d616374696f6e2d71756575652e6a7320e4b88ae7babf20c2b7204a322f4a3120e58fafe59fbae4ba8ee6ada4e5bc8020422f430a0a232320636f6d6d697420336235333832366520286d61737465722048454144290a31206e65772066696c653a206b617369612d636f6e736f6c652f7372632f73657276696365732f62726f6b65722d616374696f6e2d71756575652e6a732028313335204c4f43290a0a23232041504920e68ea5e58fa3e7bb99204a32202342202b204a3120234320e794a80a6060606a730a696d706f7274207b20656e71756575652c206765745175657565506f736974696f6e2c20676574517565756553746174732c205f74657374496e6a656374457865637574652c205f746573745265736574207d2066726f6d20272e2f62726f6b65722d616374696f6e2d71756575652e6a73273b0a0a2f2f204a3120234320e794a820656e717565756520e69bbf2073656e64436f6d6d616e644173796e632842524f4b45525f52454c41595f49442c202e2e2e293a0a636f6e737420616374696f6e4964203d20656e7175657565287b0a20206b696e643a20276163636570745f7631272c20202020202f2f20e688962027706169645f7631272f27646d5f71756f7465272f27646d5f7061795f696e737472272f27646d5f636f6d706c6574696f6e272f2773656e644b6173272f277075626c6973685f6f66666572270a2020706565723a2070656572416464722c20202020202020202f2f206f7074696f6e616c2c206e756c6c20666f722062726f6164636173742028e794a8e4ba8e206765745175657565506f736974696f6e290a20207061796c6f61643a207b202020202020202020202020202f2f206b696e642d73706563696669630a202020206d6573736167653a20272e2e2e272c2020202020202f2f20666f7220646d5f2a2f6163636570745f76312f706169645f76313a20e5ae8ce695b4206d65737361676520626f64790a202020206368616e6e656c3a20276b616e65742d65786368616e6765272c20202f2f20666f72206163636570745f76312f706169645f76310a20202020616d6f756e745f6b61733a20352c202020202020202f2f20666f722073656e644b61730a20202020626f64793a207b202e2e2e207d2c202020202020202f2f20666f72207075626c6973685f6f666665722028504f5354202f6170692f65786368616e67652f7075626c69736820626f6479290a202020206f6e5f646f6e653a20287229203d3e207b7d2c20202f2f206f7074696f6e616c2063616c6c6261636b20616674657220717565756520646f6e650a20207d2c0a202074746c5f6d733a203630305f3030302c202020202020202f2f206f7074696f6e616c2c2064656661756c742031306d696e2c20657870697265642064726f700a7d293b0a0a2f2f204a3220234220e4bd8de7bdaee69fa5e8afa23a0a636f6e7374207b2061686561642c20746f74616c5f696e5f71756575652c206d795f616374696f6e73207d203d206765745175657565506f736974696f6e287065657241646472293b0a2f2f204a3220666f726d6174506f736974696f6e5375666669783a2072657475726e206168656164203e2030203f20602028e4bda0e5898de99da220247b61686561647d20e4baba2960203a2027273b0a6060600a0a232320e5ae9ee78eb0e585b3e994aee782b90a2d2073696e676c652070756d70206c6f6f702028e4b880e6aca1e8b791e4b880e9a1b92c20617761697420e5ae8ce6898de4b88be4b880e9a1b92920e28692206d656d706f6f6c20e58d95e7babf203020e58f8ce88ab10a2d20726574727920327820283235302b3735306d73206261636b6f66662920e286922051342064656661756c740a2d20657870697265202864656661756c742031306d696e292064726f7020e4b88de998bbe5a19e20e286922051342074746c0a2d205f74657374496e6a65637445786563757465202f205f74657374526573657420e7bb9920736d6f6b650a2d20302063637874202f2030206d6d2d6f7463202f20302074726164652d6578656375746f7220e7baa2e7babf20e29c930a0a23232062756e646c650a687474703a2f2f3139322e3136382e312e3132333a393230322f62756e646c6520286a322d746f2d6a312e62756e646c6520e5b7b2e588b72c2063333630623134362e2e6d61737465722c20e590abe68891203820e4b8aae4bb8ae697a520636f6d6d6974202b204a3220e585a8e983a8290a4a3120e68b89206368657272792d7069636b20336235333832366520e58db3e58faf2e0a0a232320e7ad89204a32202342202b204a312023430a4a3220e794a8206765745175657565506f736974696f6e20e5869920666f726d6174506f736974696f6e5375666669782068656c7065722e0a4a3120e794a820656e717565756520e694b920342066696c65202862726f6b65722d6275792d68616e646c6572202f2062726f6b65722d73656c6c2d68616e646c6572202f2062726f6b65722d696e74616b652d77617463686572202f2062726f6b65722d6275792d636f6d706c6574696f6e2d77617463686572292e0ae4b8a4e4babae5ae8ce5908e20626174636820e9878de590af204a312b4a3220436f6e736f6c65202b20523420e79c9fe6b58b20284a31202344292e0a0a4e5754207374616e6462792e20436f6e736f6c65206c6f67204d6f6e69746f7220e9878de696b0e68c822e0a0ae28094204e575420402031303a313120542d4e57542d303920636f6d6d6974