diff --git a/ZcashLightClientKit/Block/Processor/CompactBlockProcessor.swift b/ZcashLightClientKit/Block/Processor/CompactBlockProcessor.swift index e581ef5e..96269b6a 100644 --- a/ZcashLightClientKit/Block/Processor/CompactBlockProcessor.swift +++ b/ZcashLightClientKit/Block/Processor/CompactBlockProcessor.swift @@ -262,11 +262,13 @@ public class CompactBlockProcessor { - Parameters: - initializer: an instance that complies to CompactBlockDownloading protocol */ - public convenience init(initializer: Initializer, walletBirthday: BlockHeight = ZcashSDK.SAPLING_ACTIVATION_HEIGHT) { + public convenience init(initializer: Initializer) { self.init(downloader: initializer.downloader, backend: initializer.rustBackend, - config: Configuration(cacheDb: initializer.cacheDbURL, dataDb: initializer.dataDbURL, walletBirthday: walletBirthday), + config: Configuration(cacheDb: initializer.cacheDbURL, + dataDb: initializer.dataDbURL, + walletBirthday: initializer.walletBirthday.height), repository: initializer.transactionRepository) } @@ -768,7 +770,7 @@ public class CompactBlockProcessor { value: Int64(utxo.valueZat), height: utxo.height) ? refreshed.append(utxo) : skipped.append(utxo) } catch { - LoggerProxy.error("failed to put utxo - error: \(error)") + LoggerProxy.info("failed to put utxo - error: \(error)") skipped.append(utxo) } } diff --git a/ZcashLightClientKit/Initializer.swift b/ZcashLightClientKit/Initializer.swift index 57566474..aa8365a9 100644 --- a/ZcashLightClientKit/Initializer.swift +++ b/ZcashLightClientKit/Initializer.swift @@ -65,7 +65,7 @@ public class Initializer { private(set) var lightWalletService: LightWalletService private(set) var transactionRepository: TransactionRepository private(set) var downloader: CompactBlockDownloader - private(set) public var walletBirthday: WalletBirthday? + private(set) public var walletBirthday: WalletBirthday /** Constructs the Initializer - Parameters: @@ -82,6 +82,7 @@ public class Initializer { endpoint: LightWalletEndpoint, spendParamsURL: URL, outputParamsURL: URL, + walletBirthday: BlockHeight = ZcashSDK.SAPLING_ACTIVATION_HEIGHT, alias: String = "", loggerProxy: Logger? = nil) { @@ -91,7 +92,7 @@ public class Initializer { let lwdService = LightWalletGRPCService(endpoint: endpoint) self.init(rustBackend: ZcashRustBackend.self, - lowerBoundHeight: ZcashSDK.SAPLING_ACTIVATION_HEIGHT, + lowerBoundHeight: walletBirthday, cacheDbURL: cacheDbURL, dataDbURL: dataDbURL, pendingDbURL: pendingDbURL, @@ -101,6 +102,7 @@ public class Initializer { downloader: CompactBlockDownloader(service: lwdService, storage: storage), spendParamsURL: spendParamsURL, outputParamsURL: outputParamsURL, + walletBirthday: walletBirthday, alias: alias, loggerProxy: loggerProxy ) @@ -120,6 +122,7 @@ public class Initializer { downloader: CompactBlockDownloader, spendParamsURL: URL, outputParamsURL: URL, + walletBirthday: BlockHeight, alias: String = "", loggerProxy: Logger? = nil @@ -137,6 +140,7 @@ public class Initializer { self.lightWalletService = service self.transactionRepository = repository self.downloader = downloader + self.walletBirthday = WalletBirthday.birthday(with: walletBirthday) } /** @@ -156,7 +160,7 @@ public class Initializer { - numberOfAccounts: the number of accounts to create from this seed. */ - public func initialize(seedBytes: [UInt8], walletBirthdayHeight: BlockHeight, numberOfAccounts: Int = 1) throws -> [String]? { + public func initialize(seedBytes: [UInt8], numberOfAccounts: Int = 1) throws -> [String]? { do { try rustBackend.initDataDb(dbData: dataDbURL) @@ -166,22 +170,17 @@ public class Initializer { throw InitializerError.dataDbInitFailed } - self.walletBirthday = WalletBirthday.birthday(with: walletBirthdayHeight) - guard let birthday = self.walletBirthday else { - throw InitializerError.falseStart - } - do { - try rustBackend.initBlocksTable(dbData: dataDbURL, height: Int32(birthday.height), hash: birthday.hash, time: birthday.time, saplingTree: birthday.tree) + try rustBackend.initBlocksTable(dbData: dataDbURL, height: Int32(walletBirthday.height), hash: walletBirthday.hash, time: walletBirthday.time, saplingTree: walletBirthday.tree) } catch RustWeldingError.dataDbNotEmpty { // this is fine } catch { throw InitializerError.dataDbInitFailed } - let lastDownloaded = (try? downloader.storage.latestHeight()) ?? self.walletBirthday?.height ?? ZcashSDK.SAPLING_ACTIVATION_HEIGHT + let lastDownloaded = (try? downloader.storage.latestHeight()) ?? self.walletBirthday.height // resume from last downloaded block - lowerBoundHeight = max(birthday.height, lastDownloaded) + lowerBoundHeight = max(walletBirthday.height, lastDownloaded) var accounts: [String]? = nil do { diff --git a/ZcashLightClientKit/UIKit/Synchronizer/SDKSynchronizer.swift b/ZcashLightClientKit/UIKit/Synchronizer/SDKSynchronizer.swift index 3b702721..853b3a07 100644 --- a/ZcashLightClientKit/UIKit/Synchronizer/SDKSynchronizer.swift +++ b/ZcashLightClientKit/UIKit/Synchronizer/SDKSynchronizer.swift @@ -98,7 +98,9 @@ public class SDKSynchronizer: Synchronizer { */ public convenience init(initializer: Initializer) throws { - var config = CompactBlockProcessor.Configuration(cacheDb: initializer.cacheDbURL, dataDb: initializer.dataDbURL) + var config = CompactBlockProcessor.Configuration(cacheDb: initializer.cacheDbURL, + dataDb: initializer.dataDbURL, + walletBirthday: initializer.walletBirthday.height) try self.init(status: .disconnected, initializer: initializer,