Summary
ldk-node supports sending and receiving custom TLV records on spontaneous (keysend) payments, but neither the LDK Server gRPC surface nor the bundled ldk-server-cli exposes them.
Gaps
SpontaneousSendRequest in api.proto carries only amount_msat, node_id, route_parameters
- The send handler always calls
.send(...), never .send_with_custom_tlvs(...)
PaymentReceived and PaymentClaimable events in events.proto only expose types.Payment
- The event loop in
main.rs destructures ldk-node events with .., dropping custom_records
ldk-server-cli's spontaneous-send subcommand has no flag to attach custom TLVs
The underlying ldk-node APIs (SpontaneousPayment::send_with_custom_tlvs, Event::PaymentReceived.custom_records, Event::PaymentClaimable.custom_records) already provide everything needed. As a small signal that this gap was anticipated: NodeError::InvalidCustomTlvs is already mapped through the server's error layer but is currently unreachable from any request path.
Summary
ldk-nodesupports sending and receiving custom TLV records on spontaneous (keysend) payments, but neither the LDK Server gRPC surface nor the bundledldk-server-cliexposes them.Gaps
SpontaneousSendRequestinapi.protocarries onlyamount_msat,node_id,route_parameters.send(...), never.send_with_custom_tlvs(...)PaymentReceivedandPaymentClaimableevents inevents.protoonly exposetypes.Paymentmain.rsdestructures ldk-node events with.., droppingcustom_recordsldk-server-cli'sspontaneous-sendsubcommand has no flag to attach custom TLVsThe underlying
ldk-nodeAPIs (SpontaneousPayment::send_with_custom_tlvs,Event::PaymentReceived.custom_records,Event::PaymentClaimable.custom_records) already provide everything needed. As a small signal that this gap was anticipated:NodeError::InvalidCustomTlvsis already mapped through the server's error layer but is currently unreachable from any request path.