diff --git a/env.example b/env.example index bc3c040b..982db75e 100644 --- a/env.example +++ b/env.example @@ -18,6 +18,7 @@ # LIQUIDITY_PROVIDER_PUB=null # DISABLE_LIQUIDITY_PROVIDER=false # USE_ONLY_LIQUIDITY_PROVIDER=false +PROVIDER_RELAY_URL= #SWAPS # BOLTZ_HTTP_URL= diff --git a/src/index.ts b/src/index.ts index 0b53b7ce..78b23147 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,6 +7,7 @@ import { getLogger } from './services/helpers/logger.js'; import { initMainHandler, initSettings } from './services/main/init.js'; import { nip19 } from 'nostr-tools' import { LoadStorageSettingsFromEnv } from './services/storage/index.js'; +import { AppInfo } from './services/nostr/nostrPool.js'; //@ts-ignore const { nprofileEncode } = nip19 @@ -22,15 +23,28 @@ const start = async () => { return } - const { apps, mainHandler, liquidityProviderInfo, wizard, adminManager } = keepOn + const { mainHandler, liquidityProviderInfo, wizard, adminManager } = keepOn const serverMethods = GetServerMethods(mainHandler) log("initializing nostr middleware") const relays = settingsManager.getSettings().nostrRelaySettings.relays const maxEventContentLength = settingsManager.getSettings().nostrRelaySettings.maxEventContentLength + const apps: AppInfo[] = keepOn.apps.map(app => { + return { + appId: app.appId, + privateKey: app.privateKey, + publicKey: app.publicKey, + name: app.name, + provider: app.publicKey === liquidityProviderInfo.publicKey ? { + clientId: liquidityProviderInfo.clientId, + pubDestination: settingsManager.getSettings().liquiditySettings.liquidityProviderPub, + relayUrl: settingsManager.getSettings().liquiditySettings.providerRelayUrl || relays[0] + } : undefined + } + }) const { Send, Stop, Ping, Reset } = nostrMiddleware(serverMethods, mainHandler, { - relays, maxEventContentLength, apps, clients: [liquidityProviderInfo], - providerDestinationPub: settingsManager.getSettings().liquiditySettings.liquidityProviderPub + relays, maxEventContentLength, apps, /* clients: [liquidityProviderInfo], */ + /* providerDestinationPub: settingsManager.getSettings().liquiditySettings.liquidityProviderPub */ }, (e, p) => mainHandler.liquidityProvider.onEvent(e, p) ) diff --git a/src/services/helpers/utilsWrapper.ts b/src/services/helpers/utilsWrapper.ts index d7d159f3..39a3eebd 100644 --- a/src/services/helpers/utilsWrapper.ts +++ b/src/services/helpers/utilsWrapper.ts @@ -1,6 +1,6 @@ import { StateBundler } from "../storage/tlv/stateBundler.js"; import { TlvStorageFactory } from "../storage/tlv/tlvFilesStorageFactory.js"; -import { NostrSend } from "../nostr/handler.js"; +import { NostrSend } from "../nostr/nostrPool.js"; import { ProcessMetricsCollector } from "../storage/tlv/processMetricsCollector.js"; type UtilsSettings = { noCollector?: boolean diff --git a/src/services/main/index.ts b/src/services/main/index.ts index 4d061721..21b37a25 100644 --- a/src/services/main/index.ts +++ b/src/services/main/index.ts @@ -12,7 +12,7 @@ import AppUserManager from "./appUserManager.js" import { Application } from '../storage/entity/Application.js' import { UserReceivingInvoice, ZapInfo } from '../storage/entity/UserReceivingInvoice.js' import { UnsignedEvent } from 'nostr-tools' -import { NostrEvent, NostrSend } from '../nostr/handler.js' +import { NostrSend } from '../nostr/nostrPool.js' import MetricsManager from '../metrics/index.js' import { LoggedEvent } from '../storage/eventsLog.js' import { LiquidityProvider } from "./liquidityProvider.js" @@ -31,7 +31,7 @@ import { Agent } from "https" import { NotificationsManager } from "./notificationsManager.js" import { ApplicationUser } from '../storage/entity/ApplicationUser.js' import SettingsManager from './settingsManager.js' -import { NostrSettings } from '../nostr/handler.js' +import { NostrSettings, AppInfo } from '../nostr/nostrPool.js' type UserOperationsSub = { id: string newIncomingInvoice: (operation: Types.UserOperation) => void @@ -453,12 +453,26 @@ export default class { publicKey: liquidityProviderApp.nostr_public_key || "", name: "liquidity_provider", clientId: `client_${liquidityProviderApp.app_id}` } + const relays = this.settings.getSettings().nostrRelaySettings.relays + const appsInfo: AppInfo[] = apps.map(app => { + return { + appId: app.app_id, + privateKey: app.nostr_private_key || "", + publicKey: app.nostr_public_key || "", + name: app.name, + provider: app.nostr_public_key === liquidityProviderInfo.publicKey ? { + clientId: liquidityProviderInfo.clientId, + pubDestination: this.settings.getSettings().liquiditySettings.liquidityProviderPub, + relayUrl: this.settings.getSettings().liquiditySettings.providerRelayUrl || relays[0] + } : undefined + } + }) const s: NostrSettings = { - apps: apps.map(a => ({ appId: a.app_id, name: a.name, privateKey: a.nostr_private_key || "", publicKey: a.nostr_public_key || "" })), - relays: this.settings.getSettings().nostrRelaySettings.relays, + apps: appsInfo, + relays, maxEventContentLength: this.settings.getSettings().nostrRelaySettings.maxEventContentLength, - clients: [liquidityProviderInfo], - providerDestinationPub: this.settings.getSettings().liquiditySettings.liquidityProviderPub + /* clients: [liquidityProviderInfo], + providerDestinationPub: this.settings.getSettings().liquiditySettings.liquidityProviderPub */ } this.nostrReset(s) } diff --git a/src/services/main/liquidityProvider.ts b/src/services/main/liquidityProvider.ts index f625558f..e0edd165 100644 --- a/src/services/main/liquidityProvider.ts +++ b/src/services/main/liquidityProvider.ts @@ -3,7 +3,7 @@ import { NostrRequest } from '../../../proto/autogenerated/ts/nostr_transport.js import * as Types from '../../../proto/autogenerated/ts/types.js' import { ERROR, getLogger } from '../helpers/logger.js' import { Utils } from '../helpers/utilsWrapper.js' -import { NostrEvent, NostrSend } from '../nostr/handler.js' +import { NostrSend } from '../nostr/nostrPool.js' import { InvoicePaidCb } from '../lnd/settings.js' import Storage from '../storage/index.js' import SettingsManager from './settingsManager.js' diff --git a/src/services/main/settings.ts b/src/services/main/settings.ts index c49225a7..0d4ea352 100644 --- a/src/services/main/settings.ts +++ b/src/services/main/settings.ts @@ -168,13 +168,15 @@ export type LiquiditySettings = { liquidityProviderPub: string // cold setting useOnlyLiquidityProvider: boolean // hot setting disableLiquidityProvider: boolean // hot setting + providerRelayUrl: string } export const LoadLiquiditySettingsFromEnv = (dbEnv: Record, addToDb?: EnvCacher): LiquiditySettings => { //const liquidityProviderPub = process.env.LIQUIDITY_PROVIDER_PUB === "null" ? "" : (process.env.LIQUIDITY_PROVIDER_PUB || "76ed45f00cea7bac59d8d0b7d204848f5319d7b96c140ffb6fcbaaab0a13d44e") const liquidityProviderPub = chooseEnv("LIQUIDITY_PROVIDER_PUB", dbEnv, "76ed45f00cea7bac59d8d0b7d204848f5319d7b96c140ffb6fcbaaab0a13d44e", addToDb) const disableLiquidityProvider = chooseEnvBool("DISABLE_LIQUIDITY_PROVIDER", dbEnv, false, addToDb) || liquidityProviderPub === "null" const useOnlyLiquidityProvider = chooseEnvBool("USE_ONLY_LIQUIDITY_PROVIDER", dbEnv, false, addToDb) - return { liquidityProviderPub, useOnlyLiquidityProvider, disableLiquidityProvider } + const providerRelayUrl = chooseEnv("PROVIDER_RELAY_URL", dbEnv, "", addToDb) + return { liquidityProviderPub, useOnlyLiquidityProvider, disableLiquidityProvider, providerRelayUrl } } export type SwapsSettings = { diff --git a/src/tests/setupBootstrapped.ts b/src/tests/setupBootstrapped.ts index 32aa3144..8df22268 100644 --- a/src/tests/setupBootstrapped.ts +++ b/src/tests/setupBootstrapped.ts @@ -1,6 +1,6 @@ import { getLogger } from '../services/helpers/logger.js' import { initMainHandler, initSettings } from '../services/main/init.js' -import { SendData } from '../services/nostr/handler.js' +import { SendData } from '../services/nostr/nostrPool.js' import { TestBase, TestUserData } from './testBase.js' import * as Types from '../../proto/autogenerated/ts/types.js' import { GetTestStorageSettings, LoadStorageSettingsFromEnv } from '../services/storage/index.js' diff --git a/src/tests/testBase.ts b/src/tests/testBase.ts index fb3f0e90..b814e830 100644 --- a/src/tests/testBase.ts +++ b/src/tests/testBase.ts @@ -83,7 +83,7 @@ export const SetupTest = async (d: Describe, chainTools: ChainTools): Promise { }, async () => { }), extermnalUtils, async () => { }, async () => { }, () => { }, () => { }) await externalAccessToMainLnd.Warmup() */ - const liquiditySettings: LiquiditySettings = { disableLiquidityProvider: true, liquidityProviderPub: "", useOnlyLiquidityProvider: false } + const liquiditySettings: LiquiditySettings = { disableLiquidityProvider: true, liquidityProviderPub: "", useOnlyLiquidityProvider: false, providerRelayUrl: "" } const lndSettings = LoadLndSettingsFromEnv({}) const secondLndNodeSettings = LoadSecondLndSettingsFromEnv() const otherLndSetting = () => ({ lndSettings, lndNodeSettings: secondLndNodeSettings })