diff --git a/core/src/main/java/org/bitcoinj/core/Transaction.java b/core/src/main/java/org/bitcoinj/core/Transaction.java index 178e8093..44ec3141 100644 --- a/core/src/main/java/org/bitcoinj/core/Transaction.java +++ b/core/src/main/java/org/bitcoinj/core/Transaction.java @@ -414,6 +414,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 932b40bb..4138ed27 100644 --- a/core/src/test/java/org/bitcoinj/wallet/WalletTest.java +++ b/core/src/test/java/org/bitcoinj/wallet/WalletTest.java @@ -2922,8 +2922,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) {} }