beignet 0.7.2 → 0.7.4

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 (38) hide show
  1. package/dist/cli/auth.js +1 -0
  2. package/dist/cli/auth.js.map +1 -1
  3. package/dist/cli/beignet-node.js +50 -3
  4. package/dist/cli/beignet-node.js.map +1 -1
  5. package/dist/cli/cli.js +16 -3
  6. package/dist/cli/cli.js.map +1 -1
  7. package/dist/cli/daemon.js +8 -2
  8. package/dist/cli/daemon.js.map +1 -1
  9. package/dist/cli/openapi.js +44 -1
  10. package/dist/cli/openapi.js.map +1 -1
  11. package/dist/lightning/chain/chain-watcher.js +11 -1
  12. package/dist/lightning/chain/chain-watcher.js.map +1 -1
  13. package/dist/lightning/channel/channel-manager.js +50 -8
  14. package/dist/lightning/channel/channel-manager.js.map +1 -1
  15. package/dist/lightning/channel/channel.js +147 -25
  16. package/dist/lightning/channel/channel.js.map +1 -1
  17. package/dist/lightning/channel/dual-funding.js +1 -1
  18. package/dist/lightning/channel/dual-funding.js.map +1 -1
  19. package/dist/lightning/gossip/pathfinding.js +4 -2
  20. package/dist/lightning/gossip/pathfinding.js.map +1 -1
  21. package/dist/lightning/node/lightning-node.js +227 -23
  22. package/dist/lightning/node/lightning-node.js.map +1 -1
  23. package/dist/lightning/wallet/wallet-funding-provider.js +125 -9
  24. package/dist/lightning/wallet/wallet-funding-provider.js.map +1 -1
  25. package/dist/types/cli/beignet-node.d.ts +7 -2
  26. package/dist/types/cli/types.d.ts +15 -0
  27. package/dist/types/lightning/channel/channel-manager.d.ts +7 -2
  28. package/dist/types/lightning/channel/channel.d.ts +6 -1
  29. package/dist/types/lightning/channel/dual-funding.d.ts +1 -0
  30. package/dist/types/lightning/node/lightning-node.d.ts +24 -2
  31. package/dist/types/lightning/wallet/wallet-funding-provider.d.ts +29 -0
  32. package/dist/types/types/wallet.d.ts +2 -0
  33. package/dist/types/wallet/index.d.ts +2 -1
  34. package/dist/types/wallet.js.map +1 -1
  35. package/dist/wallet/index.js +5 -2
  36. package/dist/wallet/index.js.map +1 -1
  37. package/docs/ROADMAP.md +12 -0
  38. package/package.json +1 -1
@@ -217,10 +217,13 @@ class ChannelManager extends events_1.EventEmitter {
217
217
  this.emit('channel:opened', channel.getTemporaryChannelId());
218
218
  return channel;
219
219
  }
220
- openChannel(peerPubkey, fundingSatoshis, pushMsat, beforeNegotiate) {
220
+ openChannel(peerPubkey, fundingSatoshis, pushMsat, beforeNegotiate, opts) {
221
221
  if (this.peerManager && !this.peerManager.getPeer(peerPubkey)) {
222
222
  throw new Error(`Not connected to peer ${peerPubkey}`);
223
223
  }
224
+ if (opts?.trusted && !this.zeroConfManager.isTrustedPeer(peerPubkey)) {
225
+ throw new Error(`Peer ${peerPubkey} is not in the trusted set; add it with addTrustedPeer before a trusted open`);
226
+ }
224
227
  const chKeys = this.deriveKeysForNewChannel();
225
228
  const state = (0, channel_state_1.createOpenerState)({
226
229
  temporaryChannelId: crypto_1.default.randomBytes(32),
@@ -230,6 +233,11 @@ class ChannelManager extends events_1.EventEmitter {
230
233
  localBasepoints: chKeys.basepoints,
231
234
  localPerCommitmentSeed: chKeys.perCommitmentSeed
232
235
  });
236
+ if (opts?.trusted) {
237
+ state.zeroConfEnabled = true;
238
+ state.trustedPeer = true;
239
+ state.minimumDepth = 0;
240
+ }
233
241
  const signer = this.makeSigner(chKeys.channelIndex, chKeys.fundingPrivkey, chKeys.htlcBasepointSecret);
234
242
  const channel = new channel_1.Channel(state, signer);
235
243
  if (this.config.chainHash) {
@@ -1024,10 +1032,7 @@ class ChannelManager extends events_1.EventEmitter {
1024
1032
  this.tempChannels.set(tempId, channel);
1025
1033
  this.channelPeers.set(tempId, peerPubkey);
1026
1034
  if (this.zeroConfManager.isTrustedPeer(peerPubkey)) {
1027
- const channelState = channel.getFullState();
1028
- channelState.trustedPeer = true;
1029
- channelState.zeroConfEnabled = true;
1030
- channelState.minimumDepth = 0;
1035
+ channel.getFullState().trustedPeer = true;
1031
1036
  }
1032
1037
  const actions = channel.handleOpenChannel(msg);
1033
1038
  this.processActions(peerPubkey, channel, actions);
@@ -1101,13 +1106,15 @@ class ChannelManager extends events_1.EventEmitter {
1101
1106
  }
1102
1107
  handleChannelReady(peerPubkey, payload) {
1103
1108
  const msg = (0, channel_funding_1.decodeChannelReadyMessage)(payload);
1104
- const channel = this.findChannelByChannelId(msg.channelId);
1109
+ const channel = this.findChannelByChannelId(msg.channelId) ||
1110
+ this.findChannelByChannelIdInTemp(msg.channelId);
1105
1111
  if (!channel) {
1106
1112
  this.emit('error', msg.channelId, 'Unknown channel_id in channel_ready');
1107
1113
  return;
1108
1114
  }
1109
1115
  const actions = channel.handleChannelReady(msg);
1110
1116
  this.processActions(peerPubkey, channel, actions);
1117
+ this._promoteV2ChannelIfReady(peerPubkey, channel);
1111
1118
  }
1112
1119
  handleUpdateAddHtlc(peerPubkey, payload) {
1113
1120
  const msg = (0, channel_update_1.decodeUpdateAddHtlcMessage)(payload);
@@ -1825,7 +1832,10 @@ class ChannelManager extends events_1.EventEmitter {
1825
1832
  actions
1826
1833
  };
1827
1834
  }
1828
- createDualFundedChannel(peerPubkey, params) {
1835
+ createDualFundedChannel(peerPubkey, params, opts) {
1836
+ if (opts?.trusted && !this.zeroConfManager.isTrustedPeer(peerPubkey)) {
1837
+ throw new Error(`Peer ${peerPubkey} is not in the trusted set; add it with addTrustedPeer before a trusted open`);
1838
+ }
1829
1839
  const chKeys = this.deriveKeysForNewChannel();
1830
1840
  const state = (0, channel_state_1.createOpenerState)({
1831
1841
  temporaryChannelId: crypto_1.default.randomBytes(32),
@@ -1835,6 +1845,11 @@ class ChannelManager extends events_1.EventEmitter {
1835
1845
  localBasepoints: chKeys.basepoints,
1836
1846
  localPerCommitmentSeed: chKeys.perCommitmentSeed
1837
1847
  });
1848
+ if (opts?.trusted) {
1849
+ state.zeroConfEnabled = true;
1850
+ state.trustedPeer = true;
1851
+ state.minimumDepth = 0;
1852
+ }
1838
1853
  const signer = this.makeSigner(chKeys.channelIndex, chKeys.fundingPrivkey, chKeys.htlcBasepointSecret);
1839
1854
  const channel = new channel_1.Channel(state, signer);
1840
1855
  if (this.config.chainHash) {
@@ -1855,10 +1870,20 @@ class ChannelManager extends events_1.EventEmitter {
1855
1870
  }
1856
1871
  channelType = typeFlags.toBuffer();
1857
1872
  }
1873
+ let channelFlags = params.channelFlags;
1874
+ if (opts?.trusted) {
1875
+ const typeFlags = flags_1.FeatureFlags.fromBuffer(channelType);
1876
+ typeFlags.setCompulsory(flags_1.Feature.SCID_ALIAS);
1877
+ typeFlags.setCompulsory(flags_1.Feature.ZERO_CONF);
1878
+ channelType = typeFlags.toBuffer();
1879
+ channelFlags = (channelFlags ?? 0x01) & ~0x01;
1880
+ state.announceChannel = false;
1881
+ }
1858
1882
  const alignedParams = {
1859
1883
  ...params,
1860
1884
  chainHash: params.chainHash ?? this.config.chainHash,
1861
1885
  channelType,
1886
+ channelFlags,
1862
1887
  localBasepoints: chKeys.basepoints,
1863
1888
  localPerCommitmentSeed: chKeys.perCommitmentSeed,
1864
1889
  secondPerCommitmentPoint: (0, derivation_1.perCommitmentPointFromSecret)((0, shachain_1.generateFromSeed)(chKeys.perCommitmentSeed, 0xffffffffffffn - 1n))
@@ -1916,6 +1941,9 @@ class ChannelManager extends events_1.EventEmitter {
1916
1941
  const tempId = msg.channelId.toString('hex');
1917
1942
  this.tempChannels.set(tempId, channel);
1918
1943
  this.channelPeers.set(tempId, peerPubkey);
1944
+ if (this.zeroConfManager.isTrustedPeer(peerPubkey)) {
1945
+ state.trustedPeer = true;
1946
+ }
1919
1947
  const localParams = {
1920
1948
  fundingSatoshis: 0n,
1921
1949
  fundingFeeratePerkw: msg.fundingFeeratePerkw,
@@ -1935,6 +1963,7 @@ class ChannelManager extends events_1.EventEmitter {
1935
1963
  secondPerCommitmentPoint: (0, derivation_1.perCommitmentPointFromSecret)((0, shachain_1.generateFromSeed)(chKeys.perCommitmentSeed, 0xffffffffffffn - 1n))
1936
1964
  };
1937
1965
  if (msg.requestFunds &&
1966
+ msg.requestFunds.requestedSats > 0n &&
1938
1967
  this.config.leaseRates &&
1939
1968
  this.config.nodePrivateKey &&
1940
1969
  !(0, types_3.isTaprootChannel)(msg.channelType ?? null)) {
@@ -2092,8 +2121,12 @@ class ChannelManager extends events_1.EventEmitter {
2092
2121
  const cid = channel.getChannelId();
2093
2122
  if (!cid)
2094
2123
  return;
2095
- if (channel.getState() !== types_3.ChannelState.AWAITING_FUNDING_CONFIRMED)
2124
+ const st = channel.getState();
2125
+ if (st !== types_3.ChannelState.AWAITING_FUNDING_CONFIRMED &&
2126
+ st !== types_3.ChannelState.AWAITING_CHANNEL_READY &&
2127
+ st !== types_3.ChannelState.NORMAL) {
2096
2128
  return;
2129
+ }
2097
2130
  const permId = cid.toString('hex');
2098
2131
  if (this.channels.has(permId))
2099
2132
  return;
@@ -2166,6 +2199,15 @@ class ChannelManager extends events_1.EventEmitter {
2166
2199
  this.emit('channel:scid-assigned', channelId, scid);
2167
2200
  }
2168
2201
  }
2202
+ voidChannel(channelId) {
2203
+ const idHex = channelId.toString('hex');
2204
+ const channel = this.channels.get(idHex);
2205
+ if (!channel)
2206
+ return false;
2207
+ this.channels.delete(idHex);
2208
+ this.channelPeers.delete(idHex);
2209
+ return true;
2210
+ }
2169
2211
  handleErrorMsg(peerPubkey, payload) {
2170
2212
  const msg = (0, error_1.decodeErrorMessage)(payload);
2171
2213
  const channelIdHex = msg.channelId.toString('hex');