2
0
mirror of https://github.com/lightninglabs/loop synced 2024-11-04 06:00:21 +00:00
loop/looprpc/server.proto
carla 65c847674d
multi: add preimage push to loop out after sweep attempt
Once we have revealed our preimage to the world with a sweep attempt,
we can safely push our preimage to the server to speed up on chain
claim.

Rather than rely on the server, we use the state of our invoice in lnd
to determine whether we should continue trying to push the preimage to
the server.
2020-06-08 12:54:08 +02:00

174 lines
4.7 KiB
Protocol Buffer

syntax = "proto3";
import "google/api/annotations.proto";
package looprpc;
service SwapServer {
rpc LoopOutTerms (ServerLoopOutTermsRequest) returns (ServerLoopOutTerms);
rpc NewLoopOutSwap (ServerLoopOutRequest) returns (ServerLoopOutResponse);
rpc LoopOutPushPreimage (ServerLoopOutPushPreimageRequest)
returns (ServerLoopOutPushPreimageResponse);
rpc LoopOutQuote (ServerLoopOutQuoteRequest) returns (ServerLoopOutQuote);
rpc LoopInTerms (ServerLoopInTermsRequest) returns (ServerLoopInTerms);
rpc NewLoopInSwap (ServerLoopInRequest) returns (ServerLoopInResponse);
rpc LoopInQuote (ServerLoopInQuoteRequest)
returns (ServerLoopInQuoteResponse);
}
/**
This enum defines the protocol versions that clients may adhere to. Note that
this is not a flagged enum. If a particular protocol version adds a feature,
then in general all the preceding features are also supported. Exception to this
is when features get deprecated.
*/
enum ProtocolVersion {
/// No protocol version reported at all.
LEGACY = 0;
/// Client may attempt to send the loop out payment in multiple parts.
MULTI_LOOP_OUT = 1;
/**
Loop will use native segwit (P2WSH) htlcs by default, while externally
published htlcs may use native (P2WSH) or nested (NP2WSH) segwit as well.
*/
NATIVE_SEGWIT_LOOP_IN = 2;
/*
Once the on chain loop out htlc is confirmed, the client can push the swap
preimage to the server to speed up claim of their off chain htlc (acquiring
incoming liquidity more quickly than if the server waited for the on chain
claim tx).
*/
PREIMAGE_PUSH_LOOP_OUT = 3;
}
message ServerLoopOutRequest {
bytes receiver_key = 1;
bytes swap_hash = 2;
uint64 amt = 3;
/// The unix time in seconds we want the on-chain swap to be published by.
int64 swap_publication_deadline = 4;
/// The protocol version that the client adheres to.
ProtocolVersion protocol_version = 5;
}
message ServerLoopOutResponse {
string swap_invoice = 1;
string prepay_invoice = 2;
bytes sender_key = 3;
int32 expiry = 4;
}
message ServerLoopOutQuoteRequest {
/// The swap amount. If zero, a quote for a maximum amt swap will be given.
uint64 amt = 1;
/// The unix time in seconds we want the on-chain swap to be published by.
int64 swap_publication_deadline = 2;
/// The protocol version that the client adheres to.
ProtocolVersion protocol_version = 3;
}
message ServerLoopOutQuote {
string swap_payment_dest = 1;
/// The total estimated swap fee given the quote amt.
int64 swap_fee = 2;
/// Deprecated, total swap fee given quote amt is calculated in swap_fee.
int64 swap_fee_rate = 3 [deprecated = true];
uint64 prepay_amt = 4;
uint64 min_swap_amount = 5 [deprecated = true];
uint64 max_swap_amount = 6 [deprecated = true];
int32 cltv_delta = 7;
}
message ServerLoopOutTermsRequest {
/// The protocol version that the client adheres to.
ProtocolVersion protocol_version = 1;
}
message ServerLoopOutTerms {
uint64 min_swap_amount = 1;
uint64 max_swap_amount = 2;
}
message ServerLoopInRequest {
bytes sender_key = 1;
bytes swap_hash = 2;
uint64 amt = 3;
string swap_invoice = 4;
bytes last_hop = 5;
/// The protocol version that the client adheres to.
ProtocolVersion protocol_version = 6;
}
message ServerLoopInResponse {
bytes receiver_key = 1;
int32 expiry = 2;
}
message ServerLoopInQuoteRequest {
/// The swap amount. If zero, a quote for a maximum amt swap will be given.
uint64 amt = 1;
/// The protocol version that the client adheres to.
ProtocolVersion protocol_version = 2;
}
message ServerLoopInQuoteResponse {
int64 swap_fee = 1;
int64 swap_fee_rate = 2 [deprecated = true];
uint64 min_swap_amount = 4 [deprecated = true];
uint64 max_swap_amount = 5 [deprecated = true];
int32 cltv_delta = 6;
}
message ServerLoopInTermsRequest {
/// The protocol version that the client adheres to.
ProtocolVersion protocol_version = 1;
}
message ServerLoopInTerms {
uint64 min_swap_amount = 1;
uint64 max_swap_amount = 2;
}
// ServerLoopOutPushPreimageRequest pushes a preimage to the server. Note that
// this call returns with no error after the server acknowledges the preimage
// and does not block until the invoice is settled.
message ServerLoopOutPushPreimageRequest {
// The protocol version that the client adheres to.
ProtocolVersion protocol_version = 1;
/*
Preimage is the preimage of the loop out swap that we wish to push to the
server to speed up off-chain claim once the on-chain htlc has confirmed.
*/
bytes preimage = 2;
}
message ServerLoopOutPushPreimageResponse {
}