From 9f02f0659b577c4e070c9739ad097eb7afd878a2 Mon Sep 17 00:00:00 2001 From: Matthew Date: Tue, 12 May 2026 15:09:05 -0500 Subject: [PATCH] deps: bdk-ffi 3.0.0 rc1 --- .../project.pbxproj | 19 +++++----- .../BDK+Extensions/Network+Extensions.swift | 7 ++++ .../Service/BDK Service/BDKService.swift | 38 +++++++++++-------- .../Service/Key Service/KeyService.swift | 6 +-- .../Settings/WalletRecoveryViewModel.swift | 4 +- ...BDKSwiftExampleWalletKeyServiceTests.swift | 6 +-- 6 files changed, 47 insertions(+), 33 deletions(-) diff --git a/BDKSwiftExampleWallet.xcodeproj/project.pbxproj b/BDKSwiftExampleWallet.xcodeproj/project.pbxproj index 8698edde..ae42af78 100644 --- a/BDKSwiftExampleWallet.xcodeproj/project.pbxproj +++ b/BDKSwiftExampleWallet.xcodeproj/project.pbxproj @@ -658,7 +658,7 @@ AF77B2242F4B2C9E00000004 /* XCRemoteSwiftPackageReference "KeychainAccess" */, AF77B2232F4B2C9E00000003 /* XCRemoteSwiftPackageReference "BitcoinUI" */, AF77B2222F4B2C9E00000002 /* XCRemoteSwiftPackageReference "CodeScanner" */, - AF77B2212F4B2C9E00000001 /* XCRemoteSwiftPackageReference "bdk-swift" */, + AF77B2212F4B2C9E00000001 /* XCLocalSwiftPackageReference "bdk-swift" */, ); productRefGroup = AE4984792A1BBBD6009951E2 /* Products */; projectDirPath = ""; @@ -1069,15 +1069,14 @@ }; /* End XCConfigurationList section */ -/* Begin XCRemoteSwiftPackageReference section */ - AF77B2212F4B2C9E00000001 /* XCRemoteSwiftPackageReference "bdk-swift" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/bitcoindevkit/bdk-swift"; - requirement = { - kind = exactVersion; - version = 2.3.1; - }; +/* Begin XCLocalSwiftPackageReference section */ + AF77B2212F4B2C9E00000001 /* XCLocalSwiftPackageReference "bdk-swift" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = "../bdk-ffi-release-3.0/bdk-swift"; }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCRemoteSwiftPackageReference section */ AF77B2222F4B2C9E00000002 /* XCRemoteSwiftPackageReference "CodeScanner" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/twostraws/CodeScanner.git"; @@ -1107,7 +1106,7 @@ /* Begin XCSwiftPackageProductDependency section */ AF77B2142F4B2C9E00000001 /* BitcoinDevKit */ = { isa = XCSwiftPackageProductDependency; - package = AF77B2212F4B2C9E00000001 /* XCRemoteSwiftPackageReference "bdk-swift" */; + package = AF77B2212F4B2C9E00000001 /* XCLocalSwiftPackageReference "bdk-swift" */; productName = BitcoinDevKit; }; AF77B2152F4B2C9E00000002 /* CodeScanner */ = { diff --git a/BDKSwiftExampleWallet/Extensions/BDK+Extensions/Network+Extensions.swift b/BDKSwiftExampleWallet/Extensions/BDK+Extensions/Network+Extensions.swift index 37b6febc..09d55b95 100644 --- a/BDKSwiftExampleWallet/Extensions/BDK+Extensions/Network+Extensions.swift +++ b/BDKSwiftExampleWallet/Extensions/BDK+Extensions/Network+Extensions.swift @@ -9,6 +9,13 @@ import BitcoinDevKit import Foundation extension Network { + var kind: NetworkKind { + switch self { + case .bitcoin: return .main + case .testnet, .testnet4, .signet, .regtest: return .test + } + } + var description: String { switch self { case .bitcoin: return "bitcoin" diff --git a/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift b/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift index 8f0519b2..9a364394 100644 --- a/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift +++ b/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift @@ -199,29 +199,30 @@ final class BDKService { secretKey: DescriptorSecretKey, network: Network ) -> (descriptor: Descriptor, changeDescriptor: Descriptor) { + let networkKind = network.kind switch addressType { case .bip86: let descriptor = Descriptor.newBip86( secretKey: secretKey, keychainKind: .external, - network: network + networkKind: networkKind ) let changeDescriptor = Descriptor.newBip86( secretKey: secretKey, keychainKind: .internal, - network: network + networkKind: networkKind ) return (descriptor, changeDescriptor) case .bip84: let descriptor = Descriptor.newBip84( secretKey: secretKey, keychainKind: .external, - network: network + networkKind: networkKind ) let changeDescriptor = Descriptor.newBip84( secretKey: secretKey, keychainKind: .internal, - network: network + networkKind: networkKind ) return (descriptor, changeDescriptor) } @@ -233,19 +234,20 @@ final class BDKService { fingerprint: String, network: Network ) throws -> (descriptor: Descriptor, changeDescriptor: Descriptor) { + let networkKind = network.kind switch addressType { case .bip86: let descriptor = try Descriptor.newBip86Public( publicKey: publicKey, fingerprint: fingerprint, keychainKind: .external, - network: network + networkKind: networkKind ) let changeDescriptor = try Descriptor.newBip86Public( publicKey: publicKey, fingerprint: fingerprint, keychainKind: .internal, - network: network + networkKind: networkKind ) return (descriptor, changeDescriptor) case .bip84: @@ -253,13 +255,13 @@ final class BDKService { publicKey: publicKey, fingerprint: fingerprint, keychainKind: .external, - network: network + networkKind: networkKind ) let changeDescriptor = try Descriptor.newBip84Public( publicKey: publicKey, fingerprint: fingerprint, keychainKind: .internal, - network: network + networkKind: networkKind ) return (descriptor, changeDescriptor) } @@ -327,7 +329,7 @@ final class BDKService { } let mnemonic = try Mnemonic.fromString(mnemonic: words12) let secretKey = DescriptorSecretKey( - network: network, + networkKind: network.kind, mnemonic: mnemonic, password: nil ) @@ -381,7 +383,7 @@ final class BDKService { if descriptorStrings.count == 1 { let parsedDescriptor = try Descriptor( descriptor: descriptorStrings[0], - network: network + networkKind: network.kind ) let singleDescriptors = try parsedDescriptor.toSingleDescriptors() guard singleDescriptors.count >= 2 else { @@ -390,8 +392,11 @@ final class BDKService { descriptor = singleDescriptors[0] changeDescriptor = singleDescriptors[1] } else if descriptorStrings.count == 2 { - descriptor = try Descriptor(descriptor: descriptorStrings[0], network: network) - changeDescriptor = try Descriptor(descriptor: descriptorStrings[1], network: network) + descriptor = try Descriptor(descriptor: descriptorStrings[0], networkKind: network.kind) + changeDescriptor = try Descriptor( + descriptor: descriptorStrings[1], + networkKind: network.kind + ) } else { throw WalletError.walletNotFound } @@ -515,10 +520,13 @@ final class BDKService { func loadWalletFromBackup() throws { let backupInfo = try keyClient.getBackupInfo() - let descriptor = try Descriptor(descriptor: backupInfo.descriptor, network: self.network) + let descriptor = try Descriptor( + descriptor: backupInfo.descriptor, + networkKind: self.network.kind + ) let changeDescriptor = try Descriptor( descriptor: backupInfo.changeDescriptor, - network: self.network + networkKind: self.network.kind ) try self.loadWallet(descriptor: descriptor, changeDescriptor: changeDescriptor) } @@ -578,7 +586,7 @@ final class BDKService { guard let descriptor = try? Descriptor( descriptor: descriptorString, - network: self.network + networkKind: self.network.kind ) else { continue diff --git a/BDKSwiftExampleWallet/Service/Key Service/KeyService.swift b/BDKSwiftExampleWallet/Service/Key Service/KeyService.swift index 4ba5b546..7b7c3036 100644 --- a/BDKSwiftExampleWallet/Service/Key Service/KeyService.swift +++ b/BDKSwiftExampleWallet/Service/Key Service/KeyService.swift @@ -161,19 +161,19 @@ extension KeyClient { "space echo position wrist orient erupt relief museum myself grain wisdom tumble" let mnemonic = try Mnemonic.fromString(mnemonic: words12) let secretKey = DescriptorSecretKey( - network: mockKeyClientNetwork, + networkKind: mockKeyClientNetwork.kind, mnemonic: mnemonic, password: nil ) let descriptor = Descriptor.newBip86( secretKey: secretKey, keychainKind: .external, - network: mockKeyClientNetwork + networkKind: mockKeyClientNetwork.kind ) let changeDescriptor = Descriptor.newBip86( secretKey: secretKey, keychainKind: .internal, - network: mockKeyClientNetwork + networkKind: mockKeyClientNetwork.kind ) let backupInfo = BackupInfo( mnemonic: mnemonic.description, diff --git a/BDKSwiftExampleWallet/View Model/Settings/WalletRecoveryViewModel.swift b/BDKSwiftExampleWallet/View Model/Settings/WalletRecoveryViewModel.swift index 6a799a0f..3a40dcb5 100644 --- a/BDKSwiftExampleWallet/View Model/Settings/WalletRecoveryViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/Settings/WalletRecoveryViewModel.swift @@ -44,13 +44,13 @@ class WalletRecoveryViewModel { let externalPublicDescriptor = try Descriptor.init( descriptor: backupInfo.descriptor, - network: network + networkKind: network.kind ) self.publicDescriptor = externalPublicDescriptor let internalPublicDescriptor = try Descriptor.init( descriptor: backupInfo.changeDescriptor, - network: network + networkKind: network.kind ) self.publicChangeDescriptor = internalPublicDescriptor diff --git a/BDKSwiftExampleWalletTests/Service/BDKSwiftExampleWalletKeyServiceTests.swift b/BDKSwiftExampleWalletTests/Service/BDKSwiftExampleWalletKeyServiceTests.swift index e390595c..d5a12547 100644 --- a/BDKSwiftExampleWalletTests/Service/BDKSwiftExampleWalletKeyServiceTests.swift +++ b/BDKSwiftExampleWalletTests/Service/BDKSwiftExampleWalletKeyServiceTests.swift @@ -19,19 +19,19 @@ final class BDKSwiftExampleWalletKeyServiceTests: XCTestCase { "space echo position wrist orient erupt relief museum myself grain wisdom tumble" let mnemonic = try Mnemonic.fromString(mnemonic: words12) let secretKey = DescriptorSecretKey( - network: mockKeyClientNetwork, + networkKind: mockKeyClientNetwork.kind, mnemonic: mnemonic, password: nil ) let descriptor = Descriptor.newBip86( secretKey: secretKey, keychainKind: .external, - network: mockKeyClientNetwork + networkKind: mockKeyClientNetwork.kind ) let changeDescriptor = Descriptor.newBip86( secretKey: secretKey, keychainKind: .internal, - network: mockKeyClientNetwork + networkKind: mockKeyClientNetwork.kind ) let backupInfoMock = BackupInfo( mnemonic: mnemonic.description,