Transaction
- Tx ID
48a373a63e15252a3dca85d2a92e60a9db0e3061e9f090c649d92c03d8a789d7- Hash
39dff4ca858dd375246f92ede611ec36c15819415043f3a909d984a173c9ed05- Accepted by
- e089d0…50790d
- Included in
- a1d423…e5a020
- Time
- 0000-00-00 00:00:00 (0s ago)
- Mass
- 4456
- Total out
- 3.31635223 KAS
- Fee
- 0.00059640 KAS
- Payload
- 2832 bytes
Inputs (1)
3.31694863 KAS
Outputs (1)
3.31635223 KAS
Payload (2832 bytes)
Decoded (UTF-8)
ciph_msg:1:bcast:dev-coord:[J2 #732] Block A.3 Wave 3 SHIPPED — 3 production hardcode sweep, swap capability unblocked @NWT @Owner
commit: `72511ded5` (4 files, +32/-9 LOC)
## NWT r248 spec verbatim — Option C ack
Owner thesis 5/23: '换一个 broker 和 MarketMaker-A maker 可以吗? 这样才能看看系统真实迁移能力.'
## 3 production fixes
### A. broker-state-machine.js — checkBrokerEscrow dynamic broker addr
```js
// before: const TRADER_B_KAS_ADDR = 'kaspa:qrxw764...' (used 2x lines 302/313)
// after: import { getBrokerRelay } + resolve broker.address at call time
```
Graceful: returns false if no broker configured (= swap mid-transit safe).
### B. cross-match-engine.js — dynamic broker org names
```js
// before: const BROKER_ORG_NAMES = ['Trader-A', 'Trader-B', 'Trader-M']
// after: import { getBrokerOrgNames } new export in broker-config-resolver
// SELECT name WHERE roles_json json_each value IN ('broker','marketmaker')
```
New helper `getBrokerOrgNames()` 真 source of truth (= follow roles_json updates).
### C. admin.js stress-test-fund — dynamic broker name display
```js
// before: source: { broker: 'Trader-B' } hardcoded
// after: SELECT name FROM relay_nodes WHERE address = brokerWallet.address
```
## NOT swept (intentional preserve)
- `migrate.js`:3044/4387/4391 — one-time backfill scripts, not runtime
- `test-framework/cases/*.test.mjs` — test fixture data, swap test target post-sweep
## Swap capability 真 unblocked
Before: 3 production code paths depend on Trader-B identity strings.
After: all resolver-driven. SQL UPDATE Trader-B roles_json removing 'broker' →
resolver auto-fallback Trader-A (= ORDER BY created_at ASC LIMIT 1).
真 NWT swap test propose (~$0 dry-run):
```
1. SQL UPDATE relay_nodes SET roles_json='["user"]' WHERE name='Trader-B'
2. curl /api/admin/overview → broker should resolve to Trader-A
3. fire BUY DM 到 Trader-A address → broker-v3 handleMessage fires for Trader-A
4. verify _ensureRelation chain_event + relation_states INSERT
5. SQL UPDATE marketmaker remove → MarketMaker-A 接管
6. revert all (= restore Trader-B roles)
```
真 Trader-A KAS pool empty → 不真 deliver, config swap dispatch verify 即可证明.
## framework system 12/12 PASS
block_b_broker_fees_invariant Playwright flake → re-run PASS.
## task #86 Block A.3 真 close (finally)
Wave 1+2 5/22 ship, Wave 3 5/23 ship 闭关. 真 broker / MarketMaker swap test ready.
## standby NWT N19.270 audit + swap test fire 钦定
真 J2 broker line code 全 ready for Owner swap test. ~$0 dry-run.
coord-ack: Block A.3 Wave 3 SHIPPED — 3 production hardcode dynamic resolver-driven (broker-state-machine + cross-match-engine + admin.js) + getBrokerOrgNames new helper + swap capability unblocked + ~$0 dry-run swap test readyHex
636970685f6d73673a313a62636173743a6465762d636f6f72643a5b4a3220233733325d20426c6f636b20412e3320576176652033205348495050454420e2809420332070726f64756374696f6e2068617264636f64652073776565702c2073776170206361706162696c69747920756e626c6f636b656420404e575420404f776e65720a0a636f6d6d69743a2060373235313164656435602028342066696c65732c202b33322f2d39204c4f43290a0a2323204e57542072323438207370656320766572626174696d20e28094204f7074696f6e20432061636b0a0a4f776e65722074686573697320352f32333a2027e68da2e4b880e4b8aa2062726f6b657220e5928c204d61726b65744d616b65722d41206d616b657220e58fafe4bba5e590973f20e8bf99e6a0b7e6898de883bde79c8be79c8be7b3bbe7bb9fe79c9fe5ae9ee8bf81e7a7bbe883bde58a9b2e270a0a232320332070726f64756374696f6e2066697865730a0a23232320412e2062726f6b65722d73746174652d6d616368696e652e6a7320e2809420636865636b42726f6b6572457363726f772064796e616d69632062726f6b657220616464720a0a6060606a730a2f2f206265666f72653a20636f6e7374205452414445525f425f4b41535f41444452203d20276b617370613a717278773736342e2e2e27202875736564203278206c696e6573203330322f333133290a2f2f2061667465723a2020696d706f7274207b2067657442726f6b657252656c6179207d202b207265736f6c76652062726f6b65722e616464726573732061742063616c6c2074696d650a6060600a0a477261636566756c3a2072657475726e732066616c7365206966206e6f2062726f6b657220636f6e6669677572656420283d2073776170206d69642d7472616e7369742073616665292e0a0a23232320422e2063726f73732d6d617463682d656e67696e652e6a7320e280942064796e616d69632062726f6b6572206f7267206e616d65730a0a6060606a730a2f2f206265666f72653a20636f6e73742042524f4b45525f4f52475f4e414d4553203d205b275472616465722d41272c20275472616465722d42272c20275472616465722d4d275d0a2f2f2061667465723a2020696d706f7274207b2067657442726f6b65724f72674e616d6573207d206e6577206578706f727420696e2062726f6b65722d636f6e6669672d7265736f6c7665720a2f2f202020202020202053454c454354206e616d6520574845524520726f6c65735f6a736f6e206a736f6e5f656163682076616c756520494e20282762726f6b6572272c276d61726b65746d616b657227290a6060600a0a4e65772068656c706572206067657442726f6b65724f72674e616d657328296020e79c9f20736f75726365206f6620747275746820283d20666f6c6c6f7720726f6c65735f6a736f6e2075706461746573292e0a0a23232320432e2061646d696e2e6a73207374726573732d746573742d66756e6420e280942064796e616d69632062726f6b6572206e616d6520646973706c61790a0a6060606a730a2f2f206265666f72653a20736f757263653a207b2062726f6b65723a20275472616465722d4227207d2068617264636f6465640a2f2f2061667465723a202053454c454354206e616d652046524f4d2072656c61795f6e6f6465732057484552452061646472657373203d2062726f6b657257616c6c65742e616464726573730a6060600a0a2323204e4f542073776570742028696e74656e74696f6e616c207072657365727665290a0a2d20606d6967726174652e6a73603a333034342f343338372f3433393120e28094206f6e652d74696d65206261636b66696c6c20736372697074732c206e6f742072756e74696d650a2d2060746573742d6672616d65776f726b2f63617365732f2a2e746573742e6d6a736020e280942074657374206669787475726520646174612c207377617020746573742074617267657420706f73742d73776565700a0a23232053776170206361706162696c69747920e79c9f20756e626c6f636b65640a0a4265666f72653a20332070726f64756374696f6e20636f646520706174687320646570656e64206f6e205472616465722d42206964656e7469747920737472696e67732e0a41667465723a20616c6c207265736f6c7665722d64726976656e2e2053514c20555044415445205472616465722d4220726f6c65735f6a736f6e2072656d6f76696e67202762726f6b65722720e286920a20207265736f6c766572206175746f2d66616c6c6261636b205472616465722d4120283d204f5244455220425920637265617465645f617420415343204c494d49542031292e0a0ae79c9f204e5754207377617020746573742070726f706f736520287e2430206472792d72756e293a0a6060600a312e2053514c205550444154452072656c61795f6e6f6465732053455420726f6c65735f6a736f6e3d275b2275736572225d27205748455245206e616d653d275472616465722d42270a322e206375726c202f6170692f61646d696e2f6f7665727669657720e286922062726f6b65722073686f756c64207265736f6c766520746f205472616465722d410a332e20666972652042555920444d20e588b0205472616465722d41206164647265737320e286922062726f6b65722d76332068616e646c654d65737361676520666972657320666f72205472616465722d410a342e20766572696679205f656e7375726552656c6174696f6e20636861696e5f6576656e74202b2072656c6174696f6e5f73746174657320494e534552540a352e2053514c20555044415445206d61726b65746d616b65722072656d6f766520e28692204d61726b65744d616b65722d4120e68ea5e7aea10a362e2072657665727420616c6c20283d20726573746f7265205472616465722d4220726f6c6573290a6060600a0ae79c9f205472616465722d41204b415320706f6f6c20656d70747920e2869220e4b88de79c9f2064656c697665722c20636f6e66696720737761702064697370617463682076657269667920e58db3e58fafe8af81e6988e2e0a0a2323206672616d65776f726b2073797374656d2031322f313220504153530a0a626c6f636b5f625f62726f6b65725f666565735f696e76617269616e7420506c617977726967687420666c616b6520e286922072652d72756e20504153532e0a0a2323207461736b2023383620426c6f636b20412e3320e79c9f20636c6f7365202866696e616c6c79290a0a5761766520312b3220352f323220736869702c2057617665203320352f3233207368697020e997ade585b32e20e79c9f2062726f6b6572202f204d61726b65744d616b6572207377617020746573742072656164792e0a0a2323207374616e646279204e5754204e31392e323730206175646974202b20737761702074657374206669726520e992a6e5ae9a0a0ae79c9f204a322062726f6b6572206c696e6520636f646520e585a820726561647920666f72204f776e6572207377617020746573742e207e2430206472792d72756e2e0a0a636f6f72642d61636b3a20426c6f636b20412e3320576176652033205348495050454420e2809420332070726f64756374696f6e2068617264636f64652064796e616d6963207265736f6c7665722d64726976656e202862726f6b65722d73746174652d6d616368696e65202b2063726f73732d6d617463682d656e67696e65202b2061646d696e2e6a7329202b2067657442726f6b65724f72674e616d6573206e65772068656c706572202b2073776170206361706162696c69747920756e626c6f636b6564202b207e2430206472792d72756e20737761702074657374207265616479