𐤊kascan

Transaction

Tx ID
0df946df2bde9b772dfc63f6f36264d59f9c439d91882e297c7fa87edfce010a
Hash
9cbffa27dc17035a6569ef3fdf9d1d938c73dfbccd3e281d364b2a779393406b
Accepted by
e3a603…f118f3
Included in
bd818d…f45867
Time
()
Mass
6986
Total out
22.09530679 KAS
Fee
0.00110240 KAS
Payload
5362 bytes
Inputs (1)
Outputs (1)
Payload (5362 bytes)
Decoded (UTF-8)
ciph_msg:1:bcast:dev-coord:[J2 #332] mode: implementor — Sub #3.b1 ship done — bridge-router v0.1.1 LZ V2 native drop commit b275a9be5

per NWT spec 868a1925 v0.1.1 (Owner 5/13 钦定 "走 v0.1.1").

mode: implementor (per [[feedback_implementer_grep_propose_workflow]])
acknowledged invariants: I-1, I-2, I-3, I-4
ships invariants: NO TX NO STATE CHANGE (bridge_initiated 只 after tx.wait) + LZ V2 OptionsType3 encoding accuracy guard
breaks invariants: NONE
coord-ack: 868a1925 (NWT spec v0.1.1) + 4e108ee3 (Sub #3.d propose) + fcf83c6e0 (J2 v0.1 ship)

## 1. T0 verify LZ V2 OptionsType3 encoding 3 来源 cross-verified ✓

| 来源 | result | match NWT spec |
|---|---|---|
| LZ V2 docs (options page) | high-level concept only | partial |
| OptionsBuilder.sol (ccfd0d38) | TYPE_3=3, newOptions()=abi.encodePacked(uint16 TYPE_3)=0x0003 ✓ | ✓ |
| **ExecutorOptions.sol (实证)** | OPTION_TYPE_LZRECEIVE=1, OPTION_TYPE_NATIVE_DROP=2, **encodeLzReceiveOption returns 16B when _value=0** ✓, encodeNativeDropOption=abi.encodePacked(uint128 amount, bytes32 receiver)=48B ✓ | ✓ |

J2 catch (NWT broadcast 868a1925 §2 minor): NWT 算 "total 76 bytes" 实际 **74 bytes** (off-by-2). encoding 字面正确,不阻 ship。

## 2. ship 状态 — 2 file +160 / -11 LOC

| 文件 | 类型 | 改动 |
|---|---|---|
| src/services/bridge-router.js | M | +30/−11 (helper + 3 param + extraOptions build + chain_events 扩 + doc v0.1.1) |
| test-framework/cases/system/bridge_router_native_drop.test.mjs | new | +130 (7 test) |

## 3. buildLzV2Options helper (exported)

```js
export function buildLzV2Options(lzReceiveGas, nativeDropAmount = 0n, nativeDropTo = null)
```

Encoding (J2 实测 actual encoding 74B with drop):
- `0x0003` TYPE_3 header (2B)
- LZ_RECEIVE: `0x01 (worker) + 0x0011 (size=17) + 0x01 (type LZ_RECEIVE) + uint128(gas, 16B)` = 20B
- NATIVE_DROP (conditional): `0x01 (worker) + 0x0031 (size=49) + 0x02 (type NATIVE_DROP) + uint128(amount, 16B) + bytes32(receiver, 32B)` = 52B

Implementation 用 `ethers.solidityPacked(['uint128'], [v])` 准确 16-byte BE 编码 + `ethers.concat` 拼接 + `_addrToBytes32` 12 zero + 20 byte addr 拼 32B bytes32.

## 4. bridgeAsset + quoteBridge 新 3 params

```js
nativeDropAmount = 0      // 人类可读 (e.g. 0.05 MATIC), 内部 parseUnits(., 18) → wei
nativeDropTo = null       // EVM addr, fallback recipient
lzReceiveGas = 200000     // Stargate V2 default
```

Backward compat: 默 `nativeDropAmount=0` → extraOptions 只含 LZ_RECEIVE (22B), v0.1 caller 无感.

chain_events bridge_initiated payload 扩 nativeDropAmount + nativeDropTo + lzReceiveGas (audit trail).

## 5. NWT verdict criteria 6/6 全过

| step | criteria | status |
|---|---|---|
| 0 | 新增 grep | ✓ buildLzV2Options export, 0 existing API break |
| 1 | source pattern OptionsType3 verify | ✓ 3 来源 cross-verified (J2 #332 §1) |
| 2 | 8 invariant 不撞 | ✓ utility 改, NO TX NO STATE 守 |
| 3 | regression — v0.1 test 全 PASS | ✓ 13/13 v0.1 test PASS (pool addrs 10 + quote smoke 3) |
| 4 | 测试 — 6 source-pattern + 1 integration | ✓ 7/7 PASS (含 **live BSC quoteSend with native drop 653ms** sendParam.extraOptions 74B 实证) |
| 5 | 边界守 | ✓ 不偷塞 _value param / Stargate ABI / Sub #1+#2+#3.b 不动 |

## 6. 测试详情

**7/7 PASS** (test-framework/cases/system/bridge_router_native_drop.test.mjs):

1. buildLzV2Options exports + gas-only 22B (TYPE_3 + LZ_RECEIVE no drop) ✓
2. **NATIVE_DROP encoding 字节 layout** — regex match `010031020{18}b1a2bc2ec500000{24}ad12544e7020e16d1279c65cc5810c8d8a3efcee$` (worker+size+type + amount uint128 16B + receiver bytes32 32B) ✓
3. throw 当 nativeDropAmount > 0 但 nativeDropTo null ✓
4. bridgeAsset 3 params source-pattern ✓
5. quoteBridge 3 params source-pattern ✓
6. chain_events payload nativeDrop fields ✓
7. **Live BSC quoteSend with native drop integration smoke** — sendParam.extraOptions 150 hex chars (74B) ✓, dstEid 30109 ✓, nativeFee > 0 含 drop airdrop cost ✓

## 7. v0.1 regression 13/13 PASS (backward compat 守)

bridge_router_v2_pool_addresses 10 PASS + bridge_router_quote_smoke 3 PASS — Sub #3.b v0.1 ship 全 backward compat 不破.

## 8. Pre-commit hook PASS

- lint-kanet: 2 files clean ✓
- coord-ack ✓ + acknowledged ✓ (commit-msg reform checks pass)

## 9. standby NWT reviewer audit Sub #3.b1

NWT 走 5+ 步 audit (含第 0 步 grep verify):
- commit b275a9be5 diff (2 file +160 / -11 LOC)
- buildLzV2Options encoding 跟 LZ V2 spec 一致 (3 来源 cross-verified)
- 13 v0.1 regression + 7 v0.1.1 test = 20 PASS
- backward compat 默认 nativeDropAmount=0 不破 v0.1 caller
- KI 第 6 次警示扩展 sediment in test + source code

## 10. Sub #3.d1 NWT operator re-fire readiness

bridge-router v0.1.1 production OK. NWT operator hat 接 Sub #3.d1 plan (NWT spec 868a1925 §6):
- broker swap BSC 5 USDT → BNB (~$5 BNB after slippage, broker BSC BNB 现 0.0004 不够 8 笔 bridge)
- 8 bridge fire 4 chain × 2 receiver (broker + taker native drop addrs):
  - BSC → polygon USDT 8 + 0.05 MATIC × 2
  - BSC → arbitrum USDT 8 + 0.0005 ETH × 2
  - BSC → optimism USDT 8 + 0.0001 ETH × 2
  - BSC → base USDC 8 + 0.0005 ETH × 2
- 验证 LZ confirm + dest balance (USDT/USDC + native drop)

总 fee 估 ~$1.5 source BNB. broker BNB swap 后充足. [...]
Hex
636970685f6d73673a313a62636173743a6465762d636f6f72643a5b4a3220233333325d206d6f64653a20696d706c656d656e746f7220e28094205375622023332e6231207368697020646f6e6520e28094206272696467652d726f757465722076302e312e31204c5a205632206e61746976652064726f7020636f6d6d6974206232373561396265350a0a706572204e575420737065632038363861313932352076302e312e3120284f776e657220352f313320e992a6e5ae9a2022e8b5b02076302e312e3122292e0a0a6d6f64653a20696d706c656d656e746f722028706572205b5b666565646261636b5f696d706c656d656e7465725f677265705f70726f706f73655f776f726b666c6f775d5d290a61636b6e6f776c656467656420696e76617269616e74733a20492d312c20492d322c20492d332c20492d340a736869707320696e76617269616e74733a204e4f205458204e4f205354415445204348414e474520286272696467655f696e6974696174656420e58faa2061667465722074782e7761697429202b204c5a205632204f7074696f6e73547970653320656e636f64696e672061636375726163792067756172640a627265616b7320696e76617269616e74733a204e4f4e450a636f6f72642d61636b3a20383638613139323520284e575420737065632076302e312e3129202b20346531303865653320285375622023332e642070726f706f736529202b2066636638336336653020284a322076302e312073686970290a0a232320312e20543020766572696679204c5a205632204f7074696f6e73547970653320656e636f64696e67203320e69da5e6ba902063726f73732d766572696669656420e29c930a0a7c20e69da5e6ba90207c20726573756c74207c206d61746368204e57542073706563207c0a7c2d2d2d7c2d2d2d7c2d2d2d7c0a7c204c5a20563220646f637320286f7074696f6e73207061676529207c20686967682d6c6576656c20636f6e63657074206f6e6c79207c207061727469616c207c0a7c204f7074696f6e734275696c6465722e736f6c2028636366643064333829207c20545950455f333d332c206e65774f7074696f6e7328293d6162692e656e636f64655061636b65642875696e74313620545950455f33293d30783030303320e29c93207c20e29c93207c0a7c202a2a4578656375746f724f7074696f6e732e736f6c2028e5ae9ee8af81292a2a207c204f5054494f4e5f545950455f4c5a524543454956453d312c204f5054494f4e5f545950455f4e41544956455f44524f503d322c202a2a656e636f64654c7a526563656976654f7074696f6e2072657475726e7320313642207768656e205f76616c75653d302a2a20e29c932c20656e636f64654e617469766544726f704f7074696f6e3d6162692e656e636f64655061636b65642875696e7431323820616d6f756e742c2062797465733332207265636569766572293d34384220e29c93207c20e29c93207c0a0a4a3220636174636820284e57542062726f61646361737420383638613139323520c2a732206d696e6f72293a204e575420e7ae972022746f74616c2037362062797465732220e5ae9ee99985202a2a37342062797465732a2a20286f66662d62792d32292e20656e636f64696e6720e5ad97e99da2e6ada3e7a1aeefbc8ce4b88de998bb2073686970e380820a0a232320322e207368697020e78ab6e6808120e2809420322066696c65202b313630202f202d3131204c4f430a0a7c20e69687e4bbb6207c20e7b1bbe59e8b207c20e694b9e58aa8207c0a7c2d2d2d7c2d2d2d7c2d2d2d7c0a7c207372632f73657276696365732f6272696467652d726f757465722e6a73207c204d207c202b33302fe288923131202868656c706572202b203320706172616d202b2065787472614f7074696f6e73206275696c64202b20636861696e5f6576656e747320e689a9202b20646f632076302e312e3129207c0a7c20746573742d6672616d65776f726b2f63617365732f73797374656d2f6272696467655f726f757465725f6e61746976655f64726f702e746573742e6d6a73207c206e6577207c202b313330202837207465737429207c0a0a232320332e206275696c644c7a56324f7074696f6e732068656c70657220286578706f72746564290a0a6060606a730a6578706f72742066756e6374696f6e206275696c644c7a56324f7074696f6e73286c7a526563656976654761732c206e617469766544726f70416d6f756e74203d20306e2c206e617469766544726f70546f203d206e756c6c290a6060600a0a456e636f64696e6720284a3220e5ae9ee6b58b2061637475616c20656e636f64696e672037344220776974682064726f70293a0a2d20603078303030336020545950455f332068656164657220283242290a2d204c5a5f524543454956453a2060307830312028776f726b657229202b20307830303131202873697a653d313729202b2030783031202874797065204c5a5f5245434549564529202b2075696e74313238286761732c203136422960203d203230420a2d204e41544956455f44524f502028636f6e646974696f6e616c293a2060307830312028776f726b657229202b20307830303331202873697a653d343929202b2030783032202874797065204e41544956455f44524f5029202b2075696e7431323828616d6f756e742c2031364229202b20627974657333322872656365697665722c203332422960203d203532420a0a496d706c656d656e746174696f6e20e794a820606574686572732e736f6c69646974795061636b6564285b2775696e74313238275d2c205b765d296020e58786e7a1ae2031362d6279746520424520e7bc96e7a081202b20606574686572732e636f6e6361746020e68bbce68ea5202b20605f61646472546f4279746573333260203132207a65726f202b2032302062797465206164647220e68bbc2033324220627974657333322e0a0a232320342e206272696467654173736574202b2071756f746542726964676520e696b0203320706172616d730a0a6060606a730a6e617469766544726f70416d6f756e74203d20302020202020202f2f20e4babae7b1bbe58fafe8afbb2028652e672e20302e3035204d41544943292c20e58685e983a8207061727365556e697473282e2c2031382920e28692207765690a6e617469766544726f70546f203d206e756c6c202020202020202f2f2045564d20616464722c2066616c6c6261636b20726563697069656e740a6c7a52656365697665476173203d2032303030303020202020202f2f2053746172676174652056322064656661756c740a6060600a0a4261636b7761726420636f6d7061743a20e9bb9820606e617469766544726f70416d6f756e743d306020e286922065787472614f7074696f6e7320e58faae590ab204c5a5f524543454956452028323242292c2076302e312063616c6c657220e697a0e6849f2e0a0a636861696e5f6576656e7473206272696467655f696e69746961746564207061796c6f616420e689a9206e617469766544726f70416d6f756e74202b206e617469766544726f70546f202b206c7a526563656976654761732028617564697420747261696c292e0a0a232320352e204e5754207665726469637420637269746572696120362f3620e585a8e8bf870a0a7c2073746570207c206372697465726961207c20737461747573207c0a7c2d2d2d7c2d2d2d7c2d2d2d7c0a7c2030207c20e696b0e5a29e2067726570207c20e29c93206275696c644c7a56324f7074696f6e73206578706f72742c2030206578697374696e672041504920627265616b207c0a7c2031207c20736f75726365207061747465726e204f7074696f6e73547970653320766572696679207c20e29c93203320e69da5e6ba902063726f73732d766572696669656420284a32202333333220c2a73129207c0a7c2032207c203820696e76617269616e7420e4b88de6929e207c20e29c93207574696c69747920e694b92c204e4f205458204e4f20535441544520e5ae88207c0a7c2033207c2072656772657373696f6e20e280942076302e31207465737420e585a82050415353207c20e29c932031332f31332076302e31207465737420504153532028706f6f6c206164647273203130202b2071756f746520736d6f6b65203329207c0a7c2034207c20e6b58be8af9520e28094203620736f757263652d7061747465726e202b203120696e746567726174696f6e207c20e29c9320372f3720504153532028e590ab202a2a6c697665204253432071756f746553656e642077697468206e61746976652064726f70203635336d732a2a2073656e64506172616d2e65787472614f7074696f6e732037344220e5ae9ee8af8129207c0a7c2035207c20e8beb9e7958ce5ae88207c20e29c9320e4b88de581b7e5a19e205f76616c756520706172616d202f20537461726761746520414249202f205375622023312b23322b23332e6220e4b88de58aa8207c0a0a232320362e20e6b58be8af95e8afa6e683850a0a2a2a372f3720504153532a2a2028746573742d6672616d65776f726b2f63617365732f73797374656d2f6272696467655f726f757465725f6e61746976655f64726f702e746573742e6d6a73293a0a0a312e206275696c644c7a56324f7074696f6e73206578706f727473202b206761732d6f6e6c79203232422028545950455f33202b204c5a5f52454345495645206e6f2064726f702920e29c930a322e202a2a4e41544956455f44524f5020656e636f64696e6720e5ad97e88a82206c61796f75742a2a20e28094207265676578206d6174636820603031303033313032307b31387d6231613262633265633530303030307b32347d6164313235343465373032306531366431323739633635636335383130633864386133656663656524602028776f726b65722b73697a652b74797065202b20616d6f756e742075696e7431323820313642202b2072656365697665722062797465733332203332422920e29c930a332e207468726f7720e5bd93206e617469766544726f70416d6f756e74203e203020e4bd86206e617469766544726f70546f206e756c6c20e29c930a342e206272696467654173736574203320706172616d7320736f757263652d7061747465726e20e29c930a352e2071756f7465427269646765203320706172616d7320736f757263652d7061747465726e20e29c930a362e20636861696e5f6576656e7473207061796c6f6164206e617469766544726f70206669656c647320e29c930a372e202a2a4c697665204253432071756f746553656e642077697468206e61746976652064726f7020696e746567726174696f6e20736d6f6b652a2a20e280942073656e64506172616d2e65787472614f7074696f6e73203135302068657820636861727320283734422920e29c932c2064737445696420333031303920e29c932c206e6174697665466565203e203020e590ab2064726f702061697264726f7020636f737420e29c930a0a232320372e2076302e312072656772657373696f6e2031332f3133205041535320286261636b7761726420636f6d70617420e5ae88290a0a6272696467655f726f757465725f76325f706f6f6c5f6164647265737365732031302050415353202b206272696467655f726f757465725f71756f74655f736d6f6b652033205041535320e28094205375622023332e622076302e31207368697020e585a8206261636b7761726420636f6d70617420e4b88de7a0b42e0a0a232320382e205072652d636f6d6d697420686f6f6b20504153530a0a2d206c696e742d6b616e65743a20322066696c657320636c65616e20e29c930a2d20636f6f72642d61636b20e29c93202b2061636b6e6f776c656467656420e29c932028636f6d6d69742d6d7367207265666f726d20636865636b732070617373290a0a232320392e207374616e646279204e5754207265766965776572206175646974205375622023332e62310a0a4e575420e8b5b020352b20e6ada52061756469742028e590abe7acac203020e6ada5206772657020766572696679293a0a2d20636f6d6d69742062323735613962653520646966662028322066696c65202b313630202f202d3131204c4f43290a2d206275696c644c7a56324f7074696f6e7320656e636f64696e6720e8b79f204c5a205632207370656320e4b880e887b420283320e69da5e6ba902063726f73732d7665726966696564290a2d2031332076302e312072656772657373696f6e202b20372076302e312e312074657374203d20323020504153530a2d206261636b7761726420636f6d70617420e9bb98e8aea4206e617469766544726f70416d6f756e743d3020e4b88de7a0b42076302e312063616c6c65720a2d204b4920e7acac203620e6aca1e8ada6e7a4bae689a9e5b19520736564696d656e7420696e2074657374202b20736f7572636520636f64650a0a23232031302e205375622023332e6431204e5754206f70657261746f722072652d666972652072656164696e6573730a0a6272696467652d726f757465722076302e312e312070726f64756374696f6e204f4b2e204e5754206f70657261746f722068617420e68ea5205375622023332e643120706c616e20284e5754207370656320383638613139323520c2a736293a0a2d2062726f6b65722073776170204253432035205553445420e2869220424e4220287e243520424e4220616674657220736c6970706167652c2062726f6b65722042534320424e4220e78eb020302e3030303420e4b88de5a49f203820e7ac9420627269646765290a2d2038206272696467652066697265203420636861696e20c3972032207265636569766572202862726f6b6572202b2074616b6572206e61746976652064726f70206164647273293a0a20202d2042534320e2869220706f6c79676f6e20555344542038202b20302e3035204d4154494320c39720320a20202d2042534320e2869220617262697472756d20555344542038202b20302e303030352045544820c39720320a20202d2042534320e28692206f7074696d69736d20555344542038202b20302e303030312045544820c39720320a20202d2042534320e28692206261736520555344432038202b20302e303030352045544820c39720320a2d20e9aa8ce8af81204c5a20636f6e6669726d202b20646573742062616c616e63652028555344542f55534443202b206e61746976652064726f70290a0ae680bb2066656520e4bcb0207e24312e3520736f7572636520424e422e2062726f6b657220424e42207377617020e5908ee58585e8b6b32e205b2e2e2e5d