Skip to content

Commit 0d366b1

Browse files
authored
Merge pull request #263 from synonymdev/update-ldk-node-0-7-0
Update ldk node version to 0.7.0
2 parents 55c6a80 + 84d8778 commit 0d366b1

File tree

6 files changed

+63
-20
lines changed

6 files changed

+63
-20
lines changed

Bitkit.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Bitkit/Services/LightningService.swift

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class LightningService {
4646
trustedPeersNoReserve: Env.trustedLnPeers.map(\.nodeId),
4747
perChannelReserveSats: 1
4848
)
49+
config.includeUntrustedPendingInSpendable = true
4950

5051
let builder = Builder.fromConfig(config: config)
5152

@@ -69,8 +70,6 @@ class LightningService {
6970
// Configure gossip source from current settings
7071
configureGossipSource(builder: builder, rgsServerUrl: rgsServerUrl)
7172

72-
builder.setEntropyBip39Mnemonic(mnemonic: mnemonic, passphrase: passphrase)
73-
7473
Logger.debug("Building node...")
7574
let storeId = try await VssStoreIdProvider.shared.getVssStoreId(walletIndex: walletIndex)
7675

@@ -79,16 +78,21 @@ class LightningService {
7978
Logger.debug("Building ldk-node with vssUrl: '\(vssUrl)'")
8079
Logger.debug("Building ldk-node with lnurlAuthServerUrl: '\(lnurlAuthServerUrl)'")
8180

81+
// Create NodeEntropy from mnemonic
82+
let nodeEntropy = NodeEntropy.fromBip39Mnemonic(mnemonic: mnemonic, passphrase: passphrase)
83+
8284
try await ServiceQueue.background(.ldk) {
8385
if !lnurlAuthServerUrl.isEmpty {
8486
self.node = try builder.buildWithVssStore(
87+
nodeEntropy: nodeEntropy,
8588
vssUrl: vssUrl,
8689
storeId: storeId,
8790
lnurlAuthServerUrl: lnurlAuthServerUrl,
8891
fixedHeaders: [:]
8992
)
9093
} else {
9194
self.node = try builder.buildWithVssStoreAndFixedHeaders(
95+
nodeEntropy: nodeEntropy,
9296
vssUrl: vssUrl,
9397
storeId: storeId,
9498
fixedHeaders: [:]
@@ -411,7 +415,7 @@ class LightningService {
411415
}
412416
}
413417

414-
func send(bolt11: String, sats: UInt64? = nil, params: SendingParameters? = nil) async throws -> PaymentHash {
418+
func send(bolt11: String, sats: UInt64? = nil, params: RouteParametersConfig? = nil) async throws -> PaymentHash {
415419
guard let node else {
416420
throw AppError(serviceError: .nodeNotSetup)
417421
}
@@ -432,10 +436,10 @@ class LightningService {
432436
return try await ServiceQueue.background(.ldk) {
433437
if let sats {
434438
try node.bolt11Payment().sendUsingAmount(
435-
invoice: .fromStr(invoiceStr: bolt11), amountMsat: sats * 1000, sendingParameters: params
439+
invoice: .fromStr(invoiceStr: bolt11), amountMsat: sats * 1000, routeParameters: params
436440
)
437441
} else {
438-
try node.bolt11Payment().send(invoice: .fromStr(invoiceStr: bolt11), sendingParameters: params)
442+
try node.bolt11Payment().send(invoice: .fromStr(invoiceStr: bolt11), routeParameters: params)
439443
}
440444
}
441445
} catch {
@@ -717,9 +721,9 @@ extension LightningService {
717721
"⏳ Channel pending: channelId: \(channelId) userChannelId: \(userChannelId) formerTemporaryChannelId: \(formerTemporaryChannelId) counterpartyNodeId: \(counterpartyNodeId) fundingTxo: \(fundingTxo)"
718722
)
719723
await refreshChannelCache()
720-
case let .channelReady(channelId, userChannelId, counterpartyNodeId):
724+
case let .channelReady(channelId, userChannelId, counterpartyNodeId, fundingTxo):
721725
Logger.info(
722-
"👐 Channel ready: channelId: \(channelId) userChannelId: \(userChannelId) counterpartyNodeId: \(counterpartyNodeId ?? "?")"
726+
"👐 Channel ready: channelId: \(channelId) userChannelId: \(userChannelId) counterpartyNodeId: \(counterpartyNodeId ?? "?") fundingTxo: \(fundingTxo != nil ? "\(fundingTxo!.txid):\(fundingTxo!.vout)" : "nil")"
723727
)
724728
await refreshChannelCache()
725729
case let .channelClosed(channelId, userChannelId, counterpartyNodeId, reason):
@@ -815,6 +819,20 @@ extension LightningService {
815819
case let .balanceChanged(oldSpendableOnchain, newSpendableOnchain, oldTotalOnchain, newTotalOnchain, oldLightning, newLightning):
816820
Logger
817821
.info("💰 Balance changed: onchain=\(oldSpendableOnchain)->\(newSpendableOnchain) lightning=\(oldLightning)->\(newLightning)")
822+
823+
// MARK: Splice Events
824+
825+
case let .splicePending(channelId, userChannelId, counterpartyNodeId, newFundingTxo):
826+
Logger
827+
.info(
828+
"🔀 Splice pending: channelId=\(channelId) userChannelId=\(userChannelId) counterpartyNodeId=\(counterpartyNodeId) newFundingTxo=\(newFundingTxo)"
829+
)
830+
await refreshChannelCache()
831+
case let .spliceFailed(channelId, userChannelId, counterpartyNodeId, abandonedFundingTxo):
832+
Logger
833+
.warn(
834+
"❌ Splice failed: channelId=\(channelId) userChannelId=\(userChannelId) counterpartyNodeId=\(counterpartyNodeId) abandonedFundingTxo=\(abandonedFundingTxo != nil ? "\(abandonedFundingTxo!.txid):\(abandonedFundingTxo!.vout)" : "nil")"
835+
)
818836
}
819837
}
820838
}

Bitkit/Utilities/Errors.swift

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -122,16 +122,13 @@ struct AppError: LocalizedError {
122122

123123
private init(ldkBuildError: BuildError) {
124124
switch ldkBuildError as BuildError {
125+
case let .InvalidSystemTime(message: ldkMessage):
126+
message = "Invalid system time"
127+
debugMessage = ldkMessage
125128
case let .InvalidChannelMonitor(message: ldkMessage):
126129
message = "Invalid channel monitor"
127130
debugMessage = ldkMessage
128-
case let .InvalidSeedBytes(message: ldkMessage):
129-
message = "Invalid seed bytes"
130-
debugMessage = ldkMessage
131-
case let .InvalidSeedFile(message: ldkMessage):
132-
message = "Invalid seed file"
133-
debugMessage = ldkMessage
134-
case let .InvalidSystemTime(message: ldkMessage):
131+
case let .InvalidListeningAddresses(message: ldkMessage):
135132
message = "Invalid system time"
136133
debugMessage = ldkMessage
137134
case let .InvalidListeningAddresses(message: ldkMessage):
@@ -164,6 +161,12 @@ struct AppError: LocalizedError {
164161
case let .NetworkMismatch(message: ldkMessage):
165162
message = ldkMessage
166163
debugMessage = nil
164+
case let .RuntimeSetupFailed(message: ldkMessage):
165+
message = "Runtime setup failed"
166+
debugMessage = ldkMessage
167+
case let .AsyncPaymentsConfigMismatch(message: ldkMessage):
168+
message = "Async payments config mismatch"
169+
debugMessage = ldkMessage
167170
}
168171
}
169172

@@ -197,6 +200,9 @@ struct AppError: LocalizedError {
197200
// message = "Failed to send payment. \(ldkMessage)"
198201
message = ldkMessage
199202
debugMessage = ldkMessage
203+
case let .InvalidCustomTlvs(message: ldkMessage):
204+
message = "Invalid custom TLVs"
205+
debugMessage = ldkMessage
200206
case let .ProbeSendingFailed(message: ldkMessage):
201207
message = "Failed to send probe"
202208
debugMessage = ldkMessage
@@ -209,6 +215,9 @@ struct AppError: LocalizedError {
209215
case let .ChannelClosingFailed(message: ldkMessage):
210216
message = "Failed to close channel"
211217
debugMessage = ldkMessage
218+
case let .ChannelSplicingFailed(message: ldkMessage):
219+
message = "Failed to splice channel"
220+
debugMessage = ldkMessage
212221
case let .ChannelConfigUpdateFailed(message: ldkMessage):
213222
message = "Failed to update channel config"
214223
debugMessage = ldkMessage
@@ -245,6 +254,9 @@ struct AppError: LocalizedError {
245254
case let .LiquidityRequestFailed(message: ldkMessage):
246255
message = "Failed to request liquidity"
247256
debugMessage = ldkMessage
257+
case let .UriParameterParsingFailed(message: ldkMessage):
258+
message = "Failed to parse URI parameters"
259+
debugMessage = ldkMessage
248260
case let .InvalidAddress(message: ldkMessage):
249261
message = "Invalid address"
250262
debugMessage = ldkMessage
@@ -308,8 +320,11 @@ struct AppError: LocalizedError {
308320
case let .LiquidityFeeTooHigh(message: ldkMessage):
309321
message = "Liquidity fee too high"
310322
debugMessage = ldkMessage
311-
case let .UriParameterParsingFailed(message: ldkMessage):
312-
message = "Uri parameter parsing failed"
323+
case let .InvalidBlindedPaths(message: ldkMessage):
324+
message = "Invalid blinded paths"
325+
debugMessage = ldkMessage
326+
case let .AsyncPaymentServicesDisabled(message: ldkMessage):
327+
message = "Async payment services disabled"
313328
debugMessage = ldkMessage
314329
case let .InvalidUri(message: ldkMessage):
315330
message = "Invalid URI"

Bitkit/Utilities/StartupHandler.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class StartupHandler {
1010
/// - walletIndex: wallet index, defaults to zero for first entry
1111
/// - Returns: The generated mnemonic
1212
static func createNewWallet(bip39Passphrase: String?, walletIndex: Int = 0) throws -> String {
13-
let mnemonic = generateEntropyMnemonic()
13+
let mnemonic = generateEntropyMnemonic(wordCount: .words12)
1414

1515
try Keychain.saveString(key: .bip39Mnemonic(index: walletIndex), str: mnemonic)
1616
if let bip39Passphrase {

Bitkit/ViewModels/AppViewModel.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ extension AppViewModel {
340340
case .channelPending(channelId: _, userChannelId: _, formerTemporaryChannelId: _, counterpartyNodeId: _, fundingTxo: _):
341341
// Only relevant for channels to external nodes
342342
break
343-
case .channelReady(let channelId, userChannelId: _, counterpartyNodeId: _):
343+
case .channelReady(let channelId, userChannelId: _, counterpartyNodeId: _, fundingTxo: _):
344344
if let channel = lightningService.channels?.first(where: { $0.channelId == channelId }) {
345345
Task {
346346
let cjitOrder = try await CoreService.shared.blocktank.getCjit(channel: channel)
@@ -471,6 +471,11 @@ extension AppViewModel {
471471
}
472472
}
473473

474+
// MARK: Splice Events
475+
476+
case .splicePending, .spliceFailed:
477+
break
478+
474479
// MARK: Sync Events
475480

476481
case let .syncProgress(syncType, progressPercent, currentBlockHeight, targetBlockHeight):

BitkitNotification/NotificationService.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ class NotificationService: UNNotificationServiceExtension {
177177
bestAttemptContent?.title = "Spending Balance Ready"
178178
bestAttemptContent?.body = "Pending"
179179
// Don't deliver, give a chance for channelReady event to update the content if it's a turbo channel
180-
case let .channelReady(channelId, _, _):
180+
case let .channelReady(channelId, _, _, _):
181181
if notificationType == .cjitPaymentArrived {
182182
bestAttemptContent?.title = "Payment Received"
183183
bestAttemptContent?.body = "Your funds arrived in your spending balance"
@@ -256,6 +256,11 @@ class NotificationService: UNNotificationServiceExtension {
256256
case .balanceChanged:
257257
// Balance changes are handled by other events, not critical for notifications
258258
break
259+
260+
// MARK: Splice Events
261+
262+
case .splicePending, .spliceFailed:
263+
break
259264
}
260265
}
261266

0 commit comments

Comments
 (0)