Replace the nixpkgs albyhub overrideAttrs patch-chain with a fully
vendored package at packages/albyhub for v1.24.0.
- modules/core/sovran-hub.nix: bump fallback version 1.8.0 -> 1.24.0
- modules/nwc-wallets.nix: build via pkgs.callPackage ../packages/albyhub
- packages/albyhub:
- drop 0002-isolated-invoice-app-id.patch (fixed upstream)
- add 0004-lnd-only.patch: strip LDK/Bark/Cashu/CLN/Phoenix backends
from service/start.go, leaving only the LND case
- add 0005-no-frontend.patch: remove //go:embed dist and the
frontend handler registration
- add default.nix: buildGoModule for v1.24.0 with no nodejs/yarn/
bark-ffi-go/ldk-node deps (only stdenv.cc.cc), subPackages cmd/http
Keeps 0001-private-route-hints and 0003-loopback-bind-host. Does not
touch flake.nix, VERSION, or CHANGELOG.
142 lines
5.2 KiB
Diff
142 lines
5.2 KiB
Diff
diff --git a/service/start.go b/service/start.go
|
|
index 8c9786a..4b992c7 100644
|
|
--- a/service/start.go
|
|
+++ b/service/start.go
|
|
@@ -5,7 +5,6 @@ import (
|
|
"errors"
|
|
"fmt"
|
|
"net/http"
|
|
- "path"
|
|
"strconv"
|
|
"time"
|
|
|
|
@@ -349,63 +348,12 @@ func (svc *service) launchLNBackend(ctx context.Context, encryptionKey string) e
|
|
logger.Logger.Infof("Launching LN Backend: %s", lnBackend)
|
|
var lnClient lnclient.LNClient
|
|
var err error
|
|
- vssEnabled := false
|
|
switch lnBackend {
|
|
case config.LNDBackendType:
|
|
LNDAddress, _ := svc.cfg.Get("LNDAddress", encryptionKey)
|
|
LNDCertHex, _ := svc.cfg.Get("LNDCertHex", encryptionKey)
|
|
LNDMacaroonHex, _ := svc.cfg.Get("LNDMacaroonHex", encryptionKey)
|
|
lnClient, err = lnd.NewLNDService(ctx, svc.eventPublisher, LNDAddress, LNDCertHex, LNDMacaroonHex)
|
|
- case config.LDKBackendType:
|
|
- mnemonic, _ := svc.cfg.Get("Mnemonic", encryptionKey)
|
|
- ldkWorkdir := path.Join(svc.cfg.GetEnv().Workdir, "ldk")
|
|
- var vssToken string
|
|
- vssToken, err = svc.requestVssToken(ctx)
|
|
- if err != nil {
|
|
- logger.Logger.WithError(err).Error("Failed to request VSS token")
|
|
- return err
|
|
- }
|
|
- vssEnabled = vssToken != ""
|
|
-
|
|
- svc.startupState = "Launching Node"
|
|
- setStartupState := func(startupState string) {
|
|
- svc.startupState = startupState
|
|
- }
|
|
-
|
|
- channelPeerSuggestions, suggestionsErr := svc.albySvc.GetChannelPeerSuggestions(ctx)
|
|
- if suggestionsErr != nil {
|
|
- logger.Logger.WithError(suggestionsErr).Warn("Failed to fetch channel peer suggestions for LSPS2 liquidity source")
|
|
- }
|
|
- lnClient, err = ldk.NewLDKService(ctx, svc.cfg, svc.eventPublisher, mnemonic, ldkWorkdir, vssToken, setStartupState, channelPeerSuggestions)
|
|
- case config.PhoenixBackendType:
|
|
- PhoenixdAddress, _ := svc.cfg.Get("PhoenixdAddress", encryptionKey)
|
|
- PhoenixdAuthorization, _ := svc.cfg.Get("PhoenixdAuthorization", encryptionKey)
|
|
-
|
|
- lnClient, err = phoenixd.NewPhoenixService(ctx, PhoenixdAddress, PhoenixdAuthorization)
|
|
- case config.CashuBackendType:
|
|
- mnemonic, _ := svc.cfg.Get("Mnemonic", encryptionKey)
|
|
- cashuMintUrl, _ := svc.cfg.Get("CashuMintUrl", encryptionKey)
|
|
- cashuWorkdir := path.Join(svc.cfg.GetEnv().Workdir, "cashu")
|
|
-
|
|
- lnClient, err = cashu.NewCashuService(svc.cfg, cashuWorkdir, mnemonic, cashuMintUrl)
|
|
- case config.BarkBackendType:
|
|
- mnemonic, _ := svc.cfg.Get("Mnemonic", encryptionKey)
|
|
- env := svc.cfg.GetEnv()
|
|
- barkWorkdir := path.Join(env.Workdir, "bark")
|
|
-
|
|
- lnClient, err = bark.NewBarkService(ctx, svc.eventPublisher, barkWorkdir, mnemonic, bark.Config{
|
|
- Network: svc.cfg.GetNetwork(),
|
|
- ServerAddress: env.BarkServer,
|
|
- EsploraAddress: env.BarkEsploraServer,
|
|
- ServerAccessToken: env.BarkServerAccessToken,
|
|
- LogLevel: env.BarkLogLevel,
|
|
- LogToFile: env.LogToFile,
|
|
- })
|
|
- case config.CLNBackendType:
|
|
- CLNAddress, _ := svc.cfg.Get("CLNAddress", encryptionKey)
|
|
- CLNLightningDir, _ := svc.cfg.Get("CLNLightningDir", encryptionKey)
|
|
- CLNAddressHold, _ := svc.cfg.Get("CLNAddressHold", encryptionKey)
|
|
- lnClient, err = cln.NewCLNService(ctx, svc.eventPublisher, CLNAddress, CLNLightningDir, CLNAddressHold)
|
|
default:
|
|
logger.Logger.WithField("backend_type", lnBackend).Error("Unsupported LNBackendType")
|
|
return fmt.Errorf("unsupported backend type: %s", lnBackend)
|
|
@@ -439,63 +387,9 @@ func (svc *service) launchLNBackend(ctx context.Context, encryptionKey string) e
|
|
svc.eventPublisher.Publish(&events.Event{
|
|
Event: "nwc_node_started",
|
|
Properties: map[string]interface{}{
|
|
- "node_type": lnBackend,
|
|
- "vss_enabled": vssEnabled,
|
|
+ "node_type": lnBackend,
|
|
},
|
|
})
|
|
|
|
return nil
|
|
}
|
|
-
|
|
-func (svc *service) requestVssToken(ctx context.Context) (string, error) {
|
|
- nodeLastStartTime, _ := svc.cfg.Get("NodeLastStartTime", "")
|
|
-
|
|
- // for brand new nodes, consider enabling VSS
|
|
- if nodeLastStartTime == "" && svc.cfg.GetEnv().LDKVssUrl != "" {
|
|
- svc.startupState = "Checking Subscription"
|
|
- albyUserIdentifier, err := svc.albyOAuthSvc.GetUserIdentifier()
|
|
- if err != nil {
|
|
- logger.Logger.WithError(err).Error("Failed to fetch alby user identifier")
|
|
- return "", err
|
|
- }
|
|
- if albyUserIdentifier != "" {
|
|
- me, err := svc.albyOAuthSvc.GetMe(ctx)
|
|
- if err != nil {
|
|
- logger.Logger.WithError(err).Error("Failed to fetch alby user")
|
|
- return "", err
|
|
- }
|
|
- // only activate VSS for Alby paid subscribers
|
|
- if me.Subscription.PlanCode != "" {
|
|
- svc.cfg.SetUpdate("LdkVssEnabled", "true", "")
|
|
- }
|
|
- }
|
|
- }
|
|
-
|
|
- vssToken := ""
|
|
- vssEnabled, _ := svc.cfg.Get("LdkVssEnabled", "")
|
|
- if vssEnabled == "true" {
|
|
- svc.startupState = "Fetching VSS token"
|
|
- vssNodeIdentifier, err := ldk.GetVssNodeIdentifier(svc.keys)
|
|
- if err != nil {
|
|
- logger.Logger.WithError(err).Error("Failed to get VSS node identifier")
|
|
- return "", err
|
|
- }
|
|
- vssToken, err = svc.albyOAuthSvc.GetVssAuthToken(ctx, vssNodeIdentifier)
|
|
- if err != nil {
|
|
- logger.Logger.WithError(err).Error("Failed to fetch VSS JWT token")
|
|
-
|
|
- existingVssToken, _ := svc.cfg.Get("VssToken", "")
|
|
- if existingVssToken != "" {
|
|
- logger.Logger.Warn("Using stored VSS JWT token")
|
|
- return existingVssToken, nil
|
|
- }
|
|
-
|
|
- return "", err
|
|
- }
|
|
- err = svc.cfg.SetUpdate("VssToken", vssToken, "")
|
|
- if err != nil {
|
|
- logger.Logger.WithError(err).Error("Failed to save VSS JWT token to user config")
|
|
- }
|
|
- }
|
|
- return vssToken, nil
|
|
-}
|