beignet 0.2.0 → 0.3.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.
- package/README.md +284 -1
- package/dist/cli/beignet-node.js +1019 -47
- package/dist/cli/beignet-node.js.map +1 -1
- package/dist/cli/cli.js +1201 -16
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/config.js +21 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/daemon.js +342 -16
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/errors.js +2 -0
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/openapi.js +1207 -14
- package/dist/cli/openapi.js.map +1 -1
- package/dist/cli/restore.js +89 -0
- package/dist/cli/restore.js.map +1 -0
- package/dist/cli/wallet-storage.js +34 -0
- package/dist/cli/wallet-storage.js.map +1 -0
- package/dist/electrum/index.js +105 -10
- package/dist/electrum/index.js.map +1 -1
- package/dist/lightning/advisor/fee-tuner.js +42 -0
- package/dist/lightning/advisor/fee-tuner.js.map +1 -0
- package/dist/lightning/advisor/index.js +9 -1
- package/dist/lightning/advisor/index.js.map +1 -1
- package/dist/lightning/advisor/rebalance-planner.js +55 -0
- package/dist/lightning/advisor/rebalance-planner.js.map +1 -0
- package/dist/lightning/backup/index.js +18 -0
- package/dist/lightning/backup/index.js.map +1 -0
- package/dist/lightning/backup/scb.js +42 -0
- package/dist/lightning/backup/scb.js.map +1 -0
- package/dist/lightning/chain/chain-monitor.js +27 -0
- package/dist/lightning/chain/chain-monitor.js.map +1 -1
- package/dist/lightning/chain/output-resolver.js +55 -6
- package/dist/lightning/chain/output-resolver.js.map +1 -1
- package/dist/lightning/chain/types.js +1 -0
- package/dist/lightning/chain/types.js.map +1 -1
- package/dist/lightning/channel/channel-manager.js +64 -0
- package/dist/lightning/channel/channel-manager.js.map +1 -1
- package/dist/lightning/channel/channel-state.js.map +1 -1
- package/dist/lightning/channel/channel.js +124 -4
- package/dist/lightning/channel/channel.js.map +1 -1
- package/dist/lightning/channel/dual-funding.js +6 -5
- package/dist/lightning/channel/dual-funding.js.map +1 -1
- package/dist/lightning/channel/types.js +3 -1
- package/dist/lightning/channel/types.js.map +1 -1
- package/dist/lightning/channel/validation.js +3 -3
- package/dist/lightning/channel/validation.js.map +1 -1
- package/dist/lightning/crypto/index.js +1 -0
- package/dist/lightning/crypto/index.js.map +1 -1
- package/dist/lightning/crypto/message-signing.js +116 -0
- package/dist/lightning/crypto/message-signing.js.map +1 -0
- package/dist/lightning/crypto/xchacha20poly1305.js +77 -0
- package/dist/lightning/crypto/xchacha20poly1305.js.map +1 -0
- package/dist/lightning/features/flags.js +1 -0
- package/dist/lightning/features/flags.js.map +1 -1
- package/dist/lightning/gossip/messages.js +37 -1
- package/dist/lightning/gossip/messages.js.map +1 -1
- package/dist/lightning/index.js +2 -1
- package/dist/lightning/index.js.map +1 -1
- package/dist/lightning/keys/wallet-keys.js +1 -0
- package/dist/lightning/keys/wallet-keys.js.map +1 -1
- package/dist/lightning/message/index.js +1 -0
- package/dist/lightning/message/index.js.map +1 -1
- package/dist/lightning/message/peer-storage.js +43 -0
- package/dist/lightning/message/peer-storage.js.map +1 -0
- package/dist/lightning/message/types.js +2 -0
- package/dist/lightning/message/types.js.map +1 -1
- package/dist/lightning/node/lightning-node.js +1583 -235
- package/dist/lightning/node/lightning-node.js.map +1 -1
- package/dist/lightning/node/types.js +18 -1
- package/dist/lightning/node/types.js.map +1 -1
- package/dist/lightning/offer/offer-manager.js +2 -5
- package/dist/lightning/offer/offer-manager.js.map +1 -1
- package/dist/lightning/offer/tlv.js +3 -1
- package/dist/lightning/offer/tlv.js.map +1 -1
- package/dist/lightning/storage/encryption.js +67 -0
- package/dist/lightning/storage/encryption.js.map +1 -0
- package/dist/lightning/storage/index.js +1 -0
- package/dist/lightning/storage/index.js.map +1 -1
- package/dist/lightning/storage/serialization.js +6 -2
- package/dist/lightning/storage/serialization.js.map +1 -1
- package/dist/lightning/storage/sqlite-storage.js +387 -33
- package/dist/lightning/storage/sqlite-storage.js.map +1 -1
- package/dist/lightning/watchtower/blob.js +135 -0
- package/dist/lightning/watchtower/blob.js.map +1 -0
- package/dist/lightning/watchtower/index.js +55 -0
- package/dist/lightning/watchtower/index.js.map +1 -0
- package/dist/lightning/watchtower/justice.js +182 -0
- package/dist/lightning/watchtower/justice.js.map +1 -0
- package/dist/lightning/watchtower/tower-connection.js +208 -0
- package/dist/lightning/watchtower/tower-connection.js.map +1 -0
- package/dist/lightning/watchtower/types.js +3 -0
- package/dist/lightning/watchtower/types.js.map +1 -0
- package/dist/lightning/watchtower/watchtower-client.js +402 -0
- package/dist/lightning/watchtower/watchtower-client.js.map +1 -0
- package/dist/lightning/watchtower/wtwire.js +201 -0
- package/dist/lightning/watchtower/wtwire.js.map +1 -0
- package/dist/shapes/electrum.js +32 -1
- package/dist/shapes/electrum.js.map +1 -1
- package/dist/shapes/wallet.js +11 -1
- package/dist/shapes/wallet.js.map +1 -1
- package/dist/transaction/index.js +163 -15
- package/dist/transaction/index.js.map +1 -1
- package/dist/types/cli/beignet-node.d.ts +144 -3
- package/dist/types/cli/daemon.d.ts +2 -0
- package/dist/types/cli/errors.d.ts +2 -0
- package/dist/types/cli/restore.d.ts +10 -0
- package/dist/types/cli/types.d.ts +228 -1
- package/dist/types/cli/wallet-storage.d.ts +3 -0
- package/dist/types/electrum/index.d.ts +12 -0
- package/dist/types/electrum.js +1 -0
- package/dist/types/electrum.js.map +1 -1
- package/dist/types/lightning/advisor/fee-tuner.d.ts +20 -0
- package/dist/types/lightning/advisor/index.d.ts +4 -0
- package/dist/types/lightning/advisor/rebalance-planner.d.ts +12 -0
- package/dist/types/lightning/backup/index.d.ts +1 -0
- package/dist/types/lightning/backup/scb.d.ts +24 -0
- package/dist/types/lightning/chain/chain-monitor.d.ts +1 -0
- package/dist/types/lightning/chain/types.d.ts +1 -0
- package/dist/types/lightning/channel/channel-manager.d.ts +7 -0
- package/dist/types/lightning/channel/channel-state.d.ts +2 -0
- package/dist/types/lightning/channel/channel.d.ts +6 -0
- package/dist/types/lightning/channel/dual-funding.d.ts +2 -1
- package/dist/types/lightning/channel/types.d.ts +2 -0
- package/dist/types/lightning/channel/validation.d.ts +1 -1
- package/dist/types/lightning/crypto/index.d.ts +1 -0
- package/dist/types/lightning/crypto/message-signing.d.ts +9 -0
- package/dist/types/lightning/crypto/xchacha20poly1305.d.ts +3 -0
- package/dist/types/lightning/features/flags.d.ts +1 -0
- package/dist/types/lightning/gossip/messages.d.ts +4 -0
- package/dist/types/lightning/index.d.ts +1 -0
- package/dist/types/lightning/keys/wallet-keys.d.ts +2 -1
- package/dist/types/lightning/message/index.d.ts +1 -0
- package/dist/types/lightning/message/peer-storage.d.ts +9 -0
- package/dist/types/lightning/message/types.d.ts +2 -0
- package/dist/types/lightning/node/lightning-node.d.ts +116 -4
- package/dist/types/lightning/node/types.d.ts +62 -1
- package/dist/types/lightning/storage/encryption.d.ts +11 -0
- package/dist/types/lightning/storage/index.d.ts +1 -0
- package/dist/types/lightning/storage/serialization.d.ts +2 -0
- package/dist/types/lightning/storage/sqlite-storage.d.ts +43 -3
- package/dist/types/lightning/storage/types.d.ts +62 -0
- package/dist/types/lightning/watchtower/blob.d.ts +32 -0
- package/dist/types/lightning/watchtower/index.d.ts +9 -0
- package/dist/types/lightning/watchtower/justice.d.ts +29 -0
- package/dist/types/lightning/watchtower/tower-connection.d.ts +34 -0
- package/dist/types/lightning/watchtower/types.d.ts +44 -0
- package/dist/types/lightning/watchtower/watchtower-client.d.ts +67 -0
- package/dist/types/lightning/watchtower/wtwire.d.ts +90 -0
- package/dist/types/shapes/electrum.d.ts +3 -1
- package/dist/types/transaction/index.d.ts +6 -0
- package/dist/types/transaction.js.map +1 -1
- package/dist/types/types/electrum.d.ts +3 -2
- package/dist/types/types/transaction.d.ts +1 -1
- package/dist/types/types/wallet.d.ts +78 -4
- package/dist/types/utils/descriptors.d.ts +2 -0
- package/dist/types/utils/fees.d.ts +3 -0
- package/dist/types/utils/helpers.d.ts +3 -1
- package/dist/types/utils/index.d.ts +5 -0
- package/dist/types/utils/multisig.d.ts +29 -0
- package/dist/types/utils/transaction.d.ts +7 -0
- package/dist/types/utils/wallet-storage-encryption.d.ts +3 -0
- package/dist/types/utils/wallet.d.ts +1 -1
- package/dist/types/utils/watch-only.d.ts +12 -0
- package/dist/types/wallet/constants.d.ts +1 -0
- package/dist/types/wallet/index.d.ts +61 -4
- package/dist/types/wallet.js +3 -0
- package/dist/types/wallet.js.map +1 -1
- package/dist/utils/derivation-path.js +8 -7
- package/dist/utils/derivation-path.js.map +1 -1
- package/dist/utils/descriptors.js +56 -0
- package/dist/utils/descriptors.js.map +1 -0
- package/dist/utils/electrum.js +10 -2
- package/dist/utils/electrum.js.map +1 -1
- package/dist/utils/fees.js +19 -0
- package/dist/utils/fees.js.map +1 -0
- package/dist/utils/helpers.js +22 -5
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/multisig.js +90 -0
- package/dist/utils/multisig.js.map +1 -0
- package/dist/utils/transaction.js +30 -3
- package/dist/utils/transaction.js.map +1 -1
- package/dist/utils/wallet-storage-encryption.js +45 -0
- package/dist/utils/wallet-storage-encryption.js.map +1 -0
- package/dist/utils/wallet.js +3 -1
- package/dist/utils/wallet.js.map +1 -1
- package/dist/utils/watch-only.js +102 -0
- package/dist/utils/watch-only.js.map +1 -0
- package/dist/wallet/constants.js +2 -1
- package/dist/wallet/constants.js.map +1 -1
- package/dist/wallet/index.js +787 -30
- package/dist/wallet/index.js.map +1 -1
- package/docs/ROADMAP.md +292 -0
- package/package.json +1 -1
|
@@ -13,6 +13,7 @@ const channel_commitment_1 = require("../message/channel-commitment");
|
|
|
13
13
|
const channel_close_1 = require("../message/channel-close");
|
|
14
14
|
const closing_1 = require("../chain/closing");
|
|
15
15
|
const channel_reestablish_1 = require("../message/channel-reestablish");
|
|
16
|
+
const error_1 = require("../message/error");
|
|
16
17
|
const channel_actions_1 = require("./channel-actions");
|
|
17
18
|
const types_2 = require("./types");
|
|
18
19
|
const channel_state_1 = require("./channel-state");
|
|
@@ -83,6 +84,7 @@ class Channel {
|
|
|
83
84
|
this._spliceRemoteCommitmentSig = null;
|
|
84
85
|
this._pendingBatch = null;
|
|
85
86
|
this._lastSentBatch = null;
|
|
87
|
+
this._remoteCommitmentTxCache = new Map();
|
|
86
88
|
this._forgottenSplice = false;
|
|
87
89
|
this._spliceAbortPending = false;
|
|
88
90
|
this._reestablishRetransmitted = false;
|
|
@@ -95,9 +97,13 @@ class Channel {
|
|
|
95
97
|
this._taprootClosingCache = null;
|
|
96
98
|
this._currentBlockHeight = 0;
|
|
97
99
|
this._channelKeyIndex = null;
|
|
100
|
+
this._maxFundingSatoshis = types_2.MAX_FUNDING_SATOSHIS;
|
|
98
101
|
this._state = state;
|
|
99
102
|
this._signer = signer || null;
|
|
100
103
|
}
|
|
104
|
+
setMaxFundingSatoshis(max) {
|
|
105
|
+
this._maxFundingSatoshis = max;
|
|
106
|
+
}
|
|
101
107
|
get channelKeyIndex() {
|
|
102
108
|
return this._channelKeyIndex;
|
|
103
109
|
}
|
|
@@ -200,7 +206,7 @@ class Channel {
|
|
|
200
206
|
...this._state.localBasepoints,
|
|
201
207
|
firstPerCommitmentPoint: firstPoint
|
|
202
208
|
};
|
|
203
|
-
const error = (0, validation_1.validateOpenChannelParams)(msg);
|
|
209
|
+
const error = (0, validation_1.validateOpenChannelParams)(msg, this._maxFundingSatoshis);
|
|
204
210
|
if (error) {
|
|
205
211
|
return [{ type: channel_actions_1.ChannelActionType.ERROR, message: error }];
|
|
206
212
|
}
|
|
@@ -433,7 +439,7 @@ class Channel {
|
|
|
433
439
|
{ type: channel_actions_1.ChannelActionType.ERROR, message: 'Unexpected open_channel' }
|
|
434
440
|
];
|
|
435
441
|
}
|
|
436
|
-
const error = (0, validation_1.validateOpenChannelParams)(msg);
|
|
442
|
+
const error = (0, validation_1.validateOpenChannelParams)(msg, this._maxFundingSatoshis);
|
|
437
443
|
if (error) {
|
|
438
444
|
return [{ type: channel_actions_1.ChannelActionType.ERROR, message: error }];
|
|
439
445
|
}
|
|
@@ -476,6 +482,15 @@ class Channel {
|
|
|
476
482
|
}
|
|
477
483
|
];
|
|
478
484
|
}
|
|
485
|
+
if (proposedFlags.hasFeature(flags_1.Feature.ZERO_CONF) &&
|
|
486
|
+
!(this._state.zeroConfEnabled && this._state.trustedPeer)) {
|
|
487
|
+
return [
|
|
488
|
+
{
|
|
489
|
+
type: channel_actions_1.ChannelActionType.ERROR,
|
|
490
|
+
message: 'Proposed zero_conf channel type requires a trusted peer'
|
|
491
|
+
}
|
|
492
|
+
];
|
|
493
|
+
}
|
|
479
494
|
this._state.channelType = msg.channelType;
|
|
480
495
|
}
|
|
481
496
|
else {
|
|
@@ -1063,6 +1078,36 @@ class Channel {
|
|
|
1063
1078
|
}
|
|
1064
1079
|
this._state.revokedHtlcSnapshots.set(commitmentNumber.toString(), entries);
|
|
1065
1080
|
}
|
|
1081
|
+
_cacheRemoteCommitmentForWatchtower() {
|
|
1082
|
+
try {
|
|
1083
|
+
if ((0, types_3.isTaprootChannel)(this._state.channelType))
|
|
1084
|
+
return;
|
|
1085
|
+
if (!this._state.remoteBasepoints || !this._state.fundingTxid)
|
|
1086
|
+
return;
|
|
1087
|
+
const point = this._state.remoteNextPerCommitmentPoint ||
|
|
1088
|
+
this._state.remoteCurrentPerCommitmentPoint;
|
|
1089
|
+
if (!point)
|
|
1090
|
+
return;
|
|
1091
|
+
const built = (0, commitment_builder_1.buildRemoteCommitment)(this._state, point, this._state.remoteCommitmentNumber + 1n);
|
|
1092
|
+
this._remoteCommitmentTxCache.set(point.toString('hex'), built.result.tx.toBuffer().toString('hex'));
|
|
1093
|
+
while (this._remoteCommitmentTxCache.size > Channel.REVOKED_TX_CACHE_MAX) {
|
|
1094
|
+
const oldest = this._remoteCommitmentTxCache.keys().next().value;
|
|
1095
|
+
if (oldest === undefined)
|
|
1096
|
+
break;
|
|
1097
|
+
this._remoteCommitmentTxCache.delete(oldest);
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1100
|
+
catch {
|
|
1101
|
+
}
|
|
1102
|
+
}
|
|
1103
|
+
takeRevokedCommitmentTx(perCommitmentSecret) {
|
|
1104
|
+
const pointHex = (0, derivation_1.perCommitmentPointFromSecret)(perCommitmentSecret).toString('hex');
|
|
1105
|
+
const txHex = this._remoteCommitmentTxCache.get(pointHex);
|
|
1106
|
+
if (!txHex)
|
|
1107
|
+
return null;
|
|
1108
|
+
this._remoteCommitmentTxCache.delete(pointHex);
|
|
1109
|
+
return Buffer.from(txHex, 'hex');
|
|
1110
|
+
}
|
|
1066
1111
|
signCommitment(signature, htlcSignatures, partialSignatureWithNonce, spliceBatch) {
|
|
1067
1112
|
if (this._state.state !== types_2.ChannelState.NORMAL &&
|
|
1068
1113
|
this._state.state !== types_2.ChannelState.SHUTTING_DOWN &&
|
|
@@ -1108,6 +1153,7 @@ class Channel {
|
|
|
1108
1153
|
: null;
|
|
1109
1154
|
this._state.lastSentHtlcSignatures = htlcSignatures.map((s) => Buffer.from(s));
|
|
1110
1155
|
this._snapshotRemoteCommitmentHtlcs(this._state.remoteCommitmentNumber);
|
|
1156
|
+
this._cacheRemoteCommitmentForWatchtower();
|
|
1111
1157
|
this._state.remoteCommitmentNumber++;
|
|
1112
1158
|
this._state.needsCommitment = false;
|
|
1113
1159
|
this._state.pendingLocalUpdatesSignedCount =
|
|
@@ -1488,6 +1534,14 @@ class Channel {
|
|
|
1488
1534
|
return true;
|
|
1489
1535
|
}
|
|
1490
1536
|
forceClose(signer) {
|
|
1537
|
+
if (this._state.dataLossDetected) {
|
|
1538
|
+
return [
|
|
1539
|
+
{
|
|
1540
|
+
type: channel_actions_1.ChannelActionType.ERROR,
|
|
1541
|
+
message: 'Refusing to broadcast stale commitment after data loss'
|
|
1542
|
+
}
|
|
1543
|
+
];
|
|
1544
|
+
}
|
|
1491
1545
|
if (this._state.state !== types_2.ChannelState.NORMAL &&
|
|
1492
1546
|
this._state.state !== types_2.ChannelState.SHUTTING_DOWN &&
|
|
1493
1547
|
this._state.state !== types_2.ChannelState.AWAITING_FUNDING_CONFIRMED &&
|
|
@@ -2465,6 +2519,25 @@ class Channel {
|
|
|
2465
2519
|
];
|
|
2466
2520
|
}
|
|
2467
2521
|
}
|
|
2522
|
+
if ((msg.nextCommitmentNumber > this._state.remoteCommitmentNumber + 1n ||
|
|
2523
|
+
msg.nextRevocationNumber > this._state.localCommitmentNumber + 1n) &&
|
|
2524
|
+
msg.nextRevocationNumber > this._state.localCommitmentNumber &&
|
|
2525
|
+
!msg.yourLastPerCommitmentSecret.equals(Buffer.alloc(32))) {
|
|
2526
|
+
this._state.dataLossDetected = true;
|
|
2527
|
+
this._state.dlpRemotePerCommitmentPoint = msg.myCurrentPerCommitmentPoint;
|
|
2528
|
+
this._state.state = types_2.ChannelState.ERRORED;
|
|
2529
|
+
return [
|
|
2530
|
+
{ type: channel_actions_1.ChannelActionType.PERSIST_STATE },
|
|
2531
|
+
sendMsg(types_1.MessageType.ERROR, (0, error_1.encodeErrorMessage)({
|
|
2532
|
+
channelId: this._state.channelId,
|
|
2533
|
+
data: Buffer.from('peer proved our channel state is stale (data loss); awaiting your force close', 'ascii')
|
|
2534
|
+
})),
|
|
2535
|
+
{
|
|
2536
|
+
type: channel_actions_1.ChannelActionType.ERROR,
|
|
2537
|
+
message: 'Channel fell behind: peer proved our state is stale (data loss); refusing to broadcast, awaiting peer force close'
|
|
2538
|
+
}
|
|
2539
|
+
];
|
|
2540
|
+
}
|
|
2468
2541
|
if (msg.nextCommitmentNumber > this._state.remoteCommitmentNumber + 1n) {
|
|
2469
2542
|
return [
|
|
2470
2543
|
{
|
|
@@ -2671,6 +2744,15 @@ class Channel {
|
|
|
2671
2744
|
}
|
|
2672
2745
|
];
|
|
2673
2746
|
}
|
|
2747
|
+
if (relativeSatoshis > 0n &&
|
|
2748
|
+
this._state.fundingSatoshis + relativeSatoshis > this._maxFundingSatoshis) {
|
|
2749
|
+
return [
|
|
2750
|
+
{
|
|
2751
|
+
type: channel_actions_1.ChannelActionType.ERROR,
|
|
2752
|
+
message: `Cannot splice-in: post-splice capacity ${this._state.fundingSatoshis + relativeSatoshis} exceeds maximum ${this._maxFundingSatoshis}`
|
|
2753
|
+
}
|
|
2754
|
+
];
|
|
2755
|
+
}
|
|
2674
2756
|
if (relativeSatoshis < 0n) {
|
|
2675
2757
|
const withdrawSats = -relativeSatoshis;
|
|
2676
2758
|
const localBalanceSats = this._state.localBalanceMsat / 1000n;
|
|
@@ -2755,6 +2837,16 @@ class Channel {
|
|
|
2755
2837
|
this._spliceSession = null;
|
|
2756
2838
|
return [{ type: channel_actions_1.ChannelActionType.ERROR, message: result.error }];
|
|
2757
2839
|
}
|
|
2840
|
+
const postSpliceCapacity = this._state.fundingSatoshis + this._spliceSession.getNetCapacityChange();
|
|
2841
|
+
if (postSpliceCapacity > this._maxFundingSatoshis) {
|
|
2842
|
+
this._spliceSession = null;
|
|
2843
|
+
return [
|
|
2844
|
+
{
|
|
2845
|
+
type: channel_actions_1.ChannelActionType.ERROR,
|
|
2846
|
+
message: `Cannot accept splice: post-splice capacity ${postSpliceCapacity} exceeds maximum ${this._maxFundingSatoshis}`
|
|
2847
|
+
}
|
|
2848
|
+
];
|
|
2849
|
+
}
|
|
2758
2850
|
this._state.preSpliceState = this._state.state;
|
|
2759
2851
|
this._state.state = types_2.ChannelState.SPLICING;
|
|
2760
2852
|
const ackMsg = result.message;
|
|
@@ -2781,6 +2873,21 @@ class Channel {
|
|
|
2781
2873
|
if (!result.ok) {
|
|
2782
2874
|
return [{ type: channel_actions_1.ChannelActionType.ERROR, message: result.error }];
|
|
2783
2875
|
}
|
|
2876
|
+
const postSpliceCapacity = this._state.fundingSatoshis + this._spliceSession.getNetCapacityChange();
|
|
2877
|
+
if (postSpliceCapacity > this._maxFundingSatoshis) {
|
|
2878
|
+
const actions = [
|
|
2879
|
+
sendMsg(types_1.MessageType.TX_ABORT, (0, interactive_tx_1.encodeTxAbortMessage)({
|
|
2880
|
+
channelId: this._state.channelId,
|
|
2881
|
+
data: Buffer.from('post-splice capacity exceeds maximum', 'utf8')
|
|
2882
|
+
}))
|
|
2883
|
+
];
|
|
2884
|
+
actions.push(...this.abortSplice(`post-splice capacity ${postSpliceCapacity} exceeds maximum ${this._maxFundingSatoshis}`));
|
|
2885
|
+
actions.push({
|
|
2886
|
+
type: channel_actions_1.ChannelActionType.ERROR,
|
|
2887
|
+
message: `splice aborted: post-splice capacity ${postSpliceCapacity} exceeds maximum ${this._maxFundingSatoshis}`
|
|
2888
|
+
});
|
|
2889
|
+
return actions;
|
|
2890
|
+
}
|
|
2784
2891
|
if (this._spliceSession.getRequireConfirmedInputs() &&
|
|
2785
2892
|
this._spliceInInputs?.inputs.some((i) => i.confirmed === false)) {
|
|
2786
2893
|
const actions = [
|
|
@@ -3951,7 +4058,7 @@ class Channel {
|
|
|
3951
4058
|
this._state.channelType = defaultType.toBuffer();
|
|
3952
4059
|
}
|
|
3953
4060
|
this._state.temporaryChannelId = (0, validation_1.deriveV2TemporaryChannelId)(params.localBasepoints.revocationBasepoint);
|
|
3954
|
-
const session = new dual_funding_2.DualFundingSession(true, this._state.temporaryChannelId);
|
|
4061
|
+
const session = new dual_funding_2.DualFundingSession(true, this._state.temporaryChannelId, this._maxFundingSatoshis);
|
|
3955
4062
|
const result = session.initiateOpen(params);
|
|
3956
4063
|
if (!result.ok || !result.message) {
|
|
3957
4064
|
return [
|
|
@@ -3976,6 +4083,18 @@ class Channel {
|
|
|
3976
4083
|
this._state.fundingVersion = 2;
|
|
3977
4084
|
this._state.commitmentFeeratePerkw = msg.commitmentFeeratePerkw;
|
|
3978
4085
|
this._state.fundingLocktime = msg.locktime;
|
|
4086
|
+
if (msg.channelType) {
|
|
4087
|
+
const proposedFlags = flags_1.FeatureFlags.fromBuffer(msg.channelType);
|
|
4088
|
+
if (proposedFlags.hasFeature(flags_1.Feature.ZERO_CONF) &&
|
|
4089
|
+
!(this._state.zeroConfEnabled && this._state.trustedPeer)) {
|
|
4090
|
+
return [
|
|
4091
|
+
{
|
|
4092
|
+
type: channel_actions_1.ChannelActionType.ERROR,
|
|
4093
|
+
message: 'Proposed zero_conf channel type requires a trusted peer'
|
|
4094
|
+
}
|
|
4095
|
+
];
|
|
4096
|
+
}
|
|
4097
|
+
}
|
|
3979
4098
|
localParams = {
|
|
3980
4099
|
...localParams,
|
|
3981
4100
|
localBasepoints: {
|
|
@@ -3983,7 +4102,7 @@ class Channel {
|
|
|
3983
4102
|
firstPerCommitmentPoint: getPerCommitmentPoint(this._state.localPerCommitmentSeed, 0n)
|
|
3984
4103
|
}
|
|
3985
4104
|
};
|
|
3986
|
-
const session = new dual_funding_2.DualFundingSession(false, this._state.temporaryChannelId);
|
|
4105
|
+
const session = new dual_funding_2.DualFundingSession(false, this._state.temporaryChannelId, this._maxFundingSatoshis);
|
|
3987
4106
|
const result = session.handleOpenChannel2(msg, localParams);
|
|
3988
4107
|
if (!result.ok || !result.message) {
|
|
3989
4108
|
return [
|
|
@@ -4864,6 +4983,7 @@ class Channel {
|
|
|
4864
4983
|
}
|
|
4865
4984
|
}
|
|
4866
4985
|
exports.Channel = Channel;
|
|
4986
|
+
Channel.REVOKED_TX_CACHE_MAX = 8;
|
|
4867
4987
|
Channel.MAX_DUST_HTLC_EXPOSURE_MSAT = 5000000n;
|
|
4868
4988
|
function createOpenerChannel(params) {
|
|
4869
4989
|
const { DEFAULT_CHANNEL_CONFIG } = require('./types');
|