From 094d660fcaffe803a43650f433cc46d1ff46bfee Mon Sep 17 00:00:00 2001 From: Francisco Gindre Date: Tue, 6 Sep 2022 15:12:26 -0300 Subject: [PATCH] Temporarily fix shield funds `initSpend` call with the `accountIndex` unified address from SDK Synchronizer --- .../Synchronizer/SDKSynchronizer.swift | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Sources/ZcashLightClientKit/Synchronizer/SDKSynchronizer.swift b/Sources/ZcashLightClientKit/Synchronizer/SDKSynchronizer.swift index 2d674ea1..a7dd8bfe 100644 --- a/Sources/ZcashLightClientKit/Synchronizer/SDKSynchronizer.swift +++ b/Sources/ZcashLightClientKit/Synchronizer/SDKSynchronizer.swift @@ -519,7 +519,8 @@ public class SDKSynchronizer: Synchronizer { let derivationTool = DerivationTool(networkType: self.network.networkType) do { - let tAddr = try derivationTool.deriveTransparentAddressFromAccountPrivateKey(transparentAccountPrivateKey, index: 0) // TODO: FIX + let tAddr = try derivationTool.deriveTransparentAddressFromAccountPrivateKey(transparentAccountPrivateKey, index: 0) + let tBalance = try utxoRepository.balance(address: tAddr.stringEncoded, latestHeight: self.latestDownloadedHeight()) // Verify that at least there are funds for the fee. Ideally this logic will be improved by the shielding wallet. @@ -528,10 +529,14 @@ public class SDKSynchronizer: Synchronizer { return } - // TODO: this should be a UA - let zAddr = "fasdfasdfa" + // FIXME: Define who's the recipient of a shielding transaction #521 + // https://github.com/zcash/ZcashLightClientKit/issues/521 + guard let uAddr = self.getUnifiedAddress(accountIndex: accountIndex) else { + resultBlock(.failure(ShieldFundsError.shieldingFailed(underlyingError: KeyEncodingError.invalidEncoding))) + return + } - let shieldingSpend = try transactionManager.initSpend(zatoshi: tBalance.verified, toAddress: zAddr, memo: memo, from: 0) + let shieldingSpend = try transactionManager.initSpend(zatoshi: tBalance.verified, toAddress: uAddr.stringEncoded, memo: memo, from: accountIndex) transactionManager.encodeShieldingTransaction( xprv: transparentAccountPrivateKey,