Skip to content

Commit 4be6ffb

Browse files
positiveblueguggero
authored andcommitted
multi: Add Taproot Assets subserver
1 parent 9131690 commit 4be6ffb

File tree

9 files changed

+1406
-88
lines changed

9 files changed

+1406
-88
lines changed

config.go

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/lightninglabs/lndclient"
2525
"github.com/lightninglabs/loop/loopd"
2626
"github.com/lightninglabs/pool"
27+
"github.com/lightninglabs/taproot-assets/tapcfg"
2728
"github.com/lightningnetwork/lnd"
2829
"github.com/lightningnetwork/lnd/build"
2930
"github.com/lightningnetwork/lnd/cert"
@@ -46,6 +47,7 @@ const (
4647
defaultFaradayMode = ModeIntegrated
4748
defaultLoopMode = ModeIntegrated
4849
defaultPoolMode = ModeIntegrated
50+
defaultTapMode = ModeIntegrated
4951

5052
defaultConfigFilename = "lit.conf"
5153

@@ -68,9 +70,11 @@ const (
6870
defaultRemoteFaradayRpcServer = "localhost:8465"
6971
defaultRemoteLoopRpcServer = "localhost:11010"
7072
defaultRemotePoolRpcServer = "localhost:12010"
71-
defaultLndChainSubDir = "chain"
72-
defaultLndChain = "bitcoin"
73-
defaultLndMacaroon = "admin.macaroon"
73+
defaultRemoteTapRpcServer = "localhost:10029"
74+
75+
defaultLndChainSubDir = "chain"
76+
defaultLndChain = "bitcoin"
77+
defaultLndMacaroon = "admin.macaroon"
7478

7579
// DefaultAutogenValidity is the default validity of a self-signed
7680
// certificate. The value corresponds to 14 months
@@ -89,6 +93,7 @@ var (
8993
faradayDefaultConfig = faraday.DefaultConfig()
9094
loopDefaultConfig = loopd.DefaultConfig()
9195
poolDefaultConfig = pool.DefaultConfig()
96+
tapDefaultConfig = tapcfg.DefaultConfig()
9297

9398
// DefaultLitDir is the default directory where LiT tries to find its
9499
// configuration file and store its data (in remote lnd node). This is a
@@ -190,6 +195,9 @@ type Config struct {
190195
PoolMode string `long:"pool-mode" description:"The mode to run pool in, either 'integrated' (default) or 'remote'. 'integrated' means poold is started alongside the UI and everything is stored in pool's main data directory, configure everything by using the --pool.* flags. 'remote' means the UI connects to an existing poold node and acts as a proxy for gRPC calls to it." choice:"integrated" choice:"remote"`
191196
Pool *pool.Config `group:"Integrated pool options (use when pool-mode=integrated)" namespace:"pool"`
192197

198+
TaprootAssetsMode string `long:"taproot-assets-mode" description:"The mode to run taproot assets in, either 'integrated' (default) or 'remote'. 'integrated' means tapd is started alongside the UI and everything is stored in tap's main data directory, configure everything by using the --taproot-assets.* flags. 'remote' means the UI connects to an existing tapd node and acts as a proxy for gRPC calls to it." choice:"integrated" choice:"remote"`
199+
TaprootAssets *tapcfg.Config `group:"Integrated taproot assets options (use when taproot-assets=integrated)" namespace:"taproot-assets"`
200+
193201
RPCMiddleware *mid.Config `group:"RPC middleware options" namespace:"rpcmiddleware"`
194202

195203
Autopilot *autopilotserver.Config `group:"Autopilot server options" namespace:"autopilot"`
@@ -206,6 +214,7 @@ type Config struct {
206214
faradayRemote bool
207215
loopRemote bool
208216
poolRemote bool
217+
tapRemote bool
209218

210219
// lndAdminMacaroon is the admin macaroon that is given to us by lnd
211220
// over an in-memory connection on startup. This is only set in
@@ -281,6 +290,11 @@ func defaultConfig() *Config {
281290
MacaroonPath: poolDefaultConfig.MacaroonPath,
282291
TLSCertPath: poolDefaultConfig.TLSCertPath,
283292
},
293+
TaprootAssets: &subservers.RemoteDaemonConfig{
294+
RPCServer: defaultRemoteTapRpcServer,
295+
MacaroonPath: tapDefaultConfig.RpcConf.MacaroonPath,
296+
TLSCertPath: tapDefaultConfig.RpcConf.TLSCertPath,
297+
},
284298
},
285299
Network: DefaultNetwork,
286300
LndMode: DefaultLndMode,
@@ -297,6 +311,8 @@ func defaultConfig() *Config {
297311
Loop: &loopDefaultConfig,
298312
PoolMode: defaultPoolMode,
299313
Pool: &poolDefaultConfig,
314+
TaprootAssetsMode: defaultTapMode,
315+
TaprootAssets: &tapDefaultConfig,
300316
RPCMiddleware: mid.DefaultConfig(),
301317
FirstLNCConnDeadline: defaultFirstLNCConnTimeout,
302318
Autopilot: &autopilotserver.Config{
@@ -347,6 +363,7 @@ func loadAndValidateConfig(interceptor signal.Interceptor) (*Config, error) {
347363
cfg.faradayRemote = cfg.FaradayMode == ModeRemote
348364
cfg.loopRemote = cfg.LoopMode == ModeRemote
349365
cfg.poolRemote = cfg.PoolMode == ModeRemote
366+
cfg.tapRemote = cfg.TaprootAssetsMode == ModeRemote
350367

351368
// Now that we've registered all loggers, let's parse, validate, and set
352369
// the debug log level(s). In remote lnd mode we have a global log level
@@ -445,6 +462,11 @@ func loadAndValidateConfig(interceptor signal.Interceptor) (*Config, error) {
445462
return nil, err
446463
}
447464

465+
cfg.TaprootAssets, err = tapcfg.ValidateConfig(*cfg.TaprootAssets, log)
466+
if err != nil {
467+
return nil, err
468+
}
469+
448470
// We've set the network before and have now validated the loop config
449471
// which updated its default paths for that network. So if we're in
450472
// remote mode and not mainnet, we want to update our default paths for
@@ -493,6 +515,19 @@ func loadAndValidateConfig(interceptor signal.Interceptor) (*Config, error) {
493515
}
494516
}
495517

518+
defaultTapCfg := tapcfg.DefaultConfig()
519+
if cfg.tapRemote && cfg.Network != DefaultNetwork {
520+
if cfg.Remote.TaprootAssets.MacaroonPath == defaultTapCfg.RpcConf.MacaroonPath {
521+
macaroonPath := cfg.TaprootAssets.RpcConf.MacaroonPath
522+
cfg.Remote.TaprootAssets.MacaroonPath = macaroonPath
523+
}
524+
if cfg.Remote.TaprootAssets.TLSCertPath == defaultTapCfg.RpcConf.TLSCertPath {
525+
tlsCertPath := cfg.TaprootAssets.RpcConf.TLSCertPath
526+
527+
cfg.Remote.TaprootAssets.TLSCertPath = tlsCertPath
528+
}
529+
}
530+
496531
return cfg, nil
497532
}
498533

@@ -692,6 +727,7 @@ func setNetwork(cfg *Config) error {
692727
cfg.Faraday.Network = cfg.Network
693728
cfg.Loop.Network = cfg.Network
694729
cfg.Pool.Network = cfg.Network
730+
cfg.TaprootAssets.ChainConf.Network = cfg.Network
695731

696732
return nil
697733
}

go.mod

Lines changed: 63 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ require (
2222
github.com/lightninglabs/pool v0.6.2-beta.0.20230329135228-c3bffb52df3a
2323
github.com/lightninglabs/pool/auctioneerrpc v1.1.0
2424
github.com/lightninglabs/protobuf-hex-display v1.4.3-hex-display
25+
github.com/lightninglabs/taproot-assets v0.2.0
2526
github.com/lightningnetwork/lnd v0.16.2-beta
2627
github.com/lightningnetwork/lnd/cert v1.2.1
2728
github.com/lightningnetwork/lnd/kvdb v1.4.1
@@ -35,15 +36,18 @@ require (
3536
golang.org/x/crypto v0.7.0
3637
golang.org/x/net v0.8.0
3738
golang.org/x/sync v0.1.0
38-
google.golang.org/grpc v1.41.0
39+
google.golang.org/grpc v1.45.0
3940
google.golang.org/protobuf v1.28.1
4041
gopkg.in/macaroon-bakery.v2 v2.1.0
4142
gopkg.in/macaroon.v2 v2.1.0
4243
)
4344

4445
require (
46+
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
47+
github.com/Microsoft/go-winio v0.5.2 // indirect
4548
github.com/NebulousLabs/fastrand v0.0.0-20181203155948-6fb6489aac4e // indirect
4649
github.com/NebulousLabs/go-upnp v0.0.0-20180202185039-29b680b06c82 // indirect
50+
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect
4751
github.com/Yawning/aez v0.0.0-20211027044916-e49e68abd344 // indirect
4852
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect
4953
github.com/aead/siphash v1.0.1 // indirect
@@ -58,8 +62,10 @@ require (
5862
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd // indirect
5963
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 // indirect
6064
github.com/btcsuite/winsvc v1.0.0 // indirect
61-
github.com/cenkalti/backoff/v4 v4.1.1 // indirect
62-
github.com/cespare/xxhash/v2 v2.1.1 // indirect
65+
github.com/caddyserver/certmagic v0.17.2 // indirect
66+
github.com/cenkalti/backoff/v4 v4.1.3 // indirect
67+
github.com/cespare/xxhash/v2 v2.1.2 // indirect
68+
github.com/containerd/continuity v0.3.0 // indirect
6369
github.com/coreos/bbolt v1.3.3 // indirect
6470
github.com/coreos/go-semver v0.3.0 // indirect
6571
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf // indirect
@@ -70,40 +76,54 @@ require (
7076
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
7177
github.com/decred/dcrd/lru v1.0.0 // indirect
7278
github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect
79+
github.com/docker/cli v20.10.14+incompatible // indirect
80+
github.com/docker/docker v20.10.13+incompatible // indirect
81+
github.com/docker/go-connections v0.4.0 // indirect
82+
github.com/docker/go-units v0.4.0 // indirect
7383
github.com/dsnet/compress v0.0.1 // indirect
7484
github.com/dustin/go-humanize v1.0.0 // indirect
7585
github.com/fergusstrange/embedded-postgres v1.10.0 // indirect
86+
github.com/go-logr/logr v1.2.2 // indirect
87+
github.com/go-logr/stdr v1.2.2 // indirect
7688
github.com/gogo/protobuf v1.3.2 // indirect
7789
github.com/golang-jwt/jwt/v4 v4.4.2 // indirect
90+
github.com/golang-migrate/migrate/v4 v4.15.2 // indirect
7891
github.com/golang/mock v1.6.0 // indirect
7992
github.com/golang/snappy v0.0.4 // indirect
8093
github.com/google/btree v1.0.1 // indirect
94+
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
8195
github.com/google/uuid v1.3.0 // indirect
8296
github.com/gorilla/websocket v1.4.2 // indirect
8397
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect
8498
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
8599
github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
100+
github.com/hashicorp/errwrap v1.1.0 // indirect
101+
github.com/hashicorp/go-multierror v1.1.1 // indirect
102+
github.com/imdario/mergo v0.3.12 // indirect
86103
github.com/jackc/chunkreader/v2 v2.0.1 // indirect
87-
github.com/jackc/pgconn v1.10.0 // indirect
104+
github.com/jackc/pgconn v1.12.0 // indirect
105+
github.com/jackc/pgerrcode v0.0.0-20201024163028-a0d42d470451 // indirect
88106
github.com/jackc/pgio v1.0.0 // indirect
89107
github.com/jackc/pgpassfile v1.0.0 // indirect
90-
github.com/jackc/pgproto3/v2 v2.1.1 // indirect
108+
github.com/jackc/pgproto3/v2 v2.3.0 // indirect
91109
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect
92-
github.com/jackc/pgtype v1.8.1 // indirect
93-
github.com/jackc/pgx/v4 v4.13.0 // indirect
94-
github.com/jackc/puddle v1.1.3 // indirect
110+
github.com/jackc/pgtype v1.11.0 // indirect
111+
github.com/jackc/pgx/v4 v4.16.0 // indirect
112+
github.com/jackc/puddle v1.2.1 // indirect
95113
github.com/jackpal/gateway v1.0.5 // indirect
96114
github.com/jackpal/go-nat-pmp v0.0.0-20170405195558-28a68d0c24ad // indirect
97115
github.com/jedib0t/go-pretty/v6 v6.2.7 // indirect
98116
github.com/jonboulle/clockwork v0.2.2 // indirect
99117
github.com/jrick/logrotate v1.0.0 // indirect
100-
github.com/json-iterator/go v1.1.11 // indirect
118+
github.com/json-iterator/go v1.1.12 // indirect
101119
github.com/juju/loggo v0.0.0-20210728185423-eebad3a902c4 // indirect
102120
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
103121
github.com/kkdai/bstream v1.0.0 // indirect
104122
github.com/klauspost/compress v1.13.6 // indirect
123+
github.com/klauspost/cpuid/v2 v2.2.3 // indirect
105124
github.com/klauspost/pgzip v1.2.5 // indirect
106125
github.com/lib/pq v1.10.3 // indirect
126+
github.com/libdns/libdns v0.2.1 // indirect
107127
github.com/lightninglabs/gozmq v0.0.0-20191113021534-d20a764486bf // indirect
108128
github.com/lightninglabs/lightning-node-connect/hashmailrpc v1.0.2 // indirect
109129
github.com/lightninglabs/neutrino v0.15.0 // indirect
@@ -116,33 +136,45 @@ require (
116136
github.com/ltcsuite/ltcd v0.0.0-20190101042124-f37f8bf35796 // indirect
117137
github.com/mattn/go-isatty v0.0.16 // indirect
118138
github.com/mattn/go-runewidth v0.0.13 // indirect
119-
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
139+
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
140+
github.com/mholt/acmez v1.0.4 // indirect
120141
github.com/mholt/archiver/v3 v3.5.0 // indirect
121-
github.com/miekg/dns v1.1.43 // indirect
142+
github.com/miekg/dns v1.1.50 // indirect
143+
github.com/mitchellh/mapstructure v1.4.1 // indirect
144+
github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect
122145
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
123-
github.com/modern-go/reflect2 v1.0.1 // indirect
146+
github.com/modern-go/reflect2 v1.0.2 // indirect
124147
github.com/nwaples/rardecode v1.1.2 // indirect
148+
github.com/opencontainers/go-digest v1.0.0 // indirect
149+
github.com/opencontainers/image-spec v1.0.2 // indirect
150+
github.com/opencontainers/runc v1.1.2 // indirect
151+
github.com/ory/dockertest/v3 v3.9.1 // indirect
125152
github.com/pierrec/lz4/v4 v4.1.8 // indirect
153+
github.com/pkg/errors v0.9.1 // indirect
126154
github.com/pmezard/go-difflib v1.0.0 // indirect
127155
github.com/prometheus/client_golang v1.11.1 // indirect
128156
github.com/prometheus/client_model v0.2.0 // indirect
129-
github.com/prometheus/common v0.26.0 // indirect
130-
github.com/prometheus/procfs v0.6.0 // indirect
131-
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect
157+
github.com/prometheus/common v0.30.0 // indirect
158+
github.com/prometheus/procfs v0.7.3 // indirect
159+
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
132160
github.com/rivo/uniseg v0.2.0 // indirect
133161
github.com/rogpeppe/fastuuid v1.2.0 // indirect
162+
github.com/rogpeppe/go-internal v1.10.0 // indirect
134163
github.com/rs/cors v1.7.0 // indirect
135164
github.com/russross/blackfriday/v2 v2.0.1 // indirect
136165
github.com/shopspring/decimal v1.2.0 // indirect
137166
github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
138-
github.com/sirupsen/logrus v1.7.0 // indirect
167+
github.com/sirupsen/logrus v1.8.1 // indirect
139168
github.com/soheilhy/cmux v0.1.5 // indirect
140169
github.com/spf13/pflag v1.0.5 // indirect
141170
github.com/stretchr/objx v0.5.0 // indirect
142171
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect
143172
github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect
144173
github.com/tv42/zbase32 v0.0.0-20160707012821-501572607d02 // indirect
145174
github.com/ulikunitz/xz v0.5.10 // indirect
175+
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
176+
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
177+
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
146178
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
147179
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect
148180
gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec // indirect
@@ -153,36 +185,37 @@ require (
153185
go.etcd.io/etcd/pkg/v3 v3.5.7 // indirect
154186
go.etcd.io/etcd/raft/v3 v3.5.7 // indirect
155187
go.etcd.io/etcd/server/v3 v3.5.7 // indirect
156-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0 // indirect
157-
go.opentelemetry.io/otel v1.0.1 // indirect
158-
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1 // indirect
159-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1 // indirect
160-
go.opentelemetry.io/otel/sdk v1.0.1 // indirect
161-
go.opentelemetry.io/otel/trace v1.0.1 // indirect
162-
go.opentelemetry.io/proto/otlp v0.9.0 // indirect
163-
go.uber.org/atomic v1.7.0 // indirect
188+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0 // indirect
189+
go.opentelemetry.io/otel v1.3.0 // indirect
190+
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0 // indirect
191+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0 // indirect
192+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0 // indirect
193+
go.opentelemetry.io/otel/sdk v1.3.0 // indirect
194+
go.opentelemetry.io/otel/trace v1.3.0 // indirect
195+
go.opentelemetry.io/proto/otlp v0.11.0 // indirect
196+
go.uber.org/atomic v1.10.0 // indirect
164197
go.uber.org/multierr v1.6.0 // indirect
165-
go.uber.org/zap v1.17.0 // indirect
198+
go.uber.org/zap v1.23.0 // indirect
166199
golang.org/x/exp v0.0.0-20221111094246-ab4555d3164f // indirect
167200
golang.org/x/mod v0.8.0 // indirect
168201
golang.org/x/sys v0.6.0 // indirect
169202
golang.org/x/term v0.6.0 // indirect
170203
golang.org/x/text v0.8.0 // indirect
171-
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba // indirect
204+
golang.org/x/time v0.0.0-20220224211638-0e9765cccd65 // indirect
172205
golang.org/x/tools v0.6.0 // indirect
173-
google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced // indirect
206+
google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106 // indirect
174207
gopkg.in/errgo.v1 v1.0.1 // indirect
175208
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
176209
gopkg.in/yaml.v2 v2.4.0 // indirect
177210
gopkg.in/yaml.v3 v3.0.1 // indirect
178211
lukechampine.com/uint128 v1.2.0 // indirect
179212
modernc.org/cc/v3 v3.40.0 // indirect
180213
modernc.org/ccgo/v3 v3.16.13 // indirect
181-
modernc.org/libc v1.22.2 // indirect
214+
modernc.org/libc v1.22.3 // indirect
182215
modernc.org/mathutil v1.5.0 // indirect
183-
modernc.org/memory v1.4.0 // indirect
216+
modernc.org/memory v1.5.0 // indirect
184217
modernc.org/opt v0.1.3 // indirect
185-
modernc.org/sqlite v1.20.3 // indirect
218+
modernc.org/sqlite v1.21.0 // indirect
186219
modernc.org/strutil v1.1.3 // indirect
187220
modernc.org/token v1.0.1 // indirect
188221
nhooyr.io/websocket v1.8.7 // indirect

0 commit comments

Comments
 (0)