From 7748ab3a4146333a4f9e02386b5855d18a5cf87e Mon Sep 17 00:00:00 2001 From: Piotr Stachyra Date: Thu, 16 Jul 2026 16:53:29 +0200 Subject: [PATCH 1/2] fix: use fast fee for hw transfer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Trezor → spending funding was using the settings default fee tier (medium), which can resolve to 1 sat/vB and leave channel funding unconfirmed. Use fast instead and raise the estimate-unavailable fallback from 1 to 3 sat/vB. Fixes #1088 Co-authored-by: Cursor --- .../main/java/to/bitkit/viewmodels/TransferViewModel.kt | 8 +++----- .../java/to/bitkit/viewmodels/TransferViewModelTest.kt | 4 +++- changelog.d/next/1088.fixed.md | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 changelog.d/next/1088.fixed.md diff --git a/app/src/main/java/to/bitkit/viewmodels/TransferViewModel.kt b/app/src/main/java/to/bitkit/viewmodels/TransferViewModel.kt index e66ccaf7e..e48d5ef40 100644 --- a/app/src/main/java/to/bitkit/viewmodels/TransferViewModel.kt +++ b/app/src/main/java/to/bitkit/viewmodels/TransferViewModel.kt @@ -892,10 +892,8 @@ class TransferViewModel @Inject constructor( private suspend fun hwFundingSatsPerVByte(): ULong = fetchHwFundingSatsPerVByte().getOrDefault(HW_FUNDING_FALLBACK_SATS_PER_VBYTE) - private suspend fun fetchHwFundingSatsPerVByte(): Result { - val speed = settingsStore.data.first().defaultTransactionSpeed - return lightningRepo.getFeeRateForSpeed(speed) - } + private suspend fun fetchHwFundingSatsPerVByte(): Result = + lightningRepo.getFeeRateForSpeed(TransactionSpeed.Fast) // endregion @@ -1108,7 +1106,7 @@ class TransferViewModel @Inject constructor( private const val HW_FUNDING_TX_VBYTES = 1_200uL /** Minimum fallback fee rate when fee estimates are temporarily unavailable. */ - private const val HW_FUNDING_FALLBACK_SATS_PER_VBYTE = 1uL + private const val HW_FUNDING_FALLBACK_SATS_PER_VBYTE = 3uL /** Upper bound for reconnecting a known device before the UI asks for reconnect. */ private val HW_RECONNECT_TIMEOUT = 30.seconds diff --git a/app/src/test/java/to/bitkit/viewmodels/TransferViewModelTest.kt b/app/src/test/java/to/bitkit/viewmodels/TransferViewModelTest.kt index ccd100f41..1173efe39 100644 --- a/app/src/test/java/to/bitkit/viewmodels/TransferViewModelTest.kt +++ b/app/src/test/java/to/bitkit/viewmodels/TransferViewModelTest.kt @@ -51,6 +51,7 @@ import to.bitkit.models.HwFundingSignedTx import to.bitkit.models.HwFundingTransaction import to.bitkit.models.HwWallet import to.bitkit.models.Toast +import to.bitkit.models.TransactionSpeed import to.bitkit.models.TransferType import to.bitkit.models.TransportType import to.bitkit.models.safe @@ -388,6 +389,7 @@ class TransferViewModelTest : BaseUnitTest() { sut.onTransferToSpendingHwConfirm(order, DEVICE_ID) advanceUntilIdle() + verify(lightningRepo).getFeeRateForSpeed(eq(TransactionSpeed.Fast), anyOrNull()) verify(hwWalletRepo).composeFundingTransaction( eq(DEVICE_ID), eq(order.payment?.onchain?.address.orEmpty()), @@ -1023,7 +1025,7 @@ class TransferViewModelTest : BaseUnitTest() { const val XPUB = "zpub-test" const val TXID = "tx-abc" const val FEE_RATE = 2uL - const val FALLBACK_FEE_RATE = 1uL + const val FALLBACK_FEE_RATE = 3uL const val MINING_FEE = 1_250uL } } diff --git a/changelog.d/next/1088.fixed.md b/changelog.d/next/1088.fixed.md new file mode 100644 index 000000000..31b1d3e18 --- /dev/null +++ b/changelog.d/next/1088.fixed.md @@ -0,0 +1 @@ +Hardware wallet transfers to spending now use a faster on-chain fee rate so funding confirms more reliably. From 5228c88441ee0b1e369e7e960ddf65cf21f9cb77 Mon Sep 17 00:00:00 2001 From: Piotr Stachyra Date: Thu, 16 Jul 2026 16:53:52 +0200 Subject: [PATCH 2/2] chore: rename changelog fragment Co-authored-by: Cursor --- changelog.d/next/{1088.fixed.md => 1089.fixed.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename changelog.d/next/{1088.fixed.md => 1089.fixed.md} (100%) diff --git a/changelog.d/next/1088.fixed.md b/changelog.d/next/1089.fixed.md similarity index 100% rename from changelog.d/next/1088.fixed.md rename to changelog.d/next/1089.fixed.md