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.
- package/dist/cli/auth.js +1 -0
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/beignet-node.js +50 -3
- package/dist/cli/beignet-node.js.map +1 -1
- package/dist/cli/cli.js +16 -3
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/daemon.js +8 -2
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/openapi.js +44 -1
- package/dist/cli/openapi.js.map +1 -1
- package/dist/lightning/chain/chain-watcher.js +11 -1
- package/dist/lightning/chain/chain-watcher.js.map +1 -1
- package/dist/lightning/channel/channel-manager.js +50 -8
- package/dist/lightning/channel/channel-manager.js.map +1 -1
- package/dist/lightning/channel/channel.js +147 -25
- package/dist/lightning/channel/channel.js.map +1 -1
- package/dist/lightning/channel/dual-funding.js +1 -1
- package/dist/lightning/channel/dual-funding.js.map +1 -1
- package/dist/lightning/gossip/pathfinding.js +4 -2
- package/dist/lightning/gossip/pathfinding.js.map +1 -1
- package/dist/lightning/node/lightning-node.js +227 -23
- package/dist/lightning/node/lightning-node.js.map +1 -1
- package/dist/lightning/wallet/wallet-funding-provider.js +125 -9
- package/dist/lightning/wallet/wallet-funding-provider.js.map +1 -1
- package/dist/types/cli/beignet-node.d.ts +7 -2
- package/dist/types/cli/types.d.ts +15 -0
- package/dist/types/lightning/channel/channel-manager.d.ts +7 -2
- package/dist/types/lightning/channel/channel.d.ts +6 -1
- package/dist/types/lightning/channel/dual-funding.d.ts +1 -0
- package/dist/types/lightning/node/lightning-node.d.ts +24 -2
- package/dist/types/lightning/wallet/wallet-funding-provider.d.ts +29 -0
- package/dist/types/types/wallet.d.ts +2 -0
- package/dist/types/wallet/index.d.ts +2 -1
- package/dist/types/wallet.js.map +1 -1
- package/dist/wallet/index.js +5 -2
- package/dist/wallet/index.js.map +1 -1
- package/docs/ROADMAP.md +12 -0
- 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
|
-
|
|
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
|
-
|
|
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');
|