beignet 0.9.0 → 0.9.2

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.
Files changed (51) hide show
  1. package/dist/cli/auth.js +2 -0
  2. package/dist/cli/auth.js.map +1 -1
  3. package/dist/cli/beignet-node.js +364 -36
  4. package/dist/cli/beignet-node.js.map +1 -1
  5. package/dist/cli/cli.js +56 -1
  6. package/dist/cli/cli.js.map +1 -1
  7. package/dist/cli/config.js +21 -1
  8. package/dist/cli/config.js.map +1 -1
  9. package/dist/cli/daemon.js +66 -2
  10. package/dist/cli/daemon.js.map +1 -1
  11. package/dist/cli/instance-lock.js +57 -12
  12. package/dist/cli/instance-lock.js.map +1 -1
  13. package/dist/cli/openapi.js +38 -0
  14. package/dist/cli/openapi.js.map +1 -1
  15. package/dist/cli/restore.js.map +1 -1
  16. package/dist/lightning/crypto/ecdh.js +97 -1
  17. package/dist/lightning/crypto/ecdh.js.map +1 -1
  18. package/dist/lightning/gossip/gossip-sync.js +1 -1
  19. package/dist/lightning/gossip/gossip-sync.js.map +1 -1
  20. package/dist/lightning/gossip/network-graph.js +319 -21
  21. package/dist/lightning/gossip/network-graph.js.map +1 -1
  22. package/dist/lightning/gossip/types.js +6 -1
  23. package/dist/lightning/gossip/types.js.map +1 -1
  24. package/dist/lightning/gossip/validation.js +13 -10
  25. package/dist/lightning/gossip/validation.js.map +1 -1
  26. package/dist/lightning/node/lightning-node.js +200 -29
  27. package/dist/lightning/node/lightning-node.js.map +1 -1
  28. package/dist/lightning/node/types.js.map +1 -1
  29. package/dist/lightning/recovery/assembly.js +157 -0
  30. package/dist/lightning/recovery/assembly.js.map +1 -0
  31. package/dist/lightning/recovery/index.js +1 -0
  32. package/dist/lightning/recovery/index.js.map +1 -1
  33. package/dist/lightning/storage/serialization.js +3 -0
  34. package/dist/lightning/storage/serialization.js.map +1 -1
  35. package/dist/lightning/storage/sqlite-storage.js +5 -0
  36. package/dist/lightning/storage/sqlite-storage.js.map +1 -1
  37. package/dist/lightning/storage/types.js.map +1 -1
  38. package/dist/types/cli/beignet-node.d.ts +49 -0
  39. package/dist/types/cli/instance-lock.d.ts +7 -1
  40. package/dist/types/cli/types.d.ts +32 -0
  41. package/dist/types/lightning/crypto/ecdh.d.ts +3 -0
  42. package/dist/types/lightning/gossip/network-graph.d.ts +27 -5
  43. package/dist/types/lightning/gossip/types.d.ts +7 -0
  44. package/dist/types/lightning/node/lightning-node.d.ts +14 -0
  45. package/dist/types/lightning/node/types.d.ts +1 -0
  46. package/dist/types/lightning/recovery/assembly.d.ts +42 -0
  47. package/dist/types/lightning/recovery/index.d.ts +1 -0
  48. package/dist/types/lightning/storage/sqlite-storage.d.ts +1 -0
  49. package/dist/types/lightning/storage/types.d.ts +1 -0
  50. package/docs/RECOVERY-PROTOCOL.md +72 -17
  51. package/package.json +1 -1
package/dist/cli/auth.js CHANGED
@@ -51,6 +51,7 @@ exports.ROUTE_SCOPES = {
51
51
  'GET /backup/scb': ['readonly'],
52
52
  'GET /backup/peer-retrieved': ['readonly'],
53
53
  'GET /queue': ['readonly'],
54
+ 'GET /recovery/status': ['readonly'],
54
55
  'POST /route/estimate': ['readonly'],
55
56
  'POST /route/query': ['readonly'],
56
57
  'POST /payment/estimate': ['readonly'],
@@ -137,6 +138,7 @@ exports.ROUTE_SCOPES = {
137
138
  'POST /backup': [],
138
139
  'POST /backup/trigger': [],
139
140
  'POST /restore/scb': [],
141
+ 'POST /recovery/restore': [],
140
142
  'POST /watchtower/add': [],
141
143
  'DELETE /watchtower/remove': [],
142
144
  'POST /webhooks/register': [],
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.BeignetNode = exports.jsonToRouteHops = exports.routeHopsToJson = exports.decodeOfferInput = exports.decodeInvoiceInput = exports.parseScid = exports.formatScid = exports.defaultDataDirForMnemonic = void 0;
26
+ exports.BeignetNode = exports.jsonToRouteHops = exports.routeHopsToJson = exports.decodeOfferInput = exports.decodeInvoiceInput = exports.parseScid = exports.formatScid = exports.gossipPrimeLatch = exports.defaultDataDirForMnemonic = exports.parseRecoveryMode = void 0;
27
27
  const path = __importStar(require("path"));
28
28
  const fs = __importStar(require("fs"));
29
29
  const net = __importStar(require("net"));
@@ -53,12 +53,29 @@ const types_1 = require("../lightning/gossip/types");
53
53
  const electrum_backend_1 = require("../lightning/chain/electrum-backend");
54
54
  const types_2 = require("../lightning/invoice/types");
55
55
  const wallet_keys_1 = require("../lightning/keys/wallet-keys");
56
+ const recovery_1 = require("../lightning/recovery");
56
57
  const types_3 = require("../lightning/channel/types");
57
58
  const decode_1 = require("../lightning/invoice/decode");
58
59
  const decode_2 = require("../lightning/offer/decode");
59
60
  const errors_1 = require("./errors");
60
61
  const payment_queue_1 = require("./payment-queue");
61
62
  const DEFAULT_DATA_DIR = path.join(process.env.HOME || process.env.USERPROFILE || '.', '.beignet', 'data');
63
+ function parseRecoveryMode(value) {
64
+ return value === 'peer-storage' ||
65
+ value === 'async-remote' ||
66
+ value === 'quorum'
67
+ ? value
68
+ : 'off';
69
+ }
70
+ exports.parseRecoveryMode = parseRecoveryMode;
71
+ const RESTORE_ERROR_CODES = {
72
+ 'no-quorum': 'RESTORE_NO_QUORUM',
73
+ 'unknown-namespace': 'RESTORE_UNKNOWN_NAMESPACE',
74
+ conflict: 'RESTORE_CONFLICT',
75
+ 'cas-exhausted': 'RESTORE_CAS_EXHAUSTED',
76
+ 'head-unverifiable': 'RESTORE_HEAD_UNVERIFIABLE',
77
+ 'target-unsupported': 'RESTORE_TARGET_UNSUPPORTED'
78
+ };
62
79
  function defaultDataDirForMnemonic(mnemonic, baseDir = DEFAULT_DATA_DIR) {
63
80
  const walletTag = crypto
64
81
  .createHash('sha256')
@@ -68,6 +85,18 @@ function defaultDataDirForMnemonic(mnemonic, baseDir = DEFAULT_DATA_DIR) {
68
85
  return path.join(baseDir, walletTag);
69
86
  }
70
87
  exports.defaultDataDirForMnemonic = defaultDataDirForMnemonic;
88
+ function gossipPrimeLatch(rgs, timeoutMs) {
89
+ return new Promise((resolve) => {
90
+ const timer = setTimeout(resolve, timeoutMs);
91
+ timer.unref?.();
92
+ const settle = () => {
93
+ clearTimeout(timer);
94
+ resolve();
95
+ };
96
+ rgs.then(settle, settle);
97
+ });
98
+ }
99
+ exports.gossipPrimeLatch = gossipPrimeLatch;
71
100
  function formatScid(scid) {
72
101
  const { block, txIndex, outputIndex } = (0, types_1.decodeShortChannelId)(scid);
73
102
  return `${block}x${txIndex}x${outputIndex}`;
@@ -191,6 +220,10 @@ class BeignetNode extends events_1.EventEmitter {
191
220
  }
192
221
  constructor(mnemonic, networkName, dataDir) {
193
222
  super();
223
+ this.recoveryMode = 'off';
224
+ this.recoveryGuardianSet = [];
225
+ this._restorePending = false;
226
+ this._restoreInFlight = false;
194
227
  this._lockPath = null;
195
228
  this._lockExitHandler = null;
196
229
  this.destroyed = false;
@@ -198,6 +231,9 @@ class BeignetNode extends events_1.EventEmitter {
198
231
  this.logLevel = 'info';
199
232
  this.autoGossipSync = true;
200
233
  this.rapidGossipSync = true;
234
+ this._initialGossipPrime = null;
235
+ this._releaseBootRgs = null;
236
+ this._deferredGossipSyncs = new Set();
201
237
  this.electrumServerCount = 1;
202
238
  this._failoverInProgress = false;
203
239
  this._connectTimeoutMs = 15000;
@@ -242,29 +278,16 @@ class BeignetNode extends events_1.EventEmitter {
242
278
  this.rapidGossipSync = opts.rapidGossipSync ?? true;
243
279
  this.rapidGossipSyncUrl = opts.rapidGossipSyncUrl;
244
280
  const networkName = this.networkName;
245
- const defaults = DEFAULT_ELECTRUM[networkName];
246
- const rawElectrumHost = opts.electrumHost || defaults.host;
247
- const electrumPort = opts.electrumPort || defaults.port;
248
- const electrumTls = opts.electrumTls ?? defaults.useTls;
249
- const electrumHost = await resolveHostToIPv4(rawElectrumHost);
250
- if (electrumHost !== rawElectrumHost) {
251
- this.log('info', 'Resolved Electrum host to IPv4', {
252
- host: rawElectrumHost,
253
- ipv4: electrumHost
254
- });
255
- }
256
- const beignetNetwork = this.toBeignetNetwork(networkName);
257
- const lnNetwork = this.toLnNetwork(networkName);
258
- const coinType = this.toCoinType(networkName);
259
- let chainHash = types_3.BITCOIN_CHAIN_HASH;
260
- if (networkName === 'regtest')
261
- chainHash = types_3.REGTEST_CHAIN_HASH;
262
- if (networkName === 'signet')
263
- chainHash = types_3.SIGNET_CHAIN_HASH;
264
281
  if (!opts.allowMultipleInstances) {
265
282
  const lockPath = path.join(this.dataDir, `${networkName}.lock`);
266
283
  try {
267
- (0, instance_lock_1.acquireInstanceLock)(lockPath);
284
+ (0, instance_lock_1.acquireInstanceLock)(lockPath, {
285
+ reclaimForeignHost: true,
286
+ onReclaim: (holder, reason) => {
287
+ this.log('warn', `[beignet] Reclaimed stale instance lock (pid ${holder.pid} on ` +
288
+ `${holder.hostname}, ${reason}) at ${lockPath}`);
289
+ }
290
+ });
268
291
  }
269
292
  catch (e) {
270
293
  if (e instanceof instance_lock_1.InstanceLockError) {
@@ -299,6 +322,37 @@ class BeignetNode extends events_1.EventEmitter {
299
322
  });
300
323
  }, encryptionKey ? { encryptionKey } : undefined);
301
324
  this.storage.open();
325
+ await this.prepareRecovery(opts);
326
+ if (this._restorePending) {
327
+ this._deferredOpts = opts;
328
+ this.log('warn', 'Recovery restore required: this database is fresh and the ' +
329
+ 'guardian set holds its namespace. The daemon serves only the ' +
330
+ 'recovery surface until POST /recovery/restore runs.');
331
+ return;
332
+ }
333
+ await this.initNode(opts);
334
+ }
335
+ async initNode(opts) {
336
+ const networkName = this.networkName;
337
+ const defaults = DEFAULT_ELECTRUM[networkName];
338
+ const rawElectrumHost = opts.electrumHost || defaults.host;
339
+ const electrumPort = opts.electrumPort || defaults.port;
340
+ const electrumTls = opts.electrumTls ?? defaults.useTls;
341
+ const electrumHost = await resolveHostToIPv4(rawElectrumHost);
342
+ if (electrumHost !== rawElectrumHost) {
343
+ this.log('info', 'Resolved Electrum host to IPv4', {
344
+ host: rawElectrumHost,
345
+ ipv4: electrumHost
346
+ });
347
+ }
348
+ const beignetNetwork = this.toBeignetNetwork(networkName);
349
+ const lnNetwork = this.toLnNetwork(networkName);
350
+ const coinType = this.toCoinType(networkName);
351
+ let chainHash = types_3.BITCOIN_CHAIN_HASH;
352
+ if (networkName === 'regtest')
353
+ chainHash = types_3.REGTEST_CHAIN_HASH;
354
+ if (networkName === 'signet')
355
+ chainHash = types_3.SIGNET_CHAIN_HASH;
302
356
  const electrumServer = {
303
357
  host: electrumHost,
304
358
  ssl: electrumTls ? electrumPort : 0,
@@ -406,6 +460,14 @@ class BeignetNode extends events_1.EventEmitter {
406
460
  }
407
461
  });
408
462
  }
463
+ if (this.rapidGossipSync && this.networkName === 'mainnet') {
464
+ const settled = new Promise((resolve) => {
465
+ this._releaseBootRgs = resolve;
466
+ });
467
+ this._initialGossipPrime = gossipPrimeLatch(settled, BeignetNode.INITIAL_GOSSIP_PRIME_TIMEOUT_MS).then(() => {
468
+ this._initialGossipPrime = null;
469
+ });
470
+ }
409
471
  this.node = lightning_node_1.LightningNode.fromMnemonic(this.mnemonic, {
410
472
  coinType,
411
473
  network: lnNetwork,
@@ -414,6 +476,7 @@ class BeignetNode extends events_1.EventEmitter {
414
476
  autoReconnect: opts.autoReconnect ?? true,
415
477
  autoUpdateChannelFees: opts.autoUpdateChannelFees ?? false,
416
478
  forwardingEnabled: opts.forwardingEnabled ?? true,
479
+ eagerGossipVerify: opts.eagerGossipVerify ?? false,
417
480
  localFeatures: lightning_node_1.LightningNode.defaultFeatures(),
418
481
  chainHashes: [chainHash],
419
482
  alias: opts.alias,
@@ -429,7 +492,8 @@ class BeignetNode extends events_1.EventEmitter {
429
492
  peerStorageEnabled: this.peerStorageEnabled,
430
493
  autoRebalance: opts.autoRebalance,
431
494
  autoTuneFees: opts.autoTuneFees,
432
- watchtowers: opts.watchtowers
495
+ watchtowers: opts.watchtowers,
496
+ recovery: this.recoveryNodeConfig
433
497
  });
434
498
  if (!sweepDestinationScript) {
435
499
  this.scheduleSweepAddressRefresh();
@@ -596,14 +660,25 @@ class BeignetNode extends events_1.EventEmitter {
596
660
  this.node.on('peer:connect', (pubkey) => {
597
661
  this.log('debug', 'Peer connected', { pubkey });
598
662
  if (this.autoGossipSync) {
599
- try {
600
- this.node.initiateGossipSync(pubkey);
663
+ const prime = this._initialGossipPrime;
664
+ if (prime) {
665
+ if (!this._deferredGossipSyncs.has(pubkey)) {
666
+ this._deferredGossipSyncs.add(pubkey);
667
+ void prime.then(() => {
668
+ this._deferredGossipSyncs.delete(pubkey);
669
+ if (this.destroyed)
670
+ return;
671
+ const stillConnected = this.node
672
+ .listPeers()
673
+ .some((p) => p.pubkey === pubkey);
674
+ if (!stillConnected)
675
+ return;
676
+ this.startGossipSync(pubkey);
677
+ });
678
+ }
601
679
  }
602
- catch (err) {
603
- this.log('warn', 'Gossip sync failed to start', {
604
- pubkey,
605
- error: err instanceof Error ? err.message : String(err)
606
- });
680
+ else {
681
+ this.startGossipSync(pubkey);
607
682
  }
608
683
  }
609
684
  this.emit('peer:connect', { pubkey });
@@ -620,6 +695,27 @@ class BeignetNode extends events_1.EventEmitter {
620
695
  this.log('info', 'Node ready');
621
696
  this.emit('node:ready');
622
697
  });
698
+ this.node.on('recovery:durable', (through) => {
699
+ this.emit('recovery:durable', { through: through.toString() });
700
+ });
701
+ this.node.on('recovery:fenced', (superseding) => {
702
+ this.log('error', 'Recovery fenced: a newer writer epoch owns this namespace; ' +
703
+ 'this device must not send another channel message');
704
+ this.emit('recovery:fenced', {
705
+ supersededBy: superseding
706
+ ? {
707
+ epoch: superseding.lease.epoch.toString(),
708
+ writerPublicKey: superseding.lease.writerPublicKey.toString('hex'),
709
+ sequence: superseding.logHead.sequence.toString(),
710
+ frameHash: superseding.logHead.frameHash.toString('hex')
711
+ }
712
+ : null
713
+ });
714
+ });
715
+ this.node.on('recovery:backfill-lost', (detail) => {
716
+ this.log('error', 'Recovery backfill lost', { detail });
717
+ this.emit('recovery:backfill-lost', { detail });
718
+ });
623
719
  this.node.on('peer_storage:retrieved', (peerPubkey, blob) => this.handleRetrievedPeerStorage(peerPubkey, blob));
624
720
  if (this.peerStorageEnabled) {
625
721
  this.refreshStaticChannelBackup();
@@ -674,15 +770,226 @@ class BeignetNode extends events_1.EventEmitter {
674
770
  });
675
771
  }
676
772
  if (this.rapidGossipSync && this.networkName === 'mainnet') {
677
- this.syncRapidGossip().catch((err) => {
773
+ const rgs = this.syncRapidGossip().catch((err) => {
678
774
  this.log('warn', 'Rapid gossip sync failed', {
679
775
  error: err instanceof Error ? err.message : String(err)
680
776
  });
681
777
  });
778
+ const release = this._releaseBootRgs;
779
+ if (release) {
780
+ void rgs.then(release);
781
+ }
682
782
  }
683
783
  if (this.sweepDestinationScript) {
684
784
  this.runFallbackRecoveryWhenConnected();
685
785
  }
786
+ if (this._recoveryRun) {
787
+ this.startRecoveryConfirmLoop();
788
+ }
789
+ }
790
+ async prepareRecovery(opts) {
791
+ const mode = parseRecoveryMode(opts.recoveryMode);
792
+ this.recoveryMode = mode;
793
+ if (mode === 'off')
794
+ return;
795
+ if (mode === 'peer-storage') {
796
+ this.recoveryNodeConfig = { enabled: true, durability: 'local' };
797
+ return;
798
+ }
799
+ const guardians = (opts.recoveryGuardians ?? []).map(recovery_1.parseGuardianUri);
800
+ this.recoveryGuardianSet = guardians;
801
+ const coinType = this.toCoinType(this.networkName);
802
+ const keys = (0, wallet_keys_1.deriveLightningKeysFromMnemonic)(this.mnemonic, undefined, coinType);
803
+ const decision = await (0, recovery_1.buildGuardianRecovery)({
804
+ storage: this.storage,
805
+ nodeSecret: keys.nodePrivateKey,
806
+ durability: mode,
807
+ guardians,
808
+ onBarrierEvent: (event) => {
809
+ if (event.type === 'barrier:unreachable') {
810
+ this.log('warn', 'Recovery guardian unreachable', {
811
+ detail: event.detail
812
+ });
813
+ this.emit('recovery:guardian_unreachable', {
814
+ detail: event.detail,
815
+ ...(event.sequence !== undefined
816
+ ? { sequence: event.sequence.toString() }
817
+ : {})
818
+ });
819
+ }
820
+ },
821
+ onGateEvent: (event) => {
822
+ this.log(event.type === 'gate:fenced' ? 'error' : 'info', `Recovery gate: ${event.type}`, { detail: event.detail });
823
+ },
824
+ onReplicationEvent: (event) => {
825
+ this.log('debug', `Recovery replication: ${event.type}`, {
826
+ detail: event.detail
827
+ });
828
+ }
829
+ });
830
+ if (decision.kind === 'run') {
831
+ this._recoveryRun = decision;
832
+ this.recoveryNodeConfig = decision.recovery;
833
+ return;
834
+ }
835
+ if (decision.kind === 'restore-required') {
836
+ this._restoreDecision = decision;
837
+ this._restorePending = true;
838
+ return;
839
+ }
840
+ throw new errors_1.BeignetError('RECOVERY_UNAVAILABLE', `Recovery ${decision.outcome}: ${decision.detail}. Ownership of ` +
841
+ 'this namespace cannot be decided without a guardian quorum; ' +
842
+ 'retry when the guardian set is reachable.');
843
+ }
844
+ startRecoveryConfirmLoop() {
845
+ const run = this._recoveryRun;
846
+ if (!run)
847
+ return;
848
+ let delayMs = 5000;
849
+ const attempt = async () => {
850
+ if (this.destroyed)
851
+ return;
852
+ try {
853
+ const outcome = await run.confirm();
854
+ if (outcome.state === 'confirmed') {
855
+ this.log('info', 'Recovery gate confirmed; peer traffic released', {
856
+ confirming: outcome.confirming
857
+ });
858
+ return;
859
+ }
860
+ if (outcome.state === 'fenced') {
861
+ this.emit('recovery:fenced', {
862
+ supersededBy: outcome.supersededBy
863
+ ? {
864
+ epoch: outcome.supersededBy.lease.epoch.toString(),
865
+ writerPublicKey: outcome.supersededBy.lease.writerPublicKey.toString('hex'),
866
+ sequence: outcome.supersededBy.logHead.sequence.toString(),
867
+ frameHash: outcome.supersededBy.logHead.frameHash.toString('hex')
868
+ }
869
+ : null
870
+ });
871
+ return;
872
+ }
873
+ this.log('warn', 'Recovery gate still quarantined; retrying', {
874
+ confirming: outcome.confirming,
875
+ nextRetryMs: delayMs
876
+ });
877
+ }
878
+ catch (err) {
879
+ this.log('warn', 'Recovery gate confirmation attempt failed', {
880
+ error: err instanceof Error ? err.message : String(err),
881
+ nextRetryMs: delayMs
882
+ });
883
+ }
884
+ this._confirmTimer = setTimeout(() => {
885
+ void attempt();
886
+ }, delayMs);
887
+ this._confirmTimer.unref?.();
888
+ delayMs = Math.min(delayMs * 2, 60000);
889
+ };
890
+ void attempt();
891
+ }
892
+ get restorePending() {
893
+ return this._restorePending;
894
+ }
895
+ getRecoverySurfaceStatus() {
896
+ const guardians = this.recoveryGuardianSet.map((g) => ({
897
+ guardianId: g.guardianId.toString('hex'),
898
+ url: g.url
899
+ }));
900
+ const profile = this.recoveryMode === 'async-remote' || this.recoveryMode === 'quorum'
901
+ ? 'crash-v1'
902
+ : null;
903
+ if (this.recoveryMode === 'off') {
904
+ return {
905
+ mode: 'off',
906
+ profile: null,
907
+ guardians: [],
908
+ state: 'disabled',
909
+ node: null
910
+ };
911
+ }
912
+ if (this._restorePending) {
913
+ return {
914
+ mode: this.recoveryMode,
915
+ profile,
916
+ guardians,
917
+ state: this._restoreInFlight ? 'restoring' : 'restore-required',
918
+ node: null,
919
+ restore: {
920
+ inProgress: this._restoreInFlight,
921
+ ...(this._lastRestoreEvent
922
+ ? { lastEvent: this._lastRestoreEvent }
923
+ : {})
924
+ }
925
+ };
926
+ }
927
+ const node = this.node.getRecoveryStatus();
928
+ return {
929
+ mode: this.recoveryMode,
930
+ profile,
931
+ guardians,
932
+ state: node.fenced || node.gate === 'fenced' ? 'fenced' : 'running',
933
+ node
934
+ };
935
+ }
936
+ async restoreFromGuardians() {
937
+ if (this._restoreInFlight) {
938
+ throw new errors_1.BeignetError('RESTORE_IN_PROGRESS', 'A guardian restore is already running; watch ' +
939
+ 'recovery:restore-progress over SSE or poll the status route.');
940
+ }
941
+ if (!this._restorePending || !this._restoreDecision) {
942
+ throw new errors_1.BeignetError('RESTORE_NOT_PENDING', 'Guardian restore only applies while the daemon is in the ' +
943
+ 'restore-required state (a fresh database whose namespace the ' +
944
+ 'guardian set holds). This node is ' +
945
+ (this.recoveryMode === 'off' || this.recoveryMode === 'peer-storage'
946
+ ? 'not running a guardian recovery mode.'
947
+ : 'already running on its own state.'));
948
+ }
949
+ this._restoreInFlight = true;
950
+ try {
951
+ const driver = this._restoreDecision.buildRestoreDriver((event) => {
952
+ this._lastRestoreEvent = { type: event.type, detail: event.detail };
953
+ this.log('info', `Recovery restore: ${event.type}`, {
954
+ detail: event.detail
955
+ });
956
+ this.emit('recovery:restore-progress', {
957
+ type: event.type,
958
+ detail: event.detail
959
+ });
960
+ });
961
+ let result;
962
+ try {
963
+ result = await driver.restore();
964
+ }
965
+ catch (err) {
966
+ if (err instanceof recovery_1.RestoreRefusedError) {
967
+ throw new errors_1.BeignetError(RESTORE_ERROR_CODES[err.reason], err.message);
968
+ }
969
+ throw err;
970
+ }
971
+ const opts = this._deferredOpts;
972
+ this._restoreDecision = undefined;
973
+ await this.prepareRecovery(opts);
974
+ if (!this._recoveryRun) {
975
+ throw new errors_1.BeignetError('INTERNAL_ERROR', 'Restore installed a lease but the reassembly did not yield a ' +
976
+ 'runnable recovery state');
977
+ }
978
+ await this.initNode(opts);
979
+ this._restorePending = false;
980
+ const info = {
981
+ exact: result.wireSafetyProof !== undefined,
982
+ framesApplied: result.framesApplied,
983
+ guardiansRepaired: result.guardiansRepaired,
984
+ epoch: result.lease.epoch.toString()
985
+ };
986
+ this.emit('recovery:restored', info);
987
+ this.log('info', 'Recovery restore complete', info);
988
+ return info;
989
+ }
990
+ finally {
991
+ this._restoreInFlight = false;
992
+ }
686
993
  }
687
994
  runFallbackRecoveryWhenConnected() {
688
995
  const attempt = () => {
@@ -1442,6 +1749,17 @@ class BeignetNode extends events_1.EventEmitter {
1442
1749
  state: p.state
1443
1750
  }));
1444
1751
  }
1752
+ startGossipSync(pubkey) {
1753
+ try {
1754
+ this.node.initiateGossipSync(pubkey);
1755
+ }
1756
+ catch (err) {
1757
+ this.log('warn', 'Gossip sync failed to start', {
1758
+ pubkey,
1759
+ error: err instanceof Error ? err.message : String(err)
1760
+ });
1761
+ }
1762
+ }
1445
1763
  syncGossip(pubkey) {
1446
1764
  const peers = pubkey
1447
1765
  ? [pubkey]
@@ -1548,8 +1866,7 @@ class BeignetNode extends events_1.EventEmitter {
1548
1866
  openedCount++;
1549
1867
  const promise = (async () => {
1550
1868
  try {
1551
- const graphNode = graph.getNode(Buffer.from(suggestion.nodeId, 'hex'));
1552
- const addrs = graphNode?.announcement?.addresses;
1869
+ const addrs = graph.getVerifiedNodeAnnouncement(Buffer.from(suggestion.nodeId, 'hex'))?.addresses;
1553
1870
  if (addrs && addrs.length > 0) {
1554
1871
  const addr = addrs.find((a) => a.type === 1 || a.type === 2) || addrs[0];
1555
1872
  try {
@@ -1911,6 +2228,8 @@ class BeignetNode extends events_1.EventEmitter {
1911
2228
  return this._draining;
1912
2229
  }
1913
2230
  hasPendingPayments() {
2231
+ if (this._restorePending)
2232
+ return false;
1914
2233
  const payments = this.node.listPayments();
1915
2234
  return payments.some((p) => p.status === 'PENDING');
1916
2235
  }
@@ -3713,15 +4032,19 @@ class BeignetNode extends events_1.EventEmitter {
3713
4032
  this._fallbackRecoveryTimer = undefined;
3714
4033
  }
3715
4034
  this.paymentQueue?.removeAllListeners();
4035
+ if (this._confirmTimer) {
4036
+ clearTimeout(this._confirmTimer);
4037
+ this._confirmTimer = undefined;
4038
+ }
3716
4039
  if (this._backupPromise) {
3717
4040
  await this._backupPromise.catch(() => {
3718
4041
  });
3719
4042
  }
3720
- await this.node.gracefulShutdown(timeoutMs);
4043
+ await this.node?.gracefulShutdown(timeoutMs);
3721
4044
  this.storage.close();
3722
4045
  this.removeAllListeners();
3723
4046
  try {
3724
- await this.wallet.stop();
4047
+ await this.wallet?.stop();
3725
4048
  }
3726
4049
  catch {
3727
4050
  }
@@ -3743,12 +4066,16 @@ class BeignetNode extends events_1.EventEmitter {
3743
4066
  clearInterval(this._fallbackRecoveryTimer);
3744
4067
  this._fallbackRecoveryTimer = undefined;
3745
4068
  }
4069
+ if (this._confirmTimer) {
4070
+ clearTimeout(this._confirmTimer);
4071
+ this._confirmTimer = undefined;
4072
+ }
3746
4073
  this.paymentQueue?.removeAllListeners();
3747
- this.node.destroy();
4074
+ this.node?.destroy();
3748
4075
  this.storage.close();
3749
4076
  this.removeAllListeners();
3750
4077
  try {
3751
- await this.wallet.stop();
4078
+ await this.wallet?.stop();
3752
4079
  }
3753
4080
  catch {
3754
4081
  }
@@ -3811,4 +4138,5 @@ class BeignetNode extends events_1.EventEmitter {
3811
4138
  }
3812
4139
  }
3813
4140
  exports.BeignetNode = BeignetNode;
4141
+ BeignetNode.INITIAL_GOSSIP_PRIME_TIMEOUT_MS = 90000;
3814
4142
  //# sourceMappingURL=beignet-node.js.map