parse_p2p_lightning_message(open_channel): LND trims leading zeros in channel_type
Lightning P2P message parsing failed
Module: Lnd
Result: MSG_TYPE=open_channel;CHAIN_HASH=f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8;TEMPORARY_CHANNEL_ID=f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f80202;FUNDING_SATOSHIS=144680345676153346;PUSH_MSAT=144746316373819906;DUST_LIMIT_SATOSHIS=144680861072228866;MAX_HTLC_IN_FLIGHT_MSAT=144680345676153346;CHANNEL_RESERVE_SATOSHIS=144680345676153346;HTLC_MINIMUM_MSAT=144680345676153346;FEERATE_PER_KW=33686018;TO_SELF_DELAY=514;MAX_ACCEPTED_HTLCS=514;FUNDING_PUBKEY=020202020202020202020202020202020202020202020202020202020202020202;REVOCATION_BASEPOINT=020202020202020202020202020202020202020202020202020202020202020202;PAYMENT_BASEPOINT=020202020202020202020202020202020202020212020202020202020202020202;DELAYED_PAYMENT_BASEPOINT=02020202020202020202020024b8b8b8b8b8b8b8b8b8b8b8feb8b8b8b8b8dddddd;HTLC_BASEPOINT=020202020202020202240202020202020202020202020202020202020202020202;FIRST_PER_COMMITMENT_POINT=02020202020202021f02020202020202dddddddddd020202020202020202020202;CHANNEL_FLAGS=2;UPFRONT_SHUTDOWN_SCRIPT=6b6b6bdddd020202020202ff790202e4dd0202020202020202020202020202022584733102021f02020202020202dddddddddd1a00a70202020202020202020202ff79029999999999999999999999999900209f9f9f9f9f9f9f9f2a9f9fbf9f9f9f219fdf01639f9f9f00;CHANNEL_TYPE=020202020202dddddddddd1a00a70202020202020202020202ff79029999999999999999999999999900209f9f9f9f9f9f9f9f2a9f9fbf9f9f9f219fdf01639f9f9f0001c1c19f9f9f9b9b9b9b9b9b9b3a9b9b9b9b9d9d9d9f9f111111111111111111111100009f9fc1c19fbf3c3c3c3c3c3c3c3c3c3c0ec1c1c1c1c1c1c10020009f0000fc9f9f9f3c9f9f9f9f9f3c9fff900202020402020202020202020202
Module: Ldk
Result: MSG_TYPE=open_channel;CHAIN_HASH=f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8;TEMPORARY_CHANNEL_ID=f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f80202;FUNDING_SATOSHIS=144680345676153346;PUSH_MSAT=144746316373819906;DUST_LIMIT_SATOSHIS=144680861072228866;MAX_HTLC_IN_FLIGHT_MSAT=144680345676153346;CHANNEL_RESERVE_SATOSHIS=144680345676153346;HTLC_MINIMUM_MSAT=144680345676153346;FEERATE_PER_KW=33686018;TO_SELF_DELAY=514;MAX_ACCEPTED_HTLCS=514;FUNDING_PUBKEY=020202020202020202020202020202020202020202020202020202020202020202;REVOCATION_BASEPOINT=020202020202020202020202020202020202020202020202020202020202020202;PAYMENT_BASEPOINT=020202020202020202020202020202020202020212020202020202020202020202;DELAYED_PAYMENT_BASEPOINT=02020202020202020202020024b8b8b8b8b8b8b8b8b8b8b8feb8b8b8b8b8dddddd;HTLC_BASEPOINT=020202020202020202240202020202020202020202020202020202020202020202;FIRST_PER_COMMITMENT_POINT=02020202020202021f02020202020202dddddddddd020202020202020202020202;CHANNEL_FLAGS=2;UPFRONT_SHUTDOWN_SCRIPT=6b6b6bdddd020202020202ff790202e4dd0202020202020202020202020202022584733102021f02020202020202dddddddddd1a00a70202020202020202020202ff79029999999999999999999999999900209f9f9f9f9f9f9f9f2a9f9fbf9f9f9f219fdf01639f9f9f00;CHANNEL_TYPE=0000000000000000000000000000000000000000000000000000000000000000020202020202dddddddddd1a00a70202020202020202020202ff79029999999999999999999999999900209f9f9f9f9f9f9f9f2a9f9fbf9f9f9f219fdf01639f9f9f0001c1c19f9f9f9b9b9b9b9b9b9b3a9b9b9b9b9d9d9d9f9f111111111111111111111100009f9fc1c19fbf3c3c3c3c3c3c3c3c3c3c0ec1c1c1c1c1c1c10020009f0000fc9f9f9f3c9f9f9f9f9f3c9fff900202020402020202020202020202
Discrepancy:
LND:
CHANNEL_TYPE=020202020202dddddddddd1a00a70202020202020202020202ff79029999999999999999999999999900209f9f9f9f9f9f9f9f2a9f9fbf9f9f9f219fdf01639f9f9f0001c1c19f9f9f9b9b9b9b9b9b9b3a9b9b9b9b9d9d9d9f9f111111111111111111111100009f9fc1c19fbf3c3c3c3c3c3c3c3c3c3c0ec1c1c1c1c1c1c10020009f0000fc9f9f9f3c9f9f9f9f9f3c9fff900202020402020202020202020202
rust-lightning and Core lightning:
CHANNEL_TYPE=0000000000000000000000000000000000000000000000000000000000000000020202020202dddddddddd1a00a70202020202020202020202ff79029999999999999999999999999900209f9f9f9f9f9f9f9f2a9f9fbf9f9f9f219fdf01639f9f9f0001c1c19f9f9f9b9b9b9b9b9b9b3a9b9b9b9b9d9d9d9f9f111111111111111111111100009f9fc1c19fbf3c3c3c3c3c3c3c3c3c3c0ec1c1c1c1c1c1c10020009f0000fc9f9f9f3c9f9f9f9f9f3c9fff900202020402020202020202020202
There's a spec requirement to use a minimal encoding on the writer side:
The sending node:
- MUST use the smallest bitmap possible to represent the channel type.
But there's no requirement for the reader to reject non-minimal channel types. And IIUC no implementations currently reject them, but LND trims them to the minimal number of bytes.
So maybe we could pursue a spec change to reject non-minimal channel types, but the easier/faster option is to just strip the leading zeros ourselves before writing the string.