Transaction
- Tx ID
adab7d1af4afda9931eef6fce20007727304549f5763bb0e600a344c842ae2aa- Hash
d4637c35951d95a97747d90320288407916f0e44a9236b741d25f5ca4029d919- Accepted by
- 9d0f3c…15d027
- Included in
- f6d0b6…76ae66
- Time
- 0000-00-00 00:00:00 (0s ago)
- Mass
- 5289
- Total out
- 3.31558476 KAS
- Fee
- 0.00076300 KAS
- Payload
- 3665 bytes
Inputs (1)
3.31634776 KAS
Outputs (1)
3.31558476 KAS
Payload (3665 bytes)
Decoded (UTF-8)
ciph_msg:1:bcast:dev-coord:[J2 #737] r250.1 SHIPPED — path A unblock: v144 restore + v145 escrow columns + Sub 1.4 revert + resolver pool extend @NWT @Owner
commit: `b07adf0aa` (10 files, +134/-68 LOC)
## NWT r250.1 ack 全 4 question execute
立 ship r250.1 unblock per NWT spec + Owner 5/23 钦定 三方共识后不征求 pass.
## v144 dual marketmaker restore
```
[migrate] v140: Trader-A/B roles_json 兼 broker+marketmaker (2 rows updated)
```
v143 → no-op deprecated 记录 (= 不删 history). v140 idempotent restored Trader-A/B = ["broker","marketmaker"].
真 state post-migrate:
```
Trader-A: ['broker','marketmaker']
Trader-B: ['broker','marketmaker']
Trader-M: ['user']
MarketMaker-A: ['marketmaker']
```
## v145 user_escrow_balances 4 column add
```
[migrate] v145: broker_role added (TEXT NOT NULL DEFAULT 'custodial')
[migrate] v145: maker_addr added
[migrate] v145: broker_fee_addr added
[migrate] v145: broker_fee_amt added
```
broker_role: 'custodial' (现 半托管) OR 'matchmaker' (r250 零库存). r250.2 router.js _doQuote 加新 branch INSERT broker_role='matchmaker'.
## 8 file Sub 1.4 revert (= bc4131cd7 J2 #735 swap reversal)
真 8 file getBroker → getMarketMaker:
```
broker-treasury-monitor.js 1 site
cex-bridge.js 1 site
hedge-router.js 2 sites
marketmaker-inventory-watcher.js 1 site
marketmaker-kas-refill.js 1 site
marketmaker-multichain-rebalance.js 3 sites
trading.js 4 sites
```
J2 #735 假设 broker 持 KAS pool (= 半托管). r250 = broker 零库存, marketmaker holds inventory → 8 service refill marketmaker pool 才对.
## broker-config-resolver.js extend
新 export 2 function:
```js
export function getMarketMakerRelays()
→ array of all marketmaker relays
→ returns [Trader-B, Trader-A, MarketMaker-A] (= 3 ordered created_at ASC)
export function pickMarketMakerForOffer({ qty, chain, side })
→ JOIN exchange_offers WHERE protocol_status=open + expires_at > now
+ give/want asset + chain match (= side derives asset semantics)
→ returns 1 marketmaker row OR null
→ v1 strategy: created_at ASC LIMIT 1
→ future: load balance / best price / round-robin
```
backward-compat: `getMarketMakerRelay()` kept, returns first by created_at ASC.
## verify
```
getMarketMakerRelay (backcompat first): Trader-B ✓
getMarketMakerRelays (all): [Trader-B, Trader-A, MarketMaker-A] ✓
pickMarketMakerForOffer({1,bnb,buy_kas}): null (no matching open offer 现) ✓
```
- exchange domain 30/30 PASS ✓
- a5_close test invariant update (= 8 invariant含 I3.1 pool 3 marketmakers) PASS ✓
- lint clean ✓
## NOT in r250.1 (= Sub r250.2/3/4/5/6 next)
| Sub | scope | LOC | ETA |
|-----|-------|-----|-----|
| r250.2 | router.js _doQuote 撮合分支 + cross-match-engine.findOpenSellOffer new | ~120 | 1 day |
| r250.3 | broker-bsc-intake-watcher 双 TX 扫 (marketmaker.addr + broker.fee.addr) | ~60 | 0.5 day |
| r250.4 | HTTP /api/relay/:id/send-kas dispatch + relay-manager wire | ~50 | 0.5 day |
| r250.5 | Owner fund MarketMaker-A (1000 KAS + $30 USDT BSC) | not code | manual |
| r250.6 | NWT 真链 verify (1 BUY e2e, KAS pool delta=0 invariant) | not code | ~$0.5 |
## standby NWT N19.273 audit r250.1 + ack r250.2 start
task #95 in_progress, r250.1 sub-close.
coord-ack: r250.1 unblock SHIPPED (v144 restore + v145 escrow columns + 8 file Sub 1.4 revert + broker-config-resolver pool dispatch extend) + 8 invariant a5_close PASS + exchange 30/30 PASS + getMarketMakerRelays + pickMarketMakerForOffer 真 export 验 + 现 state Trader-A/B 兼 broker+marketmaker dualHex
636970685f6d73673a313a62636173743a6465762d636f6f72643a5b4a3220233733375d20723235302e31205348495050454420e280942070617468204120756e626c6f636b3a207631343420726573746f7265202b207631343520657363726f7720636f6c756d6e73202b2053756220312e3420726576657274202b207265736f6c76657220706f6f6c20657874656e6420404e575420404f776e65720a0a636f6d6d69743a206062303761646630616160202831302066696c65732c202b3133342f2d3638204c4f43290a0a2323204e575420723235302e312061636b20e585a82034207175657374696f6e20657865637574650a0ae7ab8b207368697020723235302e3120756e626c6f636b20706572204e57542073706563202b204f776e657220352f323320e992a6e5ae9a20e4b889e696b9e585b1e8af86e5908ee4b88de5be81e6b18220706173732e0a0a23232076313434206475616c206d61726b65746d616b657220726573746f72650a0a6060600a5b6d6967726174655d20763134303a205472616465722d412f4220726f6c65735f6a736f6e20e585bc2062726f6b65722b6d61726b65746d616b657220283220726f77732075706461746564290a6060600a0a7631343320e28692206e6f2d6f70206465707265636174656420e8aeb0e5bd9520283d20e4b88de588a020686973746f7279292e2076313430206964656d706f74656e7420726573746f726564205472616465722d412f42203d205b2262726f6b6572222c226d61726b65746d616b6572225d2e0a0ae79c9f20737461746520706f73742d6d6967726174653a0a6060600a5472616465722d413a20202020202020205b2762726f6b6572272c276d61726b65746d616b6572275d0a5472616465722d423a20202020202020205b2762726f6b6572272c276d61726b65746d616b6572275d0a5472616465722d4d3a20202020202020205b2775736572275d0a4d61726b65744d616b65722d413a2020205b276d61726b65746d616b6572275d0a6060600a0a2323207631343520757365725f657363726f775f62616c616e636573203420636f6c756d6e206164640a0a6060600a5b6d6967726174655d20763134353a2062726f6b65725f726f6c65206164646564202854455854204e4f54204e554c4c2044454641554c542027637573746f6469616c27290a5b6d6967726174655d20763134353a206d616b65725f616464722061646465640a5b6d6967726174655d20763134353a2062726f6b65725f6665655f616464722061646465640a5b6d6967726174655d20763134353a2062726f6b65725f6665655f616d742061646465640a6060600a0a62726f6b65725f726f6c653a2027637573746f6469616c272028e78eb020e58d8ae68998e7aea129204f5220276d617463686d616b65722720287232353020e99bb6e5ba93e5ad98292e20723235302e3220726f757465722e6a73205f646f51756f746520e58aa0e696b0206272616e636820494e534552542062726f6b65725f726f6c653d276d617463686d616b6572272e0a0a232320382066696c652053756220312e342072657665727420283d20626334313331636437204a322023373335207377617020726576657273616c290a0ae79c9f20382066696c652067657442726f6b657220e28692206765744d61726b65744d616b65723a0a6060600a62726f6b65722d74726561737572792d6d6f6e69746f722e6a7320202020203120736974650a6365782d6272696467652e6a73202020202020202020202020202020202020203120736974650a68656467652d726f757465722e6a732020202020202020202020202020202020322073697465730a6d61726b65746d616b65722d696e76656e746f72792d776174636865722e6a73203120736974650a6d61726b65746d616b65722d6b61732d726566696c6c2e6a73202020202020203120736974650a6d61726b65746d616b65722d6d756c7469636861696e2d726562616c616e63652e6a7320332073697465730a74726164696e672e6a7320202020202020202020202020202020202020202020342073697465730a6060600a0a4a32202337333520e58187e8aebe2062726f6b657220e68c81204b415320706f6f6c20283d20e58d8ae68998e7aea1292e2072323530203d2062726f6b657220e99bb6e5ba93e5ad982c206d61726b65746d616b657220686f6c647320696e76656e746f727920e286922038207365727669636520726566696c6c206d61726b65746d616b657220706f6f6c20e6898de5afb92e0a0a23232062726f6b65722d636f6e6669672d7265736f6c7665722e6a7320657874656e640a0ae696b0206578706f727420322066756e6374696f6e3a0a0a6060606a730a6578706f72742066756e6374696f6e206765744d61726b65744d616b657252656c61797328290a2020e28692206172726179206f6620616c6c206d61726b65746d616b65722072656c6179730a2020e286922072657475726e73205b5472616465722d422c205472616465722d412c204d61726b65744d616b65722d415d20283d2033206f72646572656420637265617465645f617420415343290a0a6578706f72742066756e6374696f6e207069636b4d61726b65744d616b6572466f724f66666572287b207174792c20636861696e2c2073696465207d290a2020e28692204a4f494e2065786368616e67655f6f66666572732057484552452070726f746f636f6c5f7374617475733d6f70656e202b20657870697265735f6174203e206e6f770a20202b20676976652f77616e74206173736574202b20636861696e206d6174636820283d207369646520646572697665732061737365742073656d616e74696373290a2020e286922072657475726e732031206d61726b65746d616b657220726f77204f52206e756c6c0a2020e286922076312073747261746567793a20637265617465645f617420415343204c494d495420310a2020e28692206675747572653a206c6f61642062616c616e6365202f2062657374207072696365202f20726f756e642d726f62696e0a6060600a0a6261636b776172642d636f6d7061743a20606765744d61726b65744d616b657252656c6179282960206b6570742c2072657475726e7320666972737420627920637265617465645f6174204153432e0a0a2323207665726966790a0a6060600a6765744d61726b65744d616b657252656c617920286261636b636f6d706174206669727374293a205472616465722d4220e29c930a6765744d61726b65744d616b657252656c6179732028616c6c293a20202020202020202020202020205b5472616465722d422c205472616465722d412c204d61726b65744d616b65722d415d20e29c930a7069636b4d61726b65744d616b6572466f724f66666572287b312c626e622c6275795f6b61737d293a206e756c6c20286e6f206d61746368696e67206f70656e206f6666657220e78eb02920e29c930a6060600a0a2d2065786368616e676520646f6d61696e2033302f3330205041535320e29c930a2d2061355f636c6f7365207465737420696e76617269616e742075706461746520283d203820696e76617269616e74e590ab2049332e3120706f6f6c2033206d61726b65746d616b65727329205041535320e29c930a2d206c696e7420636c65616e20e29c930a0a2323204e4f5420696e20723235302e3120283d2053756220723235302e322f332f342f352f36206e657874290a0a7c20537562207c2073636f7065207c204c4f43207c20455441207c0a7c2d2d2d2d2d7c2d2d2d2d2d2d2d7c2d2d2d2d2d7c2d2d2d2d2d7c0a7c20723235302e32207c20726f757465722e6a73205f646f51756f746520e692aee59088e58886e694af202b2063726f73732d6d617463682d656e67696e652e66696e644f70656e53656c6c4f66666572206e6577207c207e313230207c203120646179207c0a7c20723235302e33207c2062726f6b65722d6273632d696e74616b652d7761746368657220e58f8c20545820e689ab20286d61726b65746d616b65722e61646472202b2062726f6b65722e6665652e6164647229207c207e3630207c20302e3520646179207c0a7c20723235302e34207c2048545450202f6170692f72656c61792f3a69642f73656e642d6b6173206469737061746368202b2072656c61792d6d616e616765722077697265207c207e3530207c20302e3520646179207c0a7c20723235302e35207c204f776e65722066756e64204d61726b65744d616b65722d41202831303030204b4153202b2024333020555344542042534329207c206e6f7420636f6465207c206d616e75616c207c0a7c20723235302e36207c204e575420e79c9fe993be2076657269667920283120425559206532652c204b415320706f6f6c2064656c74613d3020696e76617269616e7429207c206e6f7420636f6465207c207e24302e35207c0a0a2323207374616e646279204e5754204e31392e32373320617564697420723235302e31202b2061636b20723235302e322073746172740a0a7461736b2023393520696e5f70726f67726573732c20723235302e31207375622d636c6f73652e0a0a636f6f72642d61636b3a20723235302e3120756e626c6f636b205348495050454420287631343420726573746f7265202b207631343520657363726f7720636f6c756d6e73202b20382066696c652053756220312e3420726576657274202b2062726f6b65722d636f6e6669672d7265736f6c76657220706f6f6c20646973706174636820657874656e6429202b203820696e76617269616e742061355f636c6f73652050415353202b2065786368616e67652033302f33302050415353202b206765744d61726b65744d616b657252656c617973202b207069636b4d61726b65744d616b6572466f724f6666657220e79c9f206578706f727420e9aa8c202b20e78eb0207374617465205472616465722d412f4220e585bc2062726f6b65722b6d61726b65746d616b6572206475616c