diff --git a/lib/types/proto/lnd/invoicesrpc/invoices.ts b/lib/types/proto/lnd/invoicesrpc/invoices.ts index f326b4f..2b5728a 100644 --- a/lib/types/proto/lnd/invoicesrpc/invoices.ts +++ b/lib/types/proto/lnd/invoicesrpc/invoices.ts @@ -121,6 +121,50 @@ export interface LookupInvoiceMsg { lookupModifier: LookupModifier; } +/** CircuitKey is a unique identifier for an HTLC. */ +export interface CircuitKey { + /** / The id of the channel that the is part of this circuit. */ + chanId: string; + /** / The index of the incoming htlc in the incoming channel. */ + htlcId: string; +} + +export interface HtlcModifyRequest { + /** + * The invoice the intercepted HTLC is attempting to settle. The HTLCs in + * the invoice are only HTLCs that have already been accepted or settled, + * not including the current intercepted HTLC. + */ + invoice: Invoice | undefined; + /** The unique identifier of the HTLC of this intercepted HTLC. */ + exitHtlcCircuitKey: CircuitKey | undefined; + /** The amount in milli-satoshi that the exit HTLC is attempting to pay. */ + exitHtlcAmt: string; + /** The absolute expiry height of the exit HTLC. */ + exitHtlcExpiry: number; + /** The current block height. */ + currentHeight: number; + /** The wire message custom records of the exit HTLC. */ + exitHtlcWireCustomRecords: { [key: string]: Uint8Array | string }; +} + +export interface HtlcModifyRequest_ExitHtlcWireCustomRecordsEntry { + key: string; + value: Uint8Array | string; +} + +export interface HtlcModifyResponse { + /** The circuit key of the HTLC that the client wants to modify. */ + circuitKey: CircuitKey | undefined; + /** + * The modified amount in milli-satoshi that the exit HTLC is paying. This + * value can be different from the actual on-chain HTLC amount, in case the + * HTLC carries other valuable items, as can be the case with custom channel + * types. In order to not modify this value, the client should set it zero. + */ + amtPaid: string; +} + /** * Invoices is a service that can be used to create, accept, settle and cancel * invoices. @@ -162,10 +206,21 @@ export interface Invoices { request?: DeepPartial ): Promise; /** - * LookupInvoiceV2 attempts to look up at invoice. An invoice can be refrenced + * LookupInvoiceV2 attempts to look up at invoice. An invoice can be referenced * using either its payment hash, payment address, or set ID. */ lookupInvoiceV2(request?: DeepPartial): Promise; + /** + * HtlcModifier is a bidirectional streaming RPC that allows a client to + * intercept and modify the HTLCs that attempt to settle the given invoice. The + * server will send HTLCs of invoices to the client and the client can modify + * some aspects of the HTLC in order to pass the invoice acceptance tests. + */ + htlcModifier( + request?: DeepPartial, + onMessage?: (msg: HtlcModifyRequest) => void, + onError?: (err: Error) => void + ): void; } type Builtin = diff --git a/lib/types/proto/lnd/lightning.ts b/lib/types/proto/lnd/lightning.ts index 9867fd2..a789a43 100644 --- a/lib/types/proto/lnd/lightning.ts +++ b/lib/types/proto/lnd/lightning.ts @@ -73,8 +73,17 @@ export enum CommitmentType { * channel before its maturity date. */ SCRIPT_ENFORCED_LEASE = 'SCRIPT_ENFORCED_LEASE', - /** SIMPLE_TAPROOT - TODO(roasbeef): need script enforce mirror type for the above as well? */ + /** + * SIMPLE_TAPROOT - A channel that uses musig2 for the funding output, and the new tapscript + * features where relevant. + */ SIMPLE_TAPROOT = 'SIMPLE_TAPROOT', + /** + * SIMPLE_TAPROOT_OVERLAY - Identical to the SIMPLE_TAPROOT channel type, but with extra functionality. + * This channel type also commits to additional meta data in the tapscript + * leaves for the scripts in a channel. + */ + SIMPLE_TAPROOT_OVERLAY = 'SIMPLE_TAPROOT_OVERLAY', UNRECOGNIZED = 'UNRECOGNIZED' } @@ -164,6 +173,8 @@ export enum PaymentFailureReason { FAILURE_REASON_INCORRECT_PAYMENT_DETAILS = 'FAILURE_REASON_INCORRECT_PAYMENT_DETAILS', /** FAILURE_REASON_INSUFFICIENT_BALANCE - Insufficient local balance. */ FAILURE_REASON_INSUFFICIENT_BALANCE = 'FAILURE_REASON_INSUFFICIENT_BALANCE', + /** FAILURE_REASON_CANCELED - The payment was canceled. */ + FAILURE_REASON_CANCELED = 'FAILURE_REASON_CANCELED', UNRECOGNIZED = 'UNRECOGNIZED' } @@ -729,9 +740,8 @@ export interface SendCoinsRequest { */ satPerByte: string; /** - * If set, then the amount field will be ignored, and lnd will attempt to - * send all the coins under control of the internal wallet to the specified - * address. + * If set, the amount field should be unset. It indicates lnd will send all + * wallet coins or all selected coins to the specified address. */ sendAll: boolean; /** An optional label for the transaction, limited to 500 characters. */ @@ -745,6 +755,8 @@ export interface SendCoinsRequest { spendUnconfirmed: boolean; /** The strategy to use for selecting coins. */ coinSelectionStrategy: CoinSelectionStrategy; + /** A list of selected outpoints as inputs for the transaction. */ + outpoints: OutPoint[]; } export interface SendCoinsResponse { @@ -1027,6 +1039,8 @@ export interface Channel { * the channel's operation. */ memo: string; + /** Custom channel data that might be populated in custom channels. */ + customChannelData: Uint8Array | string; } export interface ListChannelsRequest { @@ -1356,9 +1370,39 @@ export interface ChannelOpenUpdate { channelPoint: ChannelPoint | undefined; } +export interface CloseOutput { + /** + * The amount in satoshi of this close output. This amount is the final + * commitment balance of the channel and the actual amount paid out on chain + * might be smaller due to subtracted fees. + */ + amountSat: string; + /** The pkScript of the close output. */ + pkScript: Uint8Array | string; + /** Whether this output is for the local or remote node. */ + isLocal: boolean; + /** + * The TLV encoded custom channel data records for this output, which might + * be set for custom channels. + */ + customChannelData: Uint8Array | string; +} + export interface ChannelCloseUpdate { closingTxid: Uint8Array | string; success: boolean; + /** + * The local channel close output. If the local channel balance was dust to + * begin with, this output will not be set. + */ + localCloseOutput: CloseOutput | undefined; + /** + * The remote channel close output. If the remote channel balance was dust + * to begin with, this output will not be set. + */ + remoteCloseOutput: CloseOutput | undefined; + /** Any additional outputs that might be added for custom channel types. */ + additionalOutputs: CloseOutput[]; } export interface CloseChannelRequest { @@ -1991,6 +2035,8 @@ export interface PendingChannelsResponse_PendingChannel { * impacts the channel's operation. */ memo: string; + /** Custom channel data that might be populated in custom channels. */ + customChannelData: Uint8Array | string; } export interface PendingChannelsResponse_PendingOpenChannel { @@ -2212,6 +2258,11 @@ export interface ChannelBalanceResponse { pendingOpenLocalBalance: Amount | undefined; /** Sum of channels pending remote balances. */ pendingOpenRemoteBalance: Amount | undefined; + /** + * Custom channel data that might be populated if there are custom channels + * present. + */ + customChannelData: Uint8Array | string; } export interface QueryRoutesRequest { @@ -2666,6 +2717,11 @@ export interface ChanInfoRequest { * output index for the channel. */ chanId: string; + /** + * The channel point of the channel in format funding_txid:output_index. If + * chan_id is specified, this field is ignored. + */ + chanPoint: string; } export interface NetworkInfoRequest {} @@ -3006,6 +3062,17 @@ export interface Invoice { * Note: Output only, don't specify for creating an invoice. */ ampInvoiceState: { [key: string]: AMPInvoiceState }; + /** + * Signals that the invoice should include blinded paths to hide the true + * identity of the recipient. + */ + isBlinded: boolean; + /** + * Config values to use when creating blinded paths for this invoice. These + * can be used to override the defaults config values provided in by the + * global config. This field is only used if is_blinded is true. + */ + blindedPathConfig: BlindedPathConfig | undefined; } export enum Invoice_InvoiceState { @@ -3026,6 +3093,30 @@ export interface Invoice_AmpInvoiceStateEntry { value: AMPInvoiceState | undefined; } +export interface BlindedPathConfig { + /** + * The minimum number of real hops to include in a blinded path. This doesn't + * include our node, so if the minimum is 1, then the path will contain at + * minimum our node along with an introduction node hop. If it is zero then + * the shortest path will use our node as an introduction node. + */ + minNumRealHops?: number | undefined; + /** + * The number of hops to include in a blinded path. This doesn't include our + * node, so if it is 1, then the path will contain our node along with an + * introduction node or dummy node hop. If paths shorter than NumHops is + * found, then they will be padded using dummy hops. + */ + numHops?: number | undefined; + /** The maximum number of blinded paths to select and add to an invoice. */ + maxNumPaths?: number | undefined; + /** + * A list of node IDs of nodes that should not be used in any of our generated + * blinded paths. + */ + nodeOmissionList: Uint8Array | string[]; +} + /** Details of an HTLC that paid to an invoice */ export interface InvoiceHTLC { /** Short channel id over which the htlc was received. */ @@ -3050,6 +3141,11 @@ export interface InvoiceHTLC { mppTotalAmtMsat: string; /** Details relevant to AMP HTLCs, only populated if this is an AMP HTLC. */ amp: AMP | undefined; + /** + * Custom tlv records that were only sent on the p2p wire message, not in + * the onion. + */ + wireCustomRecords: { [key: string]: Uint8Array | string }; } export interface InvoiceHTLC_CustomRecordsEntry { @@ -3057,6 +3153,11 @@ export interface InvoiceHTLC_CustomRecordsEntry { value: Uint8Array | string; } +export interface InvoiceHTLC_WireCustomRecordsEntry { + key: string; + value: Uint8Array | string; +} + /** Details specific to AMP HTLCs. */ export interface AMP { /** @@ -3408,6 +3509,7 @@ export interface PayReq { paymentAddr: Uint8Array | string; numMsat: string; features: { [key: number]: Feature }; + blindedPaths: BlindedPaymentPath[]; } export interface PayReq_FeaturesEntry { diff --git a/lib/types/proto/lnd/routerrpc/router.ts b/lib/types/proto/lnd/routerrpc/router.ts index dd5904e..299d8c7 100644 --- a/lib/types/proto/lnd/routerrpc/router.ts +++ b/lib/types/proto/lnd/routerrpc/router.ts @@ -8,6 +8,7 @@ import type { Failure, HTLCAttempt, ChannelPoint, + AliasMap, Payment } from '../lightning'; @@ -66,6 +67,11 @@ export enum ResolveHoldForwardAction { SETTLE = 'SETTLE', FAIL = 'FAIL', RESUME = 'RESUME', + /** + * RESUME_MODIFIED - RESUME_MODIFIED is an action that is used to resume a hold forward HTLC + * with modifications specified during interception. + */ + RESUME_MODIFIED = 'RESUME_MODIFIED', UNRECOGNIZED = 'UNRECOGNIZED' } @@ -202,6 +208,22 @@ export interface SendPaymentRequest { * only, to 1 to optimize for reliability only or a value inbetween for a mix. */ timePref: number; + /** + * If set, the payment loop can be interrupted by manually canceling the + * payment context, even before the payment timeout is reached. Note that the + * payment may still succeed after cancellation, as in-flight attempts can + * still settle afterwards. Canceling will only prevent further attempts from + * being sent. + */ + cancelable: boolean; + /** + * An optional field that can be used to pass an arbitrary set of TLV records + * to the first hop peer of this payment. This can be used to pass application + * specific data during the payment attempt. Record types are required to be in + * the custom range >= 65536. When using REST, the values must be encoded as + * base64. + */ + firstHopCustomRecords: { [key: string]: Uint8Array | string }; } export interface SendPaymentRequest_DestCustomRecordsEntry { @@ -209,6 +231,11 @@ export interface SendPaymentRequest_DestCustomRecordsEntry { value: Uint8Array | string; } +export interface SendPaymentRequest_FirstHopCustomRecordsEntry { + key: string; + value: Uint8Array | string; +} + export interface TrackPaymentRequest { /** The hash of the payment to look up. */ paymentHash: Uint8Array | string; @@ -685,6 +712,8 @@ export interface ForwardHtlcInterceptRequest { * channel from force-closing. */ autoFailHeight: number; + /** The custom records of the peer's incoming wire message. */ + incomingHtlcWireCustomRecords: { [key: string]: Uint8Array | string }; } export interface ForwardHtlcInterceptRequest_CustomRecordsEntry { @@ -692,10 +721,17 @@ export interface ForwardHtlcInterceptRequest_CustomRecordsEntry { value: Uint8Array | string; } +export interface ForwardHtlcInterceptRequest_IncomingHtlcWireCustomRecordsEntry { + key: string; + value: Uint8Array | string; +} + /** * ForwardHtlcInterceptResponse enables the caller to resolve a previously hold * forward. The caller can choose either to: * - `Resume`: Execute the default behavior (usually forward). + * - `ResumeModified`: Execute the default behavior (usually forward) with HTLC + * field modifications. * - `Reject`: Fail the htlc backwards. * - `Settle`: Settle this htlc with a given preimage. */ @@ -726,6 +762,26 @@ export interface ForwardHtlcInterceptResponse { * default value for this field. */ failureCode: Failure_FailureCode; + /** + * incoming_amount_msat is used to set the p2p message incoming amount field + * for validating an incoming HTLC. + */ + incomingAmountMsat: string; + /** + * outgoing_amount_msat is used to set the p2p message outgoing amount field + * for resuming a HTLC. + */ + outgoingAmountMsat: string; + /** + * Outgoing htlc wire custom records is used to set the p2p message custom + * records field for resuming a HTLC. + */ + outgoingHtlcWireCustomRecords: { [key: string]: Uint8Array | string }; +} + +export interface ForwardHtlcInterceptResponse_OutgoingHtlcWireCustomRecordsEntry { + key: string; + value: Uint8Array | string; } export interface UpdateChanStatusRequest { @@ -735,6 +791,22 @@ export interface UpdateChanStatusRequest { export interface UpdateChanStatusResponse {} +export interface AddAliasesRequest { + aliasMaps: AliasMap[]; +} + +export interface AddAliasesResponse { + aliasMaps: AliasMap[]; +} + +export interface DeleteAliasesRequest { + aliasMaps: AliasMap[]; +} + +export interface DeleteAliasesResponse { + aliasMaps: AliasMap[]; +} + /** * Router is a service that offers advanced interaction with the router * subsystem of the daemon. @@ -922,6 +994,25 @@ export interface Router { updateChanStatus( request?: DeepPartial ): Promise; + /** + * XAddLocalChanAliases is an experimental API that creates a set of new + * channel SCID alias mappings. The list of successfully created mappings is + * returned. This is only a locally stored alias, and will not be communicated + * to the channel peer via any message. Therefore, routing over such an alias + * will only work if the peer also calls this same RPC on their end. If an + * alias already exists, an error is returned + */ + xAddLocalChanAliases( + request?: DeepPartial + ): Promise; + /** + * XDeleteLocalChanAliases is an experimental API that deletes a set of new + * alias mappings. The list of successfully deleted mappings is returned. The + * deletion will not be communicated to the channel peer via any message. + */ + xDeleteLocalChanAliases( + request?: DeepPartial + ): Promise; } type Builtin = diff --git a/lib/types/proto/lnd/walletrpc/walletkit.ts b/lib/types/proto/lnd/walletrpc/walletkit.ts index 007d7d4..c499f2f 100644 --- a/lib/types/proto/lnd/walletrpc/walletkit.ts +++ b/lib/types/proto/lnd/walletrpc/walletkit.ts @@ -3,6 +3,7 @@ import type { CoinSelectionStrategy, Utxo, OutPoint, + ChannelPoint, TransactionDetails, Transaction as Transaction1 } from '../lightning'; @@ -682,6 +683,8 @@ export interface EstimateFeeResponse { * confirmation target in the request. */ satPerKw: string; + /** The current minimum relay fee based on our chain backend in sat/kw. */ + minRelayFeeSatPerKw: string; } export interface PendingSweep { @@ -815,6 +818,46 @@ export interface BumpFeeResponse { status: string; } +export interface BumpForceCloseFeeRequest { + /** + * The channel point which force close transaction we are attempting to + * bump the fee rate for. + */ + chanPoint: ChannelPoint | undefined; + /** + * Optional. The deadline delta in number of blocks that the anchor output + * should be spent within to bump the closing transaction. + */ + deadlineDelta: number; + /** + * Optional. The starting fee rate, expressed in sat/vbyte. This value will be + * used by the sweeper's fee function as its starting fee rate. When not set, + * the sweeper will use the estimated fee rate using the target_conf as the + * starting fee rate. + */ + startingFeerate: string; + /** + * Optional. Whether this cpfp transaction will be triggered immediately. When + * set to true, the sweeper will consider all currently registered sweeps and + * trigger new batch transactions including the sweeping of the anchor output + * related to the selected force close transaction. + */ + immediate: boolean; + /** + * Optional. The max amount in sats that can be used as the fees. For already + * registered anchor outputs if not set explicitly the old value will be used. + * For channel force closes which have no HTLCs in their commitment transaction + * this value has to be set to an appropriate amount to pay for the cpfp + * transaction of the force closed channel otherwise the fee bumping will fail. + */ + budget: string; +} + +export interface BumpForceCloseFeeResponse { + /** The status of the force close fee bump operation. */ + status: string; +} + export interface ListSweepsRequest { /** * Retrieve the full sweep transaction details. If false, only the sweep txids @@ -1309,6 +1352,14 @@ export interface WalletKit { * the control of the wallet. */ bumpFee(request?: DeepPartial): Promise; + /** + * lncli: `wallet bumpforceclosefee` + * BumpForceCloseFee is an endpoint that allows users to bump the fee of a + * channel force close. This only works for channels with option_anchors. + */ + bumpForceCloseFee( + request?: DeepPartial + ): Promise; /** * lncli: `wallet listsweeps` * ListSweeps returns a list of the sweep transactions our node has produced. diff --git a/lib/types/proto/schema.ts b/lib/types/proto/schema.ts index a3a0168..63be91f 100644 --- a/lib/types/proto/schema.ts +++ b/lib/types/proto/schema.ts @@ -52,6 +52,7 @@ export const subscriptionMethods = [ 'chainrpc.ChainNotifier.RegisterSpendNtfn', 'chainrpc.ChainNotifier.RegisterBlockEpochNtfn', 'invoicesrpc.Invoices.SubscribeSingleInvoice', + 'invoicesrpc.Invoices.HtlcModifier', 'lnrpc.Lightning.SubscribeTransactions', 'lnrpc.Lightning.SubscribePeerEvents', 'lnrpc.Lightning.SubscribeChannelEvents', diff --git a/lib/types/proto/tapd/assetwalletrpc/assetwallet.ts b/lib/types/proto/tapd/assetwalletrpc/assetwallet.ts index 44c3f90..e7be7cd 100644 --- a/lib/types/proto/tapd/assetwalletrpc/assetwallet.ts +++ b/lib/types/proto/tapd/assetwalletrpc/assetwallet.ts @@ -246,6 +246,12 @@ export interface ProveAssetOwnershipRequest { assetId: Uint8Array | string; scriptKey: Uint8Array | string; outpoint: OutPoint | undefined; + /** + * An optional 32-byte challenge that may be used to bind the generated + * proof. This challenge needs to be also presented on the + * VerifyAssetOwnership RPC in order to check the proof against it. + */ + challenge: Uint8Array | string; } export interface ProveAssetOwnershipResponse { @@ -254,6 +260,12 @@ export interface ProveAssetOwnershipResponse { export interface VerifyAssetOwnershipRequest { proofWithWitness: Uint8Array | string; + /** + * An optional 32-byte challenge that may be used to check the ownership + * proof against. This challenge must match the one that the prover used + * on the ProveAssetOwnership RPC. + */ + challenge: Uint8Array | string; } export interface VerifyAssetOwnershipResponse { diff --git a/lib/types/proto/tapd/lightning.ts b/lib/types/proto/tapd/lightning.ts index 9867fd2..a789a43 100644 --- a/lib/types/proto/tapd/lightning.ts +++ b/lib/types/proto/tapd/lightning.ts @@ -73,8 +73,17 @@ export enum CommitmentType { * channel before its maturity date. */ SCRIPT_ENFORCED_LEASE = 'SCRIPT_ENFORCED_LEASE', - /** SIMPLE_TAPROOT - TODO(roasbeef): need script enforce mirror type for the above as well? */ + /** + * SIMPLE_TAPROOT - A channel that uses musig2 for the funding output, and the new tapscript + * features where relevant. + */ SIMPLE_TAPROOT = 'SIMPLE_TAPROOT', + /** + * SIMPLE_TAPROOT_OVERLAY - Identical to the SIMPLE_TAPROOT channel type, but with extra functionality. + * This channel type also commits to additional meta data in the tapscript + * leaves for the scripts in a channel. + */ + SIMPLE_TAPROOT_OVERLAY = 'SIMPLE_TAPROOT_OVERLAY', UNRECOGNIZED = 'UNRECOGNIZED' } @@ -164,6 +173,8 @@ export enum PaymentFailureReason { FAILURE_REASON_INCORRECT_PAYMENT_DETAILS = 'FAILURE_REASON_INCORRECT_PAYMENT_DETAILS', /** FAILURE_REASON_INSUFFICIENT_BALANCE - Insufficient local balance. */ FAILURE_REASON_INSUFFICIENT_BALANCE = 'FAILURE_REASON_INSUFFICIENT_BALANCE', + /** FAILURE_REASON_CANCELED - The payment was canceled. */ + FAILURE_REASON_CANCELED = 'FAILURE_REASON_CANCELED', UNRECOGNIZED = 'UNRECOGNIZED' } @@ -729,9 +740,8 @@ export interface SendCoinsRequest { */ satPerByte: string; /** - * If set, then the amount field will be ignored, and lnd will attempt to - * send all the coins under control of the internal wallet to the specified - * address. + * If set, the amount field should be unset. It indicates lnd will send all + * wallet coins or all selected coins to the specified address. */ sendAll: boolean; /** An optional label for the transaction, limited to 500 characters. */ @@ -745,6 +755,8 @@ export interface SendCoinsRequest { spendUnconfirmed: boolean; /** The strategy to use for selecting coins. */ coinSelectionStrategy: CoinSelectionStrategy; + /** A list of selected outpoints as inputs for the transaction. */ + outpoints: OutPoint[]; } export interface SendCoinsResponse { @@ -1027,6 +1039,8 @@ export interface Channel { * the channel's operation. */ memo: string; + /** Custom channel data that might be populated in custom channels. */ + customChannelData: Uint8Array | string; } export interface ListChannelsRequest { @@ -1356,9 +1370,39 @@ export interface ChannelOpenUpdate { channelPoint: ChannelPoint | undefined; } +export interface CloseOutput { + /** + * The amount in satoshi of this close output. This amount is the final + * commitment balance of the channel and the actual amount paid out on chain + * might be smaller due to subtracted fees. + */ + amountSat: string; + /** The pkScript of the close output. */ + pkScript: Uint8Array | string; + /** Whether this output is for the local or remote node. */ + isLocal: boolean; + /** + * The TLV encoded custom channel data records for this output, which might + * be set for custom channels. + */ + customChannelData: Uint8Array | string; +} + export interface ChannelCloseUpdate { closingTxid: Uint8Array | string; success: boolean; + /** + * The local channel close output. If the local channel balance was dust to + * begin with, this output will not be set. + */ + localCloseOutput: CloseOutput | undefined; + /** + * The remote channel close output. If the remote channel balance was dust + * to begin with, this output will not be set. + */ + remoteCloseOutput: CloseOutput | undefined; + /** Any additional outputs that might be added for custom channel types. */ + additionalOutputs: CloseOutput[]; } export interface CloseChannelRequest { @@ -1991,6 +2035,8 @@ export interface PendingChannelsResponse_PendingChannel { * impacts the channel's operation. */ memo: string; + /** Custom channel data that might be populated in custom channels. */ + customChannelData: Uint8Array | string; } export interface PendingChannelsResponse_PendingOpenChannel { @@ -2212,6 +2258,11 @@ export interface ChannelBalanceResponse { pendingOpenLocalBalance: Amount | undefined; /** Sum of channels pending remote balances. */ pendingOpenRemoteBalance: Amount | undefined; + /** + * Custom channel data that might be populated if there are custom channels + * present. + */ + customChannelData: Uint8Array | string; } export interface QueryRoutesRequest { @@ -2666,6 +2717,11 @@ export interface ChanInfoRequest { * output index for the channel. */ chanId: string; + /** + * The channel point of the channel in format funding_txid:output_index. If + * chan_id is specified, this field is ignored. + */ + chanPoint: string; } export interface NetworkInfoRequest {} @@ -3006,6 +3062,17 @@ export interface Invoice { * Note: Output only, don't specify for creating an invoice. */ ampInvoiceState: { [key: string]: AMPInvoiceState }; + /** + * Signals that the invoice should include blinded paths to hide the true + * identity of the recipient. + */ + isBlinded: boolean; + /** + * Config values to use when creating blinded paths for this invoice. These + * can be used to override the defaults config values provided in by the + * global config. This field is only used if is_blinded is true. + */ + blindedPathConfig: BlindedPathConfig | undefined; } export enum Invoice_InvoiceState { @@ -3026,6 +3093,30 @@ export interface Invoice_AmpInvoiceStateEntry { value: AMPInvoiceState | undefined; } +export interface BlindedPathConfig { + /** + * The minimum number of real hops to include in a blinded path. This doesn't + * include our node, so if the minimum is 1, then the path will contain at + * minimum our node along with an introduction node hop. If it is zero then + * the shortest path will use our node as an introduction node. + */ + minNumRealHops?: number | undefined; + /** + * The number of hops to include in a blinded path. This doesn't include our + * node, so if it is 1, then the path will contain our node along with an + * introduction node or dummy node hop. If paths shorter than NumHops is + * found, then they will be padded using dummy hops. + */ + numHops?: number | undefined; + /** The maximum number of blinded paths to select and add to an invoice. */ + maxNumPaths?: number | undefined; + /** + * A list of node IDs of nodes that should not be used in any of our generated + * blinded paths. + */ + nodeOmissionList: Uint8Array | string[]; +} + /** Details of an HTLC that paid to an invoice */ export interface InvoiceHTLC { /** Short channel id over which the htlc was received. */ @@ -3050,6 +3141,11 @@ export interface InvoiceHTLC { mppTotalAmtMsat: string; /** Details relevant to AMP HTLCs, only populated if this is an AMP HTLC. */ amp: AMP | undefined; + /** + * Custom tlv records that were only sent on the p2p wire message, not in + * the onion. + */ + wireCustomRecords: { [key: string]: Uint8Array | string }; } export interface InvoiceHTLC_CustomRecordsEntry { @@ -3057,6 +3153,11 @@ export interface InvoiceHTLC_CustomRecordsEntry { value: Uint8Array | string; } +export interface InvoiceHTLC_WireCustomRecordsEntry { + key: string; + value: Uint8Array | string; +} + /** Details specific to AMP HTLCs. */ export interface AMP { /** @@ -3408,6 +3509,7 @@ export interface PayReq { paymentAddr: Uint8Array | string; numMsat: string; features: { [key: number]: Feature }; + blindedPaths: BlindedPaymentPath[]; } export interface PayReq_FeaturesEntry { diff --git a/lib/types/proto/tapd/routerrpc/router.ts b/lib/types/proto/tapd/routerrpc/router.ts index dd5904e..299d8c7 100644 --- a/lib/types/proto/tapd/routerrpc/router.ts +++ b/lib/types/proto/tapd/routerrpc/router.ts @@ -8,6 +8,7 @@ import type { Failure, HTLCAttempt, ChannelPoint, + AliasMap, Payment } from '../lightning'; @@ -66,6 +67,11 @@ export enum ResolveHoldForwardAction { SETTLE = 'SETTLE', FAIL = 'FAIL', RESUME = 'RESUME', + /** + * RESUME_MODIFIED - RESUME_MODIFIED is an action that is used to resume a hold forward HTLC + * with modifications specified during interception. + */ + RESUME_MODIFIED = 'RESUME_MODIFIED', UNRECOGNIZED = 'UNRECOGNIZED' } @@ -202,6 +208,22 @@ export interface SendPaymentRequest { * only, to 1 to optimize for reliability only or a value inbetween for a mix. */ timePref: number; + /** + * If set, the payment loop can be interrupted by manually canceling the + * payment context, even before the payment timeout is reached. Note that the + * payment may still succeed after cancellation, as in-flight attempts can + * still settle afterwards. Canceling will only prevent further attempts from + * being sent. + */ + cancelable: boolean; + /** + * An optional field that can be used to pass an arbitrary set of TLV records + * to the first hop peer of this payment. This can be used to pass application + * specific data during the payment attempt. Record types are required to be in + * the custom range >= 65536. When using REST, the values must be encoded as + * base64. + */ + firstHopCustomRecords: { [key: string]: Uint8Array | string }; } export interface SendPaymentRequest_DestCustomRecordsEntry { @@ -209,6 +231,11 @@ export interface SendPaymentRequest_DestCustomRecordsEntry { value: Uint8Array | string; } +export interface SendPaymentRequest_FirstHopCustomRecordsEntry { + key: string; + value: Uint8Array | string; +} + export interface TrackPaymentRequest { /** The hash of the payment to look up. */ paymentHash: Uint8Array | string; @@ -685,6 +712,8 @@ export interface ForwardHtlcInterceptRequest { * channel from force-closing. */ autoFailHeight: number; + /** The custom records of the peer's incoming wire message. */ + incomingHtlcWireCustomRecords: { [key: string]: Uint8Array | string }; } export interface ForwardHtlcInterceptRequest_CustomRecordsEntry { @@ -692,10 +721,17 @@ export interface ForwardHtlcInterceptRequest_CustomRecordsEntry { value: Uint8Array | string; } +export interface ForwardHtlcInterceptRequest_IncomingHtlcWireCustomRecordsEntry { + key: string; + value: Uint8Array | string; +} + /** * ForwardHtlcInterceptResponse enables the caller to resolve a previously hold * forward. The caller can choose either to: * - `Resume`: Execute the default behavior (usually forward). + * - `ResumeModified`: Execute the default behavior (usually forward) with HTLC + * field modifications. * - `Reject`: Fail the htlc backwards. * - `Settle`: Settle this htlc with a given preimage. */ @@ -726,6 +762,26 @@ export interface ForwardHtlcInterceptResponse { * default value for this field. */ failureCode: Failure_FailureCode; + /** + * incoming_amount_msat is used to set the p2p message incoming amount field + * for validating an incoming HTLC. + */ + incomingAmountMsat: string; + /** + * outgoing_amount_msat is used to set the p2p message outgoing amount field + * for resuming a HTLC. + */ + outgoingAmountMsat: string; + /** + * Outgoing htlc wire custom records is used to set the p2p message custom + * records field for resuming a HTLC. + */ + outgoingHtlcWireCustomRecords: { [key: string]: Uint8Array | string }; +} + +export interface ForwardHtlcInterceptResponse_OutgoingHtlcWireCustomRecordsEntry { + key: string; + value: Uint8Array | string; } export interface UpdateChanStatusRequest { @@ -735,6 +791,22 @@ export interface UpdateChanStatusRequest { export interface UpdateChanStatusResponse {} +export interface AddAliasesRequest { + aliasMaps: AliasMap[]; +} + +export interface AddAliasesResponse { + aliasMaps: AliasMap[]; +} + +export interface DeleteAliasesRequest { + aliasMaps: AliasMap[]; +} + +export interface DeleteAliasesResponse { + aliasMaps: AliasMap[]; +} + /** * Router is a service that offers advanced interaction with the router * subsystem of the daemon. @@ -922,6 +994,25 @@ export interface Router { updateChanStatus( request?: DeepPartial ): Promise; + /** + * XAddLocalChanAliases is an experimental API that creates a set of new + * channel SCID alias mappings. The list of successfully created mappings is + * returned. This is only a locally stored alias, and will not be communicated + * to the channel peer via any message. Therefore, routing over such an alias + * will only work if the peer also calls this same RPC on their end. If an + * alias already exists, an error is returned + */ + xAddLocalChanAliases( + request?: DeepPartial + ): Promise; + /** + * XDeleteLocalChanAliases is an experimental API that deletes a set of new + * alias mappings. The list of successfully deleted mappings is returned. The + * deletion will not be communicated to the channel peer via any message. + */ + xDeleteLocalChanAliases( + request?: DeepPartial + ): Promise; } type Builtin = diff --git a/package.json b/package.json index 26c449f..ad60103 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "./dist/index.js", "types": "./dist/index.d.ts", "config": { - "lnd_release_tag": "v0.18.2-beta", + "lnd_release_tag": "0-19-staging-rebased", "loop_release_tag": "v0.28.5-beta", "pool_release_tag": "v0.6.5-beta", "faraday_release_tag": "v0.2.13-alpha", diff --git a/protos/lnd/v0.18.2-beta/autopilotrpc/autopilot.proto b/protos/lnd/0-19-staging-rebased/autopilotrpc/autopilot.proto similarity index 100% rename from protos/lnd/v0.18.2-beta/autopilotrpc/autopilot.proto rename to protos/lnd/0-19-staging-rebased/autopilotrpc/autopilot.proto diff --git a/protos/lnd/v0.18.2-beta/chainrpc/chainnotifier.proto b/protos/lnd/0-19-staging-rebased/chainrpc/chainnotifier.proto similarity index 100% rename from protos/lnd/v0.18.2-beta/chainrpc/chainnotifier.proto rename to protos/lnd/0-19-staging-rebased/chainrpc/chainnotifier.proto diff --git a/protos/lnd/v0.18.2-beta/invoicesrpc/invoices.proto b/protos/lnd/0-19-staging-rebased/invoicesrpc/invoices.proto similarity index 75% rename from protos/lnd/v0.18.2-beta/invoicesrpc/invoices.proto rename to protos/lnd/0-19-staging-rebased/invoicesrpc/invoices.proto index 7afffba..9a2e560 100644 --- a/protos/lnd/v0.18.2-beta/invoicesrpc/invoices.proto +++ b/protos/lnd/0-19-staging-rebased/invoicesrpc/invoices.proto @@ -55,10 +55,19 @@ service Invoices { rpc SettleInvoice (SettleInvoiceMsg) returns (SettleInvoiceResp); /* - LookupInvoiceV2 attempts to look up at invoice. An invoice can be refrenced + LookupInvoiceV2 attempts to look up at invoice. An invoice can be referenced using either its payment hash, payment address, or set ID. */ rpc LookupInvoiceV2 (LookupInvoiceMsg) returns (lnrpc.Invoice); + + /* + HtlcModifier is a bidirectional streaming RPC that allows a client to + intercept and modify the HTLCs that attempt to settle the given invoice. The + server will send HTLCs of invoices to the client and the client can modify + some aspects of the HTLC in order to pass the invoice acceptance tests. + */ + rpc HtlcModifier (stream HtlcModifyResponse) + returns (stream HtlcModifyRequest); } message CancelInvoiceMsg { @@ -192,3 +201,45 @@ message LookupInvoiceMsg { LookupModifier lookup_modifier = 4; } + +// CircuitKey is a unique identifier for an HTLC. +message CircuitKey { + /// The id of the channel that the is part of this circuit. + uint64 chan_id = 1; + + /// The index of the incoming htlc in the incoming channel. + uint64 htlc_id = 2; +} + +message HtlcModifyRequest { + // The invoice the intercepted HTLC is attempting to settle. The HTLCs in + // the invoice are only HTLCs that have already been accepted or settled, + // not including the current intercepted HTLC. + lnrpc.Invoice invoice = 1; + + // The unique identifier of the HTLC of this intercepted HTLC. + CircuitKey exit_htlc_circuit_key = 2; + + // The amount in milli-satoshi that the exit HTLC is attempting to pay. + uint64 exit_htlc_amt = 3; + + // The absolute expiry height of the exit HTLC. + uint32 exit_htlc_expiry = 4; + + // The current block height. + uint32 current_height = 5; + + // The wire message custom records of the exit HTLC. + map exit_htlc_wire_custom_records = 6; +} + +message HtlcModifyResponse { + // The circuit key of the HTLC that the client wants to modify. + CircuitKey circuit_key = 1; + + // The modified amount in milli-satoshi that the exit HTLC is paying. This + // value can be different from the actual on-chain HTLC amount, in case the + // HTLC carries other valuable items, as can be the case with custom channel + // types. In order to not modify this value, the client should set it zero. + uint64 amt_paid = 2; +} diff --git a/protos/lnd/v0.18.2-beta/lightning.proto b/protos/lnd/0-19-staging-rebased/lightning.proto similarity index 97% rename from protos/lnd/v0.18.2-beta/lightning.proto rename to protos/lnd/0-19-staging-rebased/lightning.proto index 6356a6b..354e3b2 100644 --- a/protos/lnd/v0.18.2-beta/lightning.proto +++ b/protos/lnd/0-19-staging-rebased/lightning.proto @@ -1190,9 +1190,8 @@ message SendCoinsRequest { int64 sat_per_byte = 5 [deprecated = true]; /* - If set, then the amount field will be ignored, and lnd will attempt to - send all the coins under control of the internal wallet to the specified - address. + If set, the amount field should be unset. It indicates lnd will send all + wallet coins or all selected coins to the specified address. */ bool send_all = 6; @@ -1208,6 +1207,9 @@ message SendCoinsRequest { // The strategy to use for selecting coins. CoinSelectionStrategy coin_selection_strategy = 10; + + // A list of selected outpoints as inputs for the transaction. + repeated OutPoint outpoints = 11; } message SendCoinsResponse { // The transaction ID of the transaction @@ -1386,8 +1388,14 @@ enum CommitmentType { A channel that uses musig2 for the funding output, and the new tapscript features where relevant. */ - // TODO(roasbeef): need script enforce mirror type for the above as well? SIMPLE_TAPROOT = 5; + + /* + Identical to the SIMPLE_TAPROOT channel type, but with extra functionality. + This channel type also commits to additional meta data in the tapscript + leaves for the scripts in a channel. + */ + SIMPLE_TAPROOT_OVERLAY = 6; } message ChannelConstraints { @@ -1590,6 +1598,11 @@ message Channel { the channel's operation. */ string memo = 36; + + /* + Custom channel data that might be populated in custom channels. + */ + bytes custom_channel_data = 37; } message ListChannelsRequest { @@ -2026,10 +2039,38 @@ message ChannelOpenUpdate { ChannelPoint channel_point = 1; } +message CloseOutput { + // The amount in satoshi of this close output. This amount is the final + // commitment balance of the channel and the actual amount paid out on chain + // might be smaller due to subtracted fees. + int64 amount_sat = 1; + + // The pkScript of the close output. + bytes pk_script = 2; + + // Whether this output is for the local or remote node. + bool is_local = 3; + + // The TLV encoded custom channel data records for this output, which might + // be set for custom channels. + bytes custom_channel_data = 4; +} + message ChannelCloseUpdate { bytes closing_txid = 1; bool success = 2; + + // The local channel close output. If the local channel balance was dust to + // begin with, this output will not be set. + CloseOutput local_close_output = 3; + + // The remote channel close output. If the remote channel balance was dust + // to begin with, this output will not be set. + CloseOutput remote_close_output = 4; + + // Any additional outputs that might be added for custom channel types. + repeated CloseOutput additional_outputs = 5; } message CloseChannelRequest { @@ -2707,6 +2748,11 @@ message PendingChannelsResponse { impacts the channel's operation. */ string memo = 13; + + /* + Custom channel data that might be populated in custom channels. + */ + bytes custom_channel_data = 34; } message PendingOpenChannel { @@ -2966,6 +3012,12 @@ message ChannelBalanceResponse { // Sum of channels pending remote balances. Amount pending_open_remote_balance = 8; + + /* + Custom channel data that might be populated if there are custom channels + present. + */ + bytes custom_channel_data = 9; } message QueryRoutesRequest { @@ -3443,6 +3495,10 @@ message ChanInfoRequest { output index for the channel. */ uint64 chan_id = 1 [jstype = JS_STRING]; + + // The channel point of the channel in format funding_txid:output_index. If + // chan_id is specified, this field is ignored. + string chan_point = 2; } message NetworkInfoRequest { @@ -3832,6 +3888,48 @@ message Invoice { Note: Output only, don't specify for creating an invoice. */ map amp_invoice_state = 28; + + /* + Signals that the invoice should include blinded paths to hide the true + identity of the recipient. + */ + bool is_blinded = 29; + + /* + Config values to use when creating blinded paths for this invoice. These + can be used to override the defaults config values provided in by the + global config. This field is only used if is_blinded is true. + */ + BlindedPathConfig blinded_path_config = 30; +} + +message BlindedPathConfig { + /* + The minimum number of real hops to include in a blinded path. This doesn't + include our node, so if the minimum is 1, then the path will contain at + minimum our node along with an introduction node hop. If it is zero then + the shortest path will use our node as an introduction node. + */ + optional uint32 min_num_real_hops = 1; + + /* + The number of hops to include in a blinded path. This doesn't include our + node, so if it is 1, then the path will contain our node along with an + introduction node or dummy node hop. If paths shorter than NumHops is + found, then they will be padded using dummy hops. + */ + optional uint32 num_hops = 2; + + /* + The maximum number of blinded paths to select and add to an invoice. + */ + optional uint32 max_num_paths = 3; + + /* + A list of node IDs of nodes that should not be used in any of our generated + blinded paths. + */ + repeated bytes node_omission_list = 4; } enum InvoiceHTLCState { @@ -3874,6 +3972,10 @@ message InvoiceHTLC { // Details relevant to AMP HTLCs, only populated if this is an AMP HTLC. AMP amp = 11; + + // Custom tlv records that were only sent on the p2p wire message, not in + // the onion. + map wire_custom_records = 12; } // Details specific to AMP HTLCs. @@ -4040,6 +4142,11 @@ enum PaymentFailureReason { Insufficient local balance. */ FAILURE_REASON_INSUFFICIENT_BALANCE = 5; + + /* + The payment was canceled. + */ + FAILURE_REASON_CANCELED = 6; } message Payment { @@ -4285,6 +4392,7 @@ message PayReq { bytes payment_addr = 11; int64 num_msat = 12; map features = 13; + repeated BlindedPaymentPath blinded_paths = 14; } enum FeatureBit { diff --git a/protos/lnd/v0.18.2-beta/routerrpc/router.proto b/protos/lnd/0-19-staging-rebased/routerrpc/router.proto similarity index 91% rename from protos/lnd/v0.18.2-beta/routerrpc/router.proto rename to protos/lnd/0-19-staging-rebased/routerrpc/router.proto index a909828..1786b46 100644 --- a/protos/lnd/v0.18.2-beta/routerrpc/router.proto +++ b/protos/lnd/0-19-staging-rebased/routerrpc/router.proto @@ -176,6 +176,24 @@ service Router { */ rpc UpdateChanStatus (UpdateChanStatusRequest) returns (UpdateChanStatusResponse); + + /* + XAddLocalChanAliases is an experimental API that creates a set of new + channel SCID alias mappings. The list of successfully created mappings is + returned. This is only a locally stored alias, and will not be communicated + to the channel peer via any message. Therefore, routing over such an alias + will only work if the peer also calls this same RPC on their end. If an + alias already exists, an error is returned + */ + rpc XAddLocalChanAliases (AddAliasesRequest) returns (AddAliasesResponse); + + /* + XDeleteLocalChanAliases is an experimental API that deletes a set of new + alias mappings. The list of successfully deleted mappings is returned. The + deletion will not be communicated to the channel peer via any message. + */ + rpc XDeleteLocalChanAliases (DeleteAliasesRequest) + returns (DeleteAliasesResponse); } message SendPaymentRequest { @@ -330,6 +348,24 @@ message SendPaymentRequest { only, to 1 to optimize for reliability only or a value inbetween for a mix. */ double time_pref = 23; + + /* + If set, the payment loop can be interrupted by manually canceling the + payment context, even before the payment timeout is reached. Note that the + payment may still succeed after cancellation, as in-flight attempts can + still settle afterwards. Canceling will only prevent further attempts from + being sent. + */ + bool cancelable = 24; + + /* + An optional field that can be used to pass an arbitrary set of TLV records + to the first hop peer of this payment. This can be used to pass application + specific data during the payment attempt. Record types are required to be in + the custom range >= 65536. When using REST, the values must be encoded as + base64. + */ + map first_hop_custom_records = 25; } message TrackPaymentRequest { @@ -954,12 +990,17 @@ message ForwardHtlcInterceptRequest { // The block height at which this htlc will be auto-failed to prevent the // channel from force-closing. int32 auto_fail_height = 10; + + // The custom records of the peer's incoming wire message. + map incoming_htlc_wire_custom_records = 11; } /** ForwardHtlcInterceptResponse enables the caller to resolve a previously hold forward. The caller can choose either to: - `Resume`: Execute the default behavior (usually forward). +- `ResumeModified`: Execute the default behavior (usually forward) with HTLC + field modifications. - `Reject`: Fail the htlc backwards. - `Settle`: Settle this htlc with a given preimage. */ @@ -990,12 +1031,28 @@ message ForwardHtlcInterceptResponse { // For backwards-compatibility reasons, TEMPORARY_CHANNEL_FAILURE is the // default value for this field. lnrpc.Failure.FailureCode failure_code = 5; + + // incoming_amount_msat is used to set the p2p message incoming amount field + // for validating an incoming HTLC. + uint64 incoming_amount_msat = 6; + + // outgoing_amount_msat is used to set the p2p message outgoing amount field + // for resuming a HTLC. + uint64 outgoing_amount_msat = 7; + + // Outgoing htlc wire custom records is used to set the p2p message custom + // records field for resuming a HTLC. + map outgoing_htlc_wire_custom_records = 8; } enum ResolveHoldForwardAction { SETTLE = 0; FAIL = 1; RESUME = 2; + + // RESUME_MODIFIED is an action that is used to resume a hold forward HTLC + // with modifications specified during interception. + RESUME_MODIFIED = 3; } message UpdateChanStatusRequest { @@ -1012,3 +1069,19 @@ enum ChanStatusAction { message UpdateChanStatusResponse { } + +message AddAliasesRequest { + repeated lnrpc.AliasMap alias_maps = 1; +} + +message AddAliasesResponse { + repeated lnrpc.AliasMap alias_maps = 1; +} + +message DeleteAliasesRequest { + repeated lnrpc.AliasMap alias_maps = 1; +} + +message DeleteAliasesResponse { + repeated lnrpc.AliasMap alias_maps = 1; +} \ No newline at end of file diff --git a/protos/lnd/v0.18.2-beta/signrpc/signer.proto b/protos/lnd/0-19-staging-rebased/signrpc/signer.proto similarity index 100% rename from protos/lnd/v0.18.2-beta/signrpc/signer.proto rename to protos/lnd/0-19-staging-rebased/signrpc/signer.proto diff --git a/protos/lnd/v0.18.2-beta/walletrpc/walletkit.proto b/protos/lnd/0-19-staging-rebased/walletrpc/walletkit.proto similarity index 96% rename from protos/lnd/v0.18.2-beta/walletrpc/walletkit.proto rename to protos/lnd/0-19-staging-rebased/walletrpc/walletkit.proto index b861803..eac7a73 100644 --- a/protos/lnd/v0.18.2-beta/walletrpc/walletkit.proto +++ b/protos/lnd/0-19-staging-rebased/walletrpc/walletkit.proto @@ -273,6 +273,13 @@ service WalletKit { */ rpc BumpFee (BumpFeeRequest) returns (BumpFeeResponse); + /* lncli: `wallet bumpforceclosefee` + BumpForceCloseFee is an endpoint that allows users to bump the fee of a + channel force close. This only works for channels with option_anchors. + */ + rpc BumpForceCloseFee (BumpForceCloseFeeRequest) + returns (BumpForceCloseFeeResponse); + /* lncli: `wallet listsweeps` ListSweeps returns a list of the sweep transactions our node has produced. Note that these sweeps may not be confirmed yet, as we record sweeps on @@ -839,6 +846,9 @@ message EstimateFeeResponse { confirmation target in the request. */ int64 sat_per_kw = 1; + + // The current minimum relay fee based on our chain backend in sat/kw. + int64 min_relay_fee_sat_per_kw = 2; } enum WitnessType { @@ -1223,6 +1233,46 @@ message BumpFeeResponse { string status = 1; } +message BumpForceCloseFeeRequest { + // The channel point which force close transaction we are attempting to + // bump the fee rate for. + lnrpc.ChannelPoint chan_point = 1; + + // Optional. The deadline delta in number of blocks that the anchor output + // should be spent within to bump the closing transaction. + uint32 deadline_delta = 2; + + /* + Optional. The starting fee rate, expressed in sat/vbyte. This value will be + used by the sweeper's fee function as its starting fee rate. When not set, + the sweeper will use the estimated fee rate using the target_conf as the + starting fee rate. + */ + uint64 starting_feerate = 3; + + /* + Optional. Whether this cpfp transaction will be triggered immediately. When + set to true, the sweeper will consider all currently registered sweeps and + trigger new batch transactions including the sweeping of the anchor output + related to the selected force close transaction. + */ + bool immediate = 4; + + /* + Optional. The max amount in sats that can be used as the fees. For already + registered anchor outputs if not set explicitly the old value will be used. + For channel force closes which have no HTLCs in their commitment transaction + this value has to be set to an appropriate amount to pay for the cpfp + transaction of the force closed channel otherwise the fee bumping will fail. + */ + uint64 budget = 5; +} + +message BumpForceCloseFeeResponse { + // The status of the force close fee bump operation. + string status = 1; +} + message ListSweepsRequest { /* Retrieve the full sweep transaction details. If false, only the sweep txids diff --git a/protos/lnd/v0.18.2-beta/walletunlocker.proto b/protos/lnd/0-19-staging-rebased/walletunlocker.proto similarity index 100% rename from protos/lnd/v0.18.2-beta/walletunlocker.proto rename to protos/lnd/0-19-staging-rebased/walletunlocker.proto diff --git a/protos/lnd/v0.18.2-beta/watchtowerrpc/watchtower.proto b/protos/lnd/0-19-staging-rebased/watchtowerrpc/watchtower.proto similarity index 100% rename from protos/lnd/v0.18.2-beta/watchtowerrpc/watchtower.proto rename to protos/lnd/0-19-staging-rebased/watchtowerrpc/watchtower.proto diff --git a/protos/lnd/v0.18.2-beta/wtclientrpc/wtclient.proto b/protos/lnd/0-19-staging-rebased/wtclientrpc/wtclient.proto similarity index 100% rename from protos/lnd/v0.18.2-beta/wtclientrpc/wtclient.proto rename to protos/lnd/0-19-staging-rebased/wtclientrpc/wtclient.proto diff --git a/protos/tapd/master/assetwalletrpc/assetwallet.proto b/protos/tapd/master/assetwalletrpc/assetwallet.proto index 89138a8..0494d58 100644 --- a/protos/tapd/master/assetwalletrpc/assetwallet.proto +++ b/protos/tapd/master/assetwalletrpc/assetwallet.proto @@ -398,6 +398,11 @@ message ProveAssetOwnershipRequest { bytes script_key = 2; taprpc.OutPoint outpoint = 3; + + // An optional 32-byte challenge that may be used to bind the generated + // proof. This challenge needs to be also presented on the + // VerifyAssetOwnership RPC in order to check the proof against it. + bytes challenge = 4; } message ProveAssetOwnershipResponse { @@ -406,6 +411,11 @@ message ProveAssetOwnershipResponse { message VerifyAssetOwnershipRequest { bytes proof_with_witness = 1; + + // An optional 32-byte challenge that may be used to check the ownership + // proof against. This challenge must match the one that the prover used + // on the ProveAssetOwnership RPC. + bytes challenge = 2; } message VerifyAssetOwnershipResponse {