diff --git a/app/lnd/config/rpc.proto b/app/lnd/config/rpc.proto index d4e7e9c6..73832394 100644 --- a/app/lnd/config/rpc.proto +++ b/app/lnd/config/rpc.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -// import "google/api/annotations.proto"; +import "google/api/annotations.proto"; package lnrpc; /** @@ -127,6 +127,15 @@ message InitWalletRequest { to encrypt the generated aezeed cipher seed. */ bytes aezeed_passphrase = 3; + + /** + recovery_window is an optional argument specifying the address lookahead + when restoring a wallet seed. The recovery window applies to each + invdividual branch of the BIP44 derivation paths. Supplying a recovery + window of zero indicates that no addresses should be recovered, such after + the first initialization of the wallet. + */ + int32 recovery_window = 4; } message InitWalletResponse { } @@ -138,6 +147,15 @@ message UnlockWalletRequest { function properly. */ bytes wallet_password = 1; + + /** + recovery_window is an optional argument specifying the address lookahead + when restoring a wallet seed. The recovery window applies to each + invdividual branch of the BIP44 derivation paths. Supplying a recovery + window of zero indicates that no addresses should be recovered, such after + the first initialization of the wallet. + */ + int32 recovery_window = 2; } message UnlockWalletResponse {} @@ -743,7 +761,7 @@ message HTLC { uint32 expiration_height = 4 [json_name = "expiration_height"]; } -message ActiveChannel { +message Channel { /// Whether this channel is active or not bool active = 1 [json_name = "active"]; @@ -782,7 +800,7 @@ message ActiveChannel { int64 commit_fee = 8 [json_name = "commit_fee"]; /// The weight of the commitment transaction - int64 commit_weight = 9 [ json_name = "commit_weight" ]; + int64 commit_weight = 9 [json_name = "commit_weight"]; /** The required number of satoshis per kilo-weight that the requester will pay @@ -819,14 +837,21 @@ message ActiveChannel { closed, we'll need to wait for this many blocks before we can regain our funds. */ - uint32 csv_delay = 16 [ json_name = "csv_delay" ]; + uint32 csv_delay = 16 [json_name = "csv_delay"]; + + /// Whether this channel is advertised to the network or not + bool private = 17 [json_name = "private"]; } message ListChannelsRequest { + bool active_only = 1; + bool inactive_only = 2; + bool public_only = 3; + bool private_only = 4; } message ListChannelsResponse { /// The list of active channels - repeated ActiveChannel channels = 11 [json_name = "channels"]; + repeated Channel channels = 11 [json_name = "channels"]; } message Peer { @@ -901,6 +926,10 @@ message GetInfoResponse { /// Timestamp of the block best known to the wallet int64 best_header_timestamp = 13 [ json_name = "best_header_timestamp" ]; + + /// The version of the LND software that the node is running. + string version = 14 [ json_name = "version" ]; + } message ConfirmationUpdate { @@ -965,10 +994,10 @@ message OpenChannelRequest { /// The number of satoshis to push to the remote side as part of the initial commitment state int64 push_sat = 5 [json_name = "push_sat"]; - /// The target number of blocks that the closure transaction should be confirmed by. + /// The target number of blocks that the funding transaction should be confirmed by. int32 target_conf = 6; - /// A manual fee rate set in sat/byte that should be used when crafting the closure transaction. + /// A manual fee rate set in sat/byte that should be used when crafting the funding transaction. int64 sat_per_byte = 7; /// Whether this channel should be private, not announced to the greater network. @@ -976,6 +1005,9 @@ message OpenChannelRequest { /// The minimum value in millisatoshi we will require for incoming HTLCs on the channel. int64 min_htlc_msat = 9 [json_name = "min_htlc_msat"]; + + /// The delay we require on the remote's commitment transaction. If this is not set, it will be scaled automatically with the channel size. + uint32 remote_csv_delay = 10 [json_name = "remote_csv_delay"]; } message OpenStatusUpdate { oneof update { @@ -1049,6 +1081,14 @@ message PendingChannelsResponse { int64 fee_per_kw = 6 [ json_name = "fee_per_kw" ]; } + message WaitingCloseChannel { + /// The pending channel waiting for closing tx to confirm + PendingChannel channel = 1; + + /// The balance in satoshis encumbered in this channel + int64 limbo_balance = 2 [ json_name = "limbo_balance" ]; + } + message ClosedChannel { /// The pending channel to be closed PendingChannel channel = 1; @@ -1094,6 +1134,9 @@ message PendingChannelsResponse { /// Channels pending force closing repeated ForceClosedChannel pending_force_closing_channels = 4 [ json_name = "pending_force_closing_channels" ]; + + /// Channels waiting for closing tx to confirm + repeated WaitingCloseChannel waiting_close_channels = 5 [ json_name = "waiting_close_channels" ]; } message WalletBalanceRequest { @@ -1114,6 +1157,9 @@ message ChannelBalanceRequest { message ChannelBalanceResponse { /// Sum of channels balances denominated in satoshis int64 balance = 1 [json_name = "balance"]; + + /// Sum of channels pending balances denominated in satoshis + int64 pending_open_balance = 2 [json_name = "pending_open_balance"]; } message QueryRoutesRequest { @@ -1138,9 +1184,11 @@ message Hop { */ uint64 chan_id = 1 [json_name = "chan_id"]; int64 chan_capacity = 2 [json_name = "chan_capacity"]; - int64 amt_to_forward = 3 [json_name = "amt_to_forward"]; - int64 fee = 4 [json_name = "fee"]; + int64 amt_to_forward = 3 [json_name = "amt_to_forward", deprecated = true]; + int64 fee = 4 [json_name = "fee", deprecated = true]; uint32 expiry = 5 [json_name = "expiry"]; + int64 amt_to_forward_msat = 6 [json_name = "amt_to_forward_msat"]; + int64 fee_msat = 7 [json_name = "fee_msat"]; } /** @@ -1165,7 +1213,7 @@ message Route { of a one-hop payment, this value will be zero as we don't need to pay a fee it ourself. */ - int64 total_fees = 2 [json_name = "total_fees"]; + int64 total_fees = 2 [json_name = "total_fees", deprecated = true]; /** The total amount of funds required to complete a payment over this route. @@ -1174,12 +1222,22 @@ message Route { satoshis, otherwise the route will fail at an intermediate node due to an insufficient amount of fees. */ - int64 total_amt = 3 [json_name = "total_amt"]; + int64 total_amt = 3 [json_name = "total_amt", deprecated = true]; /** Contains details concerning the specific forwarding details at each hop. */ repeated Hop hops = 4 [json_name = "hops"]; + + /** + The total fees in millisatoshis. + */ + int64 total_fees_msat = 5 [json_name = "total_fees_msat"]; + + /** + The total amount in millisatoshis. + */ + int64 total_amt_msat = 6 [json_name = "total_amt_msat"]; } message NodeInfoRequest { @@ -1230,7 +1288,7 @@ message RoutingPolicy { /** A fully authenticated channel along with all its unique attributes. Once an authenticated channel announcement has been processed on the network, -then a instance of ChannelEdgeInfo encapsulating the channels attributes is +then an instance of ChannelEdgeInfo encapsulating the channels attributes is stored. The other portions relevant to routing policy of a channel are stored within a ChannelEdgePolicy for each direction of the channel. */ @@ -1340,6 +1398,34 @@ message ClosedChannelUpdate { ChannelPoint chan_point = 4; } +message HopHint { + /// The public key of the node at the start of the channel. + string node_id = 1 [json_name = "node_id"]; + + /// The unique identifier of the channel. + uint64 chan_id = 2 [json_name = "chan_id"]; + + /// The base fee of the channel denominated in millisatoshis. + uint32 fee_base_msat = 3 [json_name = "fee_base_msat"]; + + /** + The fee rate of the channel for sending one satoshi across it denominated in + millionths of a satoshi. + */ + uint32 fee_proportional_millionths = 4 [json_name = "fee_proportional_millionths"]; + + /// The time-lock delta of the channel. + uint32 cltv_expiry_delta = 5 [json_name = "cltv_expiry_delta"]; +} + +message RouteHint { + /** + A list of hop hints that when chained together can assist in reaching a + specific destination. + */ + repeated HopHint hop_hints = 1 [json_name = "hop_hints"]; +} + message Invoice { /** An optional memo to attach along with the invoice. Used for record keeping @@ -1395,6 +1481,15 @@ message Invoice { /// Delta to use for the time-lock of the CLTV extended to the final hop. uint64 cltv_expiry = 13 [json_name = "cltv_expiry"]; + + /** + Route hints that can each be individually used to assist in reaching the + invoice's destination. + */ + repeated RouteHint route_hints = 14 [json_name = "route_hints"]; + + /// Whether this invoice should include routing hints for private channels. + bool private = 15 [json_name = "private"]; } message AddInvoiceResponse { bytes r_hash = 1 [json_name = "r_hash"]; @@ -1484,6 +1579,7 @@ message PayReq { string description_hash = 7 [json_name = "description_hash"]; string fallback_addr = 8 [json_name = "fallback_addr"]; int64 cltv_expiry = 9 [json_name = "cltv_expiry"]; + repeated RouteHint route_hints = 10 [json_name = "route_hints"]; } message FeeReportRequest {} diff --git a/app/lnd/lib/rpc.proto b/app/lnd/lib/rpc.proto index d4e7e9c6..73832394 100644 --- a/app/lnd/lib/rpc.proto +++ b/app/lnd/lib/rpc.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -// import "google/api/annotations.proto"; +import "google/api/annotations.proto"; package lnrpc; /** @@ -127,6 +127,15 @@ message InitWalletRequest { to encrypt the generated aezeed cipher seed. */ bytes aezeed_passphrase = 3; + + /** + recovery_window is an optional argument specifying the address lookahead + when restoring a wallet seed. The recovery window applies to each + invdividual branch of the BIP44 derivation paths. Supplying a recovery + window of zero indicates that no addresses should be recovered, such after + the first initialization of the wallet. + */ + int32 recovery_window = 4; } message InitWalletResponse { } @@ -138,6 +147,15 @@ message UnlockWalletRequest { function properly. */ bytes wallet_password = 1; + + /** + recovery_window is an optional argument specifying the address lookahead + when restoring a wallet seed. The recovery window applies to each + invdividual branch of the BIP44 derivation paths. Supplying a recovery + window of zero indicates that no addresses should be recovered, such after + the first initialization of the wallet. + */ + int32 recovery_window = 2; } message UnlockWalletResponse {} @@ -743,7 +761,7 @@ message HTLC { uint32 expiration_height = 4 [json_name = "expiration_height"]; } -message ActiveChannel { +message Channel { /// Whether this channel is active or not bool active = 1 [json_name = "active"]; @@ -782,7 +800,7 @@ message ActiveChannel { int64 commit_fee = 8 [json_name = "commit_fee"]; /// The weight of the commitment transaction - int64 commit_weight = 9 [ json_name = "commit_weight" ]; + int64 commit_weight = 9 [json_name = "commit_weight"]; /** The required number of satoshis per kilo-weight that the requester will pay @@ -819,14 +837,21 @@ message ActiveChannel { closed, we'll need to wait for this many blocks before we can regain our funds. */ - uint32 csv_delay = 16 [ json_name = "csv_delay" ]; + uint32 csv_delay = 16 [json_name = "csv_delay"]; + + /// Whether this channel is advertised to the network or not + bool private = 17 [json_name = "private"]; } message ListChannelsRequest { + bool active_only = 1; + bool inactive_only = 2; + bool public_only = 3; + bool private_only = 4; } message ListChannelsResponse { /// The list of active channels - repeated ActiveChannel channels = 11 [json_name = "channels"]; + repeated Channel channels = 11 [json_name = "channels"]; } message Peer { @@ -901,6 +926,10 @@ message GetInfoResponse { /// Timestamp of the block best known to the wallet int64 best_header_timestamp = 13 [ json_name = "best_header_timestamp" ]; + + /// The version of the LND software that the node is running. + string version = 14 [ json_name = "version" ]; + } message ConfirmationUpdate { @@ -965,10 +994,10 @@ message OpenChannelRequest { /// The number of satoshis to push to the remote side as part of the initial commitment state int64 push_sat = 5 [json_name = "push_sat"]; - /// The target number of blocks that the closure transaction should be confirmed by. + /// The target number of blocks that the funding transaction should be confirmed by. int32 target_conf = 6; - /// A manual fee rate set in sat/byte that should be used when crafting the closure transaction. + /// A manual fee rate set in sat/byte that should be used when crafting the funding transaction. int64 sat_per_byte = 7; /// Whether this channel should be private, not announced to the greater network. @@ -976,6 +1005,9 @@ message OpenChannelRequest { /// The minimum value in millisatoshi we will require for incoming HTLCs on the channel. int64 min_htlc_msat = 9 [json_name = "min_htlc_msat"]; + + /// The delay we require on the remote's commitment transaction. If this is not set, it will be scaled automatically with the channel size. + uint32 remote_csv_delay = 10 [json_name = "remote_csv_delay"]; } message OpenStatusUpdate { oneof update { @@ -1049,6 +1081,14 @@ message PendingChannelsResponse { int64 fee_per_kw = 6 [ json_name = "fee_per_kw" ]; } + message WaitingCloseChannel { + /// The pending channel waiting for closing tx to confirm + PendingChannel channel = 1; + + /// The balance in satoshis encumbered in this channel + int64 limbo_balance = 2 [ json_name = "limbo_balance" ]; + } + message ClosedChannel { /// The pending channel to be closed PendingChannel channel = 1; @@ -1094,6 +1134,9 @@ message PendingChannelsResponse { /// Channels pending force closing repeated ForceClosedChannel pending_force_closing_channels = 4 [ json_name = "pending_force_closing_channels" ]; + + /// Channels waiting for closing tx to confirm + repeated WaitingCloseChannel waiting_close_channels = 5 [ json_name = "waiting_close_channels" ]; } message WalletBalanceRequest { @@ -1114,6 +1157,9 @@ message ChannelBalanceRequest { message ChannelBalanceResponse { /// Sum of channels balances denominated in satoshis int64 balance = 1 [json_name = "balance"]; + + /// Sum of channels pending balances denominated in satoshis + int64 pending_open_balance = 2 [json_name = "pending_open_balance"]; } message QueryRoutesRequest { @@ -1138,9 +1184,11 @@ message Hop { */ uint64 chan_id = 1 [json_name = "chan_id"]; int64 chan_capacity = 2 [json_name = "chan_capacity"]; - int64 amt_to_forward = 3 [json_name = "amt_to_forward"]; - int64 fee = 4 [json_name = "fee"]; + int64 amt_to_forward = 3 [json_name = "amt_to_forward", deprecated = true]; + int64 fee = 4 [json_name = "fee", deprecated = true]; uint32 expiry = 5 [json_name = "expiry"]; + int64 amt_to_forward_msat = 6 [json_name = "amt_to_forward_msat"]; + int64 fee_msat = 7 [json_name = "fee_msat"]; } /** @@ -1165,7 +1213,7 @@ message Route { of a one-hop payment, this value will be zero as we don't need to pay a fee it ourself. */ - int64 total_fees = 2 [json_name = "total_fees"]; + int64 total_fees = 2 [json_name = "total_fees", deprecated = true]; /** The total amount of funds required to complete a payment over this route. @@ -1174,12 +1222,22 @@ message Route { satoshis, otherwise the route will fail at an intermediate node due to an insufficient amount of fees. */ - int64 total_amt = 3 [json_name = "total_amt"]; + int64 total_amt = 3 [json_name = "total_amt", deprecated = true]; /** Contains details concerning the specific forwarding details at each hop. */ repeated Hop hops = 4 [json_name = "hops"]; + + /** + The total fees in millisatoshis. + */ + int64 total_fees_msat = 5 [json_name = "total_fees_msat"]; + + /** + The total amount in millisatoshis. + */ + int64 total_amt_msat = 6 [json_name = "total_amt_msat"]; } message NodeInfoRequest { @@ -1230,7 +1288,7 @@ message RoutingPolicy { /** A fully authenticated channel along with all its unique attributes. Once an authenticated channel announcement has been processed on the network, -then a instance of ChannelEdgeInfo encapsulating the channels attributes is +then an instance of ChannelEdgeInfo encapsulating the channels attributes is stored. The other portions relevant to routing policy of a channel are stored within a ChannelEdgePolicy for each direction of the channel. */ @@ -1340,6 +1398,34 @@ message ClosedChannelUpdate { ChannelPoint chan_point = 4; } +message HopHint { + /// The public key of the node at the start of the channel. + string node_id = 1 [json_name = "node_id"]; + + /// The unique identifier of the channel. + uint64 chan_id = 2 [json_name = "chan_id"]; + + /// The base fee of the channel denominated in millisatoshis. + uint32 fee_base_msat = 3 [json_name = "fee_base_msat"]; + + /** + The fee rate of the channel for sending one satoshi across it denominated in + millionths of a satoshi. + */ + uint32 fee_proportional_millionths = 4 [json_name = "fee_proportional_millionths"]; + + /// The time-lock delta of the channel. + uint32 cltv_expiry_delta = 5 [json_name = "cltv_expiry_delta"]; +} + +message RouteHint { + /** + A list of hop hints that when chained together can assist in reaching a + specific destination. + */ + repeated HopHint hop_hints = 1 [json_name = "hop_hints"]; +} + message Invoice { /** An optional memo to attach along with the invoice. Used for record keeping @@ -1395,6 +1481,15 @@ message Invoice { /// Delta to use for the time-lock of the CLTV extended to the final hop. uint64 cltv_expiry = 13 [json_name = "cltv_expiry"]; + + /** + Route hints that can each be individually used to assist in reaching the + invoice's destination. + */ + repeated RouteHint route_hints = 14 [json_name = "route_hints"]; + + /// Whether this invoice should include routing hints for private channels. + bool private = 15 [json_name = "private"]; } message AddInvoiceResponse { bytes r_hash = 1 [json_name = "r_hash"]; @@ -1484,6 +1579,7 @@ message PayReq { string description_hash = 7 [json_name = "description_hash"]; string fallback_addr = 8 [json_name = "fallback_addr"]; int64 cltv_expiry = 9 [json_name = "cltv_expiry"]; + repeated RouteHint route_hints = 10 [json_name = "route_hints"]; } message FeeReportRequest {} diff --git a/app/rpc.proto b/app/rpc.proto index d4e7e9c6..73832394 100644 --- a/app/rpc.proto +++ b/app/rpc.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -// import "google/api/annotations.proto"; +import "google/api/annotations.proto"; package lnrpc; /** @@ -127,6 +127,15 @@ message InitWalletRequest { to encrypt the generated aezeed cipher seed. */ bytes aezeed_passphrase = 3; + + /** + recovery_window is an optional argument specifying the address lookahead + when restoring a wallet seed. The recovery window applies to each + invdividual branch of the BIP44 derivation paths. Supplying a recovery + window of zero indicates that no addresses should be recovered, such after + the first initialization of the wallet. + */ + int32 recovery_window = 4; } message InitWalletResponse { } @@ -138,6 +147,15 @@ message UnlockWalletRequest { function properly. */ bytes wallet_password = 1; + + /** + recovery_window is an optional argument specifying the address lookahead + when restoring a wallet seed. The recovery window applies to each + invdividual branch of the BIP44 derivation paths. Supplying a recovery + window of zero indicates that no addresses should be recovered, such after + the first initialization of the wallet. + */ + int32 recovery_window = 2; } message UnlockWalletResponse {} @@ -743,7 +761,7 @@ message HTLC { uint32 expiration_height = 4 [json_name = "expiration_height"]; } -message ActiveChannel { +message Channel { /// Whether this channel is active or not bool active = 1 [json_name = "active"]; @@ -782,7 +800,7 @@ message ActiveChannel { int64 commit_fee = 8 [json_name = "commit_fee"]; /// The weight of the commitment transaction - int64 commit_weight = 9 [ json_name = "commit_weight" ]; + int64 commit_weight = 9 [json_name = "commit_weight"]; /** The required number of satoshis per kilo-weight that the requester will pay @@ -819,14 +837,21 @@ message ActiveChannel { closed, we'll need to wait for this many blocks before we can regain our funds. */ - uint32 csv_delay = 16 [ json_name = "csv_delay" ]; + uint32 csv_delay = 16 [json_name = "csv_delay"]; + + /// Whether this channel is advertised to the network or not + bool private = 17 [json_name = "private"]; } message ListChannelsRequest { + bool active_only = 1; + bool inactive_only = 2; + bool public_only = 3; + bool private_only = 4; } message ListChannelsResponse { /// The list of active channels - repeated ActiveChannel channels = 11 [json_name = "channels"]; + repeated Channel channels = 11 [json_name = "channels"]; } message Peer { @@ -901,6 +926,10 @@ message GetInfoResponse { /// Timestamp of the block best known to the wallet int64 best_header_timestamp = 13 [ json_name = "best_header_timestamp" ]; + + /// The version of the LND software that the node is running. + string version = 14 [ json_name = "version" ]; + } message ConfirmationUpdate { @@ -965,10 +994,10 @@ message OpenChannelRequest { /// The number of satoshis to push to the remote side as part of the initial commitment state int64 push_sat = 5 [json_name = "push_sat"]; - /// The target number of blocks that the closure transaction should be confirmed by. + /// The target number of blocks that the funding transaction should be confirmed by. int32 target_conf = 6; - /// A manual fee rate set in sat/byte that should be used when crafting the closure transaction. + /// A manual fee rate set in sat/byte that should be used when crafting the funding transaction. int64 sat_per_byte = 7; /// Whether this channel should be private, not announced to the greater network. @@ -976,6 +1005,9 @@ message OpenChannelRequest { /// The minimum value in millisatoshi we will require for incoming HTLCs on the channel. int64 min_htlc_msat = 9 [json_name = "min_htlc_msat"]; + + /// The delay we require on the remote's commitment transaction. If this is not set, it will be scaled automatically with the channel size. + uint32 remote_csv_delay = 10 [json_name = "remote_csv_delay"]; } message OpenStatusUpdate { oneof update { @@ -1049,6 +1081,14 @@ message PendingChannelsResponse { int64 fee_per_kw = 6 [ json_name = "fee_per_kw" ]; } + message WaitingCloseChannel { + /// The pending channel waiting for closing tx to confirm + PendingChannel channel = 1; + + /// The balance in satoshis encumbered in this channel + int64 limbo_balance = 2 [ json_name = "limbo_balance" ]; + } + message ClosedChannel { /// The pending channel to be closed PendingChannel channel = 1; @@ -1094,6 +1134,9 @@ message PendingChannelsResponse { /// Channels pending force closing repeated ForceClosedChannel pending_force_closing_channels = 4 [ json_name = "pending_force_closing_channels" ]; + + /// Channels waiting for closing tx to confirm + repeated WaitingCloseChannel waiting_close_channels = 5 [ json_name = "waiting_close_channels" ]; } message WalletBalanceRequest { @@ -1114,6 +1157,9 @@ message ChannelBalanceRequest { message ChannelBalanceResponse { /// Sum of channels balances denominated in satoshis int64 balance = 1 [json_name = "balance"]; + + /// Sum of channels pending balances denominated in satoshis + int64 pending_open_balance = 2 [json_name = "pending_open_balance"]; } message QueryRoutesRequest { @@ -1138,9 +1184,11 @@ message Hop { */ uint64 chan_id = 1 [json_name = "chan_id"]; int64 chan_capacity = 2 [json_name = "chan_capacity"]; - int64 amt_to_forward = 3 [json_name = "amt_to_forward"]; - int64 fee = 4 [json_name = "fee"]; + int64 amt_to_forward = 3 [json_name = "amt_to_forward", deprecated = true]; + int64 fee = 4 [json_name = "fee", deprecated = true]; uint32 expiry = 5 [json_name = "expiry"]; + int64 amt_to_forward_msat = 6 [json_name = "amt_to_forward_msat"]; + int64 fee_msat = 7 [json_name = "fee_msat"]; } /** @@ -1165,7 +1213,7 @@ message Route { of a one-hop payment, this value will be zero as we don't need to pay a fee it ourself. */ - int64 total_fees = 2 [json_name = "total_fees"]; + int64 total_fees = 2 [json_name = "total_fees", deprecated = true]; /** The total amount of funds required to complete a payment over this route. @@ -1174,12 +1222,22 @@ message Route { satoshis, otherwise the route will fail at an intermediate node due to an insufficient amount of fees. */ - int64 total_amt = 3 [json_name = "total_amt"]; + int64 total_amt = 3 [json_name = "total_amt", deprecated = true]; /** Contains details concerning the specific forwarding details at each hop. */ repeated Hop hops = 4 [json_name = "hops"]; + + /** + The total fees in millisatoshis. + */ + int64 total_fees_msat = 5 [json_name = "total_fees_msat"]; + + /** + The total amount in millisatoshis. + */ + int64 total_amt_msat = 6 [json_name = "total_amt_msat"]; } message NodeInfoRequest { @@ -1230,7 +1288,7 @@ message RoutingPolicy { /** A fully authenticated channel along with all its unique attributes. Once an authenticated channel announcement has been processed on the network, -then a instance of ChannelEdgeInfo encapsulating the channels attributes is +then an instance of ChannelEdgeInfo encapsulating the channels attributes is stored. The other portions relevant to routing policy of a channel are stored within a ChannelEdgePolicy for each direction of the channel. */ @@ -1340,6 +1398,34 @@ message ClosedChannelUpdate { ChannelPoint chan_point = 4; } +message HopHint { + /// The public key of the node at the start of the channel. + string node_id = 1 [json_name = "node_id"]; + + /// The unique identifier of the channel. + uint64 chan_id = 2 [json_name = "chan_id"]; + + /// The base fee of the channel denominated in millisatoshis. + uint32 fee_base_msat = 3 [json_name = "fee_base_msat"]; + + /** + The fee rate of the channel for sending one satoshi across it denominated in + millionths of a satoshi. + */ + uint32 fee_proportional_millionths = 4 [json_name = "fee_proportional_millionths"]; + + /// The time-lock delta of the channel. + uint32 cltv_expiry_delta = 5 [json_name = "cltv_expiry_delta"]; +} + +message RouteHint { + /** + A list of hop hints that when chained together can assist in reaching a + specific destination. + */ + repeated HopHint hop_hints = 1 [json_name = "hop_hints"]; +} + message Invoice { /** An optional memo to attach along with the invoice. Used for record keeping @@ -1395,6 +1481,15 @@ message Invoice { /// Delta to use for the time-lock of the CLTV extended to the final hop. uint64 cltv_expiry = 13 [json_name = "cltv_expiry"]; + + /** + Route hints that can each be individually used to assist in reaching the + invoice's destination. + */ + repeated RouteHint route_hints = 14 [json_name = "route_hints"]; + + /// Whether this invoice should include routing hints for private channels. + bool private = 15 [json_name = "private"]; } message AddInvoiceResponse { bytes r_hash = 1 [json_name = "r_hash"]; @@ -1484,6 +1579,7 @@ message PayReq { string description_hash = 7 [json_name = "description_hash"]; string fallback_addr = 8 [json_name = "fallback_addr"]; int64 cltv_expiry = 9 [json_name = "cltv_expiry"]; + repeated RouteHint route_hints = 10 [json_name = "route_hints"]; } message FeeReportRequest {}