beignet 0.6.0 → 0.6.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.
@@ -1 +1 @@
1
- {"version":3,"file":"channel-state.js","sourceRoot":"","sources":["../../../src/lightning/channel/channel-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel-state.js","sourceRoot":"","sources":["../../../src/lightning/channel/channel-state.ts"],"names":[],"mappings":"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"}
@@ -2974,12 +2974,52 @@ class Channel {
2974
2974
  }
2975
2975
  }
2976
2976
  if (pendingLock &&
2977
- this._lastSentBatch &&
2978
2977
  msg.nextCommitmentNumber <= this._state.remoteCommitmentNumber &&
2979
2978
  this._state.remoteCommitmentNumber > 0n) {
2980
- actions.push(sendMsg(types_1.MessageType.START_BATCH, this._lastSentBatch.startBatch));
2981
- for (const c of this._lastSentBatch.commitments) {
2982
- actions.push(sendMsg(types_1.MessageType.COMMITMENT_SIGNED, c));
2979
+ if (this._lastSentBatch) {
2980
+ actions.push(sendMsg(types_1.MessageType.START_BATCH, this._lastSentBatch.startBatch));
2981
+ for (const c of this._lastSentBatch.commitments) {
2982
+ actions.push(sendMsg(types_1.MessageType.COMMITMENT_SIGNED, c));
2983
+ }
2984
+ }
2985
+ else if (this._signer &&
2986
+ this._state.channelId &&
2987
+ this._state.spliceInFlight &&
2988
+ this._state.lastSentCommitmentSigned &&
2989
+ !(0, types_3.isTaprootChannel)(this._state.channelType)) {
2990
+ const spliced = this._splicedState();
2991
+ const point = this._state.remoteNextPerCommitmentPoint ??
2992
+ this._state.remoteCurrentPerCommitmentPoint;
2993
+ if (spliced && point) {
2994
+ try {
2995
+ const spliceSigned = (0, commitment_builder_1.signRemoteCommitment)(spliced, this._signer, point, this._state.remoteCommitmentNumber);
2996
+ const startBatchBytes = (0, splice_1.encodeStartBatchMessage)({
2997
+ channelId: this._state.channelId,
2998
+ batchSize: 2,
2999
+ messageType: types_1.MessageType.COMMITMENT_SIGNED
3000
+ });
3001
+ const currentBytes = (0, channel_commitment_1.encodeCommitmentSignedMessage)({
3002
+ channelId: this._state.channelId,
3003
+ signature: this._state.lastSentCommitmentSigned,
3004
+ htlcSignatures: this._state.lastSentHtlcSignatures ?? []
3005
+ });
3006
+ const spliceBytes = (0, channel_commitment_1.encodeCommitmentSignedMessage)({
3007
+ channelId: this._state.channelId,
3008
+ signature: spliceSigned.signature,
3009
+ htlcSignatures: spliceSigned.htlcSignatures,
3010
+ fundingTxid: Buffer.from(this._state.spliceInFlight.spliceTxid)
3011
+ });
3012
+ actions.push(sendMsg(types_1.MessageType.START_BATCH, startBatchBytes));
3013
+ actions.push(sendMsg(types_1.MessageType.COMMITMENT_SIGNED, currentBytes));
3014
+ actions.push(sendMsg(types_1.MessageType.COMMITMENT_SIGNED, spliceBytes));
3015
+ this._lastSentBatch = {
3016
+ startBatch: startBatchBytes,
3017
+ commitments: [currentBytes, spliceBytes]
3018
+ };
3019
+ }
3020
+ catch {
3021
+ }
3022
+ }
2983
3023
  }
2984
3024
  }
2985
3025
  if (!spliceActive &&
@@ -3139,6 +3179,14 @@ class Channel {
3139
3179
  }
3140
3180
  ];
3141
3181
  }
3182
+ if ((0, types_3.isTaprootChannel)(this._state.channelType)) {
3183
+ return [
3184
+ {
3185
+ type: channel_actions_1.ChannelActionType.ERROR,
3186
+ message: 'Cannot splice: taproot (MuSig2) channels do not support splicing yet'
3187
+ }
3188
+ ];
3189
+ }
3142
3190
  if (!this._state.channelId) {
3143
3191
  return [
3144
3192
  {
@@ -3218,6 +3266,23 @@ class Channel {
3218
3266
  }
3219
3267
  ];
3220
3268
  }
3269
+ if ((0, types_3.isTaprootChannel)(this._state.channelType)) {
3270
+ this._quiescence.exitQuiescence();
3271
+ this._state.quiescenceState = quiescence_1.QuiescenceState.NORMAL;
3272
+ this._state.quiescenceInitiator = false;
3273
+ const abort = [];
3274
+ if (this._state.channelId) {
3275
+ abort.push(sendMsg(types_1.MessageType.TX_ABORT, (0, interactive_tx_1.encodeTxAbortMessage)({
3276
+ channelId: this._state.channelId,
3277
+ data: Buffer.from('taproot splicing unsupported', 'utf8')
3278
+ })));
3279
+ }
3280
+ abort.push({
3281
+ type: channel_actions_1.ChannelActionType.ERROR,
3282
+ message: 'Cannot accept splice: taproot (MuSig2) channels do not support splicing yet'
3283
+ });
3284
+ return abort;
3285
+ }
3221
3286
  if (!this._state.channelId) {
3222
3287
  return [
3223
3288
  {
@@ -4089,6 +4154,7 @@ class Channel {
4089
4154
  this._syncSpliceInFlight({
4090
4155
  remoteCommitmentSig: this._spliceRemoteCommitmentSig,
4091
4156
  remoteCommitmentSigFeeratePerKw: spliceSigFeeratePerKw,
4157
+ remoteCommitmentSigLeaseBlockheight: (0, commitment_builder_1.getLocalCommitmentLeaseBlockheight)(this._state),
4092
4158
  remoteHtlcSignatures: this._spliceRemoteHtlcSigs
4093
4159
  });
4094
4160
  }
@@ -4152,7 +4218,9 @@ class Channel {
4152
4218
  if (this._state.spliceInFlight) {
4153
4219
  this._syncSpliceInFlight({
4154
4220
  remoteCommitmentSig: this._spliceRemoteCommitmentSig,
4155
- remoteHtlcSignatures: this._spliceRemoteHtlcSigs
4221
+ remoteHtlcSignatures: this._spliceRemoteHtlcSigs,
4222
+ remoteCommitmentSigFeeratePerKw: (0, commitment_builder_1.getLocalCommitmentFeeRate)(spliced),
4223
+ remoteCommitmentSigLeaseBlockheight: (0, commitment_builder_1.getLocalCommitmentLeaseBlockheight)(spliced)
4156
4224
  });
4157
4225
  }
4158
4226
  actions.push(...this._maybeSendSpliceTxSigsOrdered());
@@ -4230,8 +4298,40 @@ class Channel {
4230
4298
  ];
4231
4299
  }
4232
4300
  completeSplice() {
4233
- if (!this._spliceSession)
4301
+ const inflight = this._state.spliceInFlight;
4302
+ if (!this._spliceSession && !inflight)
4303
+ return;
4304
+ if (!this._spliceSession) {
4305
+ const newCapacity = inflight.newFundingSatoshis;
4306
+ const feeFromChannelSats = this._state.fundingSatoshis +
4307
+ inflight.localRelativeSatoshis +
4308
+ inflight.remoteRelativeSatoshis -
4309
+ newCapacity;
4310
+ const myFeeMsat = inflight.isInitiator ? feeFromChannelSats * 1000n : 0n;
4311
+ const myNewLocalMsat = this._state.localBalanceMsat +
4312
+ inflight.localRelativeSatoshis * 1000n -
4313
+ myFeeMsat;
4314
+ let htlcInFlightMsat = 0n;
4315
+ for (const e of this._state.htlcs.values()) {
4316
+ htlcInFlightMsat += e.amountMsat;
4317
+ }
4318
+ const theirNewMsat = newCapacity * 1000n - myNewLocalMsat - htlcInFlightMsat;
4319
+ this._state.spliceFundingTxid = Buffer.from(inflight.spliceTxid);
4320
+ this._state.spliceFundingOutputIndex = inflight.newFundingOutputIndex;
4321
+ this._state.fundingTxid = Buffer.from(inflight.spliceTxid);
4322
+ this._state.fundingOutputIndex = inflight.newFundingOutputIndex;
4323
+ this._state.fundingSatoshis = newCapacity;
4324
+ this._state.localBalanceMsat = myNewLocalMsat;
4325
+ this._state.remoteBalanceMsat = theirNewMsat;
4326
+ if (this._state.remoteBasepoints) {
4327
+ this._state.remoteBasepoints = {
4328
+ ...this._state.remoteBasepoints,
4329
+ fundingPubkey: Buffer.from(inflight.remoteFundingPubkey)
4330
+ };
4331
+ }
4332
+ this._finishCompleteSplice();
4234
4333
  return;
4334
+ }
4235
4335
  const spliced = this._splicedState();
4236
4336
  const txid = this._spliceSession.getSpliceTxid();
4237
4337
  const outputIndex = this._spliceSession.getSpliceFundingOutputIndex();
@@ -4257,8 +4357,14 @@ class Channel {
4257
4357
  this._state.remoteBalanceMsat +=
4258
4358
  this._spliceSession.getRemoteRelativeSatoshis() * 1000n;
4259
4359
  }
4260
- if (this._spliceRemoteCommitmentSig) {
4261
- this._state.remoteCommitmentSignature = this._spliceRemoteCommitmentSig;
4360
+ this._finishCompleteSplice();
4361
+ }
4362
+ _finishCompleteSplice() {
4363
+ const adoptedSig = this._spliceRemoteCommitmentSig ??
4364
+ this._state.spliceInFlight?.remoteCommitmentSig ??
4365
+ null;
4366
+ if (adoptedSig) {
4367
+ this._state.remoteCommitmentSignature = Buffer.from(adoptedSig);
4262
4368
  this._state.remoteHtlcSignatures =
4263
4369
  this._spliceRemoteHtlcSigs ??
4264
4370
  this._state.spliceInFlight?.remoteHtlcSignatures ??
@@ -4267,7 +4373,8 @@ class Channel {
4267
4373
  this._state.spliceInFlight?.remoteCommitmentSigFeeratePerKw ??
4268
4374
  (0, commitment_builder_1.getLocalCommitmentFeeRate)(this._state);
4269
4375
  this._state.lastSignedCommitLeaseBlockheight =
4270
- (0, commitment_builder_1.getLocalCommitmentLeaseBlockheight)(this._state);
4376
+ this._state.spliceInFlight?.remoteCommitmentSigLeaseBlockheight ??
4377
+ (0, commitment_builder_1.getLocalCommitmentLeaseBlockheight)(this._state);
4271
4378
  }
4272
4379
  else {
4273
4380
  this._state.needsCommitment = true;