From ea8cbd7465266864b2933a927eaa0cf408c7a7b6 Mon Sep 17 00:00:00 2001 From: Mike Hearn Date: Sun, 10 Jul 2011 17:38:18 +0000 Subject: [PATCH] Don't pre-calculate the hash in the Transaction parse code. Speeds up processing of large blocks with no relevant transactions. --- src/com/google/bitcoin/core/Transaction.java | 3 --- tests/com/google/bitcoin/core/BlockChainTest.java | 1 + 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/com/google/bitcoin/core/Transaction.java b/src/com/google/bitcoin/core/Transaction.java index 8ca7b6eb9..58e33656c 100644 --- a/src/com/google/bitcoin/core/Transaction.java +++ b/src/com/google/bitcoin/core/Transaction.java @@ -232,9 +232,6 @@ public class Transaction extends Message implements Serializable { cursor += output.getMessageSize(); } lockTime = readUint32(); - - // Store a hash, it may come in useful later (want to avoid reserialization costs). - hash = new Sha256Hash(reverseBytes(doubleDigest(bytes, offset, cursor - offset))); } /** diff --git a/tests/com/google/bitcoin/core/BlockChainTest.java b/tests/com/google/bitcoin/core/BlockChainTest.java index 4aad98801..9141c4f77 100644 --- a/tests/com/google/bitcoin/core/BlockChainTest.java +++ b/tests/com/google/bitcoin/core/BlockChainTest.java @@ -106,6 +106,7 @@ public class BlockChainTest { Block b2 = createFakeBlock(unitTestParams, blockStore, tx2).block; hash = b2.getMerkleRoot(); b2.setMerkleRoot(Sha256Hash.ZERO_HASH); + b2.solve(); chain.add(b2); // Broken block is accepted because its contents don't matter to us. }