beignet 0.24.1 → 0.25.0

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 (135) hide show
  1. package/README.md +17 -2
  2. package/dist/cli/auth.js +1 -0
  3. package/dist/cli/auth.js.map +1 -1
  4. package/dist/cli/beignet-node.js +281 -37
  5. package/dist/cli/beignet-node.js.map +1 -1
  6. package/dist/cli/cli.js +1 -1
  7. package/dist/cli/cli.js.map +1 -1
  8. package/dist/cli/config.js +16 -0
  9. package/dist/cli/config.js.map +1 -1
  10. package/dist/cli/daemon-options.js +2 -0
  11. package/dist/cli/daemon-options.js.map +1 -1
  12. package/dist/cli/daemon.js +13 -2
  13. package/dist/cli/daemon.js.map +1 -1
  14. package/dist/cli/direct-funding.js +8 -4
  15. package/dist/cli/direct-funding.js.map +1 -1
  16. package/dist/cli/ffor-receive.js +5 -1
  17. package/dist/cli/ffor-receive.js.map +1 -1
  18. package/dist/cli/offline-receive.js +103 -19
  19. package/dist/cli/offline-receive.js.map +1 -1
  20. package/dist/cli/openapi.js +84 -14
  21. package/dist/cli/openapi.js.map +1 -1
  22. package/dist/lightning/chain/broadcast-rejection.js +9 -0
  23. package/dist/lightning/chain/broadcast-rejection.js.map +1 -0
  24. package/dist/lightning/chain/chain-monitor.js +29 -0
  25. package/dist/lightning/chain/chain-monitor.js.map +1 -1
  26. package/dist/lightning/chain/chain-watcher.js +21 -8
  27. package/dist/lightning/chain/chain-watcher.js.map +1 -1
  28. package/dist/lightning/chain/output-resolver.js +29 -8
  29. package/dist/lightning/chain/output-resolver.js.map +1 -1
  30. package/dist/lightning/chain/types.js.map +1 -1
  31. package/dist/lightning/channel/channel-actions.js +3 -2
  32. package/dist/lightning/channel/channel-actions.js.map +1 -1
  33. package/dist/lightning/channel/channel-manager.js +103 -16
  34. package/dist/lightning/channel/channel-manager.js.map +1 -1
  35. package/dist/lightning/channel/channel-state.js.map +1 -1
  36. package/dist/lightning/channel/channel.js +1288 -110
  37. package/dist/lightning/channel/channel.js.map +1 -1
  38. package/dist/lightning/channel/commitment-builder.js +53 -26
  39. package/dist/lightning/channel/commitment-builder.js.map +1 -1
  40. package/dist/lightning/channel/types.js.map +1 -1
  41. package/dist/lightning/features/flags.js +7 -0
  42. package/dist/lightning/features/flags.js.map +1 -1
  43. package/dist/lightning/ffor/messages.js +165 -2
  44. package/dist/lightning/ffor/messages.js.map +1 -1
  45. package/dist/lightning/ffor/sync-state.js +75 -0
  46. package/dist/lightning/ffor/sync-state.js.map +1 -0
  47. package/dist/lightning/ffor/types.js +11 -1
  48. package/dist/lightning/ffor/types.js.map +1 -1
  49. package/dist/lightning/ffor/voucher-archive.js +204 -0
  50. package/dist/lightning/ffor/voucher-archive.js.map +1 -0
  51. package/dist/lightning/ffor/voucher-chain.js +75 -0
  52. package/dist/lightning/ffor/voucher-chain.js.map +1 -0
  53. package/dist/lightning/ffor/voucher-index.js +44 -0
  54. package/dist/lightning/ffor/voucher-index.js.map +1 -0
  55. package/dist/lightning/gossip/gossip-sync.js +49 -5
  56. package/dist/lightning/gossip/gossip-sync.js.map +1 -1
  57. package/dist/lightning/message/types.js +2 -0
  58. package/dist/lightning/message/types.js.map +1 -1
  59. package/dist/lightning/node/lightning-node.js +686 -72
  60. package/dist/lightning/node/lightning-node.js.map +1 -1
  61. package/dist/lightning/node/types.js.map +1 -1
  62. package/dist/lightning/recovery/capsule.js +18 -1
  63. package/dist/lightning/recovery/capsule.js.map +1 -1
  64. package/dist/lightning/recovery/frame-codec.js +53 -9
  65. package/dist/lightning/recovery/frame-codec.js.map +1 -1
  66. package/dist/lightning/recovery/guardian-client.js +4 -2
  67. package/dist/lightning/recovery/guardian-client.js.map +1 -1
  68. package/dist/lightning/recovery/guardian-proto.js +26 -2
  69. package/dist/lightning/recovery/guardian-proto.js.map +1 -1
  70. package/dist/lightning/recovery/guardian-rotation.js +93 -6
  71. package/dist/lightning/recovery/guardian-rotation.js.map +1 -1
  72. package/dist/lightning/recovery/guardian.js +241 -95
  73. package/dist/lightning/recovery/guardian.js.map +1 -1
  74. package/dist/lightning/recovery/journal.js +118 -22
  75. package/dist/lightning/recovery/journal.js.map +1 -1
  76. package/dist/lightning/recovery/recovery-manager.js +5 -0
  77. package/dist/lightning/recovery/recovery-manager.js.map +1 -1
  78. package/dist/lightning/recovery/restore-driver.js +136 -17
  79. package/dist/lightning/recovery/restore-driver.js.map +1 -1
  80. package/dist/lightning/recovery/types.js.map +1 -1
  81. package/dist/lightning/storage/htlc-history.js +114 -0
  82. package/dist/lightning/storage/htlc-history.js.map +1 -0
  83. package/dist/lightning/storage/serialization.js +160 -11
  84. package/dist/lightning/storage/serialization.js.map +1 -1
  85. package/dist/lightning/storage/sqlite-storage.js +38 -1
  86. package/dist/lightning/storage/sqlite-storage.js.map +1 -1
  87. package/dist/lightning/storage/types.js.map +1 -1
  88. package/dist/lightning/transport/peer.js +16 -3
  89. package/dist/lightning/transport/peer.js.map +1 -1
  90. package/dist/lightning/wallet/wallet-funding-provider.js +13 -6
  91. package/dist/lightning/wallet/wallet-funding-provider.js.map +1 -1
  92. package/dist/types/cli/beignet-node.d.ts +23 -1
  93. package/dist/types/cli/direct-funding.d.ts +1 -1
  94. package/dist/types/cli/ffor-receive.d.ts +2 -1
  95. package/dist/types/cli/offline-receive.d.ts +7 -1
  96. package/dist/types/cli/types.d.ts +19 -0
  97. package/dist/types/lightning/chain/broadcast-rejection.d.ts +1 -0
  98. package/dist/types/lightning/chain/chain-watcher.d.ts +1 -0
  99. package/dist/types/lightning/chain/types.d.ts +4 -0
  100. package/dist/types/lightning/channel/channel-actions.d.ts +1 -1
  101. package/dist/types/lightning/channel/channel-manager.d.ts +12 -0
  102. package/dist/types/lightning/channel/channel-state.d.ts +3 -0
  103. package/dist/types/lightning/channel/channel.d.ts +49 -1
  104. package/dist/types/lightning/features/flags.d.ts +2 -1
  105. package/dist/types/lightning/ffor/messages.d.ts +12 -1
  106. package/dist/types/lightning/ffor/sync-state.d.ts +2 -0
  107. package/dist/types/lightning/ffor/types.d.ts +36 -0
  108. package/dist/types/lightning/ffor/voucher-archive.d.ts +43 -0
  109. package/dist/types/lightning/ffor/voucher-chain.d.ts +3 -0
  110. package/dist/types/lightning/ffor/voucher-index.d.ts +10 -0
  111. package/dist/types/lightning/gossip/gossip-sync.d.ts +8 -2
  112. package/dist/types/lightning/message/types.d.ts +2 -0
  113. package/dist/types/lightning/node/lightning-node.d.ts +31 -1
  114. package/dist/types/lightning/node/types.d.ts +3 -0
  115. package/dist/types/lightning/recovery/frame-codec.d.ts +1 -0
  116. package/dist/types/lightning/recovery/guardian-client.d.ts +1 -1
  117. package/dist/types/lightning/recovery/guardian-proto.d.ts +2 -2
  118. package/dist/types/lightning/recovery/guardian-rotation.d.ts +4 -2
  119. package/dist/types/lightning/recovery/guardian.d.ts +5 -0
  120. package/dist/types/lightning/recovery/journal.d.ts +3 -1
  121. package/dist/types/lightning/recovery/restore-driver.d.ts +4 -1
  122. package/dist/types/lightning/recovery/types.d.ts +6 -1
  123. package/dist/types/lightning/storage/htlc-history.d.ts +22 -0
  124. package/dist/types/lightning/storage/serialization.d.ts +20 -1
  125. package/dist/types/lightning/storage/sqlite-storage.d.ts +5 -1
  126. package/dist/types/lightning/storage/types.d.ts +4 -0
  127. package/dist/types/lightning/transport/peer.d.ts +2 -0
  128. package/dist/wallet/index.js +4 -3
  129. package/dist/wallet/index.js.map +1 -1
  130. package/docs/AUTOMATIC-OFFLINE-RECEIVE.md +20 -8
  131. package/docs/FFOR-RESERVED-RETIREMENT.md +144 -0
  132. package/docs/RECOVERY-GUARDIAN-WIRE.md +61 -4
  133. package/docs/RECOVERY-PROTOCOL.md +19 -2
  134. package/docs/RECOVERY-TRANSITION-MATRIX.md +1 -1
  135. package/package.json +3 -2
package/README.md CHANGED
@@ -496,7 +496,7 @@ wallet receive while offline through a settlement peer that holds a pre-signed
496
496
  voucher book. The daemon exposes the receiver's lifecycle under `/ffor/*`
497
497
  (`/ffor/epoch/start`, `/ffor/invoice`, `/ffor/epoch/close`, `/ffor/preimage`,
498
498
  `/ffor/witness/provision`, `/ffor/issuer/offer`, `/ffor/issuer/provision`,
499
- `/ffor/recover`, `/ffor/enforce`, `/ffor/epochs`, `/ffor/epoch`,
499
+ `/ffor/sync`, `/ffor/recover`, `/ffor/enforce`, `/ffor/epochs`, `/ffor/epoch`,
500
500
  `/ffor/witness/close`, `/ffor/issuer/issued`) and three roles a
501
501
  node can run for others, each an explicit opt-in switched on with an exact
502
502
  `true`:
@@ -507,9 +507,23 @@ node can run for others, each an explicit opt-in switched on with an exact
507
507
  | `BEIGNET_FFOR_WITNESS` | Store a receiver-encrypted record of every delegated preimage this node relays before propagating the fulfil (a receipt witness). `BEIGNET_FFOR_WITNESS_MAX_MAILBOXES` and `BEIGNET_FFOR_WITNESS_MAX_BYTES` cap it. `GET /ffor/witness/status`. |
508
508
  | `BEIGNET_FFOR_ISSUER` | Answer BOLT 12 invoice requests for offers a receiver delegated to this node, one fixed-amount slot per invoice. Needs the witness. `GET /ffor/issuer/status`. |
509
509
 
510
- The SSE stream carries `ffor:state`, `ffor:settled`, `ffor:delegated-failed`,
510
+ The SSE stream carries `ffor:state`, `ffor:settled`, `ffor:slot-resolved`, `ffor:delegated-failed`,
511
511
  `ffor:enforce` and the witness and issuer events.
512
512
 
513
+ The experimental concurrent profile keeps ordinary payments available
514
+ within the channel's remaining capacity. `LightningNode.fforSync()` fetches paid
515
+ slot receipts and redeems them while other vouchers remain live.
516
+ `rescueFforEpoch()` syncs a connected concurrent book without retiring it.
517
+ Feature bits 562/563 are advertised by default when their dependencies are enabled.
518
+ See [concurrent receive and reserved retirement](docs/FFOR-RESERVED-RETIREMENT.md)
519
+ for the version 1 and 2 contracts and storage requirements. The daemon enables
520
+ advertisement with `BEIGNET_FFOR_CONCURRENT=true` and new concurrent settlement
521
+ with `BEIGNET_FFOR_SETTLE_CONCURRENT=true`; both default to true. Set either to
522
+ `false` to disable it. Settlement still requires its separate role to be enabled. The automatic coordinator can reuse a funded home channel when
523
+ the peers negotiate concurrent settlement. See the
524
+ [automatic receive API](docs/AUTOMATIC-OFFLINE-RECEIVE.md#concurrent-receive)
525
+ for sync, retirement and reserved-capacity fields.
526
+
513
527
  ### Swaps (Lightning to on-chain, and on-chain to Lightning)
514
528
 
515
529
  A beignet node can serve swaps to any Lightning peer in both directions.
@@ -666,6 +680,7 @@ npm run test:sigkill # process-level SIGKILL chaos matrix (builds dist fir
666
680
  npm run test:integration # daemon/Electrum integration (needs an Electrum server)
667
681
  npm run test:interop # 190+ cases vs LND/CLN/Eclair (needs Docker)
668
682
  npm run test:interop:ffor # FFOR Variant D chain gates on regtest (needs only the bitcoind container)
683
+ npm run test:interop:ffor-concurrent # Concurrent receive process, durable boundary and current-chain qualification (bitcoind regtest)
669
684
  npm run test:all # Lightning + CLI + interop (needs Docker + Electrum)
670
685
  ```
671
686
 
package/dist/cli/auth.js CHANGED
@@ -71,6 +71,7 @@ exports.ROUTE_SCOPES = {
71
71
  'POST /ffor/issuer/offer': ['invoice'],
72
72
  'POST /ffor/issuer/provision': [],
73
73
  'POST /ffor/recover': [],
74
+ 'POST /ffor/sync': [],
74
75
  'POST /ffor/enforce': [],
75
76
  'GET /guardian/status': ['readonly'],
76
77
  'POST /route/estimate': ['readonly'],
@@ -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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"}
@@ -224,6 +224,17 @@ function sentSats(info) {
224
224
  }
225
225
  return spendLimitSats(info.amountMsat);
226
226
  }
227
+ function paymentAmountSats(info) {
228
+ return info.direction === types_6.PaymentDirection.OUTGOING
229
+ ? sentSats(info) ?? spendLimitSats(info.amountMsat)
230
+ : Number(info.amountMsat / 1000n);
231
+ }
232
+ function paymentFeeMsat(info) {
233
+ if (info.sentMsat !== undefined && info.sentMsat >= info.amountMsat) {
234
+ return info.sentMsat - info.amountMsat;
235
+ }
236
+ return info.route?.totalFeeMsat;
237
+ }
227
238
  function settlesInvoice(p) {
228
239
  return p?.status === 'COMPLETED' && p.direction === 'INCOMING';
229
240
  }
@@ -621,6 +632,13 @@ const UNCONFIRMED_OWNER_FORCE_CLOSE_REFUSAL = 'This device has not confirmed wit
621
632
  'Waiting for the guardians to confirm this device, or for the peer to ' +
622
633
  'close, is the safe outcome. Set acceptStaleStateRisk: true to force ' +
623
634
  'close anyway.';
635
+ const LISTENER_HELD_MESSAGE = 'held by the startup quarantine until writer ownership is confirmed ' +
636
+ 'and any startup repair is receipted; it binds then';
637
+ const LISTENER_FENCED_MESSAGE = 'this node is fenced: another device owns its recovery namespace, so ' +
638
+ 'the listener stays down';
639
+ function listenerLabel(kind) {
640
+ return kind === 'tcp' ? 'Lightning listener' : 'WebSocket listener';
641
+ }
624
642
  class BeignetNode extends events_1.EventEmitter {
625
643
  getOfflineReceive() {
626
644
  if (!this.offlineReceive)
@@ -697,6 +715,8 @@ class BeignetNode extends events_1.EventEmitter {
697
715
  this._deferredGossipSyncs = new Set();
698
716
  this.electrumServerCount = 1;
699
717
  this._failoverInProgress = false;
718
+ this._listenBinds = {};
719
+ this._listenEpoch = 0;
700
720
  this._connectTimeoutMs = 15000;
701
721
  this._dailySpentSats = 0;
702
722
  this._dailySpentLightningSats = 0;
@@ -1064,8 +1084,10 @@ class BeignetNode extends events_1.EventEmitter {
1064
1084
  forwardingFeePropMillionths: opts.routingFeePpm,
1065
1085
  forwardingCltvDelta: opts.routingCltvDelta,
1066
1086
  leaseRates: opts.leaseRates,
1087
+ fforConcurrent: { enabled: opts.fforConcurrent !== false },
1067
1088
  fforSettle: {
1068
1089
  enabled: opts.fforSettle?.enabled === true,
1090
+ allowConcurrent: opts.fforSettleConcurrent !== false,
1069
1091
  ...(opts.fforSettle?.maxBudgetMsat !== undefined
1070
1092
  ? { maxBudgetMsat: BigInt(opts.fforSettle.maxBudgetMsat) }
1071
1093
  : {}),
@@ -1251,7 +1273,7 @@ class BeignetNode extends events_1.EventEmitter {
1251
1273
  watchtowers: opts.watchtowers,
1252
1274
  recovery: this.recoveryNodeConfig
1253
1275
  });
1254
- this.fforReceiveService = new ffor_receive_1.FforReceiveService(this, opts.fforSettle, opts.fforReceiveFunding);
1276
+ this.fforReceiveService = new ffor_receive_1.FforReceiveService(this, opts.fforSettle, opts.fforReceiveFunding, opts.fforSettleConcurrent !== false);
1255
1277
  const receiveKey = 'automatic_receive_jobs_v1';
1256
1278
  const receiveJobs = this.storage.loadWalletData(receiveKey);
1257
1279
  this.offlineReceive = new offline_receive_1.OfflineReceive(this, (jobs) => {
@@ -1578,6 +1600,7 @@ class BeignetNode extends events_1.EventEmitter {
1578
1600
  });
1579
1601
  this.node.on('node:ready', () => {
1580
1602
  this.log('info', 'Node ready');
1603
+ this.bindHeldListeners();
1581
1604
  this.emit('node:ready');
1582
1605
  });
1583
1606
  for (const evt of [
@@ -1592,6 +1615,7 @@ class BeignetNode extends events_1.EventEmitter {
1592
1615
  'direct-funding:offer:failed',
1593
1616
  'direct-funding:offer:completed',
1594
1617
  'ffor:settled',
1618
+ 'ffor:slot-resolved',
1595
1619
  'ffor:delegated-failed',
1596
1620
  'ffor:witness-provisioned',
1597
1621
  'ffor:witness-recorded',
@@ -1688,21 +1712,13 @@ class BeignetNode extends events_1.EventEmitter {
1688
1712
  this.backupTimer.unref();
1689
1713
  }
1690
1714
  }
1715
+ this.resetListenerState();
1691
1716
  if (opts.listenPort) {
1692
- try {
1693
- await this.node.listen(opts.listenPort);
1694
- this._listenPort = opts.listenPort;
1695
- }
1696
- catch {
1697
- }
1717
+ this._requestedListenPort = opts.listenPort;
1718
+ await this.bindListener('tcp', opts.listenPort);
1698
1719
  }
1699
1720
  if (opts.websocketPort) {
1700
- try {
1701
- await this.node.listenWebSocket(opts.websocketPort);
1702
- this._websocketPort = opts.websocketPort;
1703
- }
1704
- catch {
1705
- }
1721
+ await this.bindListener('websocket', opts.websocketPort);
1706
1722
  }
1707
1723
  if (opts.connectTimeoutMs !== undefined && opts.connectTimeoutMs > 0) {
1708
1724
  this._connectTimeoutMs = opts.connectTimeoutMs;
@@ -1950,6 +1966,7 @@ class BeignetNode extends events_1.EventEmitter {
1950
1966
  });
1951
1967
  this.startRecoveryLeaseCheck();
1952
1968
  this.resumeRotationWork();
1969
+ this.bindHeldListeners();
1953
1970
  return;
1954
1971
  }
1955
1972
  if (outcome.state === 'fenced') {
@@ -1977,6 +1994,7 @@ class BeignetNode extends events_1.EventEmitter {
1977
1994
  }
1978
1995
  relayRecoveryFenced(supersededBy) {
1979
1996
  this.stopRecoveryLeaseCheck();
1997
+ this.fenceListeners();
1980
1998
  if (this._recoveryFenceRelayed)
1981
1999
  return;
1982
2000
  this._recoveryFenceRelayed = true;
@@ -2645,6 +2663,7 @@ class BeignetNode extends events_1.EventEmitter {
2645
2663
  this._autoRebalanceTimer = undefined;
2646
2664
  }
2647
2665
  this.paymentQueue?.removeAllListeners();
2666
+ this.resetListenerState();
2648
2667
  this.node.destroy();
2649
2668
  try {
2650
2669
  this.storage.close();
@@ -2913,7 +2932,8 @@ class BeignetNode extends events_1.EventEmitter {
2913
2932
  'no-quorum': 'ROTATION_NO_QUORUM',
2914
2933
  'not-catching-up': 'ROTATION_NOT_CATCHING_UP',
2915
2934
  'same-set': 'INVALID_PARAMS',
2916
- malformed: 'INVALID_PARAMS'
2935
+ malformed: 'INVALID_PARAMS',
2936
+ 'journal-behind': 'ROTATION_UNAVAILABLE'
2917
2937
  };
2918
2938
  return new errors_1.BeignetError(code[error.reason], error.message);
2919
2939
  }
@@ -2984,7 +3004,12 @@ class BeignetNode extends events_1.EventEmitter {
2984
3004
  const status = this.node?.getGuardianHostStatus() ?? null;
2985
3005
  if (!status)
2986
3006
  return { serving: false };
2987
- return { serving: true, ...status };
3007
+ const serving = this._listenPort !== undefined && this.node.isListening();
3008
+ return {
3009
+ serving,
3010
+ ...status,
3011
+ ...(this._listenError ? { listenError: { ...this._listenError } } : {})
3012
+ };
2988
3013
  }
2989
3014
  async resolveGuardianUri(uri) {
2990
3015
  let parsed;
@@ -3179,9 +3204,17 @@ class BeignetNode extends events_1.EventEmitter {
3179
3204
  peerCount: info.peerCount,
3180
3205
  listening: this.node.isListening()
3181
3206
  };
3207
+ if (this._requestedListenPort !== undefined) {
3208
+ result.listenPort = this._requestedListenPort;
3209
+ }
3210
+ if (this._listenError)
3211
+ result.listenError = { ...this._listenError };
3182
3212
  if (this._websocketPort !== undefined) {
3183
3213
  result.websocketPort = this._websocketPort;
3184
3214
  }
3215
+ if (this._websocketListenError) {
3216
+ result.websocketListenError = { ...this._websocketListenError };
3217
+ }
3185
3218
  return result;
3186
3219
  }
3187
3220
  getMnemonic() {
@@ -4147,10 +4180,27 @@ class BeignetNode extends events_1.EventEmitter {
4147
4180
  const K = f.params.maxPayments;
4148
4181
  const settledBit = (k) => f.settledBitmap !== null && (0, messages_1.bitmapGet)(f.settledBitmap, k);
4149
4182
  const invoices = f.role === 'R' ? this.node.fforSlotInvoices(channelIdHex) : [];
4183
+ let snapshotSeq = '0';
4184
+ if (f.syncSnapshotWire) {
4185
+ try {
4186
+ snapshotSeq = (0, messages_1.decodeFforSyncReplyMessage)(f.syncSnapshotWire.subarray(2)).snapshotSeq.toString();
4187
+ }
4188
+ catch {
4189
+ snapshotSeq = null;
4190
+ }
4191
+ }
4150
4192
  const slots = Array.from({ length: K }, (_, i) => {
4151
4193
  const k = i + 1;
4152
4194
  let state;
4153
- if (f.role === 'S') {
4195
+ if ((0, types_3.isFforConcurrentVersion)(f.concurrentVersion) &&
4196
+ f.voucherOutcomes?.[i]?.outcome === 'fulfilled') {
4197
+ state = 'redeemed';
4198
+ }
4199
+ else if ((0, types_3.isFforConcurrentVersion)(f.concurrentVersion) &&
4200
+ f.voucherOutcomes?.[i]?.outcome === 'cancelled') {
4201
+ state = 'cancelled';
4202
+ }
4203
+ else if (f.role === 'S') {
4154
4204
  state =
4155
4205
  f.slotStates[i] === types_3.FforSlotState.SETTLED
4156
4206
  ? 'settled'
@@ -4186,6 +4236,12 @@ class BeignetNode extends events_1.EventEmitter {
4186
4236
  epochId: f.epochId.toString('hex'),
4187
4237
  peerNodeId: f.remoteNodeId.toString('hex'),
4188
4238
  variant: f.params.variant,
4239
+ concurrent: (0, types_3.isFforConcurrentVersion)(f.concurrentVersion),
4240
+ ...(f.concurrentVersion
4241
+ ? { concurrentVersion: f.concurrentVersion }
4242
+ : {}),
4243
+ snapshotSeq,
4244
+ capabilityHold: f.capabilityHold === true,
4189
4245
  budgetMsat: f.params.budgetMsat.toString(),
4190
4246
  numSlots: K,
4191
4247
  hashChain: f.params.hashChain === true,
@@ -4222,6 +4278,16 @@ class BeignetNode extends events_1.EventEmitter {
4222
4278
  }
4223
4279
  return out;
4224
4280
  }
4281
+ fforConcurrentNegotiated(peer) {
4282
+ return this.node.getChannelManager().peerNegotiatedFforConcurrent(peer);
4283
+ }
4284
+ fforSync(channelId) {
4285
+ const id = this.fforChannelId(channelId).toString('hex');
4286
+ const result = this.node.fforSync(id);
4287
+ if (!result.ok)
4288
+ throw new errors_1.BeignetError('FFOR_REFUSED', result.error ?? 'sync refused');
4289
+ return this.fforEpoch(id);
4290
+ }
4225
4291
  fforEpoch(channelId) {
4226
4292
  const idBuf = this.fforChannelId(channelId);
4227
4293
  const f = this.node.getFforEpoch(idBuf.toString('hex'));
@@ -4232,6 +4298,11 @@ class BeignetNode extends events_1.EventEmitter {
4232
4298
  }
4233
4299
  fforStartEpoch(body) {
4234
4300
  const idBuf = this.fforChannelId(body.channelId);
4301
+ if ((body.concurrent !== undefined && typeof body.concurrent !== 'boolean') ||
4302
+ (body.concurrentVersion !== undefined &&
4303
+ (body.concurrent !== true ||
4304
+ (body.concurrentVersion !== 1 && body.concurrentVersion !== 2))))
4305
+ throw new errors_1.BeignetError('INVALID_PARAMS', 'concurrentVersion requires concurrent: true and version 1 or 2');
4235
4306
  if (!Array.isArray(body.voucherAmountsMsat) ||
4236
4307
  body.voucherAmountsMsat.length === 0) {
4237
4308
  throw new errors_1.BeignetError('INVALID_PARAMS', 'voucherAmountsMsat required: one amount per slot');
@@ -4271,6 +4342,9 @@ class BeignetNode extends events_1.EventEmitter {
4271
4342
  feeBaseMsat: body.feeBaseMsat,
4272
4343
  feeProportionalMillionths: body.feeProportionalMillionths,
4273
4344
  ...(body.hashChain === true ? { hashChain: true } : {}),
4345
+ ...(body.concurrent === true
4346
+ ? { concurrent: true, concurrentVersion: body.concurrentVersion ?? 2 }
4347
+ : {}),
4274
4348
  ...(witnessPeers.length > 0 ? { witnessPeers } : {})
4275
4349
  });
4276
4350
  if (!res.ok) {
@@ -4736,6 +4810,25 @@ class BeignetNode extends events_1.EventEmitter {
4736
4810
  info.previousFundingTxids = [...ch.previousFundingTxids];
4737
4811
  if (ch.htlcUsable !== undefined)
4738
4812
  info.htlcUsable = ch.htlcUsable;
4813
+ const ffor = this.node.getFforEpoch(info.channelId);
4814
+ if (ffor) {
4815
+ const unresolved = ffor.state === types_3.FforState.CLOSED ||
4816
+ (ffor.state === types_3.FforState.ABORTED && !ffor.paymentHashes.length)
4817
+ ? []
4818
+ : ffor.params.voucherAmountsMsat.filter((_amount, index) => !ffor.voucherOutcomes?.[index]);
4819
+ const reserved = ffor.role === 'R'
4820
+ ? unresolved.reduce((total, amount) => total + amount, 0n)
4821
+ : 0n;
4822
+ info.ffor = {
4823
+ state: types_3.FforState[ffor.state],
4824
+ concurrent: (0, types_3.isFforConcurrentVersion)(ffor.concurrentVersion),
4825
+ ...(ffor.concurrentVersion
4826
+ ? { concurrentVersion: ffor.concurrentVersion }
4827
+ : {}),
4828
+ reservedInboundSats: Number(reserved / 1000n),
4829
+ unresolvedSlots: unresolved.length
4830
+ };
4831
+ }
4739
4832
  if (ch.restoreRecencyUnproven)
4740
4833
  info.restoreRecencyUnproven = ch.restoreRecencyUnproven;
4741
4834
  if (ch.reestablishRecencyUnproven)
@@ -6488,19 +6581,20 @@ class BeignetNode extends events_1.EventEmitter {
6488
6581
  this._l402Credentials.delete(scope);
6489
6582
  }
6490
6583
  getPaymentProof(paymentHash) {
6491
- const proof = this.node.getPaymentProof(Buffer.from(paymentHash, 'hex'));
6492
- if (!proof)
6584
+ const hash = Buffer.from(paymentHash, 'hex');
6585
+ const proof = this.node.getPaymentProof(hash);
6586
+ const record = this.node.getPayment(hash);
6587
+ if (!proof || !record)
6493
6588
  return null;
6589
+ const feeMsat = paymentFeeMsat(record);
6494
6590
  return {
6495
6591
  paymentHash: proof.paymentHash.toString('hex'),
6496
6592
  preimage: proof.preimage.toString('hex'),
6497
- amountSats: Number(proof.amountMsat / 1000n),
6593
+ amountSats: paymentAmountSats(record),
6498
6594
  completedAt: proof.completedAt,
6499
6595
  invoice: proof.invoice,
6500
6596
  hopCount: proof.route?.hops.length,
6501
- feeSats: proof.route
6502
- ? Number(proof.route.totalFeeMsat / 1000n)
6503
- : undefined
6597
+ feeSats: feeMsat !== undefined ? spendLimitSats(feeMsat) : undefined
6504
6598
  };
6505
6599
  }
6506
6600
  verifyPaymentProof(paymentHash) {
@@ -6585,7 +6679,7 @@ class BeignetNode extends events_1.EventEmitter {
6585
6679
  toPaymentInfo(p) {
6586
6680
  const info = {
6587
6681
  paymentHash: p.paymentHash.toString('hex'),
6588
- amountSats: Number(p.amountMsat / 1000n),
6682
+ amountSats: paymentAmountSats(p),
6589
6683
  status: p.status,
6590
6684
  direction: p.direction,
6591
6685
  createdAt: p.createdAt
@@ -6601,12 +6695,9 @@ class BeignetNode extends events_1.EventEmitter {
6601
6695
  else if (p.failureReason) {
6602
6696
  info.failureDescription = p.failureReason;
6603
6697
  }
6604
- if (p.sentMsat !== undefined && p.sentMsat >= p.amountMsat) {
6605
- info.feeSats = Number((p.sentMsat - p.amountMsat) / 1000n);
6606
- }
6607
- else if (p.route?.totalFeeMsat !== undefined) {
6608
- info.feeSats = Number(p.route.totalFeeMsat / 1000n);
6609
- }
6698
+ const feeMsat = paymentFeeMsat(p);
6699
+ if (feeMsat !== undefined)
6700
+ info.feeSats = spendLimitSats(feeMsat);
6610
6701
  if (p.route) {
6611
6702
  const hops = p.route.hops;
6612
6703
  info.route = {
@@ -7251,6 +7342,9 @@ class BeignetNode extends events_1.EventEmitter {
7251
7342
  if (!Number.isInteger(maxFeeSats) || maxFeeSats < 0)
7252
7343
  throw new errors_1.BeignetError(errors_1.BeignetErrorCode.INVALID_PARAMS, 'maxFeeSats must be a non-negative integer');
7253
7344
  this._checkDraining();
7345
+ if (this.destroyed) {
7346
+ throw new errors_1.BeignetError(errors_1.BeignetErrorCode.NODE_DESTROYED, 'Node is shutting down; no new rebalances accepted');
7347
+ }
7254
7348
  this._checkSpendLimit(maxFeeSats);
7255
7349
  this._recordSpend(maxFeeSats);
7256
7350
  this._liveRebalanceChargeSats += maxFeeSats;
@@ -7285,7 +7379,7 @@ class BeignetNode extends events_1.EventEmitter {
7285
7379
  paymentHash: result.paymentHash.toString('hex'),
7286
7380
  amountSats,
7287
7381
  feeMsat: result.feeMsat.toString(),
7288
- feeSats: Number(result.feeMsat / 1000n),
7382
+ feeSats: spendLimitSats(result.feeMsat),
7289
7383
  hops: result.hops
7290
7384
  };
7291
7385
  }
@@ -7310,7 +7404,7 @@ class BeignetNode extends events_1.EventEmitter {
7310
7404
  budgetSatsPerDay,
7311
7405
  stopRequested: () => {
7312
7406
  reachedPlans = true;
7313
- return this._draining;
7407
+ return this._draining || this.destroyed;
7314
7408
  }
7315
7409
  });
7316
7410
  spentSats = spendLimitSats(summary.feeSpentMsat);
@@ -7753,13 +7847,12 @@ class BeignetNode extends events_1.EventEmitter {
7753
7847
  continue;
7754
7848
  if (p.direction === 'OUTGOING' && p.status === 'COMPLETED') {
7755
7849
  sent++;
7756
- satsSent += Number(p.amountMsat / 1000n);
7757
- if (p.route?.totalFeeMsat !== undefined) {
7758
- const fee = Number(p.route.totalFeeMsat / 1000n);
7759
- feesPaid += fee;
7850
+ satsSent += paymentAmountSats(p);
7851
+ const feeMsat = paymentFeeMsat(p);
7852
+ if (feeMsat !== undefined) {
7853
+ feesPaid += spendLimitSats(feeMsat);
7760
7854
  if (p.amountMsat > 0n) {
7761
- totalFeePct +=
7762
- (Number(p.route.totalFeeMsat) / Number(p.amountMsat)) * 100;
7855
+ totalFeePct += (Number(feeMsat) / Number(p.amountMsat)) * 100;
7763
7856
  feePctCount++;
7764
7857
  }
7765
7858
  }
@@ -8098,6 +8191,157 @@ class BeignetNode extends events_1.EventEmitter {
8098
8191
  getPeerRetrievedBackup() {
8099
8192
  return this._peerRetrievedScb;
8100
8193
  }
8194
+ resetListenerState() {
8195
+ this._listenEpoch++;
8196
+ this._listenPort = undefined;
8197
+ this._websocketPort = undefined;
8198
+ this._requestedListenPort = undefined;
8199
+ this._listenError = undefined;
8200
+ this._websocketListenError = undefined;
8201
+ this._listenBinds = {};
8202
+ }
8203
+ bindListener(kind, port) {
8204
+ const inFlight = this._listenBinds[kind];
8205
+ if (inFlight)
8206
+ return inFlight;
8207
+ const attempt = this.attemptListen(kind, port).finally(() => {
8208
+ if (this._listenBinds[kind] === attempt) {
8209
+ delete this._listenBinds[kind];
8210
+ }
8211
+ });
8212
+ this._listenBinds[kind] = attempt;
8213
+ return attempt;
8214
+ }
8215
+ async attemptListen(kind, port) {
8216
+ const node = this.node;
8217
+ const epoch = this._listenEpoch;
8218
+ const stale = () => this.destroyed || this.node !== node || this._listenEpoch !== epoch;
8219
+ try {
8220
+ if (kind === 'tcp')
8221
+ await node.listen(port);
8222
+ else
8223
+ await node.listenWebSocket(port);
8224
+ }
8225
+ catch (err) {
8226
+ if (stale())
8227
+ return;
8228
+ const problem = this.classifyListenFailure(node, port, err);
8229
+ const held = this.listenerProblem(kind)?.state === 'held';
8230
+ this.setListenerProblem(kind, problem);
8231
+ if (problem.state === 'failed') {
8232
+ this.reportListenFailed(node, kind, problem);
8233
+ }
8234
+ else if (problem.state === 'held' && !held) {
8235
+ this.log('info', `${listenerLabel(kind)} on port ${port} is held until ` +
8236
+ 'writer ownership is confirmed');
8237
+ }
8238
+ return;
8239
+ }
8240
+ if (stale())
8241
+ return;
8242
+ if (this.nodeFenced(node)) {
8243
+ this.setListenerProblem(kind, {
8244
+ port,
8245
+ state: 'fenced',
8246
+ message: LISTENER_FENCED_MESSAGE
8247
+ });
8248
+ return;
8249
+ }
8250
+ const wasHeld = this.listenerProblem(kind)?.state === 'held';
8251
+ if (kind === 'tcp')
8252
+ this._listenPort = port;
8253
+ else
8254
+ this._websocketPort = port;
8255
+ this.setListenerProblem(kind, undefined);
8256
+ if (wasHeld) {
8257
+ this.log('info', `${listenerLabel(kind)} bound on port ${port}`);
8258
+ }
8259
+ }
8260
+ classifyListenFailure(node, port, err) {
8261
+ const message = err instanceof Error ? err.message : String(err);
8262
+ const rawCode = err !== null && typeof err === 'object' && 'code' in err
8263
+ ? err.code
8264
+ : undefined;
8265
+ const code = typeof rawCode === 'string' ? rawCode : undefined;
8266
+ const errno = code !== 'STARTUP_QUARANTINE' ? code : undefined;
8267
+ if (errno === undefined && this.nodeFenced(node)) {
8268
+ return { port, state: 'fenced', message: LISTENER_FENCED_MESSAGE };
8269
+ }
8270
+ if (code === 'STARTUP_QUARANTINE') {
8271
+ return { port, state: 'held', message: LISTENER_HELD_MESSAGE };
8272
+ }
8273
+ return { port, state: 'failed', message, ...(errno ? { errno } : {}) };
8274
+ }
8275
+ reportListenFailed(node, kind, problem) {
8276
+ try {
8277
+ const hosting = kind === 'tcp' && node.getGuardianHostStatus() !== null
8278
+ ? ' and the guardian this node hosts is unreachable'
8279
+ : '';
8280
+ node.emit('node:error', {
8281
+ code: 'LISTEN_FAILED',
8282
+ message: `${listenerLabel(kind)} could not bind port ${problem.port}: ` +
8283
+ `${problem.message}; inbound peers cannot connect${hosting}`,
8284
+ timestamp: Date.now()
8285
+ });
8286
+ }
8287
+ catch {
8288
+ }
8289
+ }
8290
+ nodeFenced(node) {
8291
+ try {
8292
+ return (node.getRecoveryGateState() === 'fenced' ||
8293
+ node.getRecoveryStatus().fenced);
8294
+ }
8295
+ catch {
8296
+ return false;
8297
+ }
8298
+ }
8299
+ listenerProblem(kind) {
8300
+ return kind === 'tcp' ? this._listenError : this._websocketListenError;
8301
+ }
8302
+ setListenerProblem(kind, problem) {
8303
+ if (kind === 'tcp')
8304
+ this._listenError = problem;
8305
+ else
8306
+ this._websocketListenError = problem;
8307
+ }
8308
+ bindHeldListeners() {
8309
+ if (this.destroyed || !this.node)
8310
+ return;
8311
+ const held = [];
8312
+ for (const kind of ['tcp', 'websocket']) {
8313
+ const problem = this.listenerProblem(kind);
8314
+ if (problem?.state === 'held')
8315
+ held.push([kind, problem.port]);
8316
+ }
8317
+ if (held.length === 0)
8318
+ return;
8319
+ if (this.nodeFenced(this.node)) {
8320
+ this.fenceListeners();
8321
+ return;
8322
+ }
8323
+ for (const [kind, port] of held) {
8324
+ void this.bindListener(kind, port).catch(() => undefined);
8325
+ }
8326
+ }
8327
+ fenceListeners() {
8328
+ for (const kind of ['tcp', 'websocket']) {
8329
+ const problem = this.listenerProblem(kind);
8330
+ const bound = kind === 'tcp' ? this._listenPort : this._websocketPort;
8331
+ const port = bound ?? (problem?.state === 'held' ? problem.port : undefined);
8332
+ if (port === undefined)
8333
+ continue;
8334
+ if (kind === 'tcp')
8335
+ this._listenPort = undefined;
8336
+ else
8337
+ this._websocketPort = undefined;
8338
+ this.setListenerProblem(kind, {
8339
+ port,
8340
+ state: 'fenced',
8341
+ message: LISTENER_FENCED_MESSAGE
8342
+ });
8343
+ }
8344
+ }
8101
8345
  getNodeUri(externalHost) {
8102
8346
  if (!this._listenPort)
8103
8347
  return null;