From 50767e711f09d057f2eaeaebd33f65de3dbce778 Mon Sep 17 00:00:00 2001 From: Prateek Rathod Date: Fri, 7 Feb 2025 11:48:13 +0100 Subject: [PATCH] [Fix/stacks] transaction broadcast API error (#9137) * fix(stx): broadcast failure due to wrong fee * chore: changeset --- .changeset/small-hornets-accept.md | 5 +++++ .../coin-stacks/src/bridge/estimateMaxSpendable.ts | 3 ++- .../coin-stacks/src/bridge/prepareTransaction.ts | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 .changeset/small-hornets-accept.md diff --git a/.changeset/small-hornets-accept.md b/.changeset/small-hornets-accept.md new file mode 100644 index 000000000000..55242d8c5edd --- /dev/null +++ b/.changeset/small-hornets-accept.md @@ -0,0 +1,5 @@ +--- +"@ledgerhq/coin-stacks": patch +--- + +Fix transaction broadcast diff --git a/libs/coin-modules/coin-stacks/src/bridge/estimateMaxSpendable.ts b/libs/coin-modules/coin-stacks/src/bridge/estimateMaxSpendable.ts index dfc19e8003da..463bb3f0262d 100644 --- a/libs/coin-modules/coin-stacks/src/bridge/estimateMaxSpendable.ts +++ b/libs/coin-modules/coin-stacks/src/bridge/estimateMaxSpendable.ts @@ -5,6 +5,7 @@ import { StacksMainnet } from "@stacks/network"; import { UnsignedTokenTransferOptions, estimateTransaction, + estimateTransactionByteLength, makeUnsignedSTXTokenTransfer, } from "@stacks/transactions"; import BigNumber from "bignumber.js"; @@ -43,7 +44,7 @@ export const estimateMaxSpendable: AccountBridge["estimateMaxSpenda const tx = await makeUnsignedSTXTokenTransfer(options); - const [feeEst] = await estimateTransaction(tx.payload); + const [feeEst] = await estimateTransaction(tx.payload, estimateTransactionByteLength(tx)); const diff = spendableBalance.minus(new BigNumber(feeEst.fee)); return diff.gte(0) ? diff : new BigNumber(0); diff --git a/libs/coin-modules/coin-stacks/src/bridge/prepareTransaction.ts b/libs/coin-modules/coin-stacks/src/bridge/prepareTransaction.ts index 4e1ed0e7b94d..d8384e8a4858 100644 --- a/libs/coin-modules/coin-stacks/src/bridge/prepareTransaction.ts +++ b/libs/coin-modules/coin-stacks/src/bridge/prepareTransaction.ts @@ -6,6 +6,7 @@ import { TransactionVersion, UnsignedTokenTransferOptions, estimateTransaction, + estimateTransactionByteLength, makeUnsignedSTXTokenTransfer, } from "@stacks/transactions"; import BigNumber from "bignumber.js"; @@ -48,7 +49,7 @@ export const prepareTransaction: AccountBridge["prepareTransaction" : AddressVersion.TestnetSingleSig; const senderAddress = c32address(addressVersion, tx.auth.spendingCondition!.signer); - const [fee] = await estimateTransaction(tx.payload); + const [fee] = await estimateTransaction(tx.payload, estimateTransactionByteLength(tx)); patch.fee = new BigNumber(fee.fee); patch.nonce = await findNextNonce(senderAddress, pendingOperations);