Skip to content

Commit ffa03f7

Browse files
authored
Merge pull request #6075 from BitGo/COIN-3893-fix
fix(sdk-coin-stx): bug fix in recoverable amount calculation for sip10
2 parents 6e073b9 + 8b72846 commit ffa03f7

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

modules/sdk-coin-stx/src/stx.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -415,12 +415,14 @@ export class Stx extends BaseCoin {
415415
* @param {String} serializedHex - serialized txn hex
416416
* @param {Number} txHexLength - deserialized txn length
417417
* @param {String} balance - total account balance
418+
* @param {String} tokenBalance - total token balance
418419
* @returns {Promise<Record<string, string>>}
419420
*/
420421
protected async getRecoverableAmountAndFee(
421422
serializedHex: string,
422423
txHexLength: number,
423-
balance: string
424+
balance: string,
425+
tokenBalance?: string
424426
): Promise<Record<string, string>> {
425427
const estimatedFee = await this.getTransactionFeeEstimation({
426428
txHex: serializedHex,
@@ -432,7 +434,7 @@ export class Stx extends BaseCoin {
432434
throw new Error('insufficient balance to build the transaction');
433435
}
434436
return {
435-
recoverableAmount: balanceBN.minus(feeBN).toString(),
437+
recoverableAmount: tokenBalance ?? balanceBN.minus(feeBN).toString(),
436438
fee: feeBN.toString(),
437439
};
438440
}
@@ -543,7 +545,8 @@ export class Stx extends BaseCoin {
543545
const { recoverableAmount, fee } = await this.getRecoverableAmountAndFee(
544546
serializedHex,
545547
txBroadcastFormat.length,
546-
stxBalance
548+
stxBalance,
549+
tokenBalance
547550
);
548551
functionArgs[0] = uintCV(recoverableAmount);
549552
txBuilder.functionArgs(functionArgs);

modules/sdk-coin-stx/test/fixtures.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,8 @@ export const FEE_ESTIMATION_TOKEN_RESPONSE = {
173173
export const HOT_WALLET_RECOVERY_TX_HEX =
174174
'8080000000040149857eb4b6dd4fee08c3ec04e3d0ed04ef67d324000000000000000100000000000001bc00000003020185453928e12e80aed869a29e5b6b2da637a3f422544a97531ba4c517525866985b24f110ef1ae79bf66e4ae7e22091982488c875bdd89ba3c2cde5043ae21dc40201adb9248b361e7127aa5e44a57010731469d81de4c3c91e78a1f85ac10b18a4320e629293bf3ed1dc2656c22e092b673a7b240aa1b461502a7038f9a7fabd031e0002ab86cdb1f9574a85077ef963349878912b5e03bafa7b527693e7c54ef28e96c6000203020000000000051a1500a1c42f0c11bfe3893f479af18904677685be00000000009894c400000000000000000000000000000000000000000000000000000000000000000000';
175175
export const HOT_WALLET_TOKEN_RECOVERY_TX_HEX =
176-
'8080000000040149857eb4b6dd4fee08c3ec04e3d0ed04ef67d324000000000000000100000000000002ba000000030201f94f1a4087fe6bae129bf643ee7d5a3e035574147e35c13842c19895f059e8f660086e2f4d6ce18245956f0b0fd0f7193ebdbcaa9b4cae4c77b11096617734a702014137671a8553c49a75ac29c83939b7d64a1ae3053837efdebf2c8ce3b4f29ef15df677955101215c9b7e86557b99153fda0108bd0d3b42900fd9eb490c4e6a970002ab86cdb1f9574a85077ef963349878912b5e03bafa7b527693e7c54ef28e96c6000203020000000101021549857eb4b6dd4fee08c3ec04e3d0ed04ef67d3241a1500a1c42f0c11bfe3893f479af18904677685be0d747369703664702d746f6b656e0d747369703664702d746f6b656e0100000000009893c6021a1500a1c42f0c11bfe3893f479af18904677685be0d747369703664702d746f6b656e087472616e736665720000000401000000000000000000000000009893c6051549857eb4b6dd4fee08c3ec04e3d0ed04ef67d324051a1500a1c42f0c11bfe3893f479af18904677685be09';
176+
'8080000000040149857eb4b6dd4fee08c3ec04e3d0ed04ef67d324000000000000000100000000000002ba00000003020145600b27e60a50239f363f06e27b444d25b6f3b97196250cebb3bb4c1d2b52660c6f0fe50068947487d8f884978254fa378095695fc40ba89f785a78a796d45d02005a9a1b7bc7150461fd1ba40377d6d47b191eb59fd6b69dd2079d2e9b3fa615d50643b234ed84d60787bdcbbbcf777fa992613ede4c300c8fdbeedd5702f5d01e0002ab86cdb1f9574a85077ef963349878912b5e03bafa7b527693e7c54ef28e96c6000203020000000101021549857eb4b6dd4fee08c3ec04e3d0ed04ef67d3241a1500a1c42f0c11bfe3893f479af18904677685be0d747369703664702d746f6b656e0d747369703664702d746f6b656e010000000005f5e100021a1500a1c42f0c11bfe3893f479af18904677685be0d747369703664702d746f6b656e087472616e73666572000000040100000000000000000000000005f5e100051549857eb4b6dd4fee08c3ec04e3d0ed04ef67d324051a1500a1c42f0c11bfe3893f479af18904677685be09';
177177
export const COLD_WALLET_UNSIGNED_SWEEP_TX_HEX =
178178
'808000000004019f2f1aff6fa0062e1f7fa6096133e75f47a7e8f7000000000000000100000000000001bc000000030002daaf341717af7ca2152fb68e82f4432959028b5dfb85e53ddfb625cd9f323ab00002ac62ceb36011c28377745da22a148d618cf3f54b212362f8b2df93e0a94fe8f700032689089cf644435cef83f40d9e20061e36f7038f8960d96eada68b47de9d40cc000203020000000000051a1500a1c42f0c11bfe3893f479af18904677685be00000000009894c400000000000000000000000000000000000000000000000000000000000000000000';
179179
export const COLD_WALLET_TOKEN_UNSIGNED_SWEEP_TX_HEX =
180-
'808000000004019f2f1aff6fa0062e1f7fa6096133e75f47a7e8f7000000000000000100000000000002ba000000030002daaf341717af7ca2152fb68e82f4432959028b5dfb85e53ddfb625cd9f323ab00002ac62ceb36011c28377745da22a148d618cf3f54b212362f8b2df93e0a94fe8f700032689089cf644435cef83f40d9e20061e36f7038f8960d96eada68b47de9d40cc00020302000000010102159f2f1aff6fa0062e1f7fa6096133e75f47a7e8f71a1500a1c42f0c11bfe3893f479af18904677685be0d747369703664702d746f6b656e0d747369703664702d746f6b656e0100000000009893c6021a1500a1c42f0c11bfe3893f479af18904677685be0d747369703664702d746f6b656e087472616e736665720000000401000000000000000000000000009893c605159f2f1aff6fa0062e1f7fa6096133e75f47a7e8f7051a1500a1c42f0c11bfe3893f479af18904677685be09';
180+
'808000000004019f2f1aff6fa0062e1f7fa6096133e75f47a7e8f7000000000000000100000000000002ba000000030002daaf341717af7ca2152fb68e82f4432959028b5dfb85e53ddfb625cd9f323ab00002ac62ceb36011c28377745da22a148d618cf3f54b212362f8b2df93e0a94fe8f700032689089cf644435cef83f40d9e20061e36f7038f8960d96eada68b47de9d40cc00020302000000010102159f2f1aff6fa0062e1f7fa6096133e75f47a7e8f71a1500a1c42f0c11bfe3893f479af18904677685be0d747369703664702d746f6b656e0d747369703664702d746f6b656e010000000005f5e100021a1500a1c42f0c11bfe3893f479af18904677685be0d747369703664702d746f6b656e087472616e73666572000000040100000000000000000000000005f5e10005159f2f1aff6fa0062e1f7fa6096133e75f47a7e8f7051a1500a1c42f0c11bfe3893f479af18904677685be09';

0 commit comments

Comments
 (0)