d299be9785
This commit adds a number of new RPC’s which allow users to query data that’s now exposed as part of the new routing package: DescribeGraph, GetChanInfo, GetNodeInfo, QueryRoute, GetNetworkInfo, and SetAlias. As a result the former ShowRoutingTable command has been removed as the underlying graph representation has changed.
546 lines
11 KiB
Protocol Buffer
546 lines
11 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
import "google/api/annotations.proto";
|
|
|
|
package lnrpc;
|
|
|
|
service Lightning {
|
|
rpc WalletBalance(WalletBalanceRequest) returns (WalletBalanceResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/balance/blockchain"
|
|
};
|
|
}
|
|
rpc ChannelBalance(ChannelBalanceRequest) returns (ChannelBalanceResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/balance/channels"
|
|
};
|
|
}
|
|
|
|
rpc GetTransactions(GetTransactionsRequest) returns (TransactionDetails) {
|
|
option (google.api.http) = {
|
|
get: "/v1/transactions"
|
|
};
|
|
}
|
|
rpc SendCoins(SendCoinsRequest) returns (SendCoinsResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/transactions"
|
|
body: "*"
|
|
};
|
|
}
|
|
rpc SubscribeTransactions(GetTransactionsRequest) returns (stream Transaction);
|
|
|
|
rpc SendMany(SendManyRequest) returns (SendManyResponse);
|
|
|
|
rpc NewAddress(NewAddressRequest) returns (NewAddressResponse);
|
|
rpc NewWitnessAddress(NewWitnessAddressRequest) returns (NewAddressResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/newaddress"
|
|
};
|
|
}
|
|
|
|
rpc ConnectPeer(ConnectPeerRequest) returns (ConnectPeerResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/peers"
|
|
body: "*"
|
|
};
|
|
}
|
|
rpc ListPeers(ListPeersRequest) returns (ListPeersResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/peers"
|
|
};
|
|
}
|
|
rpc GetInfo(GetInfoRequest) returns (GetInfoResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/getinfo"
|
|
};
|
|
}
|
|
|
|
// TODO(roasbeef): merge with below with bool?
|
|
rpc PendingChannels(PendingChannelRequest) returns (PendingChannelResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/channels/pending"
|
|
};
|
|
}
|
|
rpc ListChannels(ListChannelsRequest) returns (ListChannelsResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/channels"
|
|
};
|
|
}
|
|
rpc OpenChannelSync(OpenChannelRequest) returns (ChannelPoint) {
|
|
option (google.api.http) = {
|
|
post: "/v1/channels"
|
|
body: "*"
|
|
};
|
|
}
|
|
|
|
rpc OpenChannel(OpenChannelRequest) returns (stream OpenStatusUpdate);
|
|
|
|
rpc CloseChannel(CloseChannelRequest) returns (stream CloseStatusUpdate) {
|
|
option (google.api.http) = {
|
|
delete: "/v1/channels/{channel_point.funding_txid}/{channel_point.output_index}/{force}"
|
|
};
|
|
}
|
|
|
|
rpc SendPayment(stream SendRequest) returns (stream SendResponse);
|
|
|
|
rpc SendPaymentSync(SendRequest) returns (SendResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/channels/transactions"
|
|
body: "*"
|
|
};
|
|
}
|
|
|
|
rpc AddInvoice(Invoice) returns (AddInvoiceResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/invoices"
|
|
body: "*"
|
|
};
|
|
}
|
|
rpc ListInvoices(ListInvoiceRequest) returns (ListInvoiceResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/invoices/{pending_only}"
|
|
};
|
|
}
|
|
rpc LookupInvoice(PaymentHash) returns (Invoice) {
|
|
option (google.api.http) = {
|
|
get: "/v1/invoices/{r_hash_str}"
|
|
};
|
|
}
|
|
rpc SubscribeInvoices(InvoiceSubscription) returns (stream Invoice) {
|
|
option (google.api.http) = {
|
|
get: "/v1/invoices/subscribe"
|
|
};
|
|
}
|
|
|
|
rpc ListPayments(ListPaymentsRequest) returns (ListPaymentsResponse){
|
|
option (google.api.http) = {
|
|
get: "/v1/payments"
|
|
};
|
|
};
|
|
|
|
rpc DeleteAllPayments(DeleteAllPaymentsRequest) returns (DeleteAllPaymentsResponse) {
|
|
option (google.api.http) = {
|
|
delete: "/v1/payments"
|
|
};
|
|
};
|
|
|
|
rpc DescribeGraph(ChannelGraphRequest) returns (ChannelGraph) {
|
|
option (google.api.http) = {
|
|
get: "/v1/graph"
|
|
};
|
|
}
|
|
|
|
rpc GetChanInfo(ChanInfoRequest) returns (ChannelEdge) {
|
|
option (google.api.http) = {
|
|
get: "/v1/graph/edge/{chan_id}"
|
|
};
|
|
}
|
|
|
|
rpc GetNodeInfo(NodeInfoRequest) returns (NodeInfo) {
|
|
option (google.api.http) = {
|
|
get: "/v1/graph/node/{pub_key}"
|
|
};
|
|
}
|
|
|
|
rpc QueryRoute(RouteRequest) returns (Route) {
|
|
option (google.api.http) = {
|
|
get: "/v1/graph/route/{pub_key}/{amt}"
|
|
};
|
|
}
|
|
|
|
rpc GetNetworkInfo(NetworkInfoRequest) returns (NetworkInfo) {
|
|
option (google.api.http) = {
|
|
get: "/v1/graph/info"
|
|
};
|
|
}
|
|
|
|
rpc SetAlias(SetAliasRequest) returns (SetAliasResponse);
|
|
}
|
|
|
|
message Transaction {
|
|
string tx_hash = 1;
|
|
double amount = 2;
|
|
int32 num_confirmations = 3;
|
|
string block_hash = 4;
|
|
int32 block_height = 5;
|
|
int64 time_stamp = 6;
|
|
int64 total_fees = 7;
|
|
}
|
|
message GetTransactionsRequest {
|
|
}
|
|
message TransactionDetails {
|
|
repeated Transaction transactions = 1;
|
|
}
|
|
|
|
message SendRequest {
|
|
bytes dest = 1;
|
|
string dest_string = 2;
|
|
|
|
int64 amt = 3;
|
|
|
|
bytes payment_hash = 4;
|
|
string payment_hash_string = 5;
|
|
|
|
bool fast_send = 6;
|
|
}
|
|
message SendResponse {
|
|
// TODO(roasbeef): info about route? stats?
|
|
}
|
|
|
|
message ChannelPoint {
|
|
bytes funding_txid = 1;
|
|
string funding_txid_str = 2;
|
|
uint32 output_index = 3;
|
|
}
|
|
|
|
message LightningAddress {
|
|
string pubkey = 1;
|
|
string host = 2;
|
|
}
|
|
|
|
message SendManyRequest {
|
|
map<string, int64> AddrToAmount = 1;
|
|
}
|
|
message SendManyResponse {
|
|
string txid = 1;
|
|
}
|
|
|
|
message SendCoinsRequest {
|
|
string addr = 1;
|
|
int64 amount = 2;
|
|
}
|
|
message SendCoinsResponse {
|
|
string txid = 1;
|
|
}
|
|
|
|
message NewAddressRequest {
|
|
enum AddressType {
|
|
WITNESS_PUBKEY_HASH = 0;
|
|
NESTED_PUBKEY_HASH = 1;
|
|
PUBKEY_HASH = 2;
|
|
}
|
|
AddressType type = 1;
|
|
}
|
|
message NewWitnessAddressRequest {}
|
|
message NewAddressResponse {
|
|
string address = 1;
|
|
}
|
|
|
|
message ConnectPeerRequest {
|
|
LightningAddress addr = 1;
|
|
}
|
|
message ConnectPeerResponse {
|
|
int32 peer_id = 1;
|
|
}
|
|
|
|
message HTLC {
|
|
bool incoming = 1;
|
|
int64 amount = 2;
|
|
bytes hash_lock = 3;
|
|
uint32 expiration_height = 4;
|
|
uint32 revocation_delay = 5;
|
|
}
|
|
|
|
message ActiveChannel {
|
|
string remote_pubkey = 1;
|
|
string channel_point = 2;
|
|
uint64 chan_id = 3;
|
|
|
|
int64 capacity = 4;
|
|
int64 local_balance = 5;
|
|
int64 remote_balance = 6;
|
|
|
|
int64 unsettled_balance = 7;
|
|
int64 total_satoshis_sent = 8;
|
|
int64 total_satoshis_received = 9;
|
|
uint64 num_updates = 10;
|
|
|
|
repeated HTLC pending_htlcs = 11;
|
|
}
|
|
|
|
message ListChannelsRequest {}
|
|
message ListChannelsResponse {
|
|
repeated ActiveChannel channels = 11;
|
|
}
|
|
|
|
message Peer {
|
|
string pub_key = 1;
|
|
int32 peer_id = 2;
|
|
string address = 3;
|
|
|
|
uint64 bytes_sent = 4;
|
|
uint64 bytes_recv = 5;
|
|
|
|
int64 sat_sent = 6;
|
|
int64 sat_recv = 7;
|
|
|
|
bool inbound = 8;
|
|
}
|
|
|
|
message ListPeersRequest {}
|
|
message ListPeersResponse {
|
|
repeated Peer peers = 1;
|
|
}
|
|
|
|
message GetInfoRequest{}
|
|
message GetInfoResponse {
|
|
string identity_pubkey = 1;
|
|
string alias = 2;
|
|
|
|
uint32 num_pending_channels = 3;
|
|
uint32 num_active_channels = 4;
|
|
|
|
uint32 num_peers = 5;
|
|
|
|
uint32 block_height = 6;
|
|
string block_hash = 8;
|
|
|
|
bool synced_to_chain = 9;
|
|
bool testnet = 10;
|
|
}
|
|
|
|
message ConfirmationUpdate {
|
|
bytes block_sha = 1;
|
|
int32 block_height = 2;
|
|
|
|
uint32 num_confs_left = 3;
|
|
}
|
|
|
|
message ChannelOpenUpdate {
|
|
ChannelPoint channel_point = 1;
|
|
}
|
|
|
|
message ChannelCloseUpdate {
|
|
bytes closing_txid = 1;
|
|
|
|
bool success = 2;
|
|
}
|
|
|
|
message CloseChannelRequest {
|
|
ChannelPoint channel_point = 1;
|
|
int64 time_limit = 2;
|
|
bool force = 3;
|
|
}
|
|
message CloseStatusUpdate {
|
|
oneof update {
|
|
PendingUpdate close_pending = 1;
|
|
ConfirmationUpdate confirmation = 2;
|
|
ChannelCloseUpdate chan_close = 3;
|
|
}
|
|
}
|
|
|
|
message PendingUpdate {
|
|
bytes txid = 1;
|
|
}
|
|
|
|
message OpenChannelRequest {
|
|
int32 target_peer_id = 1;
|
|
|
|
bytes node_pubkey = 2;
|
|
|
|
string node_pubkey_string = 3;
|
|
|
|
int64 local_funding_amount = 4;
|
|
int64 remote_funding_amount = 5;
|
|
|
|
int64 commission_size = 6;
|
|
|
|
uint32 num_confs = 7;
|
|
}
|
|
message OpenStatusUpdate {
|
|
oneof update {
|
|
PendingUpdate chan_pending = 1;
|
|
ConfirmationUpdate confirmation = 2;
|
|
ChannelOpenUpdate chan_open = 3;
|
|
}
|
|
}
|
|
|
|
enum ChannelStatus {
|
|
ALL = 0;
|
|
OPENING = 1;
|
|
CLOSING = 2;
|
|
}
|
|
message PendingChannelRequest {
|
|
ChannelStatus status = 1;
|
|
}
|
|
message PendingChannelResponse {
|
|
message PendingChannel {
|
|
int32 peer_id = 1;
|
|
|
|
string identity_key = 2;
|
|
string channel_point = 3;
|
|
|
|
int64 capacity = 4;
|
|
int64 local_balance = 5;
|
|
int64 remote_balance = 6;
|
|
|
|
string closing_txid = 7;
|
|
|
|
ChannelStatus status = 8;
|
|
}
|
|
|
|
repeated PendingChannel pending_channels = 1;
|
|
}
|
|
|
|
message WalletBalanceRequest {
|
|
bool witness_only = 1;
|
|
}
|
|
message WalletBalanceResponse {
|
|
double balance = 1;
|
|
}
|
|
|
|
message ChannelBalanceRequest {
|
|
}
|
|
message ChannelBalanceResponse {
|
|
int64 balance = 1;
|
|
}
|
|
|
|
message RouteRequest {
|
|
string pub_key = 1;
|
|
int64 amt = 2;
|
|
}
|
|
|
|
message Hop {
|
|
uint64 chan_id = 1;
|
|
int64 chan_capacity = 2;
|
|
int64 amt_to_forward = 3;
|
|
int64 fee = 4;
|
|
}
|
|
|
|
message Route {
|
|
uint32 total_time_lock = 1;
|
|
int64 total_fees = 2;
|
|
int64 total_amt = 3;
|
|
|
|
repeated Hop hops = 4;
|
|
}
|
|
|
|
message NodeInfoRequest{
|
|
string pub_key = 1;
|
|
}
|
|
|
|
message NodeInfo {
|
|
LightningNode node = 1;
|
|
|
|
uint32 num_channels = 2;
|
|
int64 total_capacity = 3;
|
|
}
|
|
|
|
message LightningNode {
|
|
uint32 last_update = 1;
|
|
string pub_key = 2;
|
|
string address = 3;
|
|
string alias = 4;
|
|
}
|
|
|
|
message RoutingPolicy {
|
|
uint32 time_lock_delta = 1;
|
|
int64 min_htlc = 2;
|
|
int64 fee_base_msat = 3;
|
|
int64 fee_rate_milli_msat = 4;
|
|
}
|
|
|
|
message ChannelEdge {
|
|
uint64 channel_id = 1;
|
|
string chan_point = 2;
|
|
|
|
uint32 last_update = 3;
|
|
|
|
string node1_pub = 4;
|
|
string node2_pub = 5;
|
|
|
|
int64 capacity = 6;
|
|
|
|
RoutingPolicy node1_policy = 7;
|
|
RoutingPolicy node2_policy = 8;
|
|
}
|
|
|
|
message ChannelGraphRequest{}
|
|
|
|
message ChannelGraph {
|
|
repeated LightningNode nodes = 1;
|
|
repeated ChannelEdge edges = 2;
|
|
}
|
|
|
|
message ChanInfoRequest {
|
|
uint64 chan_id = 1;
|
|
}
|
|
|
|
message NetworkInfoRequest{}
|
|
message NetworkInfo {
|
|
uint32 graph_diameter = 1;
|
|
double avg_out_degree = 2;
|
|
uint32 max_out_degree = 3;
|
|
|
|
uint32 num_nodes = 4;
|
|
uint32 num_channels = 5;
|
|
|
|
int64 total_network_capacity = 6;
|
|
|
|
double avg_channel_size = 7;
|
|
int64 min_channel_size = 8;
|
|
int64 max_channel_size = 9;
|
|
|
|
// TODO(roasbeef): fee rate info, expiry
|
|
// * also additional RPC for tracking fee info once in
|
|
}
|
|
|
|
message SetAliasRequest {
|
|
string new_alias = 1;
|
|
}
|
|
message SetAliasResponse{}
|
|
|
|
message Invoice {
|
|
string memo = 1;
|
|
bytes receipt = 2;
|
|
|
|
bytes r_preimage = 3;
|
|
bytes r_hash = 4;
|
|
|
|
int64 value = 5;
|
|
|
|
bool settled = 6;
|
|
|
|
int64 creation_date = 7;
|
|
int64 settle_date = 8;
|
|
}
|
|
message AddInvoiceResponse {
|
|
bytes r_hash = 1;
|
|
}
|
|
message PaymentHash {
|
|
string r_hash_str = 1;
|
|
bytes r_hash = 2;
|
|
}
|
|
message ListInvoiceRequest {
|
|
bool pending_only = 1;
|
|
}
|
|
message ListInvoiceResponse {
|
|
repeated Invoice invoices = 1;
|
|
}
|
|
|
|
message InvoiceSubscription {}
|
|
|
|
|
|
message Payment {
|
|
string r_hash = 1;
|
|
|
|
int64 value = 2;
|
|
|
|
int64 creation_date = 3;
|
|
repeated string path = 4;
|
|
int64 fee = 5;
|
|
}
|
|
|
|
message ListPaymentsRequest {
|
|
}
|
|
|
|
message ListPaymentsResponse {
|
|
repeated Payment payments = 1;
|
|
}
|
|
|
|
message DeleteAllPaymentsRequest {
|
|
}
|
|
|
|
message DeleteAllPaymentsResponse {
|
|
}
|