lightning-sendcustommsg

lightning-sendcustommsg -- Low-level interface to send protocol messages to peers

SYNOPSIS

sendcustommsg node_id msg

DESCRIPTION

Command added in v0.10.1.

The sendcustommsg RPC method allows the user to inject a custom message into the communication with the peer with the given node_id. This is intended as a low-level interface to implement custom protocol extensions on top, not for direct use by end-users.

On the receiving end a plugin may implement the custommsg plugin hook and get notified about incoming messages, and allow additional unknown even types in their getmanifest response.

  • node_id (pubkey): The node specified by node_id must be a peer, i.e., it must have a direct connection with the node receiving the RPC call, and the connection must be established. For a method to send arbitrary messages over multiple hops, including hops that do not understand the custom message, see the createonion and sendonion RPC methods. Messages can only be injected if the connection is handled by openingd or channeld. Messages cannot be injected when the peer is handled by onchaind or closingd since these do not have a connection, or are synchronous daemons that do not handle spontaneous messages.
  • msg (hex): Must be a hex encoded well-formed message, including the 2-byte type prefix, but excluding the length prefix which will be added by the RPC method. The message types may not be one of the internally handled types, since that may cause issues with the internal state tracking of Core Lightning. We do (as of v23.11) allow sending of even types, but note that peers (as per the spec) will disconnect on receiving unknown even types.

RETURN VALUE

The method will validate the arguments and queue the message for delivery through the daemon that is currently handling the connection. Queuing provides best effort guarantees and the message may not be delivered if the connection is terminated while the message is queued. The RPC method will return as soon as the message is queued.

If any of the above limitations is not respected the method returns an explicit error message stating the issue.
On success, an object is returned, containing:

  • status (string): Information about where message was queued.

AUTHOR

Christian Decker <[email protected]> is mainly responsible.

SEE ALSO

lightning-createonion(7), lightning-sendonion(7)

RESOURCES

Main web site: https://github.com/ElementsProject/lightning

EXAMPLES

Example 1:

Request:

lightning-cli sendcustommsg -k "node_id"="nodeid030303030303030303030303030303030303030303030303030303030303" "msg"="77770012"
{
  "id": "example:sendcustommsg#1",
  "method": "sendcustommsg",
  "params": {
    "node_id": "nodeid030303030303030303030303030303030303030303030303030303030303",
    "msg": "77770012"
  }
}

Response:

{
  "status": "Message sent to connectd for delivery"
}

Core Lightning (previously c-lightning) is a lightweight, highly customizable and standard compliant implementation of the Lightning Network protocol.

© 2023 Core Lightning
All rights reserved.

Discussion Forum

The official Core Lightning forum is hosted at discuss.corelightning.org

BuildonL2 Community

The official BuildOnL2 community lives at community.corelightning.org. Join us and build the future of bitcoin on lightning.

Mailing List

For general discussions about CLN implementation, use [email protected]. For the Lightning Network, use [email protected]

Telegram

Community-driven telegram group where most of the node operators hang out. Go to https://t.me/lightningd to join.

Discord

Community-driven discord server where the devs flock together. Go to https://discord.gg/w27fMFESMN to join.

Internet Relay Chat

Don't hesitate to reach out to us on IRC at #lightning-dev @ libera.chat, #c-lightning @ libera.chat.