diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 41fc56d9..444f2fb9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -12,7 +12,7 @@ env: # If you change this value, please change it in the following files as well: # /Dockerfile # /dev.Dockerfile - GO_VERSION: 1.18 + GO_VERSION: 1.19 jobs: ######################## diff --git a/Dockerfile b/Dockerfile index ff26150b..dd823f68 100644 --- a/Dockerfile +++ b/Dockerfile @@ -35,7 +35,7 @@ RUN apk add --no-cache --update alpine-sdk \ # If you change this value, please also update: # /dev.Dockerfile # /.github/workflows/main.yml -FROM golang:1.18-alpine as golangbuilder +FROM golang:1.19-alpine as golangbuilder # Instead of checking out from git again, we just copy the whole working # directory of the previous stage that includes the generated static assets. diff --git a/Makefile b/Makefile index 9bc20e96..81060b5a 100644 --- a/Makefile +++ b/Makefile @@ -77,7 +77,7 @@ endif DOCKER_TOOLS = docker run -v $$(pwd):/build litd-tools -ITEST_TAGS := rpctest itest $(LND_RELEASE_TAGS) +ITEST_TAGS := integration itest $(LND_RELEASE_TAGS) ITEST_LDFLAGS := $(call make_ldflags, $(ITEST_TAGS)) GREEN := "\\033[0;32m" diff --git a/accounts/service.go b/accounts/service.go index 7560e149..3e20acab 100644 --- a/accounts/service.go +++ b/accounts/service.go @@ -8,7 +8,7 @@ import ( "github.com/btcsuite/btcd/chaincfg" "github.com/lightninglabs/lndclient" - "github.com/lightningnetwork/lnd/channeldb" + invpkg "github.com/lightningnetwork/lnd/invoices" "github.com/lightningnetwork/lnd/lnrpc" "github.com/lightningnetwork/lnd/lntypes" "github.com/lightningnetwork/lnd/lnwire" @@ -381,7 +381,7 @@ func (s *InterceptorService) invoiceUpdate(invoice *lndclient.Invoice) error { // The invoice hasn't been settled yet, there is nothing for us to do. // If it eventually settles, we'll be called again. - if invoice.State != channeldb.ContractSettled { + if invoice.State != invpkg.ContractSettled { return nil } diff --git a/accounts/service_test.go b/accounts/service_test.go index 5a8eb620..7a259ce9 100644 --- a/accounts/service_test.go +++ b/accounts/service_test.go @@ -7,7 +7,7 @@ import ( "time" "github.com/lightninglabs/lndclient" - "github.com/lightningnetwork/lnd/channeldb" + invpkg "github.com/lightningnetwork/lnd/invoices" "github.com/lightningnetwork/lnd/lnrpc" "github.com/lightningnetwork/lnd/lntypes" "github.com/stretchr/testify/require" @@ -378,7 +378,7 @@ func TestAccountService(t *testing.T) { SettleIndex: 12, Hash: testHash, AmountPaid: 777, - State: channeldb.ContractSettled, + State: invpkg.ContractSettled, } // Make sure the amount paid is eventually credited. diff --git a/app/src/types/generated/lnd_pb.d.ts b/app/src/types/generated/lnd_pb.d.ts index cd298b2e..2b378b61 100644 --- a/app/src/types/generated/lnd_pb.d.ts +++ b/app/src/types/generated/lnd_pb.d.ts @@ -3,6 +3,54 @@ import * as jspb from "google-protobuf"; +export class LookupHtlcResolutionRequest extends jspb.Message { + getChanId(): string; + setChanId(value: string): void; + + getHtlcIndex(): string; + setHtlcIndex(value: string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): LookupHtlcResolutionRequest.AsObject; + static toObject(includeInstance: boolean, msg: LookupHtlcResolutionRequest): LookupHtlcResolutionRequest.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: LookupHtlcResolutionRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): LookupHtlcResolutionRequest; + static deserializeBinaryFromReader(message: LookupHtlcResolutionRequest, reader: jspb.BinaryReader): LookupHtlcResolutionRequest; +} + +export namespace LookupHtlcResolutionRequest { + export type AsObject = { + chanId: string, + htlcIndex: string, + } +} + +export class LookupHtlcResolutionResponse extends jspb.Message { + getSettled(): boolean; + setSettled(value: boolean): void; + + getOffchain(): boolean; + setOffchain(value: boolean): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): LookupHtlcResolutionResponse.AsObject; + static toObject(includeInstance: boolean, msg: LookupHtlcResolutionResponse): LookupHtlcResolutionResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: LookupHtlcResolutionResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): LookupHtlcResolutionResponse; + static deserializeBinaryFromReader(message: LookupHtlcResolutionResponse, reader: jspb.BinaryReader): LookupHtlcResolutionResponse; +} + +export namespace LookupHtlcResolutionResponse { + export type AsObject = { + settled: boolean, + offchain: boolean, + } +} + export class SubscribeCustomMessagesRequest extends jspb.Message { serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): SubscribeCustomMessagesRequest.AsObject; @@ -1431,6 +1479,9 @@ export class Channel extends jspb.Message { getZeroConfConfirmedScid(): string; setZeroConfConfirmedScid(value: string): void; + getPeerAlias(): string; + setPeerAlias(value: string): void; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): Channel.AsObject; static toObject(includeInstance: boolean, msg: Channel): Channel.AsObject; @@ -1476,6 +1527,7 @@ export namespace Channel { aliasScidsList: Array, zeroConf: boolean, zeroConfConfirmedScid: string, + peerAlias: string, } } @@ -1497,6 +1549,9 @@ export class ListChannelsRequest extends jspb.Message { getPeer_asB64(): string; setPeer(value: Uint8Array | string): void; + getPeerAliasLookup(): boolean; + setPeerAliasLookup(value: boolean): void; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): ListChannelsRequest.AsObject; static toObject(includeInstance: boolean, msg: ListChannelsRequest): ListChannelsRequest.AsObject; @@ -1514,6 +1569,7 @@ export namespace ListChannelsRequest { publicOnly: boolean, privateOnly: boolean, peer: Uint8Array | string, + peerAliasLookup: boolean, } } @@ -2068,6 +2124,9 @@ export class GetInfoResponse extends jspb.Message { getRequireHtlcInterceptor(): boolean; setRequireHtlcInterceptor(value: boolean): void; + getStoreFinalHtlcResolutions(): boolean; + setStoreFinalHtlcResolutions(value: boolean): void; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): GetInfoResponse.AsObject; static toObject(includeInstance: boolean, msg: GetInfoResponse): GetInfoResponse.AsObject; @@ -2099,6 +2158,7 @@ export namespace GetInfoResponse { urisList: Array, featuresMap: Array<[number, Feature.AsObject]>, requireHtlcInterceptor: boolean, + storeFinalHtlcResolutions: boolean, } } @@ -2570,6 +2630,21 @@ export class OpenChannelRequest extends jspb.Message { getScidAlias(): boolean; setScidAlias(value: boolean): void; + getBaseFee(): string; + setBaseFee(value: string): void; + + getFeeRate(): string; + setFeeRate(value: string): void; + + getUseBaseFee(): boolean; + setUseBaseFee(value: boolean): void; + + getUseFeeRate(): boolean; + setUseFeeRate(value: boolean): void; + + getRemoteChanReserveSat(): string; + setRemoteChanReserveSat(value: string): void; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): OpenChannelRequest.AsObject; static toObject(includeInstance: boolean, msg: OpenChannelRequest): OpenChannelRequest.AsObject; @@ -2602,6 +2677,11 @@ export namespace OpenChannelRequest { commitmentType: CommitmentTypeMap[keyof CommitmentTypeMap], zeroConf: boolean, scidAlias: boolean, + baseFee: string, + feeRate: string, + useBaseFee: boolean, + useFeeRate: boolean, + remoteChanReserveSat: string, } } @@ -4036,6 +4116,8 @@ export class LightningNode extends jspb.Message { getFeaturesMap(): jspb.Map; clearFeaturesMap(): void; + getCustomRecordsMap(): jspb.Map; + clearCustomRecordsMap(): void; serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): LightningNode.AsObject; static toObject(includeInstance: boolean, msg: LightningNode): LightningNode.AsObject; @@ -4054,6 +4136,7 @@ export namespace LightningNode { addressesList: Array, color: string, featuresMap: Array<[number, Feature.AsObject]>, + customRecordsMap: Array<[number, Uint8Array | string]>, } } @@ -4103,6 +4186,8 @@ export class RoutingPolicy extends jspb.Message { getLastUpdate(): number; setLastUpdate(value: number): void; + getCustomRecordsMap(): jspb.Map; + clearCustomRecordsMap(): void; serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): RoutingPolicy.AsObject; static toObject(includeInstance: boolean, msg: RoutingPolicy): RoutingPolicy.AsObject; @@ -4122,6 +4207,7 @@ export namespace RoutingPolicy { disabled: boolean, maxHtlcMsat: string, lastUpdate: number, + customRecordsMap: Array<[number, Uint8Array | string]>, } } @@ -4154,6 +4240,8 @@ export class ChannelEdge extends jspb.Message { getNode2Policy(): RoutingPolicy | undefined; setNode2Policy(value?: RoutingPolicy): void; + getCustomRecordsMap(): jspb.Map; + clearCustomRecordsMap(): void; serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): ChannelEdge.AsObject; static toObject(includeInstance: boolean, msg: ChannelEdge): ChannelEdge.AsObject; @@ -4174,6 +4262,7 @@ export namespace ChannelEdge { capacity: string, node1Policy?: RoutingPolicy.AsObject, node2Policy?: RoutingPolicy.AsObject, + customRecordsMap: Array<[number, Uint8Array | string]>, } } @@ -5030,6 +5119,12 @@ export class ListInvoiceRequest extends jspb.Message { getReversed(): boolean; setReversed(value: boolean): void; + getCreationDateStart(): string; + setCreationDateStart(value: string): void; + + getCreationDateEnd(): string; + setCreationDateEnd(value: string): void; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): ListInvoiceRequest.AsObject; static toObject(includeInstance: boolean, msg: ListInvoiceRequest): ListInvoiceRequest.AsObject; @@ -5046,6 +5141,8 @@ export namespace ListInvoiceRequest { indexOffset: string, numMaxInvoices: string, reversed: boolean, + creationDateStart: string, + creationDateEnd: string, } } @@ -5264,6 +5361,12 @@ export class ListPaymentsRequest extends jspb.Message { getCountTotalPayments(): boolean; setCountTotalPayments(value: boolean): void; + getCreationDateStart(): string; + setCreationDateStart(value: string): void; + + getCreationDateEnd(): string; + setCreationDateEnd(value: string): void; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): ListPaymentsRequest.AsObject; static toObject(includeInstance: boolean, msg: ListPaymentsRequest): ListPaymentsRequest.AsObject; @@ -5281,6 +5384,8 @@ export namespace ListPaymentsRequest { maxPayments: string, reversed: boolean, countTotalPayments: boolean, + creationDateStart: string, + creationDateEnd: string, } } @@ -5823,6 +5928,9 @@ export class ForwardingHistoryRequest extends jspb.Message { getNumMaxEvents(): number; setNumMaxEvents(value: number): void; + getPeerAliasLookup(): boolean; + setPeerAliasLookup(value: boolean): void; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): ForwardingHistoryRequest.AsObject; static toObject(includeInstance: boolean, msg: ForwardingHistoryRequest): ForwardingHistoryRequest.AsObject; @@ -5839,6 +5947,7 @@ export namespace ForwardingHistoryRequest { endTime: string, indexOffset: number, numMaxEvents: number, + peerAliasLookup: boolean, } } @@ -5873,6 +5982,12 @@ export class ForwardingEvent extends jspb.Message { getTimestampNs(): string; setTimestampNs(value: string): void; + getPeerAliasIn(): string; + setPeerAliasIn(value: string): void; + + getPeerAliasOut(): string; + setPeerAliasOut(value: string): void; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): ForwardingEvent.AsObject; static toObject(includeInstance: boolean, msg: ForwardingEvent): ForwardingEvent.AsObject; @@ -5895,6 +6010,8 @@ export namespace ForwardingEvent { amtInMsat: string, amtOutMsat: string, timestampNs: string, + peerAliasIn: string, + peerAliasOut: string, } } diff --git a/app/src/types/generated/lnd_pb.js b/app/src/types/generated/lnd_pb.js index dbdb5274..38f3711b 100644 --- a/app/src/types/generated/lnd_pb.js +++ b/app/src/types/generated/lnd_pb.js @@ -139,6 +139,8 @@ goog.exportSymbol('proto.lnrpc.ListPermissionsRequest', null, global); goog.exportSymbol('proto.lnrpc.ListPermissionsResponse', null, global); goog.exportSymbol('proto.lnrpc.ListUnspentRequest', null, global); goog.exportSymbol('proto.lnrpc.ListUnspentResponse', null, global); +goog.exportSymbol('proto.lnrpc.LookupHtlcResolutionRequest', null, global); +goog.exportSymbol('proto.lnrpc.LookupHtlcResolutionResponse', null, global); goog.exportSymbol('proto.lnrpc.MPPRecord', null, global); goog.exportSymbol('proto.lnrpc.MacaroonId', null, global); goog.exportSymbol('proto.lnrpc.MacaroonPermission', null, global); @@ -231,6 +233,348 @@ goog.exportSymbol('proto.lnrpc.WalletAccountBalance', null, global); goog.exportSymbol('proto.lnrpc.WalletBalanceRequest', null, global); goog.exportSymbol('proto.lnrpc.WalletBalanceResponse', null, global); +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.lnrpc.LookupHtlcResolutionRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.lnrpc.LookupHtlcResolutionRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + proto.lnrpc.LookupHtlcResolutionRequest.displayName = 'proto.lnrpc.LookupHtlcResolutionRequest'; +} + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto suitable for use in Soy templates. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS. + * @param {boolean=} opt_includeInstance Whether to include the JSPB instance + * for transitional soy proto support: http://goto/soy-param-migration + * @return {!Object} + */ +proto.lnrpc.LookupHtlcResolutionRequest.prototype.toObject = function(opt_includeInstance) { + return proto.lnrpc.LookupHtlcResolutionRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Whether to include the JSPB + * instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.lnrpc.LookupHtlcResolutionRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.lnrpc.LookupHtlcResolutionRequest.toObject = function(includeInstance, msg) { + var f, obj = { + chanId: jspb.Message.getFieldWithDefault(msg, 1, "0"), + htlcIndex: jspb.Message.getFieldWithDefault(msg, 2, "0") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.lnrpc.LookupHtlcResolutionRequest} + */ +proto.lnrpc.LookupHtlcResolutionRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.lnrpc.LookupHtlcResolutionRequest; + return proto.lnrpc.LookupHtlcResolutionRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.lnrpc.LookupHtlcResolutionRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.lnrpc.LookupHtlcResolutionRequest} + */ +proto.lnrpc.LookupHtlcResolutionRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readUint64String()); + msg.setChanId(value); + break; + case 2: + var value = /** @type {string} */ (reader.readUint64String()); + msg.setHtlcIndex(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.lnrpc.LookupHtlcResolutionRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.lnrpc.LookupHtlcResolutionRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.lnrpc.LookupHtlcResolutionRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.lnrpc.LookupHtlcResolutionRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getChanId(); + if (parseInt(f, 10) !== 0) { + writer.writeUint64String( + 1, + f + ); + } + f = message.getHtlcIndex(); + if (parseInt(f, 10) !== 0) { + writer.writeUint64String( + 2, + f + ); + } +}; + + +/** + * optional uint64 chan_id = 1; + * @return {string} + */ +proto.lnrpc.LookupHtlcResolutionRequest.prototype.getChanId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "0")); +}; + + +/** @param {string} value */ +proto.lnrpc.LookupHtlcResolutionRequest.prototype.setChanId = function(value) { + jspb.Message.setProto3StringIntField(this, 1, value); +}; + + +/** + * optional uint64 htlc_index = 2; + * @return {string} + */ +proto.lnrpc.LookupHtlcResolutionRequest.prototype.getHtlcIndex = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "0")); +}; + + +/** @param {string} value */ +proto.lnrpc.LookupHtlcResolutionRequest.prototype.setHtlcIndex = function(value) { + jspb.Message.setProto3StringIntField(this, 2, value); +}; + + + +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.lnrpc.LookupHtlcResolutionResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.lnrpc.LookupHtlcResolutionResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + proto.lnrpc.LookupHtlcResolutionResponse.displayName = 'proto.lnrpc.LookupHtlcResolutionResponse'; +} + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto suitable for use in Soy templates. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS. + * @param {boolean=} opt_includeInstance Whether to include the JSPB instance + * for transitional soy proto support: http://goto/soy-param-migration + * @return {!Object} + */ +proto.lnrpc.LookupHtlcResolutionResponse.prototype.toObject = function(opt_includeInstance) { + return proto.lnrpc.LookupHtlcResolutionResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Whether to include the JSPB + * instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.lnrpc.LookupHtlcResolutionResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.lnrpc.LookupHtlcResolutionResponse.toObject = function(includeInstance, msg) { + var f, obj = { + settled: jspb.Message.getFieldWithDefault(msg, 1, false), + offchain: jspb.Message.getFieldWithDefault(msg, 2, false) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.lnrpc.LookupHtlcResolutionResponse} + */ +proto.lnrpc.LookupHtlcResolutionResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.lnrpc.LookupHtlcResolutionResponse; + return proto.lnrpc.LookupHtlcResolutionResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.lnrpc.LookupHtlcResolutionResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.lnrpc.LookupHtlcResolutionResponse} + */ +proto.lnrpc.LookupHtlcResolutionResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setSettled(value); + break; + case 2: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setOffchain(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.lnrpc.LookupHtlcResolutionResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.lnrpc.LookupHtlcResolutionResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.lnrpc.LookupHtlcResolutionResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.lnrpc.LookupHtlcResolutionResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getSettled(); + if (f) { + writer.writeBool( + 1, + f + ); + } + f = message.getOffchain(); + if (f) { + writer.writeBool( + 2, + f + ); + } +}; + + +/** + * optional bool settled = 1; + * Note that Boolean fields may be set to 0/1 when serialized from a Java server. + * You should avoid comparisons like {@code val === true/false} in those cases. + * @return {boolean} + */ +proto.lnrpc.LookupHtlcResolutionResponse.prototype.getSettled = function() { + return /** @type {boolean} */ (jspb.Message.getFieldWithDefault(this, 1, false)); +}; + + +/** @param {boolean} value */ +proto.lnrpc.LookupHtlcResolutionResponse.prototype.setSettled = function(value) { + jspb.Message.setProto3BooleanField(this, 1, value); +}; + + +/** + * optional bool offchain = 2; + * Note that Boolean fields may be set to 0/1 when serialized from a Java server. + * You should avoid comparisons like {@code val === true/false} in those cases. + * @return {boolean} + */ +proto.lnrpc.LookupHtlcResolutionResponse.prototype.getOffchain = function() { + return /** @type {boolean} */ (jspb.Message.getFieldWithDefault(this, 2, false)); +}; + + +/** @param {boolean} value */ +proto.lnrpc.LookupHtlcResolutionResponse.prototype.setOffchain = function(value) { + jspb.Message.setProto3BooleanField(this, 2, value); +}; + + + /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -9793,7 +10137,8 @@ proto.lnrpc.Channel.toObject = function(includeInstance, msg) { remoteConstraints: (f = msg.getRemoteConstraints()) && proto.lnrpc.ChannelConstraints.toObject(includeInstance, f), aliasScidsList: jspb.Message.getRepeatedField(msg, 31), zeroConf: jspb.Message.getFieldWithDefault(msg, 32, false), - zeroConfConfirmedScid: jspb.Message.getFieldWithDefault(msg, 33, "0") + zeroConfConfirmedScid: jspb.Message.getFieldWithDefault(msg, 33, "0"), + peerAlias: jspb.Message.getFieldWithDefault(msg, 34, "") }; if (includeInstance) { @@ -9965,6 +10310,10 @@ proto.lnrpc.Channel.deserializeBinaryFromReader = function(msg, reader) { var value = /** @type {string} */ (reader.readUint64String()); msg.setZeroConfConfirmedScid(value); break; + case 34: + var value = /** @type {string} */ (reader.readString()); + msg.setPeerAlias(value); + break; default: reader.skipField(); break; @@ -10228,6 +10577,13 @@ proto.lnrpc.Channel.serializeBinaryToWriter = function(message, writer) { f ); } + f = message.getPeerAlias(); + if (f.length > 0) { + writer.writeString( + 34, + f + ); + } }; @@ -10796,6 +11152,21 @@ proto.lnrpc.Channel.prototype.setZeroConfConfirmedScid = function(value) { }; +/** + * optional string peer_alias = 34; + * @return {string} + */ +proto.lnrpc.Channel.prototype.getPeerAlias = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 34, "")); +}; + + +/** @param {string} value */ +proto.lnrpc.Channel.prototype.setPeerAlias = function(value) { + jspb.Message.setProto3StringField(this, 34, value); +}; + + /** * Generated by JsPbCodeGenerator. @@ -10847,7 +11218,8 @@ proto.lnrpc.ListChannelsRequest.toObject = function(includeInstance, msg) { inactiveOnly: jspb.Message.getFieldWithDefault(msg, 2, false), publicOnly: jspb.Message.getFieldWithDefault(msg, 3, false), privateOnly: jspb.Message.getFieldWithDefault(msg, 4, false), - peer: msg.getPeer_asB64() + peer: msg.getPeer_asB64(), + peerAliasLookup: jspb.Message.getFieldWithDefault(msg, 6, false) }; if (includeInstance) { @@ -10904,6 +11276,10 @@ proto.lnrpc.ListChannelsRequest.deserializeBinaryFromReader = function(msg, read var value = /** @type {!Uint8Array} */ (reader.readBytes()); msg.setPeer(value); break; + case 6: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setPeerAliasLookup(value); + break; default: reader.skipField(); break; @@ -10968,6 +11344,13 @@ proto.lnrpc.ListChannelsRequest.serializeBinaryToWriter = function(message, writ f ); } + f = message.getPeerAliasLookup(); + if (f) { + writer.writeBool( + 6, + f + ); + } }; @@ -11078,6 +11461,23 @@ proto.lnrpc.ListChannelsRequest.prototype.setPeer = function(value) { }; +/** + * optional bool peer_alias_lookup = 6; + * Note that Boolean fields may be set to 0/1 when serialized from a Java server. + * You should avoid comparisons like {@code val === true/false} in those cases. + * @return {boolean} + */ +proto.lnrpc.ListChannelsRequest.prototype.getPeerAliasLookup = function() { + return /** @type {boolean} */ (jspb.Message.getFieldWithDefault(this, 6, false)); +}; + + +/** @param {boolean} value */ +proto.lnrpc.ListChannelsRequest.prototype.setPeerAliasLookup = function(value) { + jspb.Message.setProto3BooleanField(this, 6, value); +}; + + /** * Generated by JsPbCodeGenerator. @@ -14536,7 +14936,8 @@ proto.lnrpc.GetInfoResponse.toObject = function(includeInstance, msg) { proto.lnrpc.Chain.toObject, includeInstance), urisList: jspb.Message.getRepeatedField(msg, 12), featuresMap: (f = msg.getFeaturesMap()) ? f.toObject(includeInstance, proto.lnrpc.Feature.toObject) : [], - requireHtlcInterceptor: jspb.Message.getFieldWithDefault(msg, 21, false) + requireHtlcInterceptor: jspb.Message.getFieldWithDefault(msg, 21, false), + storeFinalHtlcResolutions: jspb.Message.getFieldWithDefault(msg, 22, false) }; if (includeInstance) { @@ -14652,6 +15053,10 @@ proto.lnrpc.GetInfoResponse.deserializeBinaryFromReader = function(msg, reader) var value = /** @type {boolean} */ (reader.readBool()); msg.setRequireHtlcInterceptor(value); break; + case 22: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setStoreFinalHtlcResolutions(value); + break; default: reader.skipField(); break; @@ -14812,6 +15217,13 @@ proto.lnrpc.GetInfoResponse.serializeBinaryToWriter = function(message, writer) f ); } + f = message.getStoreFinalHtlcResolutions(); + if (f) { + writer.writeBool( + 22, + f + ); + } }; @@ -15141,6 +15553,23 @@ proto.lnrpc.GetInfoResponse.prototype.setRequireHtlcInterceptor = function(value }; +/** + * optional bool store_final_htlc_resolutions = 22; + * Note that Boolean fields may be set to 0/1 when serialized from a Java server. + * You should avoid comparisons like {@code val === true/false} in those cases. + * @return {boolean} + */ +proto.lnrpc.GetInfoResponse.prototype.getStoreFinalHtlcResolutions = function() { + return /** @type {boolean} */ (jspb.Message.getFieldWithDefault(this, 22, false)); +}; + + +/** @param {boolean} value */ +proto.lnrpc.GetInfoResponse.prototype.setStoreFinalHtlcResolutions = function(value) { + jspb.Message.setProto3BooleanField(this, 22, value); +}; + + /** * Generated by JsPbCodeGenerator. @@ -18112,7 +18541,12 @@ proto.lnrpc.OpenChannelRequest.toObject = function(includeInstance, msg) { maxLocalCsv: jspb.Message.getFieldWithDefault(msg, 17, 0), commitmentType: jspb.Message.getFieldWithDefault(msg, 18, 0), zeroConf: jspb.Message.getFieldWithDefault(msg, 19, false), - scidAlias: jspb.Message.getFieldWithDefault(msg, 20, false) + scidAlias: jspb.Message.getFieldWithDefault(msg, 20, false), + baseFee: jspb.Message.getFieldWithDefault(msg, 21, "0"), + feeRate: jspb.Message.getFieldWithDefault(msg, 22, "0"), + useBaseFee: jspb.Message.getFieldWithDefault(msg, 23, false), + useFeeRate: jspb.Message.getFieldWithDefault(msg, 24, false), + remoteChanReserveSat: jspb.Message.getFieldWithDefault(msg, 25, "0") }; if (includeInstance) { @@ -18230,6 +18664,26 @@ proto.lnrpc.OpenChannelRequest.deserializeBinaryFromReader = function(msg, reade var value = /** @type {boolean} */ (reader.readBool()); msg.setScidAlias(value); break; + case 21: + var value = /** @type {string} */ (reader.readUint64String()); + msg.setBaseFee(value); + break; + case 22: + var value = /** @type {string} */ (reader.readUint64String()); + msg.setFeeRate(value); + break; + case 23: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setUseBaseFee(value); + break; + case 24: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setUseFeeRate(value); + break; + case 25: + var value = /** @type {string} */ (reader.readUint64String()); + msg.setRemoteChanReserveSat(value); + break; default: reader.skipField(); break; @@ -18400,6 +18854,41 @@ proto.lnrpc.OpenChannelRequest.serializeBinaryToWriter = function(message, write f ); } + f = message.getBaseFee(); + if (parseInt(f, 10) !== 0) { + writer.writeUint64String( + 21, + f + ); + } + f = message.getFeeRate(); + if (parseInt(f, 10) !== 0) { + writer.writeUint64String( + 22, + f + ); + } + f = message.getUseBaseFee(); + if (f) { + writer.writeBool( + 23, + f + ); + } + f = message.getUseFeeRate(); + if (f) { + writer.writeBool( + 24, + f + ); + } + f = message.getRemoteChanReserveSat(); + if (parseInt(f, 10) !== 0) { + writer.writeUint64String( + 25, + f + ); + } }; @@ -18750,6 +19239,85 @@ proto.lnrpc.OpenChannelRequest.prototype.setScidAlias = function(value) { }; +/** + * optional uint64 base_fee = 21; + * @return {string} + */ +proto.lnrpc.OpenChannelRequest.prototype.getBaseFee = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 21, "0")); +}; + + +/** @param {string} value */ +proto.lnrpc.OpenChannelRequest.prototype.setBaseFee = function(value) { + jspb.Message.setProto3StringIntField(this, 21, value); +}; + + +/** + * optional uint64 fee_rate = 22; + * @return {string} + */ +proto.lnrpc.OpenChannelRequest.prototype.getFeeRate = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 22, "0")); +}; + + +/** @param {string} value */ +proto.lnrpc.OpenChannelRequest.prototype.setFeeRate = function(value) { + jspb.Message.setProto3StringIntField(this, 22, value); +}; + + +/** + * optional bool use_base_fee = 23; + * Note that Boolean fields may be set to 0/1 when serialized from a Java server. + * You should avoid comparisons like {@code val === true/false} in those cases. + * @return {boolean} + */ +proto.lnrpc.OpenChannelRequest.prototype.getUseBaseFee = function() { + return /** @type {boolean} */ (jspb.Message.getFieldWithDefault(this, 23, false)); +}; + + +/** @param {boolean} value */ +proto.lnrpc.OpenChannelRequest.prototype.setUseBaseFee = function(value) { + jspb.Message.setProto3BooleanField(this, 23, value); +}; + + +/** + * optional bool use_fee_rate = 24; + * Note that Boolean fields may be set to 0/1 when serialized from a Java server. + * You should avoid comparisons like {@code val === true/false} in those cases. + * @return {boolean} + */ +proto.lnrpc.OpenChannelRequest.prototype.getUseFeeRate = function() { + return /** @type {boolean} */ (jspb.Message.getFieldWithDefault(this, 24, false)); +}; + + +/** @param {boolean} value */ +proto.lnrpc.OpenChannelRequest.prototype.setUseFeeRate = function(value) { + jspb.Message.setProto3BooleanField(this, 24, value); +}; + + +/** + * optional uint64 remote_chan_reserve_sat = 25; + * @return {string} + */ +proto.lnrpc.OpenChannelRequest.prototype.getRemoteChanReserveSat = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 25, "0")); +}; + + +/** @param {string} value */ +proto.lnrpc.OpenChannelRequest.prototype.setRemoteChanReserveSat = function(value) { + jspb.Message.setProto3StringIntField(this, 25, value); +}; + + /** * Generated by JsPbCodeGenerator. @@ -28844,7 +29412,8 @@ proto.lnrpc.LightningNode.toObject = function(includeInstance, msg) { addressesList: jspb.Message.toObjectList(msg.getAddressesList(), proto.lnrpc.NodeAddress.toObject, includeInstance), color: jspb.Message.getFieldWithDefault(msg, 5, ""), - featuresMap: (f = msg.getFeaturesMap()) ? f.toObject(includeInstance, proto.lnrpc.Feature.toObject) : [] + featuresMap: (f = msg.getFeaturesMap()) ? f.toObject(includeInstance, proto.lnrpc.Feature.toObject) : [], + customRecordsMap: (f = msg.getCustomRecordsMap()) ? f.toObject(includeInstance, undefined) : [] }; if (includeInstance) { @@ -28908,6 +29477,12 @@ proto.lnrpc.LightningNode.deserializeBinaryFromReader = function(msg, reader) { jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readUint32, jspb.BinaryReader.prototype.readMessage, proto.lnrpc.Feature.deserializeBinaryFromReader, 0); }); break; + case 7: + var value = msg.getCustomRecordsMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readUint64, jspb.BinaryReader.prototype.readBytes, null, 0); + }); + break; default: reader.skipField(); break; @@ -28977,6 +29552,10 @@ proto.lnrpc.LightningNode.serializeBinaryToWriter = function(message, writer) { if (f && f.getLength() > 0) { f.serializeBinary(6, writer, jspb.BinaryWriter.prototype.writeUint32, jspb.BinaryWriter.prototype.writeMessage, proto.lnrpc.Feature.serializeBinaryToWriter); } + f = message.getCustomRecordsMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(7, writer, jspb.BinaryWriter.prototype.writeUint64, jspb.BinaryWriter.prototype.writeBytes); + } }; @@ -29089,6 +29668,24 @@ proto.lnrpc.LightningNode.prototype.clearFeaturesMap = function() { }; +/** + * map custom_records = 7; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.lnrpc.LightningNode.prototype.getCustomRecordsMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 7, opt_noLazyCreate, + null)); +}; + + +proto.lnrpc.LightningNode.prototype.clearCustomRecordsMap = function() { + this.getCustomRecordsMap().clear(); +}; + + /** * Generated by JsPbCodeGenerator. @@ -29311,7 +29908,8 @@ proto.lnrpc.RoutingPolicy.toObject = function(includeInstance, msg) { feeRateMilliMsat: jspb.Message.getFieldWithDefault(msg, 4, "0"), disabled: jspb.Message.getFieldWithDefault(msg, 5, false), maxHtlcMsat: jspb.Message.getFieldWithDefault(msg, 6, "0"), - lastUpdate: jspb.Message.getFieldWithDefault(msg, 7, 0) + lastUpdate: jspb.Message.getFieldWithDefault(msg, 7, 0), + customRecordsMap: (f = msg.getCustomRecordsMap()) ? f.toObject(includeInstance, undefined) : [] }; if (includeInstance) { @@ -29376,6 +29974,12 @@ proto.lnrpc.RoutingPolicy.deserializeBinaryFromReader = function(msg, reader) { var value = /** @type {number} */ (reader.readUint32()); msg.setLastUpdate(value); break; + case 8: + var value = msg.getCustomRecordsMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readUint64, jspb.BinaryReader.prototype.readBytes, null, 0); + }); + break; default: reader.skipField(); break; @@ -29454,6 +30058,10 @@ proto.lnrpc.RoutingPolicy.serializeBinaryToWriter = function(message, writer) { f ); } + f = message.getCustomRecordsMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(8, writer, jspb.BinaryWriter.prototype.writeUint64, jspb.BinaryWriter.prototype.writeBytes); + } }; @@ -29564,6 +30172,24 @@ proto.lnrpc.RoutingPolicy.prototype.setLastUpdate = function(value) { }; +/** + * map custom_records = 8; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.lnrpc.RoutingPolicy.prototype.getCustomRecordsMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 8, opt_noLazyCreate, + null)); +}; + + +proto.lnrpc.RoutingPolicy.prototype.clearCustomRecordsMap = function() { + this.getCustomRecordsMap().clear(); +}; + + /** * Generated by JsPbCodeGenerator. @@ -29618,7 +30244,8 @@ proto.lnrpc.ChannelEdge.toObject = function(includeInstance, msg) { node2Pub: jspb.Message.getFieldWithDefault(msg, 5, ""), capacity: jspb.Message.getFieldWithDefault(msg, 6, "0"), node1Policy: (f = msg.getNode1Policy()) && proto.lnrpc.RoutingPolicy.toObject(includeInstance, f), - node2Policy: (f = msg.getNode2Policy()) && proto.lnrpc.RoutingPolicy.toObject(includeInstance, f) + node2Policy: (f = msg.getNode2Policy()) && proto.lnrpc.RoutingPolicy.toObject(includeInstance, f), + customRecordsMap: (f = msg.getCustomRecordsMap()) ? f.toObject(includeInstance, undefined) : [] }; if (includeInstance) { @@ -29689,6 +30316,12 @@ proto.lnrpc.ChannelEdge.deserializeBinaryFromReader = function(msg, reader) { reader.readMessage(value,proto.lnrpc.RoutingPolicy.deserializeBinaryFromReader); msg.setNode2Policy(value); break; + case 9: + var value = msg.getCustomRecordsMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readUint64, jspb.BinaryReader.prototype.readBytes, null, 0); + }); + break; default: reader.skipField(); break; @@ -29776,6 +30409,10 @@ proto.lnrpc.ChannelEdge.serializeBinaryToWriter = function(message, writer) { proto.lnrpc.RoutingPolicy.serializeBinaryToWriter ); } + f = message.getCustomRecordsMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(9, writer, jspb.BinaryWriter.prototype.writeUint64, jspb.BinaryWriter.prototype.writeBytes); + } }; @@ -29929,6 +30566,24 @@ proto.lnrpc.ChannelEdge.prototype.hasNode2Policy = function() { }; +/** + * map custom_records = 9; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.lnrpc.ChannelEdge.prototype.getCustomRecordsMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 9, opt_noLazyCreate, + null)); +}; + + +proto.lnrpc.ChannelEdge.prototype.clearCustomRecordsMap = function() { + this.getCustomRecordsMap().clear(); +}; + + /** * Generated by JsPbCodeGenerator. @@ -36067,7 +36722,9 @@ proto.lnrpc.ListInvoiceRequest.toObject = function(includeInstance, msg) { pendingOnly: jspb.Message.getFieldWithDefault(msg, 1, false), indexOffset: jspb.Message.getFieldWithDefault(msg, 4, "0"), numMaxInvoices: jspb.Message.getFieldWithDefault(msg, 5, "0"), - reversed: jspb.Message.getFieldWithDefault(msg, 6, false) + reversed: jspb.Message.getFieldWithDefault(msg, 6, false), + creationDateStart: jspb.Message.getFieldWithDefault(msg, 7, "0"), + creationDateEnd: jspb.Message.getFieldWithDefault(msg, 8, "0") }; if (includeInstance) { @@ -36120,6 +36777,14 @@ proto.lnrpc.ListInvoiceRequest.deserializeBinaryFromReader = function(msg, reade var value = /** @type {boolean} */ (reader.readBool()); msg.setReversed(value); break; + case 7: + var value = /** @type {string} */ (reader.readUint64String()); + msg.setCreationDateStart(value); + break; + case 8: + var value = /** @type {string} */ (reader.readUint64String()); + msg.setCreationDateEnd(value); + break; default: reader.skipField(); break; @@ -36177,6 +36842,20 @@ proto.lnrpc.ListInvoiceRequest.serializeBinaryToWriter = function(message, write f ); } + f = message.getCreationDateStart(); + if (parseInt(f, 10) !== 0) { + writer.writeUint64String( + 7, + f + ); + } + f = message.getCreationDateEnd(); + if (parseInt(f, 10) !== 0) { + writer.writeUint64String( + 8, + f + ); + } }; @@ -36244,6 +36923,36 @@ proto.lnrpc.ListInvoiceRequest.prototype.setReversed = function(value) { }; +/** + * optional uint64 creation_date_start = 7; + * @return {string} + */ +proto.lnrpc.ListInvoiceRequest.prototype.getCreationDateStart = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, "0")); +}; + + +/** @param {string} value */ +proto.lnrpc.ListInvoiceRequest.prototype.setCreationDateStart = function(value) { + jspb.Message.setProto3StringIntField(this, 7, value); +}; + + +/** + * optional uint64 creation_date_end = 8; + * @return {string} + */ +proto.lnrpc.ListInvoiceRequest.prototype.getCreationDateEnd = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, "0")); +}; + + +/** @param {string} value */ +proto.lnrpc.ListInvoiceRequest.prototype.setCreationDateEnd = function(value) { + jspb.Message.setProto3StringIntField(this, 8, value); +}; + + /** * Generated by JsPbCodeGenerator. @@ -37613,7 +38322,9 @@ proto.lnrpc.ListPaymentsRequest.toObject = function(includeInstance, msg) { indexOffset: jspb.Message.getFieldWithDefault(msg, 2, "0"), maxPayments: jspb.Message.getFieldWithDefault(msg, 3, "0"), reversed: jspb.Message.getFieldWithDefault(msg, 4, false), - countTotalPayments: jspb.Message.getFieldWithDefault(msg, 5, false) + countTotalPayments: jspb.Message.getFieldWithDefault(msg, 5, false), + creationDateStart: jspb.Message.getFieldWithDefault(msg, 6, "0"), + creationDateEnd: jspb.Message.getFieldWithDefault(msg, 7, "0") }; if (includeInstance) { @@ -37670,6 +38381,14 @@ proto.lnrpc.ListPaymentsRequest.deserializeBinaryFromReader = function(msg, read var value = /** @type {boolean} */ (reader.readBool()); msg.setCountTotalPayments(value); break; + case 6: + var value = /** @type {string} */ (reader.readUint64String()); + msg.setCreationDateStart(value); + break; + case 7: + var value = /** @type {string} */ (reader.readUint64String()); + msg.setCreationDateEnd(value); + break; default: reader.skipField(); break; @@ -37734,6 +38453,20 @@ proto.lnrpc.ListPaymentsRequest.serializeBinaryToWriter = function(message, writ f ); } + f = message.getCreationDateStart(); + if (parseInt(f, 10) !== 0) { + writer.writeUint64String( + 6, + f + ); + } + f = message.getCreationDateEnd(); + if (parseInt(f, 10) !== 0) { + writer.writeUint64String( + 7, + f + ); + } }; @@ -37818,6 +38551,36 @@ proto.lnrpc.ListPaymentsRequest.prototype.setCountTotalPayments = function(value }; +/** + * optional uint64 creation_date_start = 6; + * @return {string} + */ +proto.lnrpc.ListPaymentsRequest.prototype.getCreationDateStart = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, "0")); +}; + + +/** @param {string} value */ +proto.lnrpc.ListPaymentsRequest.prototype.setCreationDateStart = function(value) { + jspb.Message.setProto3StringIntField(this, 6, value); +}; + + +/** + * optional uint64 creation_date_end = 7; + * @return {string} + */ +proto.lnrpc.ListPaymentsRequest.prototype.getCreationDateEnd = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, "0")); +}; + + +/** @param {string} value */ +proto.lnrpc.ListPaymentsRequest.prototype.setCreationDateEnd = function(value) { + jspb.Message.setProto3StringIntField(this, 7, value); +}; + + /** * Generated by JsPbCodeGenerator. @@ -41638,7 +42401,8 @@ proto.lnrpc.ForwardingHistoryRequest.toObject = function(includeInstance, msg) { startTime: jspb.Message.getFieldWithDefault(msg, 1, "0"), endTime: jspb.Message.getFieldWithDefault(msg, 2, "0"), indexOffset: jspb.Message.getFieldWithDefault(msg, 3, 0), - numMaxEvents: jspb.Message.getFieldWithDefault(msg, 4, 0) + numMaxEvents: jspb.Message.getFieldWithDefault(msg, 4, 0), + peerAliasLookup: jspb.Message.getFieldWithDefault(msg, 5, false) }; if (includeInstance) { @@ -41691,6 +42455,10 @@ proto.lnrpc.ForwardingHistoryRequest.deserializeBinaryFromReader = function(msg, var value = /** @type {number} */ (reader.readUint32()); msg.setNumMaxEvents(value); break; + case 5: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setPeerAliasLookup(value); + break; default: reader.skipField(); break; @@ -41748,6 +42516,13 @@ proto.lnrpc.ForwardingHistoryRequest.serializeBinaryToWriter = function(message, f ); } + f = message.getPeerAliasLookup(); + if (f) { + writer.writeBool( + 5, + f + ); + } }; @@ -41811,6 +42586,23 @@ proto.lnrpc.ForwardingHistoryRequest.prototype.setNumMaxEvents = function(value) }; +/** + * optional bool peer_alias_lookup = 5; + * Note that Boolean fields may be set to 0/1 when serialized from a Java server. + * You should avoid comparisons like {@code val === true/false} in those cases. + * @return {boolean} + */ +proto.lnrpc.ForwardingHistoryRequest.prototype.getPeerAliasLookup = function() { + return /** @type {boolean} */ (jspb.Message.getFieldWithDefault(this, 5, false)); +}; + + +/** @param {boolean} value */ +proto.lnrpc.ForwardingHistoryRequest.prototype.setPeerAliasLookup = function(value) { + jspb.Message.setProto3BooleanField(this, 5, value); +}; + + /** * Generated by JsPbCodeGenerator. @@ -41867,7 +42659,9 @@ proto.lnrpc.ForwardingEvent.toObject = function(includeInstance, msg) { feeMsat: jspb.Message.getFieldWithDefault(msg, 8, "0"), amtInMsat: jspb.Message.getFieldWithDefault(msg, 9, "0"), amtOutMsat: jspb.Message.getFieldWithDefault(msg, 10, "0"), - timestampNs: jspb.Message.getFieldWithDefault(msg, 11, "0") + timestampNs: jspb.Message.getFieldWithDefault(msg, 11, "0"), + peerAliasIn: jspb.Message.getFieldWithDefault(msg, 12, ""), + peerAliasOut: jspb.Message.getFieldWithDefault(msg, 13, "") }; if (includeInstance) { @@ -41944,6 +42738,14 @@ proto.lnrpc.ForwardingEvent.deserializeBinaryFromReader = function(msg, reader) var value = /** @type {string} */ (reader.readUint64String()); msg.setTimestampNs(value); break; + case 12: + var value = /** @type {string} */ (reader.readString()); + msg.setPeerAliasIn(value); + break; + case 13: + var value = /** @type {string} */ (reader.readString()); + msg.setPeerAliasOut(value); + break; default: reader.skipField(); break; @@ -42043,6 +42845,20 @@ proto.lnrpc.ForwardingEvent.serializeBinaryToWriter = function(message, writer) f ); } + f = message.getPeerAliasIn(); + if (f.length > 0) { + writer.writeString( + 12, + f + ); + } + f = message.getPeerAliasOut(); + if (f.length > 0) { + writer.writeString( + 13, + f + ); + } }; @@ -42196,6 +43012,36 @@ proto.lnrpc.ForwardingEvent.prototype.setTimestampNs = function(value) { }; +/** + * optional string peer_alias_in = 12; + * @return {string} + */ +proto.lnrpc.ForwardingEvent.prototype.getPeerAliasIn = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 12, "")); +}; + + +/** @param {string} value */ +proto.lnrpc.ForwardingEvent.prototype.setPeerAliasIn = function(value) { + jspb.Message.setProto3StringField(this, 12, value); +}; + + +/** + * optional string peer_alias_out = 13; + * @return {string} + */ +proto.lnrpc.ForwardingEvent.prototype.getPeerAliasOut = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 13, "")); +}; + + +/** @param {string} value */ +proto.lnrpc.ForwardingEvent.prototype.setPeerAliasOut = function(value) { + jspb.Message.setProto3StringField(this, 13, value); +}; + + /** * Generated by JsPbCodeGenerator. diff --git a/app/src/types/generated/lnd_pb_service.d.ts b/app/src/types/generated/lnd_pb_service.d.ts index fcdd8aaf..a43d6fc5 100644 --- a/app/src/types/generated/lnd_pb_service.d.ts +++ b/app/src/types/generated/lnd_pb_service.d.ts @@ -598,6 +598,15 @@ type LightningListAliases = { readonly responseType: typeof lnd_pb.ListAliasesResponse; }; +type LightningLookupHtlcResolution = { + readonly methodName: string; + readonly service: typeof Lightning; + readonly requestStream: false; + readonly responseStream: false; + readonly requestType: typeof lnd_pb.LookupHtlcResolutionRequest; + readonly responseType: typeof lnd_pb.LookupHtlcResolutionResponse; +}; + export class Lightning { static readonly serviceName: string; static readonly WalletBalance: LightningWalletBalance; @@ -666,6 +675,7 @@ export class Lightning { static readonly SendCustomMessage: LightningSendCustomMessage; static readonly SubscribeCustomMessages: LightningSubscribeCustomMessages; static readonly ListAliases: LightningListAliases; + static readonly LookupHtlcResolution: LightningLookupHtlcResolution; } export type ServiceError = { message: string, code: number; metadata: grpc.Metadata } @@ -1190,5 +1200,14 @@ export class LightningClient { requestMessage: lnd_pb.ListAliasesRequest, callback: (error: ServiceError|null, responseMessage: lnd_pb.ListAliasesResponse|null) => void ): UnaryResponse; + lookupHtlcResolution( + requestMessage: lnd_pb.LookupHtlcResolutionRequest, + metadata: grpc.Metadata, + callback: (error: ServiceError|null, responseMessage: lnd_pb.LookupHtlcResolutionResponse|null) => void + ): UnaryResponse; + lookupHtlcResolution( + requestMessage: lnd_pb.LookupHtlcResolutionRequest, + callback: (error: ServiceError|null, responseMessage: lnd_pb.LookupHtlcResolutionResponse|null) => void + ): UnaryResponse; } diff --git a/app/src/types/generated/lnd_pb_service.js b/app/src/types/generated/lnd_pb_service.js index 2ca27314..ccfffc27 100644 --- a/app/src/types/generated/lnd_pb_service.js +++ b/app/src/types/generated/lnd_pb_service.js @@ -604,6 +604,15 @@ Lightning.ListAliases = { responseType: lnd_pb.ListAliasesResponse }; +Lightning.LookupHtlcResolution = { + methodName: "LookupHtlcResolution", + service: Lightning, + requestStream: false, + responseStream: false, + requestType: lnd_pb.LookupHtlcResolutionRequest, + responseType: lnd_pb.LookupHtlcResolutionResponse +}; + exports.Lightning = Lightning; function LightningClient(serviceHost, options) { @@ -2785,5 +2794,36 @@ LightningClient.prototype.listAliases = function listAliases(requestMessage, met }; }; +LightningClient.prototype.lookupHtlcResolution = function lookupHtlcResolution(requestMessage, metadata, callback) { + if (arguments.length === 2) { + callback = arguments[1]; + } + var client = grpc.unary(Lightning.LookupHtlcResolution, { + request: requestMessage, + host: this.serviceHost, + metadata: metadata, + transport: this.options.transport, + debug: this.options.debug, + onEnd: function (response) { + if (callback) { + if (response.status !== grpc.Code.OK) { + var err = new Error(response.statusMessage); + err.code = response.status; + err.metadata = response.trailers; + callback(err, null); + } else { + callback(null, response.message); + } + } + } + }); + return { + cancel: function () { + callback = null; + client.close(); + } + }; +}; + exports.LightningClient = LightningClient; diff --git a/app/src/util/tests/sampleData.ts b/app/src/util/tests/sampleData.ts index 01c92310..f0fbeb12 100644 --- a/app/src/util/tests/sampleData.ts +++ b/app/src/util/tests/sampleData.ts @@ -27,6 +27,7 @@ export const lndGetInfo: LND.GetInfoResponse.AsObject = { testnet: false, chainsList: [{ chain: 'bitcoin', network: 'regtest' }], requireHtlcInterceptor: false, + storeFinalHtlcResolutions: false, urisList: [ '038b3fc29cfc195c9b190d86ad2d40ce7550a5c6f13941f53c7d7ac5b25c912a6c@172.18.0.7:9735', ], @@ -63,6 +64,7 @@ export const lndGetNodeInfo: Required = { ], lastUpdate: 1591393224, pubKey: '037136742c67e24681f36542f7c8916aa6f6fdf665c1dca2a107425503cff94501', + customRecordsMap: [], }, numChannels: 3, totalCapacity: '47000000', @@ -126,6 +128,7 @@ export const lndChannel: LND.Channel.AsObject = { aliasScidsList: [], zeroConf: false, zeroConfConfirmedScid: '', + peerAlias: '', }; export const lndListChannelsMany: LND.ListChannelsResponse.AsObject = { @@ -300,6 +303,7 @@ export const lndGetChanInfo: Required = { disabled: false, maxHtlcMsat: '1782000000', lastUpdate: 1591622793, + customRecordsMap: [], }, node2Policy: { timeLockDelta: 40, @@ -309,7 +313,9 @@ export const lndGetChanInfo: Required = { disabled: false, maxHtlcMsat: '1782000000', lastUpdate: 1591622772, + customRecordsMap: [], }, + customRecordsMap: [], }; // diff --git a/autopilotserver/mock/server.go b/autopilotserver/mock/server.go index de9d0f1a..fc81fe8a 100644 --- a/autopilotserver/mock/server.go +++ b/autopilotserver/mock/server.go @@ -10,7 +10,7 @@ import ( "github.com/btcsuite/btcd/btcec/v2" "github.com/lightninglabs/lightning-terminal/autopilotserverrpc" "github.com/lightninglabs/lightning-terminal/rules" - "github.com/lightningnetwork/lnd/lntest" + "github.com/lightningnetwork/lnd/lntest/node" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" "gopkg.in/macaroon-bakery.v2/bakery" @@ -54,7 +54,7 @@ type clientSession struct { // NewServer constructs a new MockAutoPilotServer. func NewServer() *Server { return &Server{ - port: lntest.NextAvailablePort(), + port: node.NextAvailablePort(), sessions: make(map[string]*clientSession), grpcServer: grpc.NewServer( grpc.Creds(insecure.NewCredentials()), diff --git a/autopilotserverrpc/go.mod b/autopilotserverrpc/go.mod index 882e226c..d75c67a4 100644 --- a/autopilotserverrpc/go.mod +++ b/autopilotserverrpc/go.mod @@ -1,6 +1,6 @@ module github.com/lightninglabs/lightning-terminal/autopilotserverrpc -go 1.18 +go 1.19 require ( google.golang.org/grpc v1.39.0 diff --git a/config.go b/config.go index a053bd4d..a160a555 100644 --- a/config.go +++ b/config.go @@ -805,15 +805,24 @@ func buildTLSConfigForHttp2(config *Config) (*tls.Config, error) { if !lnrpc.FileExists(tlsCertPath) && !lnrpc.FileExists(tlsKeyPath) { - err := cert.GenCertPair( - defaultSelfSignedCertOrganization, tlsCertPath, - tlsKeyPath, nil, nil, false, - DefaultAutogenValidity, + certBytes, keyBytes, err := cert.GenCertPair( + defaultSelfSignedCertOrganization, nil, nil, + false, DefaultAutogenValidity, ) if err != nil { return nil, fmt.Errorf("failed creating "+ "self-signed cert: %v", err) } + + // Now that we have the certificate and key, we'll store + // them to the file system. + err = cert.WriteCertPair( + tlsCertPath, tlsKeyPath, certBytes, keyBytes, + ) + if err != nil { + return nil, fmt.Errorf("failed storing "+ + "self-signed cert: %v", err) + } } tlsCert, _, err := cert.LoadCert(tlsCertPath, tlsKeyPath) diff --git a/dev.Dockerfile b/dev.Dockerfile index 9704d617..ccfa0e6e 100644 --- a/dev.Dockerfile +++ b/dev.Dockerfile @@ -13,7 +13,7 @@ RUN cd /go/src/github.com/lightninglabs/lightning-terminal/app \ # If you change this value, please also update: # /Dockerfile # /.github/workflows/main.yml -FROM golang:1.18-alpine as golangbuilder +FROM golang:1.19-alpine as golangbuilder # Instead of checking out from git again, we just copy the whole working # directory of the previous stage that includes the generated static assets. diff --git a/firewall/caveats.go b/firewall/caveats.go index 464a7ea2..c29a43a5 100644 --- a/firewall/caveats.go +++ b/firewall/caveats.go @@ -85,7 +85,8 @@ type InterceptMetaInfo struct { // ToCaveat returns the full custom caveat string representation of the // interception meta information in this format: -// lnd-custom lit-mac-fw meta: +// +// lnd-custom lit-mac-fw meta: func (i *InterceptMetaInfo) ToCaveat() (string, error) { jsonBytes, err := json.Marshal(i) if err != nil { @@ -134,7 +135,8 @@ type InterceptRules struct { // RulesToCaveat encodes a list of rules as a full custom caveat string // representation in this format: -// lnd-custom lit-mac-fw rules:[] +// +// lnd-custom lit-mac-fw rules:[] func RulesToCaveat(rules *InterceptRules) (string, error) { jsonBytes, err := json.Marshal(rules) if err != nil { diff --git a/go.mod b/go.mod index de4c1a2e..c1869c14 100644 --- a/go.mod +++ b/go.mod @@ -1,10 +1,10 @@ module github.com/lightninglabs/lightning-terminal require ( - github.com/btcsuite/btcd v0.23.4 - github.com/btcsuite/btcd/btcec/v2 v2.2.2 + github.com/btcsuite/btcd v0.23.5-0.20230125025938-be056b0a0b2f + github.com/btcsuite/btcd/btcec/v2 v2.3.2 github.com/btcsuite/btcd/btcutil v1.1.3 - github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 + github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2 github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f github.com/btcsuite/btcwallet/walletdb v1.4.0 github.com/go-errors/errors v1.0.1 @@ -12,30 +12,30 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.5.0 github.com/improbable-eng/grpc-web v0.12.0 github.com/jessevdk/go-flags v1.4.0 - github.com/lightninglabs/aperture v0.1.18-beta - github.com/lightninglabs/faraday v0.2.9-alpha.0.20230215114316-475a2fe8b5e1 + github.com/lightninglabs/aperture v0.1.19-beta.0.20230227124349-b952e4ee6ff4 + github.com/lightninglabs/faraday v0.2.9-alpha.0.20230307084535-e9359999b5da github.com/lightninglabs/lightning-node-connect v0.1.12-alpha github.com/lightninglabs/lightning-terminal/autopilotserverrpc v0.0.1 - github.com/lightninglabs/lndclient v0.15.4-0 - github.com/lightninglabs/loop v0.21.0-beta + github.com/lightninglabs/lndclient v0.16.0-9 + github.com/lightninglabs/loop v0.21.0-beta.0.20230307115451-ec4f2507535c github.com/lightninglabs/loop/swapserverrpc v1.0.3 - github.com/lightninglabs/pool v0.6.1-beta.0.20221202155747-aec0aee8d9a1 + github.com/lightninglabs/pool v0.6.1-beta.0.20230227204507-0db3a9fdc6fd github.com/lightninglabs/pool/auctioneerrpc v1.1.0 github.com/lightninglabs/protobuf-hex-display v1.4.3-hex-display - github.com/lightningnetwork/lnd v0.15.5-beta - github.com/lightningnetwork/lnd/cert v1.1.1 - github.com/lightningnetwork/lnd/kvdb v1.3.1 + github.com/lightningnetwork/lnd v0.16.0-beta.rc2 + github.com/lightningnetwork/lnd/cert v1.2.1 + github.com/lightningnetwork/lnd/kvdb v1.4.1 github.com/lightningnetwork/lnd/tlv v1.1.0 - github.com/lightningnetwork/lnd/tor v1.0.1 + github.com/lightningnetwork/lnd/tor v1.1.0 github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76 - github.com/stretchr/testify v1.8.0 + github.com/stretchr/testify v1.8.1 github.com/urfave/cli v1.22.9 go.etcd.io/bbolt v1.3.6 golang.org/x/crypto v0.1.0 golang.org/x/net v0.7.0 - golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - google.golang.org/grpc v1.39.0 + golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 + google.golang.org/grpc v1.41.0 google.golang.org/protobuf v1.28.1 gopkg.in/macaroon-bakery.v2 v2.1.0 gopkg.in/macaroon.v2 v2.1.0 @@ -50,7 +50,7 @@ require ( github.com/andybalholm/brotli v1.0.3 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/btcsuite/btcd/btcutil/psbt v1.1.5 // indirect - github.com/btcsuite/btcwallet v0.16.5 // indirect + github.com/btcsuite/btcwallet v0.16.7 // indirect github.com/btcsuite/btcwallet/wallet/txauthor v1.3.2 // indirect github.com/btcsuite/btcwallet/wallet/txrules v1.2.0 // indirect github.com/btcsuite/btcwallet/wallet/txsizes v1.2.3 // indirect @@ -58,6 +58,7 @@ require ( github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd // indirect github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 // indirect github.com/btcsuite/winsvc v1.0.0 // indirect + github.com/cenkalti/backoff/v4 v4.1.1 // indirect github.com/cespare/xxhash/v2 v2.1.1 // indirect github.com/coreos/bbolt v1.3.3 // indirect github.com/coreos/go-semver v0.3.0 // indirect @@ -71,13 +72,13 @@ require ( github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect github.com/dsnet/compress v0.0.1 // indirect github.com/dustin/go-humanize v1.0.0 // indirect - github.com/dvyukov/go-fuzz v0.0.0-20210602112143-b1f3d6f4ef4e // indirect github.com/fergusstrange/embedded-postgres v1.10.0 // indirect - github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang-jwt/jwt/v4 v4.4.2 // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.0.1 // indirect + github.com/google/uuid v1.3.0 // indirect github.com/gorilla/websocket v1.4.2 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect @@ -98,19 +99,22 @@ require ( github.com/jrick/logrotate v1.0.0 // indirect github.com/json-iterator/go v1.1.11 // indirect github.com/juju/loggo v0.0.0-20210728185423-eebad3a902c4 // indirect + github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/kkdai/bstream v1.0.0 // indirect github.com/klauspost/compress v1.13.6 // indirect github.com/klauspost/pgzip v1.2.5 // indirect github.com/lib/pq v1.10.3 // indirect github.com/lightninglabs/gozmq v0.0.0-20191113021534-d20a764486bf // indirect github.com/lightninglabs/lightning-node-connect/hashmailrpc v1.0.2 // indirect - github.com/lightninglabs/neutrino v0.14.2 // indirect - github.com/lightningnetwork/lightning-onion v1.0.2-0.20220211021909-bb84a1ccb0c5 // indirect + github.com/lightninglabs/neutrino v0.15.0 // indirect + github.com/lightninglabs/neutrino/cache v1.1.1 // indirect + github.com/lightningnetwork/lightning-onion v1.2.1-0.20221202012345-ca23184850a1 // indirect github.com/lightningnetwork/lnd/clock v1.1.0 // indirect github.com/lightningnetwork/lnd/healthcheck v1.2.2 // indirect github.com/lightningnetwork/lnd/queue v1.1.0 // indirect github.com/lightningnetwork/lnd/ticker v1.1.0 // indirect github.com/ltcsuite/ltcd v0.0.0-20190101042124-f37f8bf35796 // indirect + github.com/mattn/go-isatty v0.0.16 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/mholt/archiver/v3 v3.5.0 // indirect @@ -124,6 +128,7 @@ require ( github.com/prometheus/client_model v0.2.0 // indirect github.com/prometheus/common v0.26.0 // indirect github.com/prometheus/procfs v0.6.0 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/rogpeppe/fastuuid v1.2.0 // indirect github.com/rs/cors v1.7.0 // indirect @@ -133,7 +138,7 @@ require ( github.com/sirupsen/logrus v1.7.0 // indirect github.com/soheilhy/cmux v0.1.5 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/objx v0.4.0 // indirect + github.com/stretchr/objx v0.5.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/tv42/zbase32 v0.0.0-20160707012821-501572607d02 // indirect @@ -141,39 +146,49 @@ require ( github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec // indirect - go.etcd.io/etcd/api/v3 v3.5.1 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.5.1 // indirect - go.etcd.io/etcd/client/v2 v2.305.1 // indirect - go.etcd.io/etcd/client/v3 v3.5.1 // indirect - go.etcd.io/etcd/pkg/v3 v3.5.1 // indirect - go.etcd.io/etcd/raft/v3 v3.5.1 // indirect - go.etcd.io/etcd/server/v3 v3.5.1 // indirect - go.opentelemetry.io/contrib v0.20.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0 // indirect - go.opentelemetry.io/otel v0.20.0 // indirect - go.opentelemetry.io/otel/exporters/otlp v0.20.0 // indirect - go.opentelemetry.io/otel/metric v0.20.0 // indirect - go.opentelemetry.io/otel/sdk v0.20.0 // indirect - go.opentelemetry.io/otel/sdk/export/metric v0.20.0 // indirect - go.opentelemetry.io/otel/sdk/metric v0.20.0 // indirect - go.opentelemetry.io/otel/trace v0.20.0 // indirect - go.opentelemetry.io/proto/otlp v0.7.0 // indirect + go.etcd.io/etcd/api/v3 v3.5.7 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.7 // indirect + go.etcd.io/etcd/client/v2 v2.305.7 // indirect + go.etcd.io/etcd/client/v3 v3.5.7 // indirect + go.etcd.io/etcd/pkg/v3 v3.5.7 // indirect + go.etcd.io/etcd/raft/v3 v3.5.7 // indirect + go.etcd.io/etcd/server/v3 v3.5.7 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0 // indirect + go.opentelemetry.io/otel v1.0.1 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1 // indirect + go.opentelemetry.io/otel/sdk v1.0.1 // indirect + go.opentelemetry.io/otel/trace v1.0.1 // indirect + go.opentelemetry.io/proto/otlp v0.9.0 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect go.uber.org/zap v1.17.0 // indirect + golang.org/x/exp v0.0.0-20221111094246-ab4555d3164f // indirect + golang.org/x/mod v0.6.0 // indirect golang.org/x/sys v0.5.0 // indirect golang.org/x/term v0.5.0 // indirect golang.org/x/text v0.7.0 // indirect golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba // indirect + golang.org/x/tools v0.2.0 // indirect google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced // indirect gopkg.in/errgo.v1 v1.0.1 // indirect gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + lukechampine.com/uint128 v1.2.0 // indirect + modernc.org/cc/v3 v3.40.0 // indirect + modernc.org/ccgo/v3 v3.16.13 // indirect + modernc.org/libc v1.22.2 // indirect + modernc.org/mathutil v1.5.0 // indirect + modernc.org/memory v1.4.0 // indirect + modernc.org/opt v0.1.3 // indirect + modernc.org/sqlite v1.20.3 // indirect + modernc.org/strutil v1.1.3 // indirect + modernc.org/token v1.0.1 // indirect nhooyr.io/websocket v1.8.7 // indirect sigs.k8s.io/yaml v1.2.0 // indirect ) replace github.com/lightninglabs/lightning-terminal/autopilotserverrpc => ./autopilotserverrpc -go 1.18 +go 1.19 diff --git a/go.sum b/go.sum index b52c1cbe..b44a4520 100644 --- a/go.sum +++ b/go.sum @@ -33,11 +33,9 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChrisTrenkamp/goxpath v0.0.0-20210404020558-97928f7e12b6/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4= github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/NebulousLabs/fastrand v0.0.0-20181203155948-6fb6489aac4e h1:n+DcnTNkQnHlwpsrHoQtkrJIO7CBx029fw6oR4vIob4= @@ -63,7 +61,6 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/benbjohnson/clock v1.0.3 h1:vkLuvpK4fmtSCuo60+yC63p7y0BmQ8gm5ZXGuBCJyXg= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -81,19 +78,17 @@ github.com/btcsuite/btcd v0.22.0-beta.0.20220413172512-bf64c8bdbbbf/go.mod h1:0Q github.com/btcsuite/btcd v0.23.0/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= github.com/btcsuite/btcd v0.23.1/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= github.com/btcsuite/btcd v0.23.3/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= -github.com/btcsuite/btcd v0.23.4 h1:IzV6qqkfwbItOS/sg/aDfPDsjPP8twrCOE2R93hxMlQ= -github.com/btcsuite/btcd v0.23.4/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= +github.com/btcsuite/btcd v0.23.5-0.20230125025938-be056b0a0b2f h1:UJ/S/pV25+YsK0CJRJh8RDpTgy5h1oXWjOd4fp+opvY= +github.com/btcsuite/btcd v0.23.5-0.20230125025938-be056b0a0b2f/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= github.com/btcsuite/btcd/btcec/v2 v2.1.1/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU= -github.com/btcsuite/btcd/btcec/v2 v2.2.1/go.mod h1:9/CSmJxmuvqzX9Wh2fXMWToLOHhPd11lSPuIupwTkI8= -github.com/btcsuite/btcd/btcec/v2 v2.2.2 h1:5uxe5YjoCq+JeOpg0gZSNHuFgeogrocBYxvg6w9sAgc= -github.com/btcsuite/btcd/btcec/v2 v2.2.2/go.mod h1:9/CSmJxmuvqzX9Wh2fXMWToLOHhPd11lSPuIupwTkI8= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= github.com/btcsuite/btcd/btcutil v1.1.1/go.mod h1:nbKlBMNm9FGsdvKvu0essceubPiAcI57pYBNnsLAa34= -github.com/btcsuite/btcd/btcutil v1.1.2/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= github.com/btcsuite/btcd/btcutil/psbt v1.1.0/go.mod h1:xMuACsIKDzcE3kWMxqK+aLrAWZ8bMdn7YjYEwNs5q8k= @@ -101,17 +96,16 @@ github.com/btcsuite/btcd/btcutil/psbt v1.1.4/go.mod h1:9AyU6EQVJ9Iw9zPyNT1lcdHd6 github.com/btcsuite/btcd/btcutil/psbt v1.1.5 h1:x0ZRrYY8j75ThV6xBz86CkYAG82F5bzay4H5D1c8b/U= github.com/btcsuite/btcd/btcutil/psbt v1.1.5/go.mod h1:kA6FLH/JfUx++j9pYU0pyu+Z8XGBQuuTmuKYUf6q7/U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2 h1:KdUfX2zKommPRa+PD0sWZUyXe9w277ABlgELO7H04IM= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f h1:bAs4lUbRJpnnkd9VhRV3jjAVU7DJVjMaK+IsvSeZvFo= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcwallet v0.14.0/go.mod h1:KFR1x3ZH7c31i4qA34XIvcsnhrEBLK1SHli52lN8E54= github.com/btcsuite/btcwallet v0.15.1-0.20220512002839-af5562928b70/go.mod h1:OQ+KZYSjNxxSIya6uWKquZBJgb8sV86njOj1tzsf0WE= -github.com/btcsuite/btcwallet v0.15.1/go.mod h1:7OFsQ8ypiRwmr67hE0z98uXgJgXGAihE79jCib9x6ag= -github.com/btcsuite/btcwallet v0.16.1/go.mod h1:NCO8+5rIcbUm5CtVNSQM0xrtK4iYprlyuvpGzhkejaM= -github.com/btcsuite/btcwallet v0.16.5 h1:4DTJ5aYAJomcR0jAb6JP8D0wNSxfz4H7WN/RBtNZY4o= -github.com/btcsuite/btcwallet v0.16.5/go.mod h1:mM19pFB3lGVxOL+kvHhHZAhdSWXKsZGiHvpJVvxL0D8= +github.com/btcsuite/btcwallet v0.16.7 h1:J6nBMMMc90n77/4QIfzRFn5XB1hPvMDfcgX5U6Ls0kI= +github.com/btcsuite/btcwallet v0.16.7/go.mod h1:J/q3/JxytAcuqR+zSTCRZ5K+0LtMuhxtCjLVXKDHBu0= github.com/btcsuite/btcwallet/wallet/txauthor v1.2.1/go.mod h1:/74bubxX5Js48d76nf/TsNabpYp/gndUuJw4chzCmhU= github.com/btcsuite/btcwallet/wallet/txauthor v1.2.3/go.mod h1:T2xSiKGpUkSLCh68aF+FMXmKK9mFqNdHl9VaqOr+JjU= github.com/btcsuite/btcwallet/wallet/txauthor v1.3.2 h1:etuLgGEojecsDOYTII8rYiGHjGyV5xTqsXi+ZQ715UU= @@ -139,6 +133,8 @@ github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 h1:R8vQdOQdZ9Y3 github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0 h1:J9B4L7e3oqhXOcm+2IuNApwzQec85lE+QaikUcCs+dk= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054 h1:uH66TXeswKn5PW5zdZ39xEwfS9an067BirqA+P4QaLI= @@ -153,6 +149,7 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5 h1:xD/lrqdvwsc+O2bjSSi3YqY73Ke3LAiSCx49aCesA0E= @@ -199,7 +196,6 @@ github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5Jflh github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dvyukov/go-fuzz v0.0.0-20210602112143-b1f3d6f4ef4e h1:qTP1telKJHlToHlwPQNmVg4yfMDMHe4Z3SYmzkrvA2M= github.com/dvyukov/go-fuzz v0.0.0-20210602112143-b1f3d6f4ef4e/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -207,11 +203,11 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fergusstrange/embedded-postgres v1.10.0 h1:YnwF6xAQYmKLAXXrrRx4rHDLih47YJwVPvg8jeKfdNg= github.com/fergusstrange/embedded-postgres v1.10.0/go.mod h1:a008U8/Rws5FtIOTGYDYa7beVWsT3qVKyqExqYYjL+c= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= @@ -256,12 +252,13 @@ github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/E github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0= -github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs= +github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v0.0.0-20210429001901-424d2337a529 h1:2voWjNECnrZRbfwXxHB1/j8wa6xdKn85B5NzgVL/pTU= github.com/golang/glog v0.0.0-20210429001901-424d2337a529/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -278,7 +275,6 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -316,8 +312,8 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -328,13 +324,14 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= @@ -360,7 +357,6 @@ github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerX github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -424,12 +420,6 @@ github.com/jackpal/gateway v1.0.5 h1:qzXWUJfuMdlLMtt0a3Dgt+xkWQiA5itDEITVJtuSwMc github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= github.com/jackpal/go-nat-pmp v0.0.0-20170405195558-28a68d0c24ad h1:heFfj7z0pGsNCekUlsFhO2jstxO4b5iQ665LjwM5mDc= github.com/jackpal/go-nat-pmp v0.0.0-20170405195558-28a68d0c24ad/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= -github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= -github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= -github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= -github.com/jcmturner/gokrb5/v8 v8.4.2/go.mod h1:sb+Xq/fTY5yktf/VxLsE3wlfPqQjp0aWNYyvBVK62bc= -github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= github.com/jedib0t/go-pretty/v6 v6.2.7 h1:4823Lult/tJ0VI1PgW3aSKw59pMWQ6Kzv9b3Bj6MwY0= github.com/jedib0t/go-pretty/v6 v6.2.7/go.mod h1:FMkOpgGD3EZ91cW8g/96RfxoV7bdeJyzXPYgz1L1ln0= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= @@ -451,22 +441,15 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/ansiterm v0.0.0-20160907234532-b99631de12cf/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= -github.com/juju/ansiterm v0.0.0-20210706145210-9283cdf370b5/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c/go.mod h1:nD0vlnrUjcjJhqN5WuCWZyzfd5AHZAC9/ajvbSx69xA= -github.com/juju/clock v0.0.0-20220202072423-1b0f830854c4/go.mod h1:zDZCPSgCJQINeZtQwHx2/cFk4seaBC8Yiqe8V82xiP0= github.com/juju/clock v0.0.0-20220203021603-d9deb868a28a h1:Az/6CM/P5guGHNy7r6TkOCctv3lDmN3W1uhku7QMupk= -github.com/juju/clock v0.0.0-20220203021603-d9deb868a28a/go.mod h1:GZ/FY8Cqw3KHG6DwRVPUKbSPTAwyrU28xFi5cqZnLsc= github.com/juju/cmd v0.0.0-20171107070456-e74f39857ca0/go.mod h1:yWJQHl73rdSX4DHVKGqkAip+huBslxRwS8m9CrOLq18= -github.com/juju/cmd/v3 v3.0.0-20220202061353-b1cc80b193b0/go.mod h1:EoGJiEG+vbMwO9l+Es0SDTlaQPjH6nLcnnc4NfZB3cY= github.com/juju/collections v0.0.0-20200605021417-0d0ec82b7271/go.mod h1:5XgO71dV1JClcOJE+4dzdn4HrI5LiyKd7PlVG6eZYhY= github.com/juju/collections v0.0.0-20220203020748-febd7cad8a7a h1:d7eZO8OS/ZXxdP0uq3E8CdoA1qNFaecAv90UxrxaY2k= -github.com/juju/collections v0.0.0-20220203020748-febd7cad8a7a/go.mod h1:JWeZdyttIEbkR51z2S13+J+aCuHVe0F6meRy+P0YGDo= github.com/juju/errors v0.0.0-20150916125642-1b5e39b83d18/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= github.com/juju/errors v0.0.0-20200330140219-3fe23663418f/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= -github.com/juju/errors v0.0.0-20210818161939-5560c4c073ff/go.mod h1:i1eL7XREII6aHpQ2gApI/v6FkVUDEBremNkcBCKYAcY= github.com/juju/errors v0.0.0-20220203013757-bd733f3c86b9/go.mod h1:TRm7EVGA3mQOqSVcBySRY7a9Y1/gyVhh/WTCnc5sD4U= github.com/juju/errors v0.0.0-20220331221717-b38fca44723b h1:AxFeSQJfcm2O3ov1wqAkTKYFsnMw2g1B4PkYujfAdkY= -github.com/juju/errors v0.0.0-20220331221717-b38fca44723b/go.mod h1:jMGj9DWF/qbo91ODcfJq6z/RYc3FX3taCBZMCcpI4Ls= github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE= github.com/juju/httpprof v0.0.0-20141217160036-14bf14c30767/go.mod h1:+MaLYz4PumRkkyHYeXJ2G5g5cIW0sli2bOfpmbaMV/g= github.com/juju/loggo v0.0.0-20170605014607-8232ab8918d9/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= @@ -475,19 +458,13 @@ github.com/juju/loggo v0.0.0-20210728185423-eebad3a902c4 h1:NO5tuyw++EGLnz56Q8KM github.com/juju/loggo v0.0.0-20210728185423-eebad3a902c4/go.mod h1:NIXFioti1SmKAlKNuUwbMenNdef59IF52+ZzuOmHYkg= github.com/juju/mgo/v2 v2.0.0-20210302023703-70d5d206e208/go.mod h1:0OChplkvPTZ174D2FYZXg4IB9hbEwyHkD+zT+/eK+Fg= github.com/juju/mgo/v2 v2.0.0-20220111072304-f200228f1090 h1:zX5GoH3Jp8k1EjUFkApu/YZAYEn0PYQfg/U6IDyNyYs= -github.com/juju/mgo/v2 v2.0.0-20220111072304-f200228f1090/go.mod h1:N614SE0a4e+ih2rg96Vi2PeC3cTpUOWgCTv3Cgk974c= github.com/juju/mutex v0.0.0-20171110020013-1fe2a4bf0a3a/go.mod h1:Y3oOzHH8CQ0Ppt0oCKJ2JFO81/EsWenH5AEqigLH+yY= -github.com/juju/mutex/v2 v2.0.0-20220128011612-57176ebdcfa3/go.mod h1:TTCG9BJD9rCC4DZFz3jA0QvCqFDHw8Eqz0jstwY7RTQ= -github.com/juju/mutex/v2 v2.0.0-20220203023141-11eeddb42c6c/go.mod h1:jwCfBs/smYDaeZLqeaCi8CB8M+tOes4yf827HoOEoqk= github.com/juju/retry v0.0.0-20151029024821-62c620325291/go.mod h1:OohPQGsr4pnxwD5YljhQ+TZnuVRYpa5irjugL1Yuif4= github.com/juju/retry v0.0.0-20180821225755-9058e192b216/go.mod h1:OohPQGsr4pnxwD5YljhQ+TZnuVRYpa5irjugL1Yuif4= github.com/juju/retry v0.0.0-20220204093819-62423bf33287 h1:U+7oMWEglXfiikIppNexButZRwKPlzLBGKYSNCXzXf8= -github.com/juju/retry v0.0.0-20220204093819-62423bf33287/go.mod h1:SssN1eYeK3A2qjnFGTiVMbdzGJ2BfluaJblJXvuvgqA= github.com/juju/testing v0.0.0-20180402130637-44801989f0f7/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= -github.com/juju/testing v0.0.0-20180517134105-72703b1e95eb/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= github.com/juju/testing v0.0.0-20210302031854-2c7ee8570c07/go.mod h1:7lxZW0B50+xdGFkvhAb8bwAGt6IU87JB1H9w4t8MNVM= -github.com/juju/testing v0.0.0-20210324180055-18c50b0c2098/go.mod h1:7lxZW0B50+xdGFkvhAb8bwAGt6IU87JB1H9w4t8MNVM= github.com/juju/testing v0.0.0-20220202055744-1ad0816210a6/go.mod h1:QgWc2UdIPJ8t3rnvv95tFNOsQDfpXYEZDbP281o3b2c= github.com/juju/testing v0.0.0-20220203020004-a0ff61f03494 h1:XEDzpuZb8Ma7vLja3+5hzUqVTvAqm5Y+ygvnDs5iTMM= github.com/juju/testing v0.0.0-20220203020004-a0ff61f03494/go.mod h1:rUquetT0ALL48LHZhyRGvjjBH8xZaZ8dFClulKK5wK4= @@ -496,19 +473,18 @@ github.com/juju/utils v0.0.0-20200116185830-d40c2fe10647 h1:wQpkHVbIIpz1PCcLYku9 github.com/juju/utils v0.0.0-20200116185830-d40c2fe10647/go.mod h1:6/KLg8Wz/y2KVGWEpkK9vMNGkOnu4k/cqs8Z1fKjTOk= github.com/juju/utils/v2 v2.0.0-20200923005554-4646bfea2ef1/go.mod h1:fdlDtQlzundleLLz/ggoYinEt/LmnrpNKcNTABQATNI= github.com/juju/utils/v3 v3.0.0-20220130232349-cd7ecef0e94a/go.mod h1:LzwbbEN7buYjySp4nqnti6c6olSqRXUk6RkbSUUP1n8= -github.com/juju/utils/v3 v3.0.0-20220202114721-338bb0530e89/go.mod h1:wf5w+8jyTh2IYnSX0sHnMJo4ZPwwuiBWn+xN3DkQg4k= github.com/juju/utils/v3 v3.0.0-20220203023959-c3fbc78a33b0 h1:bn+2Adl1yWqYjm3KSFlFqsvfLg2eq+XNL7GGMYApdVw= -github.com/juju/utils/v3 v3.0.0-20220203023959-c3fbc78a33b0/go.mod h1:8csUcj1VRkfjNIRzBFWzLFCMLwLqsRWvkmhfVAUwbC4= github.com/juju/version v0.0.0-20161031051906-1f41e27e54f2/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U= github.com/juju/version v0.0.0-20180108022336-b64dbd566305/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U= github.com/juju/version v0.0.0-20191219164919-81c1be00b9a6 h1:nrqc9b4YKpKV4lPI3GPPFbo5FUuxkWxgZE2Z8O4lgaw= github.com/juju/version v0.0.0-20191219164919-81c1be00b9a6/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U= github.com/juju/version/v2 v2.0.0-20211007103408-2e8da085dc23/go.mod h1:Ljlbryh9sYaUSGXucslAEDf0A2XUSGvDbHJgW8ps6nc= github.com/juju/version/v2 v2.0.0-20220204124744-fc9915e3d935 h1:6YoyzXVW1XkqN86y2s/rz365Jm7EiAy39v2G5ikzvHU= -github.com/juju/version/v2 v2.0.0-20220204124744-fc9915e3d935/go.mod h1:ZeFjNy+UFEWJDDPdzW7Cm9NeU6dsViGaFYhXzycLQrw= github.com/julienschmidt/httprouter v1.1.1-0.20151013225520-77a895ad01eb/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -547,10 +523,11 @@ github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.3 h1:v9QZf2Sn6AmjXtQeFpdoq/eaNtYP6IN+7lcrygsIAtg= github.com/lib/pq v1.10.3/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lightninglabs/aperture v0.1.18-beta h1:LsrvNyCAeyD4v7xSQ3Lsu5AYX4CDx3ub0kuCv6/AMNQ= github.com/lightninglabs/aperture v0.1.18-beta/go.mod h1:lDjRKhndRH0CzZQ2m8dWODdqp/ejEW7esb2u2nlvrw4= -github.com/lightninglabs/faraday v0.2.9-alpha.0.20230215114316-475a2fe8b5e1 h1:tMLNw1iuhunNIBo5AAItl3Zjqo8U4/sY+WrTtWweEVU= -github.com/lightninglabs/faraday v0.2.9-alpha.0.20230215114316-475a2fe8b5e1/go.mod h1:wiqeT43NmVv9HQlSzTVZmW6bRjoJDPNN1RpZr451aJE= +github.com/lightninglabs/aperture v0.1.19-beta.0.20230227124349-b952e4ee6ff4 h1:1KwmHQWnssx7yk0HzOUMcAkwIdVerEozmvq3B5luO4Y= +github.com/lightninglabs/aperture v0.1.19-beta.0.20230227124349-b952e4ee6ff4/go.mod h1:q6FqmxkrHxQgmbSHW5CMxQlhIMiXxqVogBZYmC0OmhQ= +github.com/lightninglabs/faraday v0.2.9-alpha.0.20230307084535-e9359999b5da h1:7DgyJvFgCbgQsPEHsNShAfW+umjVvOqEp6n0IgQXpQ0= +github.com/lightninglabs/faraday v0.2.9-alpha.0.20230307084535-e9359999b5da/go.mod h1:uJ6dqaUatwiOcyek6SzJ/Rt6LZI5BQIopXVZr3L+xvU= github.com/lightninglabs/gozmq v0.0.0-20191113021534-d20a764486bf h1:HZKvJUHlcXI/f/O0Avg7t8sqkPo78HFzjmeYFl6DPnc= github.com/lightninglabs/gozmq v0.0.0-20191113021534-d20a764486bf/go.mod h1:vxmQPeIQxPf6Jf9rM8R+B4rKBqLA2AjttNxkFBL2Plk= github.com/lightninglabs/lightning-node-connect v0.1.12-alpha h1:S/S2EmOoTsa6cCDcJjnHGvzkhf69XH7qJ4nMYBVpqwc= @@ -558,42 +535,43 @@ github.com/lightninglabs/lightning-node-connect v0.1.12-alpha/go.mod h1:dgyhE+O4 github.com/lightninglabs/lightning-node-connect/hashmailrpc v1.0.2 h1:Er1miPZD2XZwcfE4xoS5AILqP1mj7kqnhbBSxW9BDxY= github.com/lightninglabs/lightning-node-connect/hashmailrpc v1.0.2/go.mod h1:antQGRDRJiuyQF6l+k6NECCSImgCpwaZapATth2Chv4= github.com/lightninglabs/lndclient v0.15.0-0/go.mod h1:ORS/YFe9hAXlzN/Uj+gvTmrnXEml6yD6dWwzCjpTJyQ= -github.com/lightninglabs/lndclient v0.15.1-5/go.mod h1:6pymu+B4mYQDWQH1Beu51Pnrj556xNlqOe5j1ITsADE= -github.com/lightninglabs/lndclient v0.15.4-0 h1:K+Biu0V94VRLBmc+DQJcU0KrRQI7wOndIAFpV7qIGiQ= -github.com/lightninglabs/lndclient v0.15.4-0/go.mod h1:bCUgwozVk/5O99DajpJxUfaCbjSXgHuis5WT2iC7B5c= -github.com/lightninglabs/loop v0.21.0-beta h1:owJ+xPl3roSmcc51ofGBSzHgBVtj/6KmU5gWc0xfNRM= -github.com/lightninglabs/loop v0.21.0-beta/go.mod h1:mVxxiGCyE1VpVREQBM29qg2D6ZZ6m/qpLZBeeNNN7JI= -github.com/lightninglabs/loop/swapserverrpc v1.0.1/go.mod h1:imy1/sqnb70EEyBKMo4pHwwLBPW8uYahWZ8s+1Xcq1o= +github.com/lightninglabs/lndclient v0.16.0-9 h1:rqvmEgH/1yILUwkB1Kg60EcBEFUWfV5iFJ1llpFfjoM= +github.com/lightninglabs/lndclient v0.16.0-9/go.mod h1:2lh5FD1Xtu+k5Pl+iMzSklFsjN+7QmcoJ5GAh+nzj5g= +github.com/lightninglabs/loop v0.21.0-beta.0.20230307115451-ec4f2507535c h1:VeKuYugjdBoj6AcvnwCYpwZLtZyjrXBCldeY1mSIvf0= +github.com/lightninglabs/loop v0.21.0-beta.0.20230307115451-ec4f2507535c/go.mod h1:HAYzQBOlfQlBNDccZvw5MWBO6FDzdGgKoZZJ0souUP0= github.com/lightninglabs/loop/swapserverrpc v1.0.3 h1:Uslz7QZ2MWKo00JrEumCqDs9S4hR6Is4cA2GsoTbLd8= github.com/lightninglabs/loop/swapserverrpc v1.0.3/go.mod h1:imy1/sqnb70EEyBKMo4pHwwLBPW8uYahWZ8s+1Xcq1o= github.com/lightninglabs/neutrino v0.13.2/go.mod h1:Cv/v8oHiPhuGiGvGgO+rIMhwCwEdsQFu6as840i2afw= github.com/lightninglabs/neutrino v0.14.1/go.mod h1:SV9ccrw2m6t6UvJX8xB//W0Dv+LEwMTbjg4V/Fb5KwU= -github.com/lightninglabs/neutrino v0.14.2 h1:yrnZUCYMZ5ECtXhgDrzqPq2oX8awoAN2D/cgCewJcCo= -github.com/lightninglabs/neutrino v0.14.2/go.mod h1:OICUeTCn+4Tu27YRJIpWvvqySxx4oH4vgdP33Sw9RDc= -github.com/lightninglabs/pool v0.6.1-beta.0.20221202155747-aec0aee8d9a1 h1:MuvbpEhS+jV6NMB2jKjKagq3lUh2w5qZiOGxNuciK30= -github.com/lightninglabs/pool v0.6.1-beta.0.20221202155747-aec0aee8d9a1/go.mod h1:x7jWw8GelJKxLf0sAwArUPxbp4FzTalK3+eWjGY/b0g= +github.com/lightninglabs/neutrino v0.15.0 h1:yr3uz36fLAq8hyM0TRUVlef1TRNoWAqpmmNlVtKUDtI= +github.com/lightninglabs/neutrino v0.15.0/go.mod h1:pmjwElN/091TErtSE9Vd5W4hpxoG2/+xlb+HoPm9Gug= +github.com/lightninglabs/neutrino/cache v1.1.1 h1:TllWOSlkABhpgbWJfzsrdUaDH2fBy/54VSIB4vVqV8M= +github.com/lightninglabs/neutrino/cache v1.1.1/go.mod h1:XJNcgdOw1LQnanGjw8Vj44CvguYA25IMKjWFZczwZuo= +github.com/lightninglabs/pool v0.6.1-beta.0.20230227204507-0db3a9fdc6fd h1:pbNKLVdWnLXy12Jyf79DUbkA1k/gbG4Qqq4YZyPkc/M= +github.com/lightninglabs/pool v0.6.1-beta.0.20230227204507-0db3a9fdc6fd/go.mod h1:v5VyYxU+mLsBgDoniJv9ylOsIY2E+xaOR/iSNHfTIiM= github.com/lightninglabs/pool/auctioneerrpc v1.1.0 h1:XOhmaFKRvQ1smwkY9SRTA0+FCloTExuhaQX4jgtrBB0= github.com/lightninglabs/pool/auctioneerrpc v1.1.0/go.mod h1:F9uND5Kpj2eYeYe0RLi8IWQHsRjQ88FUp8itkYmX1Mo= github.com/lightninglabs/protobuf-hex-display v1.4.3-hex-display h1:RZJ8H4ueU/aQ9pFtx5wqsuD3B/DezrewJeVwDKKYY8E= github.com/lightninglabs/protobuf-hex-display v1.4.3-hex-display/go.mod h1:2oKOBU042GKFHrdbgGiKax4xVrFiZu51lhacUZQ9MnE= -github.com/lightningnetwork/lightning-onion v1.0.2-0.20220211021909-bb84a1ccb0c5 h1:TkKwqFcQTGYoI+VEqyxA8rxpCin8qDaYX0AfVRinT3k= github.com/lightningnetwork/lightning-onion v1.0.2-0.20220211021909-bb84a1ccb0c5/go.mod h1:7dDx73ApjEZA0kcknI799m2O5kkpfg4/gr7N092ojNo= +github.com/lightningnetwork/lightning-onion v1.2.1-0.20221202012345-ca23184850a1 h1:Wm0g70gkcAu2pGpNZwfWPSVOY21j8IyYsNewwK4OkT4= +github.com/lightningnetwork/lightning-onion v1.2.1-0.20221202012345-ca23184850a1/go.mod h1:7dDx73ApjEZA0kcknI799m2O5kkpfg4/gr7N092ojNo= github.com/lightningnetwork/lnd v0.14.1-beta.0.20220324135938-0dcaa511a249/go.mod h1:Tp3ZxsfioUl6kQ30RrbMqWoZyZ4K+fv/o1lMEU8U7rA= github.com/lightningnetwork/lnd v0.15.0-beta.rc3/go.mod h1:NzCE1ZGct0YEW9u74TXUpXp5AoUXzpkI5lgrO7x0ugM= -github.com/lightningnetwork/lnd v0.15.1-beta/go.mod h1:21UpSyTj8n94nsaJ0OFRXk4yOEkE7xA9JEX5QS4oMy4= -github.com/lightningnetwork/lnd v0.15.4-beta/go.mod h1:6aoOkifcI9tuk8UV5l2rVZSq0681obuP4zvfK+2ZrT0= -github.com/lightningnetwork/lnd v0.15.5-beta h1:jdGVLJIYSe60NAn7qzBY3gET2I/FmLW4TTGvrECmgOE= -github.com/lightningnetwork/lnd v0.15.5-beta/go.mod h1:/UKsaOll/pYJltXIC0VKRGHR0Jqhl9bBX/fUiINSwF4= -github.com/lightningnetwork/lnd/cert v1.1.1 h1:Nsav0RlIDRbOnzz2Yu69SQlK939IKya3Q2S0mDviIN8= +github.com/lightningnetwork/lnd v0.16.0-beta.rc2 h1:49vVlAzUBcE6kEBDl77ohKsFmlzJ5YOZ4dGHCzNoYb4= +github.com/lightningnetwork/lnd v0.16.0-beta.rc2/go.mod h1:MepaR6bfcPFLt6dGfz3Y8P2BFtvOLJuqT6aulf2eYhE= github.com/lightningnetwork/lnd/cert v1.1.1/go.mod h1:1P46svkkd73oSoeI4zjkVKgZNwGq8bkGuPR8z+5vQUs= +github.com/lightningnetwork/lnd/cert v1.2.1 h1:CTrTcU0L66J73oqdRLVfNylZyp1Fh97ZezX6IuzkrqE= +github.com/lightningnetwork/lnd/cert v1.2.1/go.mod h1:04JhIEodoR6usBN5+XBRtLEEmEHsclLi0tEyxZQNP+w= github.com/lightningnetwork/lnd/clock v1.0.1/go.mod h1:KnQudQ6w0IAMZi1SgvecLZQZ43ra2vpDNj7H/aasemg= github.com/lightningnetwork/lnd/clock v1.1.0 h1:/yfVAwtPmdx45aQBoXQImeY7sOIEr7IXlImRMBOZ7GQ= github.com/lightningnetwork/lnd/clock v1.1.0/go.mod h1:KnQudQ6w0IAMZi1SgvecLZQZ43ra2vpDNj7H/aasemg= github.com/lightningnetwork/lnd/healthcheck v1.0.0/go.mod h1:u92p1JGFJNMSkMvztKEwmt1P3TRnLeJBXZ3M85xkU1E= github.com/lightningnetwork/lnd/healthcheck v1.2.2 h1:im+qcpgSuteqRCGeorT9yqVXuLrS6A7/acYzGgarMS4= github.com/lightningnetwork/lnd/healthcheck v1.2.2/go.mod h1:IWY0GChlarRbXFkFDdE4WY5POYJabe/7/H1iCZt4ZKs= -github.com/lightningnetwork/lnd/kvdb v1.3.1 h1:gEz3zudNNRrCLEvqRaktYoKwsUblyHX+MKjR0aI3QnM= github.com/lightningnetwork/lnd/kvdb v1.3.1/go.mod h1:x+IpsuDynubjokUofavLXroeGfS/WrqUXXTK6vN/gp4= +github.com/lightningnetwork/lnd/kvdb v1.4.1 h1:l/nLBPLbdvP/lajMtrFMLzAi5OoLTH3+zUU6SwoEEv8= +github.com/lightningnetwork/lnd/kvdb v1.4.1/go.mod h1:f+F7Da8HTa8MePFsdWvusGRdcmWTgSWykGsVyC02Z5M= github.com/lightningnetwork/lnd/queue v1.0.1/go.mod h1:vaQwexir73flPW43Mrm7JOgJHmcEFBWWSl9HlyASoms= github.com/lightningnetwork/lnd/queue v1.1.0 h1:YpCJjlIvVxN/R7ww2aNiY8ex7U2fucZDLJ67tI3HFx8= github.com/lightningnetwork/lnd/queue v1.1.0/go.mod h1:YTkTVZCxz8tAYreH27EO3s8572ODumWrNdYW2E/YKxg= @@ -605,34 +583,31 @@ github.com/lightningnetwork/lnd/tlv v1.0.3/go.mod h1:dzR/aZetBri+ZY/fHbwV06fNn/3 github.com/lightningnetwork/lnd/tlv v1.1.0 h1:gsyte75HVuA/X59O+BhaISHM6OobZ0YesPbdu+xG1h0= github.com/lightningnetwork/lnd/tlv v1.1.0/go.mod h1:0+JKp4un47MG1lnj6jKa8woNeB1X7w3yF4MZB1NHiiE= github.com/lightningnetwork/lnd/tor v1.0.0/go.mod h1:RDtaAdwfAm+ONuPYwUhNIH1RAvKPv+75lHPOegUcz64= -github.com/lightningnetwork/lnd/tor v1.0.1 h1:A11FrpU0Y//g+fA827W4VnjOeoIvExONdchlLX8wYkA= -github.com/lightningnetwork/lnd/tor v1.0.1/go.mod h1:RDtaAdwfAm+ONuPYwUhNIH1RAvKPv+75lHPOegUcz64= +github.com/lightningnetwork/lnd/tor v1.1.0 h1:iXO7fSzjxTI+p88KmtpbuyuRJeNfgtpl9QeaAliILXE= +github.com/lightningnetwork/lnd/tor v1.1.0/go.mod h1:RDtaAdwfAm+ONuPYwUhNIH1RAvKPv+75lHPOegUcz64= github.com/ltcsuite/ltcd v0.0.0-20190101042124-f37f8bf35796 h1:sjOGyegMIhvgfq5oaue6Td+hxZuf3tDC8lAPrFldqFw= github.com/ltcsuite/ltcd v0.0.0-20190101042124-f37f8bf35796/go.mod h1:3p7ZTf9V1sNPI5H8P3NkTFF4LuwMdPl2DodF60qAKqY= github.com/ltcsuite/ltcutil v0.0.0-20181217130922-17f3b04680b6/go.mod h1:8Vg/LTOO0KYa/vlHWJ6XZAevPQThGH5sufO0Hrou/lA= github.com/lunixbochs/vtclean v0.0.0-20160125035106-4fbf7632a2c6/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= -github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/masterzen/azure-sdk-for-go v3.2.0-beta.0.20161014135628-ee4f0065d00c+incompatible/go.mod h1:mf8fjOu33zCqxUjuiU3I8S1lJMyEAlH+0F2+M5xl3hE= github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= -github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= github.com/masterzen/winrm v0.0.0-20161014151040-7a535cd943fc/go.mod h1:CfZSN7zwz5gJiFhZJz49Uzk7mEBHIceWmbFmYx7Hf7E= -github.com/masterzen/winrm v0.0.0-20211231115050-232efb40349e/go.mod h1:Iju3u6NzoTAvjuhsGCZc+7fReNnr/Bd6DsWj3WTokIU= github.com/masterzen/xmlpath v0.0.0-20140218185901-13f4951698ad/go.mod h1:A0zPC53iKKKcXYxr4ROjpQRQ5FgJXtelNdSmHHuq/tY= github.com/mattn/go-colorable v0.0.6/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-isatty v0.0.0-20160806122752-66b8e73f3f5c/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA= -github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mholt/archiver/v3 v3.5.0 h1:nE8gZIrw66cu4osS/U7UW7YDuGMHssxKutU8IfWxwWE= @@ -715,6 +690,8 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= @@ -759,8 +736,9 @@ github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5q github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -768,8 +746,9 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= @@ -789,8 +768,7 @@ github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0o github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.9 h1:cv3/KhXGBGjEXLC4bH0sLuJ9BewaAbpk5oyMOveu4pw= github.com/urfave/cli v1.22.9/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= -github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs= +github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= @@ -809,60 +787,69 @@ go.etcd.io/bbolt v1.3.5-0.20200615073812-232d8fc87f50/go.mod h1:G5EMThwa9y8QZGBC go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/api/v3 v3.5.1 h1:v28cktvBq+7vGyJXF8G+rWJmj+1XUmMtqcLnH8hDocM= go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/api/v3 v3.5.7 h1:sbcmosSVesNrWOJ58ZQFitHMdncusIifYcrBfwrlJSY= +go.etcd.io/etcd/api/v3 v3.5.7/go.mod h1:9qew1gCdDDLu+VwmeG+iFpL+QlpHTo7iubavdVDgCAA= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/pkg/v3 v3.5.1 h1:XIQcHCFSG53bJETYeRJtIxdLv2EWRGxcfzR8lSnTH4E= go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/pkg/v3 v3.5.7 h1:y3kf5Gbp4e4q7egZdn5T7W9TSHUvkClN6u+Rq9mEOmg= +go.etcd.io/etcd/client/pkg/v3 v3.5.7/go.mod h1:o0Abi1MK86iad3YrWhgUsbGx1pmTS+hrORWc2CamuhY= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.etcd.io/etcd/client/v2 v2.305.1 h1:vtxYCKWA9x31w0WJj7DdqsHFNjhkigdAnziDtkZb/l4= go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= +go.etcd.io/etcd/client/v2 v2.305.7 h1:AELPkjNR3/igjbO7CjyF1fPuVPjrblliiKj+Y6xSGOU= +go.etcd.io/etcd/client/v2 v2.305.7/go.mod h1:GQGT5Z3TBuAQGvgPfhR7VPySu/SudxmEkRq9BgzFU6s= go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= -go.etcd.io/etcd/client/v3 v3.5.1 h1:oImGuV5LGKjCqXdjkMHCyWa5OO1gYKCnC/1sgdfj1Uk= go.etcd.io/etcd/client/v3 v3.5.1/go.mod h1:OnjH4M8OnAotwaB2l9bVgZzRFKru7/ZMoS46OtKyd3Q= +go.etcd.io/etcd/client/v3 v3.5.7 h1:u/OhpiuCgYY8awOHlhIhmGIGpxfBU/GZBUP3m/3/Iz4= +go.etcd.io/etcd/client/v3 v3.5.7/go.mod h1:sOWmj9DZUMyAngS7QQwCyAXXAL6WhgTOPLNS/NabQgw= go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= -go.etcd.io/etcd/pkg/v3 v3.5.1 h1:nYifzmtBQ2l91wUQM6aZGGwR/pvpQQyscmS4azm184Q= go.etcd.io/etcd/pkg/v3 v3.5.1/go.mod h1:Qb9MvSx6rlo+Es8pOvkCQjGf7L8GA+NxrkRcyZ7eGXo= +go.etcd.io/etcd/pkg/v3 v3.5.7 h1:obOzeVwerFwZ9trMWapU/VjDcYUJb5OfgC1zqEGWO/0= +go.etcd.io/etcd/pkg/v3 v3.5.7/go.mod h1:kcOfWt3Ov9zgYdOiJ/o1Y9zFfLhQjylTgL4Lru8opRo= go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= -go.etcd.io/etcd/raft/v3 v3.5.1 h1:nthXrxmATKB9OZ9C64sk3QZaJ1WZ8tmlI0VwzpJSZwg= go.etcd.io/etcd/raft/v3 v3.5.1/go.mod h1:WIlKzH/rjc54LDZ8SOa7GObrrdX3z96MkP1WDfODBeA= +go.etcd.io/etcd/raft/v3 v3.5.7 h1:aN79qxLmV3SvIq84aNTliYGmjwsW6NqJSnqmI1HLJKc= +go.etcd.io/etcd/raft/v3 v3.5.7/go.mod h1:TflkAb/8Uy6JFBxcRaH2Fr6Slm9mCPVdI2efzxY96yU= go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= -go.etcd.io/etcd/server/v3 v3.5.1 h1:u8risUH348DmLy2XD3krH/S3GWk2ljuCrs8V3hd4584= go.etcd.io/etcd/server/v3 v3.5.1/go.mod h1:yBKYw++NWu6ciuWoKuL7UXgGKDP7ICBCuVQrIcYbPdw= +go.etcd.io/etcd/server/v3 v3.5.7 h1:BTBD8IJUV7YFgsczZMHhMTS67XuA4KpRquL0MFOJGRk= +go.etcd.io/etcd/server/v3 v3.5.7/go.mod h1:gxBgT84issUVBRpZ3XkW1T55NjOb4vZZRI4wVvNhf4A= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0= go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0 h1:sO4WKdPAudZGKPcpZT4MJn6JaDmpyLrMPDGGyA1SttE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= -go.opentelemetry.io/otel v0.20.0 h1:eaP0Fqu7SXHwvjiqDq83zImeehOHX8doTvU9AwXON8g= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0 h1:Wx7nFnvCaissIUZxPkBqDz2963Z+Cl+PkYbDKzTxDqQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0/go.mod h1:E5NNboN0UqSAki0Atn9kVwaN7I+l25gGxDqBueo/74E= go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel/exporters/otlp v0.20.0 h1:PTNgq9MRmQqqJY0REVbZFvwkYOA85vbdQU/nVfxDyqg= +go.opentelemetry.io/otel v1.0.1 h1:4XKyXmfqJLOQ7feyV5DB6gsBFZ0ltB8vLtp6pj4JIcc= +go.opentelemetry.io/otel v1.0.1/go.mod h1:OPEOD4jIT2SlZPMmwT6FqZz2C0ZNdQqiWcoK6M0SNFU= go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= -go.opentelemetry.io/otel/metric v0.20.0 h1:4kzhXFP+btKm4jwxpjIqjs41A7MakRFUS86bqLHTIw8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1 h1:ofMbch7i29qIUf7VtF+r0HRF6ac0SBaPSziSsKp7wkk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1/go.mod h1:Kv8liBeVNFkkkbilbgWRpV+wWuu+H5xdOT6HAgd30iw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1 h1:CFMFNoz+CGprjFAFy+RJFrfEe4GBia3RRm2a4fREvCA= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1/go.mod h1:xOvWoTOrQjxjW61xtOmD/WKGRYb/P4NzRo3bs65U6Rk= go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/oteltest v0.20.0 h1:HiITxCawalo5vQzdHfKeZurV8x7ljcqAgiWzF6Vaeaw= go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= -go.opentelemetry.io/otel/sdk v0.20.0 h1:JsxtGXd06J8jrnya7fdI/U/MR6yXA5DtbZy+qoHQlr8= go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= -go.opentelemetry.io/otel/sdk/export/metric v0.20.0 h1:c5VRjxCXdQlx1HjzwGdQHzZaVI82b5EbBgOu2ljD92g= +go.opentelemetry.io/otel/sdk v1.0.1 h1:wXxFEWGo7XfXupPwVJvTBOaPBC9FEg0wB8hMNrKk+cA= +go.opentelemetry.io/otel/sdk v1.0.1/go.mod h1:HrdXne+BiwsOHYYkBE5ysIcv2bvdZstxzmCQhxTcZkI= go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= -go.opentelemetry.io/otel/sdk/metric v0.20.0 h1:7ao1wpzHRVKf0OQ7GIxiQJA6X7DLX9o14gmVon7mMK8= go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= -go.opentelemetry.io/otel/trace v0.20.0 h1:1DL6EXUdcg95gukhuRRvLDO/4X5THh/5dIV52lqtnbw= go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= -go.opentelemetry.io/proto/otlp v0.7.0 h1:rwOQPCuKAKmwGKq2aVNnYIibI6wnV7EvzgfTCzcdGg8= +go.opentelemetry.io/otel/trace v1.0.1 h1:StTeIH6Q3G4r0Fiw34LTokUFESZgIDUr0qIJ7mKmAfw= +go.opentelemetry.io/otel/trace v1.0.1/go.mod h1:5g4i4fKLaX2BQpSBsxw8YYcgKpMMSW3x7ZTuYBr3sUk= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.9.0 h1:C0g6TWmQYvjKRnljRULLWUVJGy8Uvu0NEL/5frY2/t4= +go.opentelemetry.io/proto/otlp v0.9.0/go.mod h1:1vKfU9rv61e9EVGthD1zNvUbiwPcimSsOPU9brfSHJg= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= @@ -890,12 +877,10 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -909,6 +894,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= +golang.org/x/exp v0.0.0-20221111094246-ab4555d3164f h1:dx+ByaHZgQORWfy/TumeLerCm48o5pDf+skF0SWtLdY= +golang.org/x/exp v0.0.0-20221111094246-ab4555d3164f/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -922,7 +909,6 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= @@ -935,6 +921,8 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20211013180041-c96bc1413d57/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/net v0.0.0-20180406214816-61147c48b25b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -979,10 +967,7 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1002,8 +987,9 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1059,14 +1045,14 @@ golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426080607-c94f62235c83/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -1147,7 +1133,8 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.8-0.20211029000441-d6a9af8af023/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= +golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1230,9 +1217,12 @@ google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0 h1:Klz8I9kdtkIN6EpHHUOMLCYhTn/2WAe5a0s1hcBkdTI= google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.41.0 h1:f+PlOh7QV4iIJkPrx5NQ7qaNGFQ3OTse67yaDHfju4E= +google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1302,6 +1292,30 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM= launchpad.net/xmlpath v0.0.0-20130614043138-000000000004/go.mod h1:vqyExLOM3qBx7mvYRkoxjSCF945s0mbe7YynlKYXtsA= +lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI= +lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw= +modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0= +modernc.org/ccgo/v3 v3.16.13 h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw= +modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY= +modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk= +modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= +modernc.org/libc v1.22.2 h1:4U7v51GyhlWqQmwCHj28Rdq2Yzwk55ovjFrdPjs8Hb0= +modernc.org/libc v1.22.2/go.mod h1:uvQavJ1pZ0hIoC/jfqNoMLURIMhKzINIWypNM17puug= +modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.4.0 h1:crykUfNSnMAXaOJnnxcSzbUGMqkLWjklJKkBK2nwZwk= +modernc.org/memory v1.4.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.20.3 h1:SqGJMMxjj1PHusLxdYxeQSodg7Jxn9WWkaAQjKrntZs= +modernc.org/sqlite v1.20.3/go.mod h1:zKcGyrICaxNTMEHSr1HQ2GUraP0j+845GYw37+EyT6A= +modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/tcl v1.15.0 h1:oY+JeD11qVVSgVvodMJsu7Edf8tr5E/7tuhF5cNYz34= +modernc.org/token v1.0.1 h1:A3qvTqOwexpfZZeyI0FeGPDlSWX5pjZu9hF4lU+EKWg= +modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/z v1.7.0 h1:xkDw/KepgEjeizO2sNco+hqYkU12taxQFqPEmgm1GWE= nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/itest/litd_accounts_test.go b/itest/litd_accounts_test.go index 904c2f0e..c2389af6 100644 --- a/itest/litd_accounts_test.go +++ b/itest/litd_accounts_test.go @@ -79,13 +79,11 @@ func runAccountSystemTest(t *harnessTest, node *HarnessNode, hostPort, ) assertNumChannels(ctxt, t.t, node.LightningClient, 1, 0, 0, 0) - // In remote mode there's another node out there that we are connected - // to. - numPeers := 2 - if node.Cfg.RemoteMode { - numPeers = 3 - } - assertNumPeers(ctxt, t.t, node.LightningClient, numPeers) + // Before the big lnd itest framework refactor the passive nodes Alice + // and Bob were always started. Now they are optional, and we don't + // start them, so we just have either Alice or Bob and the additional + // node Charlie as peers. + assertNumPeers(ctxt, t.t, node.LightningClient, 2) // Prepare our gRPC connection with the super macaroon as the // authentication mechanism. diff --git a/itest/litd_mode_remote_test.go b/itest/litd_mode_remote_test.go index 9a987c64..7582ec6e 100644 --- a/itest/litd_mode_remote_test.go +++ b/itest/litd_mode_remote_test.go @@ -16,7 +16,7 @@ import ( func testModeRemote(ctx context.Context, net *NetworkHarness, t *harnessTest) { // Some very basic functionality tests to make sure lnd is working fine // in remote mode. - net.SendCoins(t.t, btcutil.SatoshiPerBitcoin, net.Bob) + net.LNDHarness.FundCoins(btcutil.SatoshiPerBitcoin, net.Bob.RemoteLnd) // We expect a non-empty alias (truncated node ID) to be returned. resp, err := net.Bob.GetInfo(ctx, &lnrpc.GetInfoRequest{}) diff --git a/itest/litd_node.go b/itest/litd_node.go index 8cb5b2cc..30ef77c7 100644 --- a/itest/litd_node.go +++ b/itest/litd_node.go @@ -34,6 +34,7 @@ import ( "github.com/lightningnetwork/lnd/lnrpc/watchtowerrpc" "github.com/lightningnetwork/lnd/lnrpc/wtclientrpc" "github.com/lightningnetwork/lnd/lntest" + "github.com/lightningnetwork/lnd/lntest/node" "github.com/lightningnetwork/lnd/lntest/wait" "github.com/lightningnetwork/lnd/macaroons" "google.golang.org/grpc" @@ -58,12 +59,14 @@ var ( ) type LitNodeConfig struct { - *lntest.BaseNodeConfig + *node.BaseNodeConfig LitArgs []string RemoteMode bool + HasSeed bool + FaradayMacPath string LoopMacPath string PoolMacPath string @@ -81,21 +84,21 @@ type LitNodeConfig struct { } func (cfg *LitNodeConfig) LitAddr() string { - return fmt.Sprintf(lntest.ListenerFormat, cfg.LitPort) + return fmt.Sprintf(node.ListenerFormat, cfg.LitPort) } func (cfg *LitNodeConfig) LitRESTAddr() string { - return fmt.Sprintf(lntest.ListenerFormat, cfg.LitRESTPort) + return fmt.Sprintf(node.ListenerFormat, cfg.LitRESTPort) } func (cfg *LitNodeConfig) GenerateListeningPorts() { cfg.BaseNodeConfig.GenerateListeningPorts() if cfg.LitPort == 0 { - cfg.LitPort = lntest.NextAvailablePort() + cfg.LitPort = node.NextAvailablePort() } if cfg.LitRESTPort == 0 { - cfg.LitRESTPort = lntest.NextAvailablePort() + cfg.LitRESTPort = node.NextAvailablePort() } } @@ -160,17 +163,18 @@ func (cfg *LitNodeConfig) GenArgs() []string { // policyUpdateMap defines a type to store channel policy updates. It has the // format, -// { -// "chanPoint1": { -// "advertisingNode1": [ -// policy1, policy2, ... -// ], -// "advertisingNode2": [ -// policy1, policy2, ... -// ] -// }, -// "chanPoint2": ... -// } +// +// { +// "chanPoint1": { +// "advertisingNode1": [ +// policy1, policy2, ... +// ], +// "advertisingNode2": [ +// policy1, policy2, ... +// ] +// }, +// "chanPoint2": ... +// } type policyUpdateMap map[string]map[string][]*lnrpc.RoutingPolicy // HarnessNode represents an instance of lnd running within our test network @@ -182,8 +186,7 @@ type HarnessNode struct { // NodeID is a unique identifier for the node within a NetworkHarness. NodeID int - RemoteLnd *lntest.HarnessNode - RemoteLndHarness *lntest.NetworkHarness + RemoteLnd *node.HarnessNode // PubKey is the serialized compressed identity public key of the node. // This field will only be populated once the node itself has been @@ -254,7 +257,7 @@ func newNode(t *testing.T, cfg *LitNodeConfig, if cfg.BaseDir == "" { var err error - cfg.BaseDir, err = ioutil.TempDir("", "litdtest-node") + cfg.BaseDir, err = os.MkdirTemp("", "litdtest-node") if err != nil { return nil, err } @@ -295,38 +298,18 @@ func newNode(t *testing.T, cfg *LitNodeConfig, _, _ = rand.Read(randomBytes[:]) cfg.UIPassword = base64.URLEncoding.EncodeToString(randomBytes[:]) - // Run all tests with accept keysend. The keysend code is very isolated - // and it is highly unlikely that it would affect regular itests when - // enabled. - cfg.AcceptKeySend = true - numActiveNodesMtx.Lock() nodeNum := numActiveNodes numActiveNodes++ numActiveNodesMtx.Unlock() - var ( - remoteNode *lntest.HarnessNode - remoteNodeHarness *lntest.NetworkHarness - err error - ) + var remoteNode *node.HarnessNode if cfg.RemoteMode { - lndBinary := strings.ReplaceAll( - getLitdBinary(), itestLitdBinary, itestLndBinary, - ) - remoteNodeHarness, err = lntest.NewNetworkHarness( - harness.Miner, harness.BackendCfg, lndBinary, - lntest.BackendBbolt, - ) - if err != nil { - return nil, err - } - err = remoteNodeHarness.SetUp(t, "remote-lnd", cfg.ExtraArgs) - if err != nil { - return nil, err - } + lndHarness := harness.LNDHarness - remoteNode = remoteNodeHarness.Bob + remoteNode = lndHarness.NewNode("bob-custom", cfg.ExtraArgs) + tenBTC := btcutil.Amount(10 * btcutil.SatoshiPerBitcoin) + lndHarness.FundCoins(tenBTC, remoteNode) cfg.RPCPort = remoteNode.Cfg.RPCPort cfg.P2PPort = remoteNode.Cfg.P2PPort @@ -334,11 +317,12 @@ func newNode(t *testing.T, cfg *LitNodeConfig, cfg.AdminMacPath = remoteNode.Cfg.AdminMacPath } + t.Logf("Created new node %s with p2p port %d", cfg.Name, cfg.P2PPort) + return &HarnessNode{ Cfg: cfg, NodeID: nodeNum, RemoteLnd: remoteNode, - RemoteLndHarness: remoteNodeHarness, chanWatchRequests: make(chan *chanWatchRequest), openChans: make(map[wire.OutPoint]int), openChanWatchers: make(map[wire.OutPoint][]chan struct{}), @@ -385,8 +369,6 @@ func (hn *HarnessNode) String() string { P2PPort: hn.Cfg.P2PPort, RPCPort: hn.Cfg.RPCPort, RESTPort: hn.Cfg.RESTPort, - AcceptKeySend: hn.Cfg.AcceptKeySend, - AcceptAMP: hn.Cfg.AcceptAMP, FeeURL: hn.Cfg.FeeURL, }, } @@ -491,14 +473,14 @@ func (hn *HarnessNode) start(litdBinary string, litdError chan<- error, getFinalizedLogFilePrefix := func() string { pubKeyHex := hex.EncodeToString(hn.PubKey[:logPubKeyBytes]) - return fmt.Sprintf("%s/%d-%s-%s-%s", lntest.GetLogDir(), + return fmt.Sprintf("%s/%d-%s-%s-%s", node.GetLogDir(), hn.NodeID, hn.Cfg.LogFilenamePrefix, hn.Cfg.Name, pubKeyHex) } // If the logoutput flag is passed, redirect output from the nodes to // log files. - dir := lntest.GetLogDir() + dir := node.GetLogDir() fileName := fmt.Sprintf("%s/%d-%s-%s-%s.log", dir, hn.NodeID, hn.Cfg.LogFilenamePrefix, hn.Cfg.Name, hex.EncodeToString(hn.PubKey[:logPubKeyBytes])) @@ -866,7 +848,7 @@ func (hn *HarnessNode) Unlock(ctx context.Context, // blocks until the server is in state ServerActive. func (hn *HarnessNode) waitTillServerStarted() error { ctxb := context.Background() - ctxt, cancel := context.WithTimeout(ctxb, lntest.NodeStartTimeout) + ctxt, cancel := context.WithTimeout(ctxb, wait.NodeStartTimeout) defer cancel() client, err := hn.StateClient.SubscribeState( @@ -1135,7 +1117,7 @@ func (hn *HarnessNode) stop() error { } if hn.Cfg.RemoteMode { - return hn.RemoteLndHarness.ShutdownNode(hn.RemoteLnd) + return hn.RemoteLnd.Shutdown() } return nil diff --git a/itest/litd_test.go b/itest/litd_test.go index f625ef45..37c5da8d 100644 --- a/itest/litd_test.go +++ b/itest/litd_test.go @@ -2,12 +2,10 @@ package itest import ( "fmt" - "os" "strings" "testing" "time" - "github.com/btcsuite/btcd/integration/rpctest" "github.com/lightninglabs/aperture" "github.com/lightninglabs/lightning-node-connect/gbn" "github.com/lightninglabs/lightning-node-connect/mailbox" @@ -28,88 +26,15 @@ func TestLightningTerminal(t *testing.T) { t.Skip("integration tests not selected with flag 'itest'") } - // Parse testing flags that influence our test execution. - logDir := "." - require.NoError(t, os.MkdirAll(logDir, 0700)) - - // Before we start any node, we need to make sure that any btcd node - // that is started through the RPC harness uses a unique port as well to - // avoid any port collisions. - rpctest.ListenAddressGenerator = lntest.GenerateBtcdListenerAddresses - - // Declare the network harness here to gain access to its - // 'OnTxAccepted' call back. - var litdHarness *NetworkHarness - - // Create an instance of the btcd's rpctest.Harness that will act as - // the miner for all tests. This will be used to fund the wallets of - // the nodes within the test network and to drive blockchain related - // events within the network. Revert the default setting of accepting - // non-standard transactions on simnet to reject them. Transactions on - // the lightning network should always be standard to get better - // guarantees of getting included in to blocks. - // - // We will also connect it to our chain backend. - miner, err := lntest.NewMiner() - require.NoError(t, err, "failed to create new miner") - defer func() { - require.NoError(t, miner.Stop(), "failed to stop miner") - }() - - // Start a chain backend. - chainBackend, cleanUp, err := lntest.NewBackend( - miner.P2PAddress(), harnessNetParams, - ) - require.NoError(t, err, "new backend") - defer func() { - require.NoError(t, cleanUp(), "cleanup") - }() - - // Before we start anything, we want to overwrite some of the connection - // settings to make the tests more robust. We might need to restart the - // miner while there are already blocks present, which will take a bit - // longer than the 1 second the default settings amount to. Doubling - // both values will give us retries up to 4 seconds. - miner.MaxConnRetries = rpctest.DefaultMaxConnectionRetries * 2 - miner.ConnectionRetryTimeout = rpctest.DefaultConnectionRetryTimeout * 2 - - // Set up miner and connect chain backend to it. - require.NoError(t, miner.SetUp(true, 50)) - require.NoError(t, miner.Client.NotifyNewTransactions(false)) - require.NoError(t, chainBackend.ConnectMiner(), "connect miner") - // Now we can set up our test harness (LND instance), with the chain // backend we just created. ht := newHarnessTest(t, nil) ht.setupLogging() binary := getLitdBinary() - litdHarness, err = NewNetworkHarness(miner, chainBackend, binary) - if err != nil { - ht.Fatalf("unable to create lightning network harness: %v", err) - } - defer litdHarness.Stop() - // Spawn a new goroutine to watch for any fatal errors that any of the - // running lnd processes encounter. If an error occurs, then the test - // case should naturally as a result and we log the server error here to - // help debug. - go func() { - for err := range litdHarness.ProcessErrors() { - ht.Logf("litd finished with error (stderr):\n%v", err) - } - }() - - // Next mine enough blocks in order for segwit and the CSV package - // soft-fork to activate on SimNet. - numBlocks := harnessNetParams.MinerConfirmationWindow * 2 - if _, err := miner.Client.Generate(numBlocks); err != nil { - ht.Fatalf("unable to generate blocks: %v", err) - } - - // With the btcd harness created, we can now complete the - // initialization of the network. args - list of lnd arguments, - // example: "--debuglevel=debug" - // TODO(roasbeef): create master balanced channel with all the monies? + lndBinary := strings.ReplaceAll( + getLitdBinary(), itestLitdBinary, itestLndBinary, + ) aliceBobArgs := []string{ "--default-remote-max-htlcs=483", "--dust-threshold=5000000", @@ -119,22 +44,46 @@ func TestLightningTerminal(t *testing.T) { // Run the subset of the test cases selected in this tranche. for _, testCase := range allTestCases { testCase := testCase - name := fmt.Sprintf("%s/%s", chainBackend.Name(), testCase.name) - success := t.Run(name, func(t1 *testing.T) { + success := t.Run(testCase.name, func(t1 *testing.T) { cleanTestCaseName := strings.ReplaceAll( testCase.name, " ", "_", ) + feeService := lntest.NewFeeService(t) + lndHarness := lntest.SetupHarness( + t1, lndBinary, "bbolt", feeService, + ) + t1.Cleanup(func() { + lndHarness.Stop() + }) + + // Start a chain backend. + chainBackend, _, err := lntest.NewBackend( + lndHarness.Miner.P2PAddress(), harnessNetParams, + ) + require.NoError(t1, err, "new backend") + + // Connect miner to chain backend to it. + require.NoError( + t1, chainBackend.ConnectMiner(), + "connect miner", + ) + + lndSubTest := lndHarness.Subtest(t1) + litdHarness, err := NewNetworkHarness( + lndSubTest, chainBackend, binary, + ) + require.NoError(t1, err) + err = litdHarness.SetUp( t1, cleanTestCaseName, aliceBobArgs, ) - require.NoError(t1, - err, "unable to set up test lightning network", - ) - defer func() { + require.NoError(t1, err, "harness setup failed") + t1.Cleanup(func() { require.NoError(t1, litdHarness.TearDown()) - }() + litdHarness.Stop() + }) litdHarness.EnsureConnected( t1, litdHarness.Alice, litdHarness.Bob, @@ -153,6 +102,12 @@ func TestLightningTerminal(t *testing.T) { // tied to the parent test. ht := newHarnessTest(t1, litdHarness) ht.RunTestCase(testCase) + + select { + case err := <-litdHarness.lndErrorChan: + require.NoError(t1, err) + default: + } }) // Stop at the first failure. Mimic behavior of original test diff --git a/itest/network_harness.go b/itest/network_harness.go index f529c23b..06dccbd0 100644 --- a/itest/network_harness.go +++ b/itest/network_harness.go @@ -22,6 +22,7 @@ import ( "github.com/lightningnetwork/lnd" "github.com/lightningnetwork/lnd/lnrpc" "github.com/lightningnetwork/lnd/lntest" + "github.com/lightningnetwork/lnd/lntest/node" "github.com/lightningnetwork/lnd/lntest/wait" "github.com/stretchr/testify/require" "golang.org/x/sync/errgroup" @@ -45,12 +46,14 @@ type NetworkHarness struct { // new blocks on the network. Miner *lntest.HarnessMiner + LNDHarness *lntest.HarnessTest + // server is an instance of the local Loop/Pool mock server. server *serverHarness // BackendCfg houses the information necessary to use a node as LND // chain backend, such as rpc configuration, P2P information etc. - BackendCfg lntest.BackendConfig + BackendCfg node.BackendConfig activeNodes map[int]*HarnessNode @@ -67,23 +70,21 @@ type NetworkHarness struct { // to main process. lndErrorChan chan error - quit chan struct{} - mtx sync.Mutex } // NewNetworkHarness creates a new network test harness. -func NewNetworkHarness(m *lntest.HarnessMiner, b lntest.BackendConfig, +func NewNetworkHarness(lndHarness *lntest.HarnessTest, b node.BackendConfig, litdBinary string) (*NetworkHarness, error) { n := NetworkHarness{ activeNodes: make(map[int]*HarnessNode), nodesByPub: make(map[string]*HarnessNode), lndErrorChan: make(chan error), - netParams: m.ActiveNet, - Miner: m, + netParams: lndHarness.Miner.ActiveNet, + Miner: lndHarness.Miner, + LNDHarness: lndHarness, BackendCfg: b, - quit: make(chan struct{}), litdBinary: litdBinary, } return &n, nil @@ -127,7 +128,7 @@ func (n *NetworkHarness) SetUp(t *testing.T, // Start our mock Loop/Pool server first. mockServerAddr := fmt.Sprintf( - lntest.ListenerFormat, lntest.NextAvailablePort(), + node.ListenerFormat, node.NextAvailablePort(), ) n.server = newServerHarness(mockServerAddr) err := n.server.start() @@ -173,34 +174,31 @@ func (n *NetworkHarness) SetUp(t *testing.T, // Bob is connected to a remote lnd that is also called Bob and already // got the necessary coins when being set up before. So we only need to // send to Alice here which is our integrated LiTd instance. - clients := []lnrpc.LightningClient{n.Alice} - for _, client := range clients { - for i := 0; i < 10; i++ { - resp, err := client.NewAddress(ctxb, addrReq) - if err != nil { - return err - } - addr, err := btcutil.DecodeAddress( - resp.Address, n.netParams, - ) - if err != nil { - return err - } - addrScript, err := txscript.PayToAddrScript(addr) - if err != nil { - return err - } + for i := 0; i < 10; i++ { + resp, err := n.Alice.NewAddress(ctxb, addrReq) + if err != nil { + return err + } + addr, err := btcutil.DecodeAddress( + resp.Address, n.netParams, + ) + if err != nil { + return err + } + addrScript, err := txscript.PayToAddrScript(addr) + if err != nil { + return err + } - output := &wire.TxOut{ - PkScript: addrScript, - Value: btcutil.SatoshiPerBitcoin, - } - _, err = n.Miner.SendOutputs( - []*wire.TxOut{output}, 7500, - ) - if err != nil { - return err - } + output := &wire.TxOut{ + PkScript: addrScript, + Value: btcutil.SatoshiPerBitcoin, + } + _, err = n.Miner.SendOutputs( + []*wire.TxOut{output}, 7500, + ) + if err != nil { + return err } } @@ -266,7 +264,6 @@ func (n *NetworkHarness) TearDown() error { // Stop stops the test harness. func (n *NetworkHarness) Stop() { close(n.lndErrorChan) - close(n.quit) n.autopilotServer.Stop() } @@ -298,12 +295,11 @@ func (n *NetworkHarness) NewNode(t *testing.T, name string, extraArgs []string, // initialization phase where the wallet is either created or restored. func (n *NetworkHarness) newNode(t *testing.T, name string, extraArgs, litArgs []string, hasSeed, remoteMode bool, password []byte, wait bool, - opts ...lntest.NodeOption) (*HarnessNode, error) { + opts ...node.Option) (*HarnessNode, error) { - baseCfg := &lntest.BaseNodeConfig{ + baseCfg := &node.BaseNodeConfig{ Name: name, LogFilenamePrefix: n.currentTestCase, - HasSeed: hasSeed, Password: password, BackendCfg: n.BackendCfg, NetParams: n.netParams, @@ -314,6 +310,7 @@ func (n *NetworkHarness) newNode(t *testing.T, name string, extraArgs, } cfg := &LitNodeConfig{ BaseNodeConfig: baseCfg, + HasSeed: hasSeed, LitArgs: litArgs, RemoteMode: remoteMode, } @@ -706,45 +703,6 @@ func (n *NetworkHarness) StopNode(node *HarnessNode) error { return node.stop() } -// waitForTxInMempool blocks until the target txid is seen in the mempool. If -// the transaction isn't seen within the network before the passed timeout, -// then an error is returned. -func (n *NetworkHarness) waitForTxInMempool(ctx context.Context, - txid chainhash.Hash) error { - - // Return immediately if harness has been torn down. - select { - case <-n.quit: - return fmt.Errorf("NetworkHarness has been torn down") - default: - } - - ticker := time.NewTicker(50 * time.Millisecond) - defer ticker.Stop() - - var mempool []*chainhash.Hash - for { - select { - case <-ctx.Done(): - return fmt.Errorf("wanted %v, found %v txs "+ - "in mempool: %v", txid, len(mempool), mempool) - - case <-ticker.C: - var err error - mempool, err = n.Miner.Client.GetRawMempool() - if err != nil { - return err - } - - for _, mempoolTx := range mempool { - if *mempoolTx == txid { - return nil - } - } - } - } -} - // OpenChannel attempts to open a channel between srcNode and destNode with the // passed channel funding parameters. If the passed context has a timeout, then // if the timeout is reached before the channel pending notification is @@ -758,7 +716,7 @@ func (n *NetworkHarness) OpenChannel(srcNode, destNode *HarnessNode, // The cancel is intentionally left out here because the returned // item(open channel client) relies on the context being active. This // will be fixed once we finish refactoring the NetworkHarness. - ctx, _ := context.WithTimeout(ctxb, lntest.ChannelOpenTimeout) // nolint: govet + ctx, _ := context.WithTimeout(ctxb, wait.ChannelOpenTimeout) // nolint: govet // Wait until srcNode and destNode have the latest chain synced. // Otherwise, we may run into a check within the funding manager that @@ -836,7 +794,7 @@ func (n *NetworkHarness) OpenPendingChannel(srcNode, destNode *HarnessNode, pushAmt btcutil.Amount) (*lnrpc.PendingUpdate, error) { ctxb := context.Background() - ctx, cancel := context.WithTimeout(ctxb, lntest.ChannelOpenTimeout) + ctx, cancel := context.WithTimeout(ctxb, wait.ChannelOpenTimeout) defer cancel() // Wait until srcNode and destNode have blockchain synced @@ -900,7 +858,7 @@ func (n *NetworkHarness) WaitForChannelOpen( openChanStream lnrpc.Lightning_OpenChannelClient) (*lnrpc.ChannelPoint, error) { ctxb := context.Background() - ctx, cancel := context.WithTimeout(ctxb, lntest.ChannelOpenTimeout) + ctx, cancel := context.WithTimeout(ctxb, wait.ChannelOpenTimeout) defer cancel() errChan := make(chan error) @@ -944,7 +902,7 @@ func (n *NetworkHarness) CloseChannel(lnNode *HarnessNode, // The cancel is intentionally left out here because the returned // item(close channel client) relies on the context being active. This // will be fixed once we finish refactoring the NetworkHarness. - ctx, _ := context.WithTimeout(ctxb, lntest.ChannelCloseTimeout) // nolint: govet + ctx, _ := context.WithTimeout(ctxb, wait.ChannelCloseTimeout) // nolint: govet // Create a channel outpoint that we can use to compare to channels // from the ListChannelsResponse. @@ -1057,12 +1015,10 @@ func (n *NetworkHarness) CloseChannel(lnNode *HarnessNode, return fmt.Errorf("unable to decode closeTxid: "+ "%v", err) } - if err := n.waitForTxInMempool(ctx, *closeTxid); err != nil { - return fmt.Errorf("error while waiting for "+ - "broadcast tx: %v", err) - } + n.LNDHarness.Miner.AssertTxInMempool(closeTxid) + return nil - }, lntest.ChannelCloseTimeout) + }, wait.ChannelCloseTimeout) if err != nil { return nil, nil, err } @@ -1078,7 +1034,7 @@ func (n *NetworkHarness) WaitForChannelClose( closeChanStream lnrpc.Lightning_CloseChannelClient) (*chainhash.Hash, error) { ctxb := context.Background() - ctx, cancel := context.WithTimeout(ctxb, lntest.ChannelCloseTimeout) + ctx, cancel := context.WithTimeout(ctxb, wait.ChannelCloseTimeout) defer cancel() errChan := make(chan error) @@ -1121,7 +1077,7 @@ func (n *NetworkHarness) AssertChannelExists(node *HarnessNode, chanPoint *wire.OutPoint, checks ...func(*lnrpc.Channel)) error { ctxb := context.Background() - ctx, cancel := context.WithTimeout(ctxb, lntest.ChannelCloseTimeout) + ctx, cancel := context.WithTimeout(ctxb, wait.ChannelCloseTimeout) defer cancel() req := &lnrpc.ListChannelsRequest{} @@ -1251,12 +1207,6 @@ func (n *NetworkHarness) sendCoins(amt btcutil.Amount, target *HarnessNode, // Now, wait for ListUnspent to show the unconfirmed transaction // containing the correct pkscript. err = wait.NoError(func() error { - // Since neutrino doesn't support unconfirmed outputs, skip - // this check. - if target.Cfg.BackendCfg.Name() == "neutrino" { - return nil - } - req := &lnrpc.ListUnspentRequest{} resp, err := target.ListUnspent(ctx, req) if err != nil { diff --git a/itest/server_harness.go b/itest/server_harness.go index 05b0ae37..61e64081 100644 --- a/itest/server_harness.go +++ b/itest/server_harness.go @@ -88,13 +88,19 @@ func (s *serverHarness) start() error { func genCertPair(certFile, keyFile string) (credentials.TransportCredentials, error) { - err := cert.GenCertPair( - "itest autogenerated cert", certFile, keyFile, nil, nil, - false, DefaultAutogenValidity, + certBytes, keyBytes, err := cert.GenCertPair( + "itest autogenerated cert", nil, nil, false, + DefaultAutogenValidity, ) if err != nil { - return nil, fmt.Errorf("unable to generate cert "+ - "pair: %v", err) + return nil, fmt.Errorf("unable to generate cert pair: %v", err) + } + + // Now that we have the certificate and key, we'll store them + // to the file system. + err = cert.WriteCertPair(certFile, keyFile, certBytes, keyBytes) + if err != nil { + return nil, fmt.Errorf("unable to write cert pair: %v", err) } creds, err := credentials.NewServerTLSFromFile(certFile, keyFile) diff --git a/itest/test_harness.go b/itest/test_harness.go index c565b03f..b3af045d 100644 --- a/itest/test_harness.go +++ b/itest/test_harness.go @@ -13,7 +13,7 @@ import ( "github.com/btcsuite/btcd/rpcclient" "github.com/btcsuite/btcd/wire" "github.com/go-errors/errors" - "github.com/lightningnetwork/lnd/lntest" + "github.com/lightningnetwork/lnd/lntest/wait" "github.com/stretchr/testify/require" ) @@ -31,8 +31,8 @@ var ( ) const ( - defaultTimeout = lntest.DefaultTimeout - minerMempoolTimeout = lntest.MinerMempoolTimeout + defaultTimeout = wait.DefaultTimeout + minerMempoolTimeout = wait.MinerMempoolTimeout itestLitdBinary = "litd-itest" itestLndBinary = "lnd-itest" ) diff --git a/make/testing_flags.mk b/make/testing_flags.mk index 25165dbe..9261459a 100644 --- a/make/testing_flags.mk +++ b/make/testing_flags.mk @@ -2,5 +2,5 @@ ITEST_FLAGS = # Define the integration test.run filter if the icase argument was provided. ifneq ($(icase),) -ITEST_FLAGS += -test.run="TestLightningTerminal/.*/$(icase)" +ITEST_FLAGS += -test.run="TestLightningTerminal/$(icase)" endif diff --git a/perms/permissions.go b/perms/permissions.go index 9fb8727f..1dbe2687 100644 --- a/perms/permissions.go +++ b/perms/permissions.go @@ -427,6 +427,7 @@ func (t *mockConfig) FetchConfig(subServerName string) (interface{}, bool) { case "ChainRPC": return &chainrpc.Config{ ChainNotifier: &chainreg.NoChainBackend{}, + Chain: &mock.ChainIO{}, }, true case "DevRPC": return &devrpc.Config{}, true diff --git a/proto/lnd.proto b/proto/lnd.proto index 92b7ba32..c1e16aa8 100644 --- a/proto/lnd.proto +++ b/proto/lnd.proto @@ -567,6 +567,10 @@ service Lightning { /* lncli: `subscribecustom` SubscribeCustomMessages subscribes to a stream of incoming custom peer messages. + + To include messages with type outside of the custom range (>= 32768) lnd + needs to be compiled with the `dev` build tag, and the message type to + override should be specified in lnd's experimental protocol configuration. */ rpc SubscribeCustomMessages (SubscribeCustomMessagesRequest) returns (stream CustomMessage); @@ -577,6 +581,28 @@ service Lightning { zero conf). */ rpc ListAliases (ListAliasesRequest) returns (ListAliasesResponse); + + /* + LookupHtlcResolution retrieves a final htlc resolution from the database. + If the htlc has no final resolution yet, a NotFound grpc status code is + returned. + */ + rpc LookupHtlcResolution (LookupHtlcResolutionRequest) + returns (LookupHtlcResolutionResponse); +} + +message LookupHtlcResolutionRequest { + uint64 chan_id = 1 [jstype = JS_STRING]; + + uint64 htlc_index = 2 [jstype = JS_STRING]; +} + +message LookupHtlcResolutionResponse { + // Settled is true is the htlc was settled. If false, the htlc was failed. + bool settled = 1; + + // Offchain indicates whether the htlc was resolved off-chain or on-chain. + bool offchain = 2; } message SubscribeCustomMessagesRequest { @@ -598,6 +624,9 @@ message SendCustomMessageRequest { bytes peer = 1; // Message type. This value needs to be in the custom range (>= 32768). + // To send a type < custom range, lnd needs to be compiled with the `dev` + // build tag, and the message type to override should be specified in lnd's + // experimental protocol configuration. uint32 type = 2; // Raw message data. @@ -1510,6 +1539,9 @@ message Channel { // This is the confirmed / on-chain zero-conf SCID. uint64 zero_conf_confirmed_scid = 33 [jstype = JS_STRING]; + + // The configured alias name of our peer. + string peer_alias = 34; } message ListChannelsRequest { @@ -1523,6 +1555,11 @@ message ListChannelsRequest { empty, all channels will be returned. */ bytes peer = 5; + + // Informs the server if the peer alias lookup per channel should be + // enabled. It is turned off by default in order to avoid degradation of + // performance for existing clients. + bool peer_alias_lookup = 6; } message ListChannelsResponse { // The list of active channels @@ -1891,6 +1928,9 @@ message GetInfoResponse { Indicates whether the HTLC interceptor API is in always-on mode. */ bool require_htlc_interceptor = 21; + + // Indicates whether final htlc resolutions are stored on disk. + bool store_final_htlc_resolutions = 22; } message GetRecoveryInfoRequest { @@ -2190,6 +2230,40 @@ message OpenChannelRequest { attempted. */ bool scid_alias = 20; + + /* + The base fee charged regardless of the number of milli-satoshis sent. + */ + uint64 base_fee = 21 [jstype = JS_STRING]; + + /* + The fee rate in ppm (parts per million) that will be charged in + proportion of the value of each forwarded HTLC. + */ + uint64 fee_rate = 22 [jstype = JS_STRING]; + + /* + If use_base_fee is true the open channel announcement will update the + channel base fee with the value specified in base_fee. In the case of + a base_fee of 0 use_base_fee is needed downstream to distinguish whether + to use the default base fee value specified in the config or 0. + */ + bool use_base_fee = 23; + + /* + If use_fee_rate is true the open channel announcement will update the + channel fee rate with the value specified in fee_rate. In the case of + a fee_rate of 0 use_fee_rate is needed downstream to distinguish whether + to use the default fee rate value specified in the config or 0. + */ + bool use_fee_rate = 24; + + /* + The number of satoshis we require the remote peer to reserve. This value, + if specified, must be above the dust limit and below 20% of the channel + capacity. + */ + uint64 remote_chan_reserve_sat = 25 [jstype = JS_STRING]; } message OpenStatusUpdate { oneof update { @@ -2564,9 +2638,17 @@ message PendingChannelsResponse { repeated PendingHTLC pending_htlcs = 8; + /* + There are three resolution states for the anchor: + limbo, lost and recovered. Derive the current state + from the limbo and recovered balances. + */ enum AnchorState { + // The recovered_balance is zero and limbo_balance is non-zero. LIMBO = 0; + // The recovered_balance is non-zero. RECOVERED = 1; + // A state that is neither LIMBO nor RECOVERED. LOST = 2; } @@ -3012,6 +3094,9 @@ message LightningNode { repeated NodeAddress addresses = 4; string color = 5; map features = 6; + + // Custom node announcement tlv records. + map custom_records = 7; } message NodeAddress { @@ -3027,6 +3112,9 @@ message RoutingPolicy { bool disabled = 5; uint64 max_htlc_msat = 6 [jstype = JS_STRING]; uint32 last_update = 7; + + // Custom channel update tlv records. + map custom_records = 8; } /* @@ -3054,6 +3142,9 @@ message ChannelEdge { RoutingPolicy node1_policy = 7; RoutingPolicy node2_policy = 8; + + // Custom channel announcement tlv records. + map custom_records = 9; } message ChannelGraphRequest { @@ -3286,7 +3377,7 @@ message Invoice { int64 value_msat = 23 [jstype = JS_STRING]; /* - Whether this invoice has been fulfilled + Whether this invoice has been fulfilled. The field is deprecated. Use the state field instead (compare to SETTLED). */ @@ -3294,12 +3385,14 @@ message Invoice { /* When this invoice was created. + Measured in seconds since the unix epoch. Note: Output only, don't specify for creating an invoice. */ int64 creation_date = 7 [jstype = JS_STRING]; /* When this invoice was settled. + Measured in seconds since the unix epoch. Note: Output only, don't specify for creating an invoice. */ int64 settle_date = 8 [jstype = JS_STRING]; @@ -3320,7 +3413,7 @@ message Invoice { */ bytes description_hash = 10; - // Payment request expiry time in seconds. Default is 3600 (1 hour). + // Payment request expiry time in seconds. Default is 86400 (24 hours). int64 expiry = 11 [jstype = JS_STRING]; // Fallback on-chain address. @@ -3336,6 +3429,8 @@ message Invoice { repeated RouteHint route_hints = 14; // Whether this invoice should include routing hints for private channels. + // Note: When enabled, if value and value_msat are zero, a large number of + // hints with these channels can be included, which might not be desirable. bool private = 15; /* @@ -3564,7 +3659,16 @@ message ListInvoiceRequest { specified index offset. This can be used to paginate backwards. */ bool reversed = 6; + + // If set, returns all invoices with a creation date greater than or equal + // to it. Measured in seconds since the unix epoch. + uint64 creation_date_start = 7 [jstype = JS_STRING]; + + // If set, returns all invoices with a creation date less than or equal to + // it. Measured in seconds since the unix epoch. + uint64 creation_date_end = 8 [jstype = JS_STRING]; } + message ListInvoiceResponse { /* A list of invoices from the time slice of the time series specified in the @@ -3763,6 +3867,14 @@ message ListPaymentsRequest { of payments, as all of them have to be iterated through to be counted. */ bool count_total_payments = 5; + + // If set, returns all invoices with a creation date greater than or equal + // to it. Measured in seconds since the unix epoch. + uint64 creation_date_start = 6 [jstype = JS_STRING]; + + // If set, returns all invoices with a creation date less than or equal to + // it. Measured in seconds since the unix epoch. + uint64 creation_date_end = 7 [jstype = JS_STRING]; } message ListPaymentsResponse { @@ -4007,6 +4119,10 @@ message ForwardingHistoryRequest { // The max number of events to return in the response to this query. uint32 num_max_events = 4; + + // Informs the server if the peer alias should be looked up for each + // forwarding event. + bool peer_alias_lookup = 5; } message ForwardingEvent { // Timestamp is the time (unix epoch offset) that this circuit was @@ -4046,6 +4162,12 @@ message ForwardingEvent { // circuit was completed. uint64 timestamp_ns = 11 [jstype = JS_STRING]; + // The peer alias of the incoming channel. + string peer_alias_in = 12; + + // The peer alias of the outgoing channel. + string peer_alias_out = 13; + // TODO(roasbeef): add settlement latency? // * use FPE on the chan id? // * also list failures? diff --git a/rpc_proxy.go b/rpc_proxy.go index d4bd4578..0c22f137 100644 --- a/rpc_proxy.go +++ b/rpc_proxy.go @@ -111,39 +111,38 @@ func newRpcProxy(cfg *Config, validator macaroons.MacaroonValidator, // it is handled there. If not, the director will forward the call to either a // local or remote lnd instance. // -// any RPC or grpc-web call -// | -// V -// +---+----------------------+ -// | grpc-web proxy | -// +---+----------------------+ -// | -// v native gRPC call with basic auth -// +---+----------------------+ -// | interceptors | -// +---+----------------------+ -// | -// v native gRPC call with macaroon -// +---+----------------------+ -// | gRPC server | -// +---+----------------------+ -// | -// v unknown authenticated call, gRPC server is just a wrapper -// +---+----------------------+ -// | director | -// +---+----------------------+ -// | -// v authenticated call -// +---+----------------------+ call to lnd or integrated daemon -// | lnd (remote or local) +---------------+ -// | faraday remote | | -// | loop remote | +----------v----------+ -// | pool remote | | lnd local subserver | -// +--------------------------+ | - faraday | -// | - loop | -// | - pool | -// +---------------------+ -// +// any RPC or grpc-web call +// | +// V +// +---+----------------------+ +// | grpc-web proxy | +// +---+----------------------+ +// | +// v native gRPC call with basic auth +// +---+----------------------+ +// | interceptors | +// +---+----------------------+ +// | +// v native gRPC call with macaroon +// +---+----------------------+ +// | gRPC server | +// +---+----------------------+ +// | +// v unknown authenticated call, gRPC server is just a wrapper +// +---+----------------------+ +// | director | +// +---+----------------------+ +// | +// v authenticated call +// +---+----------------------+ call to lnd or integrated daemon +// | lnd (remote or local) +---------------+ +// | faraday remote | | +// | loop remote | +----------v----------+ +// | pool remote | | lnd local subserver | +// +--------------------------+ | - faraday | +// | - loop | +// | - pool | +// +---------------------+ type rpcProxy struct { cfg *Config basicAuth string diff --git a/scripts/itest_part.sh b/scripts/itest_part.sh index 3aa321e7..959ed7c5 100755 --- a/scripts/itest_part.sh +++ b/scripts/itest_part.sh @@ -8,9 +8,9 @@ WORKDIR=$(pwd)/itest EXEC="$WORKDIR"/itest.test LITD_EXEC="$WORKDIR"/litd-itest BTCD_EXEC="$WORKDIR"/btcd-itest -echo $EXEC -test.v "$@" -logoutput -goroutinedump -logdir=.logs -litdexec=$LITD_EXEC -btcdexec=$BTCD_EXEC +echo $EXEC -test.v "$@" -logoutput -logdir=.logs -litdexec=$LITD_EXEC -btcdexec=$BTCD_EXEC # Exit code 255 causes the parallel jobs to abort, so if one part fails the # other is aborted too. cd "$WORKDIR" || exit 255 -$EXEC -test.v "$@" -logoutput -goroutinedump -logdir=.logs -litdexec=$LITD_EXEC -btcdexec=$BTCD_EXEC || exit 255 +$EXEC -test.v "$@" -logoutput -logdir=.logs -litdexec=$LITD_EXEC -btcdexec=$BTCD_EXEC || exit 255 diff --git a/terminal.go b/terminal.go index 550f1612..7fb1337c 100644 --- a/terminal.go +++ b/terminal.go @@ -40,6 +40,8 @@ import ( "github.com/lightningnetwork/lnd" "github.com/lightningnetwork/lnd/build" "github.com/lightningnetwork/lnd/chainreg" + "github.com/lightningnetwork/lnd/kvdb" + "github.com/lightningnetwork/lnd/lncfg" "github.com/lightningnetwork/lnd/lnrpc" "github.com/lightningnetwork/lnd/lnrpc/autopilotrpc" "github.com/lightningnetwork/lnd/lnrpc/chainrpc" @@ -83,6 +85,10 @@ var ( // set this to 200MiB atm. maxMsgRecvSize = grpc.MaxCallRecvMsgSize(1 * 1024 * 1024 * 200) + // macDatabaseOpenTimeout is how long we wait for acquiring the lock on + // the macaroon database before we give up with an error. + macDatabaseOpenTimeout = time.Second * 5 + // appBuildFS is an in-memory file system that contains all the static // HTML/CSS/JS files of the UI. It is compiled into the binary with the // go 1.16 embed directive below. Because the path is relative to the @@ -178,6 +184,7 @@ type LightningTerminal struct { macaroonService *lndclient.MacaroonService macaroonServiceStarted bool + macaroonDB kvdb.Backend middleware *mid.Manager middlewareStarted bool @@ -665,9 +672,19 @@ func (g *LightningTerminal) startSubservers() error { } log.Infof("Starting LiT macaroon service") + + // Set up the macaroon service. + rks, db, err := lndclient.NewBoltMacaroonStore( + g.cfg.LitDir, lncfg.MacaroonDBName, macDatabaseOpenTimeout, + ) + if err != nil { + return err + } + + g.macaroonDB = db g.macaroonService, err = lndclient.NewMacaroonService( &lndclient.MacaroonServiceConfig{ - DBPath: filepath.Join(g.cfg.LitDir, g.cfg.Network), + RootKeyStore: rks, MacaroonLocation: "litd", StatelessInit: !createDefaultMacaroons, RequiredPerms: perms.LitPermissions, @@ -1080,6 +1097,10 @@ func (g *LightningTerminal) shutdown() error { } } + if g.macaroonDB != nil { + g.macaroonDB.Close() + } + if g.accountServiceStarted { if err := g.accountService.Stop(); err != nil { log.Errorf("Error stopping account service: %v", err) @@ -1159,44 +1180,43 @@ func (g *LightningTerminal) shutdown() error { // between the embedded HTTP server and the RPC proxy. An incoming request will // go through the following chain of components: // -// Request on port 8443 <------------------------------------+ -// | converted gRPC request | -// v | -// +---+----------------------+ other +----------------+ | -// | Main web HTTP server +------->+ Embedded HTTP | | -// +---+----------------------+____+ +----------------+ | -// | | | -// v any RPC or grpc-web call | any REST call | -// +---+----------------------+ |->+----------------+ | -// | grpc-web proxy | + grpc-gateway +-----------+ -// +---+----------------------+ +----------------+ -// | -// v native gRPC call with basic auth -// +---+----------------------+ -// | interceptors | -// +---+----------------------+ -// | -// v native gRPC call with macaroon -// +---+----------------------+ -// | gRPC server | -// +---+----------------------+ -// | -// v unknown authenticated call, gRPC server is just a wrapper -// +---+----------------------+ -// | director | -// +---+----------------------+ -// | -// v authenticated call -// +---+----------------------+ call to lnd or integrated daemon -// | lnd (remote or local) +---------------+ -// | faraday remote | | -// | loop remote | +----------v----------+ -// | pool remote | | lnd local subserver | -// +--------------------------+ | - faraday | -// | - loop | -// | - pool | -// +---------------------+ -// +// Request on port 8443 <------------------------------------+ +// | converted gRPC request | +// v | +// +---+----------------------+ other +----------------+ | +// | Main web HTTP server +------->+ Embedded HTTP | | +// +---+----------------------+____+ +----------------+ | +// | | | +// v any RPC or grpc-web call | any REST call | +// +---+----------------------+ |->+----------------+ | +// | grpc-web proxy | + grpc-gateway +-----------+ +// +---+----------------------+ +----------------+ +// | +// v native gRPC call with basic auth +// +---+----------------------+ +// | interceptors | +// +---+----------------------+ +// | +// v native gRPC call with macaroon +// +---+----------------------+ +// | gRPC server | +// +---+----------------------+ +// | +// v unknown authenticated call, gRPC server is just a wrapper +// +---+----------------------+ +// | director | +// +---+----------------------+ +// | +// v authenticated call +// +---+----------------------+ call to lnd or integrated daemon +// | lnd (remote or local) +---------------+ +// | faraday remote | | +// | loop remote | +----------v----------+ +// | pool remote | | lnd local subserver | +// +--------------------------+ | - faraday | +// | - loop | +// | - pool | +// +---------------------+ func (g *LightningTerminal) startMainWebServer() error { // Initialize the in-memory file server from the content compiled by // the go:embed directive. Since everything's relative to the root dir, diff --git a/tools/Dockerfile b/tools/Dockerfile index f89c6d8f..5c1a3015 100644 --- a/tools/Dockerfile +++ b/tools/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.18.0-buster +FROM golang:1.19.7-buster RUN apt-get update && apt-get install -y git ENV GOCACHE=/tmp/build/.cache diff --git a/tools/go.mod b/tools/go.mod index e9b22dde..b4da98d7 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -1,6 +1,6 @@ module github.com/lightninglabs/lightning-terminal/tools -go 1.18 +go 1.19 require ( github.com/btcsuite/btcd v0.23.2