From 74110a12d91bc5d6d602c0a83d26cef6aed09c6b Mon Sep 17 00:00:00 2001 From: Mike Hearn Date: Wed, 12 Jun 2013 17:42:18 +0200 Subject: [PATCH] Note that a tx of exactly 1000 bytes may overpay. --- core/src/main/java/com/google/bitcoin/core/Wallet.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/google/bitcoin/core/Wallet.java b/core/src/main/java/com/google/bitcoin/core/Wallet.java index edfee7b3..2e35d6be 100644 --- a/core/src/main/java/com/google/bitcoin/core/Wallet.java +++ b/core/src/main/java/com/google/bitcoin/core/Wallet.java @@ -3111,10 +3111,12 @@ public class Wallet implements Serializable, BlockChainListener { resetTxInputs(req, originalInputs); BigInteger fees = req.fee == null ? BigInteger.ZERO : req.fee; - if (lastCalculatedSize > 0) + if (lastCalculatedSize > 0) { + // If the size is exactly 1000 bytes then we'll over-pay, but this should be rare. fees = fees.add(BigInteger.valueOf((lastCalculatedSize / 1000) + 1).multiply(req.feePerKb)); - else + } else { fees = fees.add(req.feePerKb); // First time around the loop. + } if (needAtLeastReferenceFee && fees.compareTo(Transaction.REFERENCE_DEFAULT_MIN_TX_FEE) < 0) fees = Transaction.REFERENCE_DEFAULT_MIN_TX_FEE;