diff --git a/packages/chain-adapters/src/utxo/UtxoBaseAdapter.ts b/packages/chain-adapters/src/utxo/UtxoBaseAdapter.ts index ed521142e87..305c53eae3b 100644 --- a/packages/chain-adapters/src/utxo/UtxoBaseAdapter.ts +++ b/packages/chain-adapters/src/utxo/UtxoBaseAdapter.ts @@ -371,6 +371,10 @@ export abstract class UtxoBaseAdapter implements IChainAd vout: input.vout, txid: input.txid, hex: data.hex, + // For Zcash, we need to pass the blockHeight and txid of each input transaction + // so Ledger can add them to the PSBT and determine the correct consensus branch ID + ...(this.coinName === 'Zcash' && + 'blockHeight' in data && { blockHeight: data.blockHeight }), }) } diff --git a/src/context/WalletProvider/Ledger/constants.ts b/src/context/WalletProvider/Ledger/constants.ts index 8ab68b69f82..b780ba2c45f 100644 --- a/src/context/WalletProvider/Ledger/constants.ts +++ b/src/context/WalletProvider/Ledger/constants.ts @@ -11,6 +11,7 @@ import { suiAssetId, thorchainAssetId, tronAssetId, + zecAssetId, } from '@shapeshiftoss/caip' import { uniq } from 'lodash' @@ -30,6 +31,7 @@ export const availableLedgerAppAssetIds = [ dogeAssetId, bchAssetId, ltcAssetId, + ...(getConfig().VITE_FEATURE_ZCASH ? [zecAssetId] : []), ethAssetId, thorchainAssetId, cosmosAssetId, diff --git a/src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts b/src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts index 26a4d81ed71..4d6404dd5c8 100644 --- a/src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts +++ b/src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts @@ -53,7 +53,7 @@ import { KeyManager } from '@/context/WalletProvider/KeyManager' import { useIsSnapInstalled } from '@/hooks/useIsSnapInstalled/useIsSnapInstalled' import { useWallet } from '@/hooks/useWallet/useWallet' import { METAMASK_RDNS } from '@/lib/mipd' -import { isNativeHDWallet, isTrezorHDWallet } from '@/lib/utils' +import { isLedgerHDWallet, isNativeHDWallet, isTrezorHDWallet } from '@/lib/utils' import { selectAccountIdsByChainIdFilter } from '@/state/slices/portfolioSlice/selectors' import { selectFeatureFlag } from '@/state/slices/selectors' import { store, useAppSelector } from '@/state/store' @@ -159,7 +159,10 @@ export const walletSupportsChain = ({ !(wallet instanceof GridPlusHDWallet) ) case zecChainId: - return supportsBTC(wallet) && (isNativeHDWallet(wallet) || isTrezorHDWallet(wallet)) + return ( + supportsBTC(wallet) && + (isNativeHDWallet(wallet) || isLedgerHDWallet(wallet) || isTrezorHDWallet(wallet)) + ) case ethChainId: return supportsETH(wallet) case avalancheChainId: