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.
- package/dist/lightning/channel/channel-state.js.map +1 -1
- package/dist/lightning/channel/channel.js +116 -9
- package/dist/lightning/channel/channel.js.map +1 -1
- package/dist/lightning/storage/serialization.js +2 -0
- package/dist/lightning/storage/serialization.js.map +1 -1
- package/dist/types/lightning/channel/channel-state.d.ts +1 -0
- package/dist/types/lightning/channel/channel.d.ts +1 -0
- package/dist/types/lightning/storage/serialization.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-state.js","sourceRoot":"","sources":["../../../src/lightning/channel/channel-state.ts"],"names":[],"mappings":";;;AAQA,+CAAiD;AAEjD,mCAOiB;
|
|
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
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
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
|
-
|
|
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
|
-
|
|
4261
|
-
|
|
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
|
-
|
|
4376
|
+
this._state.spliceInFlight?.remoteCommitmentSigLeaseBlockheight ??
|
|
4377
|
+
(0, commitment_builder_1.getLocalCommitmentLeaseBlockheight)(this._state);
|
|
4271
4378
|
}
|
|
4272
4379
|
else {
|
|
4273
4380
|
this._state.needsCommitment = true;
|