Skip to content

Commit ef2b442

Browse files
OttoAllmendingerllm-git
andcommitted
fix(abstract-utxo): fix backup key recovery for KRS wallets
Only add KRS fee output to dimensions if KRS fee is greater than zero. Issue: BTC-2891 Co-authored-by: llm-git <[email protected]>
1 parent 441a305 commit ef2b442

File tree

46 files changed

+185
-185
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+185
-185
lines changed

modules/abstract-utxo/src/recovery/backupKeyRecovery.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -350,13 +350,6 @@ export async function backupKeyRecovery(
350350
utxolib.bitgo.addWalletUnspentToPsbt(psbt, unspent, walletKeys, 'user', 'backup');
351351
});
352352

353-
const dimensions = Dimensions.fromPsbt(psbt)
354-
// Add the recovery output
355-
.plus(Dimensions.fromOutput({ script: utxolib.address.toOutputScript(params.recoveryDestination, coin.network) }))
356-
// KRS recovery transactions have a 2nd output to pay the recovery fee, like paygo fees.
357-
.plus(isKrsRecovery ? Dimensions.SingleOutput.p2wsh : Dimensions.ZERO);
358-
const approximateFee = BigInt(dimensions.getVSize() * feePerByte);
359-
360353
let krsFee = BigInt(0);
361354
if (isKrsRecovery && params.krsProvider) {
362355
try {
@@ -367,6 +360,13 @@ export async function backupKeyRecovery(
367360
}
368361
}
369362

363+
const dimensions = Dimensions.fromPsbt(psbt)
364+
// Add the recovery output
365+
.plus(Dimensions.fromOutput({ script: utxolib.address.toOutputScript(params.recoveryDestination, coin.network) }))
366+
// KRS recovery transactions have a 2nd output to pay the recovery fee, like paygo fees.
367+
.plus(krsFee > BigInt(0) ? Dimensions.SingleOutput.p2wsh : Dimensions.ZERO);
368+
const approximateFee = BigInt(dimensions.getVSize() * feePerByte);
369+
370370
const recoveryAmount = totalInputAmount - approximateFee - krsFee;
371371

372372
if (recoveryAmount < BigInt(0)) {
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
2-
"transactionHex": "70736274ff0100a50200000003d7c3d565c03d67573680c96285939855cc656beade6793cbb121fb2ca51f339c0000000000ffffffff6adf8f092a117182d89effd08726812693d051e2c6e78efc3b967f88a619f2160000000000ffffffff3f482a856356853fe1e8cefffc23e30363038ba4c8c89bc505e4c5f0f595158c0000000000ffffffff0194c7c1230000000017a91439c65a0d0072a140694d6b13ec5f5f2437de99ff87000000004f010488b21e0000000000000000004b256d3cf3524c8d7086e295a1923d6fa2f99b686699ed50084bb114495c982403a86864862a9e315221809501f2a4200cd9e057a70f9164d485d4cfbeb8e47c74048374ad864f010488b21e000000000000000000914cc440157319de14126a1a2e87ea86f3b983f923fb17693a157b721220d74c02e81e105716179975cc47afd117cae272519aafdd6bfff688e4280d384e13184f04e15f6f214f010488b21e000000000000000000da28679577f7faf0ed86164da220aa4a29c7edfb0de8bdabd97f19fd15e74bed03db2b42af97f60db6ec5a1500e246ef2107660c4fc02699ed69b82c2f3e9324ae0403a82391000100be02000000010101010101010101010101010101010101010101010101010101010101010101000000006b4830450221008c9a3212461e71cadb8f4d9ac4eda10ed0445c5acca3041e9d92e06360b85350022032e211d19adbc911da021394384621b19fe2729b4085f2a20a54a14c81389e83012103bd0c34b2373e387575cddb103ec03916c31044f2508e261fe3597a2680ecbd1fffffffff0100e1f5050000000017a9144365f80ae9830dab1d9124be68c74c2fa23bbc128700000000220202d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc61483045022100ceee46163c2a78e8e54a13edaef3790647329206ddbb74b73ed354a9885c4a290220558c675e1d424ee4ccf4db86117778e577541ce40fa4df7696b3c5688e557d354101030441000000010469522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53ae2206029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d148374ad8600000000000000000100000000000000220602d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc611403a82391000000000000000001000000000000002206030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3514e15f6f2100000000000000000100000000000000000100be02000000010101010101010101010101010101010101010101010101010101010101010101000000006b483045022100a749722d784fbb843b6e33b35c47f0fce8f24652d7cfaa353e1c9dbbd0e0340202207b7c85cdfee0d1cccd1c469cece83f7a510a8db40f62675c84b55bc437d84dce012103bd0c34b2373e387575cddb103ec03916c31044f2508e261fe3597a2680ecbd1fffffffff0100c2eb0b0000000017a9144365f80ae9830dab1d9124be68c74c2fa23bbc128700000000220202d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc61483045022100e8bcf3e9d14f8a18274de96eb65db3c72b508f38354d5194c13b36d8f6d3f4bd02205018fbe40f8ea6cdc0c0c9472170ad701e9c7c2bba59b6ddc3ba63970445d53c4101030441000000010469522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53ae2206029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d148374ad8600000000000000000100000000000000220602d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc611403a82391000000000000000001000000000000002206030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3514e15f6f2100000000000000000100000000000000000100bd02000000010101010101010101010101010101010101010101010101010101010101010101000000006a47304402202a36601376e4b4c64c2fc6357a37a71364b46b6dd7a8b84825baabaf2b5e37720220599e40054ee5570825cb36da797d7d3c6c77297d550c7db0d01ef9971155a4bf012103bd0c34b2373e387575cddb103ec03916c31044f2508e261fe3597a2680ecbd1fffffffff0100a3e1110000000017a9144365f80ae9830dab1d9124be68c74c2fa23bbc128700000000220202d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6148304502210084079f444793d2a5fa12dd5036ecdcb789a98a5caa6e31b248a32f65fd525dba02203217ccf05edcee22e1983586669a9687c38f7c4b916372e3841a7d0e9df9ec024101030441000000010469522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53ae2206029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d148374ad8600000000000000000100000000000000220602d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc611403a82391000000000000000001000000000000002206030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3514e15f6f21000000000000000001000000000000000000",
2+
"transactionHex": "70736274ff0100a50200000003d7c3d565c03d67573680c96285939855cc656beade6793cbb121fb2ca51f339c0000000000ffffffff6adf8f092a117182d89effd08726812693d051e2c6e78efc3b967f88a619f2160000000000ffffffff3f482a856356853fe1e8cefffc23e30363038ba4c8c89bc505e4c5f0f595158c0000000000ffffffff0160d8c1230000000017a91439c65a0d0072a140694d6b13ec5f5f2437de99ff87000000004f010488b21e0000000000000000004b256d3cf3524c8d7086e295a1923d6fa2f99b686699ed50084bb114495c982403a86864862a9e315221809501f2a4200cd9e057a70f9164d485d4cfbeb8e47c74048374ad864f010488b21e000000000000000000914cc440157319de14126a1a2e87ea86f3b983f923fb17693a157b721220d74c02e81e105716179975cc47afd117cae272519aafdd6bfff688e4280d384e13184f04e15f6f214f010488b21e000000000000000000da28679577f7faf0ed86164da220aa4a29c7edfb0de8bdabd97f19fd15e74bed03db2b42af97f60db6ec5a1500e246ef2107660c4fc02699ed69b82c2f3e9324ae0403a82391000100be02000000010101010101010101010101010101010101010101010101010101010101010101000000006b4830450221008c9a3212461e71cadb8f4d9ac4eda10ed0445c5acca3041e9d92e06360b85350022032e211d19adbc911da021394384621b19fe2729b4085f2a20a54a14c81389e83012103bd0c34b2373e387575cddb103ec03916c31044f2508e261fe3597a2680ecbd1fffffffff0100e1f5050000000017a9144365f80ae9830dab1d9124be68c74c2fa23bbc128700000000220202d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6147304402205c2c110269e115e52d5afbbc33c4cb8407f391156e19003307b8e440d724092b02206054509b229ad6c03a59a3a7eb6a06e915873125082e677b23b42cb23ed4e3b84101030441000000010469522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53ae2206029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d148374ad8600000000000000000100000000000000220602d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc611403a82391000000000000000001000000000000002206030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3514e15f6f2100000000000000000100000000000000000100be02000000010101010101010101010101010101010101010101010101010101010101010101000000006b483045022100a749722d784fbb843b6e33b35c47f0fce8f24652d7cfaa353e1c9dbbd0e0340202207b7c85cdfee0d1cccd1c469cece83f7a510a8db40f62675c84b55bc437d84dce012103bd0c34b2373e387575cddb103ec03916c31044f2508e261fe3597a2680ecbd1fffffffff0100c2eb0b0000000017a9144365f80ae9830dab1d9124be68c74c2fa23bbc128700000000220202d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc614830450221009490a4723a5f83f076ce847161a3a8f7fe1b88ee222aa203b8002b43366ddbd602204a88daa818f63ca9475690386d09e7b44c90a2382a9d5048ccdeaaf663ca06924101030441000000010469522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53ae2206029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d148374ad8600000000000000000100000000000000220602d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc611403a82391000000000000000001000000000000002206030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3514e15f6f2100000000000000000100000000000000000100bd02000000010101010101010101010101010101010101010101010101010101010101010101000000006a47304402202a36601376e4b4c64c2fc6357a37a71364b46b6dd7a8b84825baabaf2b5e37720220599e40054ee5570825cb36da797d7d3c6c77297d550c7db0d01ef9971155a4bf012103bd0c34b2373e387575cddb103ec03916c31044f2508e261fe3597a2680ecbd1fffffffff0100a3e1110000000017a9144365f80ae9830dab1d9124be68c74c2fa23bbc128700000000220202d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc614830450221009e0f3204f6c3829ac91eb3f721a45a169af96a17ba23f89d20e76ba44a828c530220563fbafd634e4672163cafb4c2982ba69e290db7c10d366557c77f8e221613124101030441000000010469522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53ae2206029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d148374ad8600000000000000000100000000000000220602d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc611403a82391000000000000000001000000000000002206030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3514e15f6f21000000000000000001000000000000000000",
33
"coin": "bch",
44
"backupKey": "xpub661MyMwAqRbcFzLXuganogQvd7MrefQQqCcJP2ZDumnCdQecf5cw1P1nD5qBz8SNS1yCLSC9VqpNUWnQU3V6qmnPt2r21oXhicQFzPA6Lby",
5-
"recoveryAmount": 599902100,
6-
"recoveryAmountString": "599902100",
7-
"txid": "6aa4a27af16cf5d23fb674505f3db0564ffd20388e73888bfd5ceb05bd10f007"
5+
"recoveryAmount": 599906400,
6+
"recoveryAmountString": "599906400",
7+
"txid": "83043606a5ed6efd5d4d6fc1b4bf0fe7a71c81f38e1fde229d17f74171f1af84"
88
}

modules/abstract-utxo/test/unit/fixtures/bch/recovery/backupKeyRecovery-keyRecoveryService-p2sh-keyternal.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
"valueString": "300000000"
2626
}
2727
],
28-
"transactionHex": "0200000003d7c3d565c03d67573680c96285939855cc656beade6793cbb121fb2ca51f339c00000000b700483045022100ceee46163c2a78e8e54a13edaef3790647329206ddbb74b73ed354a9885c4a290220558c675e1d424ee4ccf4db86117778e577541ce40fa4df7696b3c5688e557d354100004c69522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53aeffffffff6adf8f092a117182d89effd08726812693d051e2c6e78efc3b967f88a619f21600000000b700483045022100e8bcf3e9d14f8a18274de96eb65db3c72b508f38354d5194c13b36d8f6d3f4bd02205018fbe40f8ea6cdc0c0c9472170ad701e9c7c2bba59b6ddc3ba63970445d53c4100004c69522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53aeffffffff3f482a856356853fe1e8cefffc23e30363038ba4c8c89bc505e4c5f0f595158c00000000b70048304502210084079f444793d2a5fa12dd5036ecdcb789a98a5caa6e31b248a32f65fd525dba02203217ccf05edcee22e1983586669a9687c38f7c4b916372e3841a7d0e9df9ec024100004c69522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53aeffffffff0194c7c1230000000017a91439c65a0d0072a140694d6b13ec5f5f2437de99ff8700000000",
28+
"transactionHex": "0200000003d7c3d565c03d67573680c96285939855cc656beade6793cbb121fb2ca51f339c00000000b60047304402205c2c110269e115e52d5afbbc33c4cb8407f391156e19003307b8e440d724092b02206054509b229ad6c03a59a3a7eb6a06e915873125082e677b23b42cb23ed4e3b84100004c69522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53aeffffffff6adf8f092a117182d89effd08726812693d051e2c6e78efc3b967f88a619f21600000000b7004830450221009490a4723a5f83f076ce847161a3a8f7fe1b88ee222aa203b8002b43366ddbd602204a88daa818f63ca9475690386d09e7b44c90a2382a9d5048ccdeaaf663ca06924100004c69522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53aeffffffff3f482a856356853fe1e8cefffc23e30363038ba4c8c89bc505e4c5f0f595158c00000000b7004830450221009e0f3204f6c3829ac91eb3f721a45a169af96a17ba23f89d20e76ba44a828c530220563fbafd634e4672163cafb4c2982ba69e290db7c10d366557c77f8e221613124100004c69522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53aeffffffff0160d8c1230000000017a91439c65a0d0072a140694d6b13ec5f5f2437de99ff8700000000",
2929
"coin": "bch",
3030
"backupKey": "xpub661MyMwAqRbcFzLXuganogQvd7MrefQQqCcJP2ZDumnCdQecf5cw1P1nD5qBz8SNS1yCLSC9VqpNUWnQU3V6qmnPt2r21oXhicQFzPA6Lby",
31-
"recoveryAmount": 599902100,
32-
"recoveryAmountString": "599902100",
33-
"txid": "2700c5de27ff315099448cc0e5f79603c2dbca2fd09d32c0dc6077fe88a736db"
31+
"recoveryAmount": 599906400,
32+
"recoveryAmountString": "599906400",
33+
"txid": "620fd269bd38410df2def772c5279a4a0fa33c9920d7590ebf3f8af021252c9d"
3434
}

0 commit comments

Comments
 (0)