@toon-protocol/connector 3.33.1 → 3.34.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/child-expander.d.ts +11 -0
- package/dist/config/child-expander.d.ts.map +1 -0
- package/dist/config/child-expander.js +131 -0
- package/dist/config/child-expander.js.map +1 -0
- package/dist/config/config-loader.d.ts +7 -0
- package/dist/config/config-loader.d.ts.map +1 -1
- package/dist/config/config-loader.js +280 -4
- package/dist/config/config-loader.js.map +1 -1
- package/dist/config/types.d.ts +39 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/core/connector-node.d.ts +14 -0
- package/dist/core/connector-node.d.ts.map +1 -1
- package/dist/core/connector-node.js +175 -3
- package/dist/core/connector-node.js.map +1 -1
- package/dist/discovery/bootstrap-cache.d.ts +20 -0
- package/dist/discovery/bootstrap-cache.d.ts.map +1 -0
- package/dist/discovery/bootstrap-cache.js +69 -0
- package/dist/discovery/bootstrap-cache.js.map +1 -0
- package/dist/discovery/bootstrap-manifest.d.ts +23 -0
- package/dist/discovery/bootstrap-manifest.d.ts.map +1 -0
- package/dist/discovery/bootstrap-manifest.js +119 -0
- package/dist/discovery/bootstrap-manifest.js.map +1 -0
- package/dist/discovery/bootstrap-seeds.d.ts +7 -0
- package/dist/discovery/bootstrap-seeds.d.ts.map +1 -0
- package/dist/discovery/bootstrap-seeds.js +10 -0
- package/dist/discovery/bootstrap-seeds.js.map +1 -0
- package/dist/discovery/bootstrap-service.d.ts +64 -0
- package/dist/discovery/bootstrap-service.d.ts.map +1 -0
- package/dist/discovery/bootstrap-service.js +320 -0
- package/dist/discovery/bootstrap-service.js.map +1 -0
- package/dist/discovery/discovered-node-registry.d.ts +46 -0
- package/dist/discovery/discovered-node-registry.d.ts.map +1 -0
- package/dist/discovery/discovered-node-registry.js +185 -0
- package/dist/discovery/discovered-node-registry.js.map +1 -0
- package/dist/discovery/ilp-peer-info-event.d.ts +20 -0
- package/dist/discovery/ilp-peer-info-event.d.ts.map +1 -1
- package/dist/discovery/ilp-peer-info-event.js +76 -1
- package/dist/discovery/ilp-peer-info-event.js.map +1 -1
- package/dist/discovery/index.d.ts +18 -3
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +39 -1
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/nostr-relay-client.d.ts +13 -0
- package/dist/discovery/nostr-relay-client.d.ts.map +1 -0
- package/dist/discovery/nostr-relay-client.js +17 -0
- package/dist/discovery/nostr-relay-client.js.map +1 -0
- package/dist/discovery/relay-probe.d.ts +5 -0
- package/dist/discovery/relay-probe.d.ts.map +1 -0
- package/dist/discovery/relay-probe.js +85 -0
- package/dist/discovery/relay-probe.js.map +1 -0
- package/dist/discovery/route-learning-service.d.ts +55 -0
- package/dist/discovery/route-learning-service.d.ts.map +1 -0
- package/dist/discovery/route-learning-service.js +238 -0
- package/dist/discovery/route-learning-service.js.map +1 -0
- package/dist/discovery/self-announce-builder.d.ts +8 -3
- package/dist/discovery/self-announce-builder.d.ts.map +1 -1
- package/dist/discovery/self-announce-builder.js +124 -5
- package/dist/discovery/self-announce-builder.js.map +1 -1
- package/dist/http/admin-api-inventory.d.ts.map +1 -1
- package/dist/http/admin-api-inventory.js +22 -0
- package/dist/http/admin-api-inventory.js.map +1 -1
- package/dist/http/admin-api.d.ts +5 -0
- package/dist/http/admin-api.d.ts.map +1 -1
- package/dist/http/admin-api.js +26 -1
- package/dist/http/admin-api.js.map +1 -1
- package/dist/http/admin-server.d.ts +4 -0
- package/dist/http/admin-server.d.ts.map +1 -1
- package/dist/http/admin-server.js +6 -1
- package/dist/http/admin-server.js.map +1 -1
- package/dist/lib.d.ts +25 -1
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +46 -2
- package/dist/lib.js.map +1 -1
- package/dist/observability/metrics-registry.d.ts +7 -0
- package/dist/observability/metrics-registry.d.ts.map +1 -1
- package/dist/observability/metrics-registry.js +24 -0
- package/dist/observability/metrics-registry.js.map +1 -1
- package/dist/routing/link-state-db.d.ts +27 -0
- package/dist/routing/link-state-db.d.ts.map +1 -0
- package/dist/routing/link-state-db.js +81 -0
- package/dist/routing/link-state-db.js.map +1 -0
- package/dist/routing/path-computation.d.ts +13 -0
- package/dist/routing/path-computation.d.ts.map +1 -0
- package/dist/routing/path-computation.js +97 -0
- package/dist/routing/path-computation.js.map +1 -0
- package/dist/routing/routing-table.d.ts +5 -0
- package/dist/routing/routing-table.d.ts.map +1 -1
- package/dist/routing/routing-table.js +35 -0
- package/dist/routing/routing-table.js.map +1 -1
- package/package.json +1 -1
package/dist/config/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ProviderConfig } from '../settlement/provider/payment-channel-provider';
|
|
2
|
+
import type { IlpCapabilityEntry } from '../discovery/ilp-peer-info-event';
|
|
2
3
|
export type ChainProviderConfigEntry = ProviderConfig & {
|
|
3
4
|
chainId: string;
|
|
4
5
|
};
|
|
@@ -28,6 +29,14 @@ export interface RouteTermination {
|
|
|
28
29
|
asset?: Partial<Record<TerminationChain, string>>;
|
|
29
30
|
requireRequestBinding?: boolean;
|
|
30
31
|
}
|
|
32
|
+
export interface ChildConfig {
|
|
33
|
+
name: string;
|
|
34
|
+
upstream?: string;
|
|
35
|
+
peerId?: string;
|
|
36
|
+
price?: string;
|
|
37
|
+
capability?: string;
|
|
38
|
+
schema?: string;
|
|
39
|
+
}
|
|
31
40
|
export interface RouteConfig extends Partial<RouteTermination> {
|
|
32
41
|
prefix: string;
|
|
33
42
|
nextHop: string;
|
|
@@ -43,6 +52,8 @@ export interface ConnectorConfig {
|
|
|
43
52
|
logLevel?: 'debug' | 'info' | 'warn' | 'error';
|
|
44
53
|
peers: PeerConfig[];
|
|
45
54
|
routes: RouteConfig[];
|
|
55
|
+
apex?: string;
|
|
56
|
+
children?: ChildConfig[];
|
|
46
57
|
settlement?: SettlementConfig;
|
|
47
58
|
chainProviders?: ChainProviderConfigEntry[];
|
|
48
59
|
environment: Environment;
|
|
@@ -59,6 +70,32 @@ export interface ConnectorConfig {
|
|
|
59
70
|
btpAuthToken?: string;
|
|
60
71
|
localDelivery?: LocalDeliveryConfig;
|
|
61
72
|
selfAnnounce?: SelfAnnounceConfig;
|
|
73
|
+
routeLearning?: RouteLearningConfig;
|
|
74
|
+
bootstrap?: BootstrapConfig;
|
|
75
|
+
peeringPolicy?: PeeringPolicyConfig;
|
|
76
|
+
}
|
|
77
|
+
export interface PeeringPolicyConfig {
|
|
78
|
+
maxFundedChannels?: number;
|
|
79
|
+
autoRegister?: boolean;
|
|
80
|
+
}
|
|
81
|
+
export interface RouteLearningConfig {
|
|
82
|
+
enabled: boolean;
|
|
83
|
+
relayUrls?: string[];
|
|
84
|
+
refreshIntervalSecs?: number;
|
|
85
|
+
maxRoutes?: number;
|
|
86
|
+
}
|
|
87
|
+
export interface BootstrapSeedEntry {
|
|
88
|
+
relayUrl: string;
|
|
89
|
+
pubkey?: string;
|
|
90
|
+
}
|
|
91
|
+
export interface BootstrapConfig {
|
|
92
|
+
enabled: boolean;
|
|
93
|
+
registryUrl?: string;
|
|
94
|
+
curatorPubkey?: string;
|
|
95
|
+
seeds?: BootstrapSeedEntry[];
|
|
96
|
+
cachePath?: string;
|
|
97
|
+
sampleSize?: number;
|
|
98
|
+
refreshIntervalSecs?: number;
|
|
62
99
|
}
|
|
63
100
|
export interface SelfAnnounceConfig {
|
|
64
101
|
enabled: boolean;
|
|
@@ -70,10 +107,12 @@ export interface SelfAnnounceConfig {
|
|
|
70
107
|
relayUrl?: string;
|
|
71
108
|
assetCode?: string;
|
|
72
109
|
assetScale?: number;
|
|
110
|
+
aggregate?: boolean;
|
|
73
111
|
routes?: {
|
|
74
112
|
publish?: string;
|
|
75
113
|
store?: string;
|
|
76
114
|
};
|
|
115
|
+
capabilities?: IlpCapabilityEntry[];
|
|
77
116
|
}
|
|
78
117
|
export interface CreditLimitConfig {
|
|
79
118
|
defaultLimit?: bigint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iDAAiD,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
package/dist/config/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ import { PaymentChannelSDK } from '../settlement/payment-channel-sdk';
|
|
|
11
11
|
import { ChannelManager } from '../settlement/channel-manager';
|
|
12
12
|
import { AccountManager } from '../settlement/account-manager';
|
|
13
13
|
import { ChainProviderRegistry } from '../settlement/provider/chain-provider-registry';
|
|
14
|
+
import { type DiscoveredNode } from '../discovery/discovered-node-registry';
|
|
15
|
+
import { BootstrapService } from '../discovery/bootstrap-service';
|
|
14
16
|
export declare class ConnectorNode implements HealthStatusProvider {
|
|
15
17
|
private readonly _config;
|
|
16
18
|
private readonly _logger;
|
|
@@ -49,6 +51,10 @@ export declare class ConnectorNode implements HealthStatusProvider {
|
|
|
49
51
|
private readonly _mnemonicOverride?;
|
|
50
52
|
private readonly _mnemonicAccountIndex?;
|
|
51
53
|
private _selfAnnounceService;
|
|
54
|
+
private _routeLearningService;
|
|
55
|
+
private _discoveredNodeRegistry;
|
|
56
|
+
private readonly _runtimePeerUrls;
|
|
57
|
+
private _bootstrapService;
|
|
52
58
|
get defaultSettlementTokenId(): string;
|
|
53
59
|
constructor(config: ConnectorConfig | string, logger: Logger, opts?: {
|
|
54
60
|
transportHealthIntervalMs?: number;
|
|
@@ -64,7 +70,9 @@ export declare class ConnectorNode implements HealthStatusProvider {
|
|
|
64
70
|
private _decodeExecutionCondition;
|
|
65
71
|
private _applyMnemonicSigningMode;
|
|
66
72
|
private _resolveNostrSecretKey;
|
|
73
|
+
private _startBootstrap;
|
|
67
74
|
private _startSelfAnnounce;
|
|
75
|
+
private _startRouteLearning;
|
|
68
76
|
private _resolveAnnounceTokenNetworks;
|
|
69
77
|
private _publishAnnouncement;
|
|
70
78
|
start(): Promise<void>;
|
|
@@ -74,6 +82,7 @@ export declare class ConnectorNode implements HealthStatusProvider {
|
|
|
74
82
|
get routeTerminationRegistry(): RouteTerminationRegistry;
|
|
75
83
|
get btpClientManager(): BTPClientManager;
|
|
76
84
|
get transportProvider(): TransportProvider | null;
|
|
85
|
+
get bootstrapService(): BootstrapService | null;
|
|
77
86
|
private _createTransportProvider;
|
|
78
87
|
get paymentChannelSDK(): PaymentChannelSDK | null;
|
|
79
88
|
get chainRegistry(): ChainProviderRegistry | null;
|
|
@@ -85,8 +94,13 @@ export declare class ConnectorNode implements HealthStatusProvider {
|
|
|
85
94
|
registerPeer(config: PeerRegistrationRequest): Promise<PeerInfo>;
|
|
86
95
|
removePeer(peerId: string, removeRoutes?: boolean): Promise<RemovePeerResult>;
|
|
87
96
|
listPeers(): PeerInfo[];
|
|
97
|
+
getDiscoveredNodes(): DiscoveredNode[];
|
|
98
|
+
private _getFundedPeerRefs;
|
|
99
|
+
private _countFundedChannels;
|
|
100
|
+
private _checkFundedChannelCap;
|
|
88
101
|
getBalance(peerId: string, tokenId?: string): Promise<PeerAccountBalance>;
|
|
89
102
|
listRoutes(): RouteInfo[];
|
|
103
|
+
private _selfPrefixesWithApex;
|
|
90
104
|
addRoute(route: RouteInfo): void;
|
|
91
105
|
removeRoute(prefix: string): void;
|
|
92
106
|
private _openRegistryStore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector-node.d.ts","sourceRoot":"","sources":["../../src/core/connector-node.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAMxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAI7D,OAAO,EACL,iBAAiB,EAIjB,gBAAgB,EAChB,eAAe,EAGhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,eAAe,EAEf,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,QAAQ,EACR,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,cAAc,EAMf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAA2B,MAAM,cAAc,CAAC;AAE1E,OAAO,EAAE,cAAc,EAA+B,MAAM,mBAAmB,CAAC;AAiBhF,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAW/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;
|
|
1
|
+
{"version":3,"file":"connector-node.d.ts","sourceRoot":"","sources":["../../src/core/connector-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,14 @@ const nip59_claim_wrapper_1 = require("../settlement/privacy/nip59-claim-wrapper
|
|
|
47
47
|
const mnemonic_keys_1 = require("../wallet/mnemonic-keys");
|
|
48
48
|
const self_announce_service_1 = require("../discovery/self-announce-service");
|
|
49
49
|
const self_announce_publish_1 = require("../discovery/self-announce-publish");
|
|
50
|
+
const route_learning_service_1 = require("../discovery/route-learning-service");
|
|
51
|
+
const discovered_node_registry_1 = require("../discovery/discovered-node-registry");
|
|
52
|
+
const self_announce_builder_1 = require("../discovery/self-announce-builder");
|
|
53
|
+
const nostr_relay_client_1 = require("../discovery/nostr-relay-client");
|
|
54
|
+
const nostr_tools_1 = require("nostr-tools");
|
|
55
|
+
const bootstrap_service_1 = require("../discovery/bootstrap-service");
|
|
56
|
+
const bootstrap_cache_1 = require("../discovery/bootstrap-cache");
|
|
57
|
+
const relay_probe_1 = require("../discovery/relay-probe");
|
|
50
58
|
const utils_1 = require("@noble/hashes/utils");
|
|
51
59
|
const SELF_ANNOUNCE_PREPARE_TIMEOUT_MS = 30_000;
|
|
52
60
|
const dns_1 = require("dns");
|
|
@@ -89,6 +97,10 @@ class ConnectorNode {
|
|
|
89
97
|
_mnemonicOverride;
|
|
90
98
|
_mnemonicAccountIndex;
|
|
91
99
|
_selfAnnounceService = null;
|
|
100
|
+
_routeLearningService = null;
|
|
101
|
+
_discoveredNodeRegistry = null;
|
|
102
|
+
_runtimePeerUrls = new Map();
|
|
103
|
+
_bootstrapService = null;
|
|
92
104
|
get defaultSettlementTokenId() {
|
|
93
105
|
return this._defaultSettlementTokenId;
|
|
94
106
|
}
|
|
@@ -358,6 +370,37 @@ class ConnectorNode {
|
|
|
358
370
|
}
|
|
359
371
|
return null;
|
|
360
372
|
}
|
|
373
|
+
_startBootstrap() {
|
|
374
|
+
const bootstrap = this._config.bootstrap;
|
|
375
|
+
if (!bootstrap?.enabled) {
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
try {
|
|
379
|
+
const cachePath = bootstrap.cachePath ?? `./data/bootstrap-cache-${this._config.nodeId}.json`;
|
|
380
|
+
const service = new bootstrap_service_1.BootstrapService({
|
|
381
|
+
config: bootstrap,
|
|
382
|
+
relayProbe: (0, relay_probe_1.createKind10032RelayProbe)(this._logger),
|
|
383
|
+
cacheStore: new bootstrap_cache_1.FileBootstrapCacheStore(cachePath, this._logger),
|
|
384
|
+
logger: this._logger,
|
|
385
|
+
});
|
|
386
|
+
service.onRelaysResolved((relayUrls) => {
|
|
387
|
+
this._logger.info({
|
|
388
|
+
event: 'bootstrap_relays_available',
|
|
389
|
+
relayUrls,
|
|
390
|
+
selfAnnounceHasRelayHint: Boolean(this._config.selfAnnounce?.relayUrl),
|
|
391
|
+
}, 'Bootstrap discovered verified relays');
|
|
392
|
+
});
|
|
393
|
+
service.start();
|
|
394
|
+
this._bootstrapService = service;
|
|
395
|
+
}
|
|
396
|
+
catch (err) {
|
|
397
|
+
this._bootstrapService = null;
|
|
398
|
+
this._logger.warn({
|
|
399
|
+
event: 'bootstrap_start_failed',
|
|
400
|
+
err: err instanceof Error ? err.message : String(err),
|
|
401
|
+
}, 'Failed to start cold-start bootstrap service; continuing without it');
|
|
402
|
+
}
|
|
403
|
+
}
|
|
361
404
|
_startSelfAnnounce() {
|
|
362
405
|
const selfAnnounce = this._config.selfAnnounce;
|
|
363
406
|
if (!selfAnnounce?.enabled) {
|
|
@@ -387,6 +430,41 @@ class ConnectorNode {
|
|
|
387
430
|
}, 'Failed to start self-announce service; continuing without it');
|
|
388
431
|
}
|
|
389
432
|
}
|
|
433
|
+
_startRouteLearning() {
|
|
434
|
+
const routeLearning = this._config.routeLearning;
|
|
435
|
+
if (!routeLearning?.enabled) {
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
438
|
+
const secretKey = this._resolveNostrSecretKey();
|
|
439
|
+
const ownPubkey = secretKey ? (0, nostr_tools_1.getPublicKey)(secretKey) : undefined;
|
|
440
|
+
try {
|
|
441
|
+
this._discoveredNodeRegistry = new discovered_node_registry_1.DiscoveredNodeRegistry({
|
|
442
|
+
getFundedPeers: () => this._getFundedPeerRefs(),
|
|
443
|
+
...(ownPubkey ? { ownPubkey } : {}),
|
|
444
|
+
logger: this._logger,
|
|
445
|
+
});
|
|
446
|
+
this._ilpMetrics.setDiscoveredNodeCountsProvider(() => this._discoveredNodeRegistry?.counts() ?? { discovered: 0, funded: 0 });
|
|
447
|
+
this._routeLearningService = new route_learning_service_1.RouteLearningService({
|
|
448
|
+
config: this._config,
|
|
449
|
+
routeLearning,
|
|
450
|
+
routingTable: this._routingTable,
|
|
451
|
+
relayClient: (0, nostr_relay_client_1.createNostrRelayClient)(),
|
|
452
|
+
getDirectPeerIds: () => this._btpClientManager.getPeerIds(),
|
|
453
|
+
...(ownPubkey ? { ownPubkey } : {}),
|
|
454
|
+
discoveredNodes: this._discoveredNodeRegistry,
|
|
455
|
+
logger: this._logger,
|
|
456
|
+
});
|
|
457
|
+
this._routeLearningService.start();
|
|
458
|
+
}
|
|
459
|
+
catch (err) {
|
|
460
|
+
this._routeLearningService = null;
|
|
461
|
+
this._discoveredNodeRegistry = null;
|
|
462
|
+
this._logger.warn({
|
|
463
|
+
event: 'route_learning_start_failed',
|
|
464
|
+
err: err instanceof Error ? err.message : String(err),
|
|
465
|
+
}, 'Failed to start route-learning service; continuing without it');
|
|
466
|
+
}
|
|
467
|
+
}
|
|
390
468
|
async _resolveAnnounceTokenNetworks() {
|
|
391
469
|
const out = {};
|
|
392
470
|
const providers = this._chainRegistry?.getAllProviders() ?? [];
|
|
@@ -980,6 +1058,10 @@ class ConnectorNode {
|
|
|
980
1058
|
httpPeerEgress: this._httpPeerClientManager,
|
|
981
1059
|
setPeerProtocol: (peerId, protocol) => this._packetHandler.setPeerProtocol(peerId, protocol),
|
|
982
1060
|
routeTerminationRegistry: this._routeTerminationRegistry,
|
|
1061
|
+
getDiscoveredNodes: () => this.getDiscoveredNodes(),
|
|
1062
|
+
checkFundedChannelCap: (peerId) => this._checkFundedChannelCap(peerId),
|
|
1063
|
+
recordRuntimePeerUrl: (peerId, url) => this._runtimePeerUrls.set(peerId, url),
|
|
1064
|
+
forgetRuntimePeerUrl: (peerId) => this._runtimePeerUrls.delete(peerId),
|
|
983
1065
|
});
|
|
984
1066
|
await this._adminServer.start();
|
|
985
1067
|
this._logger.info({
|
|
@@ -1052,7 +1134,9 @@ class ConnectorNode {
|
|
|
1052
1134
|
await Promise.allSettled(channelCreationPromises);
|
|
1053
1135
|
this._logger.info({ event: 'payment_channels_initialized' }, 'Payment channel creation completed');
|
|
1054
1136
|
}
|
|
1137
|
+
this._startBootstrap();
|
|
1055
1138
|
this._startSelfAnnounce();
|
|
1139
|
+
this._startRouteLearning();
|
|
1056
1140
|
this._updateHealthStatus();
|
|
1057
1141
|
this._logger.info({
|
|
1058
1142
|
event: 'connector_ready',
|
|
@@ -1105,6 +1189,15 @@ class ConnectorNode {
|
|
|
1105
1189
|
this._selfAnnounceService.stop();
|
|
1106
1190
|
this._selfAnnounceService = null;
|
|
1107
1191
|
}
|
|
1192
|
+
if (this._routeLearningService) {
|
|
1193
|
+
this._routeLearningService.stop();
|
|
1194
|
+
this._routeLearningService = null;
|
|
1195
|
+
}
|
|
1196
|
+
this._discoveredNodeRegistry = null;
|
|
1197
|
+
if (this._bootstrapService) {
|
|
1198
|
+
this._bootstrapService.stop();
|
|
1199
|
+
this._bootstrapService = null;
|
|
1200
|
+
}
|
|
1108
1201
|
if (this._settlementMonitor) {
|
|
1109
1202
|
await this._settlementMonitor.stop();
|
|
1110
1203
|
this._logger.info({ event: 'settlement_monitor_stopped' }, 'Settlement monitor stopped');
|
|
@@ -1224,6 +1317,9 @@ class ConnectorNode {
|
|
|
1224
1317
|
get transportProvider() {
|
|
1225
1318
|
return this._transportProviderReady ? this._transportProvider : null;
|
|
1226
1319
|
}
|
|
1320
|
+
get bootstrapService() {
|
|
1321
|
+
return this._bootstrapService;
|
|
1322
|
+
}
|
|
1227
1323
|
_createTransportProvider(_cfg) {
|
|
1228
1324
|
const externalUrl = `ws://localhost:${this._config.btpServerPort}`;
|
|
1229
1325
|
this._logger.debug({ event: 'direct_transport_external_url_synthesized', externalUrl }, 'DirectTransportProvider externalUrl synthesized from btpServerPort (local placeholder)');
|
|
@@ -1395,9 +1491,19 @@ class ConnectorNode {
|
|
|
1395
1491
|
throw new Error(settlementError);
|
|
1396
1492
|
}
|
|
1397
1493
|
}
|
|
1398
|
-
|
|
1494
|
+
if (config.settlement) {
|
|
1495
|
+
const capError = this._checkFundedChannelCap(config.id);
|
|
1496
|
+
if (capError) {
|
|
1497
|
+
throw new Error(capError);
|
|
1498
|
+
}
|
|
1499
|
+
}
|
|
1500
|
+
const childBinding = this._config.children?.find((c) => c.peerId === config.id);
|
|
1501
|
+
if (childBinding && config.relation !== undefined && config.relation !== 'child') {
|
|
1502
|
+
throw new Error(`Peer '${config.id}' is bound as child '${childBinding.name}' in config; relation must be 'child' (got '${config.relation}')`);
|
|
1503
|
+
}
|
|
1504
|
+
const localPrefixes = this._selfPrefixesWithApex();
|
|
1399
1505
|
let effectiveRoutes = config.routes;
|
|
1400
|
-
if (!effectiveRoutes || effectiveRoutes.length === 0) {
|
|
1506
|
+
if ((!effectiveRoutes || effectiveRoutes.length === 0) && !childBinding) {
|
|
1401
1507
|
const autoRoute = (0, relation_route_validator_1.deriveDefaultChildRoute)(config.relation, localPrefixes, config.id);
|
|
1402
1508
|
if (autoRoute) {
|
|
1403
1509
|
effectiveRoutes = [autoRoute];
|
|
@@ -1436,6 +1542,7 @@ class ConnectorNode {
|
|
|
1436
1542
|
transport: config.transport,
|
|
1437
1543
|
};
|
|
1438
1544
|
await this._btpClientManager.addPeer(peer);
|
|
1545
|
+
this._runtimePeerUrls.set(config.id, config.url);
|
|
1439
1546
|
this._ilpMetrics.registerPeer(config.id);
|
|
1440
1547
|
this._logger.info({
|
|
1441
1548
|
event: 'peer_registered',
|
|
@@ -1508,6 +1615,7 @@ class ConnectorNode {
|
|
|
1508
1615
|
throw new Error(`Peer not found: ${peerId}`);
|
|
1509
1616
|
}
|
|
1510
1617
|
await this._btpClientManager.removePeer(peerId);
|
|
1618
|
+
this._runtimePeerUrls.delete(peerId);
|
|
1511
1619
|
this._ilpMetrics.unregisterPeer(peerId);
|
|
1512
1620
|
this._logger.info({ event: 'peer_removed', peerId }, `Removed peer: ${peerId}`);
|
|
1513
1621
|
if (this._settlementPeers.delete(peerId)) {
|
|
@@ -1552,6 +1660,62 @@ class ConnectorNode {
|
|
|
1552
1660
|
return peerInfo;
|
|
1553
1661
|
});
|
|
1554
1662
|
}
|
|
1663
|
+
getDiscoveredNodes() {
|
|
1664
|
+
return this._discoveredNodeRegistry ? this._discoveredNodeRegistry.list() : [];
|
|
1665
|
+
}
|
|
1666
|
+
_getFundedPeerRefs() {
|
|
1667
|
+
const refsById = new Map();
|
|
1668
|
+
for (const peerId of this._btpClientManager.getPeerIds()) {
|
|
1669
|
+
refsById.set(peerId, { peerId });
|
|
1670
|
+
}
|
|
1671
|
+
for (const peerId of this._httpPeerClientManager.getPeerIds()) {
|
|
1672
|
+
if (!refsById.has(peerId))
|
|
1673
|
+
refsById.set(peerId, { peerId });
|
|
1674
|
+
}
|
|
1675
|
+
for (const peer of this._config.peers) {
|
|
1676
|
+
const ref = refsById.get(peer.id);
|
|
1677
|
+
if (!ref)
|
|
1678
|
+
continue;
|
|
1679
|
+
const nostrPubkey = (0, self_announce_builder_1.nip59KeyToNostrPubkey)(peer.nip59PublicKey);
|
|
1680
|
+
if (nostrPubkey)
|
|
1681
|
+
ref.nostrPubkey = nostrPubkey;
|
|
1682
|
+
if (peer.url)
|
|
1683
|
+
ref.btpUrl = peer.url;
|
|
1684
|
+
}
|
|
1685
|
+
for (const [peerId, url] of this._runtimePeerUrls) {
|
|
1686
|
+
const ref = refsById.get(peerId);
|
|
1687
|
+
if (ref && ref.btpUrl === undefined)
|
|
1688
|
+
ref.btpUrl = url;
|
|
1689
|
+
}
|
|
1690
|
+
return Array.from(refsById.values());
|
|
1691
|
+
}
|
|
1692
|
+
_countFundedChannels() {
|
|
1693
|
+
const liveIds = new Set([
|
|
1694
|
+
...this._btpClientManager.getPeerIds(),
|
|
1695
|
+
...this._httpPeerClientManager.getPeerIds(),
|
|
1696
|
+
]);
|
|
1697
|
+
let count = 0;
|
|
1698
|
+
for (const peerId of this._settlementPeers.keys()) {
|
|
1699
|
+
if (liveIds.has(peerId))
|
|
1700
|
+
count++;
|
|
1701
|
+
}
|
|
1702
|
+
return count;
|
|
1703
|
+
}
|
|
1704
|
+
_checkFundedChannelCap(peerId) {
|
|
1705
|
+
const maxFundedChannels = this._config.peeringPolicy?.maxFundedChannels;
|
|
1706
|
+
if (maxFundedChannels === undefined)
|
|
1707
|
+
return null;
|
|
1708
|
+
if (this._settlementPeers.has(peerId))
|
|
1709
|
+
return null;
|
|
1710
|
+
const funded = this._countFundedChannels();
|
|
1711
|
+
if (funded < maxFundedChannels)
|
|
1712
|
+
return null;
|
|
1713
|
+
return (`Funded-channel cap reached: ${funded}/${maxFundedChannels} funded channels in use ` +
|
|
1714
|
+
`(peeringPolicy.maxFundedChannels). Registering '${peerId}' with settlement config would ` +
|
|
1715
|
+
`open another funded channel — remove a funded peer first (DELETE /admin/peers/:peerId) ` +
|
|
1716
|
+
`or raise the cap. Discovered nodes stay reachable through learned multi-hop routes ` +
|
|
1717
|
+
`without a funded channel.`);
|
|
1718
|
+
}
|
|
1555
1719
|
async getBalance(peerId, tokenId = this._defaultSettlementTokenId) {
|
|
1556
1720
|
if (!this._accountManager) {
|
|
1557
1721
|
throw new Error('Account management not enabled');
|
|
@@ -1577,6 +1741,14 @@ class ConnectorNode {
|
|
|
1577
1741
|
priority: r.priority ?? 0,
|
|
1578
1742
|
}));
|
|
1579
1743
|
}
|
|
1744
|
+
_selfPrefixesWithApex() {
|
|
1745
|
+
const localPrefixes = (0, relation_route_validator_1.deriveLocalPrefixes)(this._routingTable.getAllRoutes(), this._config.nodeId);
|
|
1746
|
+
const apex = this._config.apex;
|
|
1747
|
+
if (apex !== undefined && !localPrefixes.includes(apex)) {
|
|
1748
|
+
localPrefixes.push(apex);
|
|
1749
|
+
}
|
|
1750
|
+
return localPrefixes;
|
|
1751
|
+
}
|
|
1580
1752
|
addRoute(route) {
|
|
1581
1753
|
if (!(0, shared_1.isValidILPAddress)(route.prefix)) {
|
|
1582
1754
|
throw new Error(`Invalid ILP address prefix: ${route.prefix}`);
|
|
@@ -1589,7 +1761,7 @@ class ConnectorNode {
|
|
|
1589
1761
|
this._logger.warn({ event: 'route_nextHop_unknown', prefix: route.prefix, nextHop: route.nextHop }, `Adding route with unknown nextHop peer: ${route.nextHop}`);
|
|
1590
1762
|
}
|
|
1591
1763
|
const nextHopRelation = this._packetHandler.getPeerRelation(route.nextHop);
|
|
1592
|
-
const localPrefixes =
|
|
1764
|
+
const localPrefixes = this._selfPrefixesWithApex();
|
|
1593
1765
|
const relationValidation = (0, relation_route_validator_1.validateRelationRoute)(nextHopRelation, localPrefixes, [
|
|
1594
1766
|
route.prefix,
|
|
1595
1767
|
]);
|