diff --git a/core/src/main/java/org/bitcoinj/core/Transaction.java b/core/src/main/java/org/bitcoinj/core/Transaction.java index 57b34f53f..f0f89f280 100644 --- a/core/src/main/java/org/bitcoinj/core/Transaction.java +++ b/core/src/main/java/org/bitcoinj/core/Transaction.java @@ -415,6 +415,8 @@ public class Transaction extends ChildMessage { */ public Coin getFee() { Coin fee = Coin.ZERO; + if (inputs.isEmpty() || outputs.isEmpty()) // Incomplete transaction + return null; for (TransactionInput input : inputs) { if (input.getValue() == null) return null; diff --git a/core/src/test/java/org/bitcoinj/wallet/WalletTest.java b/core/src/test/java/org/bitcoinj/wallet/WalletTest.java index f699c9ae1..f7780878a 100644 --- a/core/src/test/java/org/bitcoinj/wallet/WalletTest.java +++ b/core/src/test/java/org/bitcoinj/wallet/WalletTest.java @@ -2865,8 +2865,8 @@ public class WalletTest extends TestWithWallet { wallet.receiveFromBlock(tx, block, AbstractBlockChain.NewBlockType.BEST_CHAIN, 0); try { request = SendRequest.emptyWallet(OTHER_ADDRESS); - assertEquals(ZERO, request.tx.getFee()); wallet.completeTx(request); + assertEquals(ZERO, request.tx.getFee()); fail(); } catch (Wallet.CouldNotAdjustDownwards e) {} }