Message: rename methods serialize() and messageSize()

Provide deprecated implementations of `bitcoinSerialize()`
and `getMessageSize()`.
This commit is contained in:
Sean Gilligan 2023-04-16 09:10:02 -07:00 committed by Andreas Schildbach
parent 6ddf8d8cf5
commit 5eb67285db
32 changed files with 129 additions and 113 deletions

View file

@ -922,7 +922,7 @@ public abstract class AbstractBlockChain {
try { try {
falsePositives.remove(tx.getTxId()); falsePositives.remove(tx.getTxId());
if (clone) if (clone)
tx = Transaction.read(ByteBuffer.wrap(tx.bitcoinSerialize())); tx = Transaction.read(ByteBuffer.wrap(tx.serialize()));
listener.receiveFromBlock(tx, block, blockType, relativityOffset++); listener.receiveFromBlock(tx, block, blockType, relativityOffset++);
} catch (ScriptException e) { } catch (ScriptException e) {
// We don't want scripts we don't understand to break the block chain so just note that this tx was // We don't want scripts we don't understand to break the block chain so just note that this tx was

View file

@ -42,7 +42,7 @@ public abstract class BaseMessage implements Message {
* @return serialized data in Bitcoin protocol format * @return serialized data in Bitcoin protocol format
*/ */
@Override @Override
public final byte[] bitcoinSerialize() { public final byte[] serialize() {
// No cached array available so serialize parts by stream. // No cached array available so serialize parts by stream.
ByteArrayOutputStream stream = new ByteArrayOutputStream(100); // initial size just a guess ByteArrayOutputStream stream = new ByteArrayOutputStream(100); // initial size just a guess
try { try {
@ -53,10 +53,10 @@ public abstract class BaseMessage implements Message {
return stream.toByteArray(); return stream.toByteArray();
} }
/** @deprecated use {@link #bitcoinSerialize()} */ /** @deprecated use {@link #serialize()} */
@Deprecated @Deprecated
public byte[] unsafeBitcoinSerialize() { public byte[] unsafeBitcoinSerialize() {
return bitcoinSerialize(); return serialize();
} }
/** /**
@ -76,7 +76,7 @@ public abstract class BaseMessage implements Message {
* @return size of this object when serialized (in bytes) * @return size of this object when serialized (in bytes)
*/ */
@Override @Override
public int getMessageSize() { public int messageSize() {
return bitcoinSerialize().length; return serialize().length;
} }
} }

View file

@ -145,7 +145,7 @@ public class BitcoinSerializer extends MessageSerializer {
if (name == null) { if (name == null) {
throw new Error("BitcoinSerializer doesn't currently know how to serialize " + message.getClass()); throw new Error("BitcoinSerializer doesn't currently know how to serialize " + message.getClass());
} }
serialize(name, message.bitcoinSerialize(), out); serialize(name, message.serialize(), out);
} }
/** /**

View file

@ -259,13 +259,13 @@ public class Block extends BaseMessage {
} }
@Override @Override
public int getMessageSize() { public int messageSize() {
int size = HEADER_SIZE; int size = HEADER_SIZE;
List<Transaction> transactions = getTransactions(); List<Transaction> transactions = getTransactions();
if (transactions != null) { if (transactions != null) {
size += VarInt.sizeOf(transactions.size()); size += VarInt.sizeOf(transactions.size());
for (Transaction tx : transactions) { for (Transaction tx : transactions) {
size += tx.getMessageSize(); size += tx.messageSize();
} }
} }
return size; return size;
@ -1056,7 +1056,7 @@ public class Block extends BaseMessage {
// transactions that reference spent or non-existent inputs. // transactions that reference spent or non-existent inputs.
if (block.transactions.isEmpty()) if (block.transactions.isEmpty())
throw new VerificationException("Block had no transactions"); throw new VerificationException("Block had no transactions");
if (block.getMessageSize() > MAX_BLOCK_SIZE) if (block.messageSize() > MAX_BLOCK_SIZE)
throw new VerificationException("Block larger than MAX_BLOCK_SIZE"); throw new VerificationException("Block larger than MAX_BLOCK_SIZE");
block.checkTransactions(height, flags); block.checkTransactions(height, flags);
block.checkMerkleRoot(); block.checkMerkleRoot();

View file

@ -33,7 +33,7 @@ public abstract class EmptyMessage extends BaseMessage {
} }
@Override @Override
public final int getMessageSize() { public final int messageSize() {
return 0; return 0;
} }

View file

@ -32,12 +32,28 @@ public interface Message {
* *
* @return size of this object when serialized (in bytes) * @return size of this object when serialized (in bytes)
*/ */
int getMessageSize(); int messageSize();
/**
* @deprecated use {@link #messageSize()}
*/
@Deprecated
default int getMessageSize() {
return messageSize();
}
/** /**
* Serialize this message to a byte array that conforms to the Bitcoin wire protocol. * Serialize this message to a byte array that conforms to the Bitcoin wire protocol.
* *
* @return serialized data in Bitcoin protocol format * @return serialized data in Bitcoin protocol format
*/ */
byte[] bitcoinSerialize(); byte[] serialize();
/**
* @deprecated use {@link #serialize()}
*/
@Deprecated
default byte[] bitcoinSerialize() {
return serialize();
}
} }

View file

@ -1917,7 +1917,7 @@ public class PeerGroup implements TransactionBroadcaster {
private int countAndMeasureSize(Collection<Transaction> transactions) { private int countAndMeasureSize(Collection<Transaction> transactions) {
for (Transaction transaction : transactions) for (Transaction transaction : transactions)
bytesInLastSecond += transaction.getMessageSize(); bytesInLastSecond += transaction.messageSize();
return transactions.size(); return transactions.size();
} }

View file

@ -136,7 +136,7 @@ public class StoredBlock {
buffer.putInt(getHeight()); buffer.putInt(getHeight());
// Using unsafeBitcoinSerialize here can give us direct access to the same bytes we read off the wire, // Using unsafeBitcoinSerialize here can give us direct access to the same bytes we read off the wire,
// avoiding serialization round-trips. // avoiding serialization round-trips.
byte[] bytes = getHeader().bitcoinSerialize(); byte[] bytes = getHeader().serialize();
buffer.put(bytes, 0, Block.HEADER_SIZE); // Trim the trailing 00 byte (zero transactions). buffer.put(bytes, 0, Block.HEADER_SIZE); // Trim the trailing 00 byte (zero transactions).
} }

View file

@ -362,7 +362,7 @@ public class Transaction extends BaseMessage {
/** Gets the transaction weight as defined in BIP141. */ /** Gets the transaction weight as defined in BIP141. */
public int getWeight() { public int getWeight() {
if (!hasWitnesses()) if (!hasWitnesses())
return getMessageSize() * 4; return this.messageSize() * 4;
try (final ByteArrayOutputStream stream = new ByteArrayOutputStream(255)) { // just a guess at an average tx length try (final ByteArrayOutputStream stream = new ByteArrayOutputStream(255)) { // just a guess at an average tx length
bitcoinSerializeToStream(stream, false); bitcoinSerializeToStream(stream, false);
final int baseSize = stream.size(); final int baseSize = stream.size();
@ -378,7 +378,7 @@ public class Transaction extends BaseMessage {
/** Gets the virtual transaction size as defined in BIP141. */ /** Gets the virtual transaction size as defined in BIP141. */
public int getVsize() { public int getVsize() {
if (!hasWitnesses()) if (!hasWitnesses())
return getMessageSize(); return this.messageSize();
return IntMath.divide(getWeight(), 4, RoundingMode.CEILING); // round up return IntMath.divide(getWeight(), 4, RoundingMode.CEILING); // round up
} }
@ -674,7 +674,7 @@ public class Transaction extends BaseMessage {
* can do so. * can do so.
*/ */
public int getMessageSizeForPriorityCalc() { public int getMessageSizeForPriorityCalc() {
int size = getMessageSize(); int size = this.messageSize();
for (TransactionInput input : inputs) { for (TransactionInput input : inputs) {
// 41: min size of an input // 41: min size of an input
// 110: enough to cover a compressed pubkey p2sh redemption (somewhat arbitrary). // 110: enough to cover a compressed pubkey p2sh redemption (somewhat arbitrary).
@ -726,7 +726,7 @@ public class Transaction extends BaseMessage {
s.append(", wtxid ").append(wTxId); s.append(", wtxid ").append(wTxId);
s.append('\n'); s.append('\n');
int weight = getWeight(); int weight = getWeight();
int size = getMessageSize(); int size = this.messageSize();
int vsize = getVsize(); int vsize = getVsize();
s.append(indent).append("weight: ").append(weight).append(" wu, "); s.append(indent).append("weight: ").append(weight).append(" wu, ");
if (size != vsize) if (size != vsize)
@ -1194,7 +1194,7 @@ public class Transaction extends BaseMessage {
try { try {
// Create a copy of this transaction to operate upon because we need make changes to the inputs and outputs. // Create a copy of this transaction to operate upon because we need make changes to the inputs and outputs.
// It would not be thread-safe to change the attributes of the transaction object itself. // It would not be thread-safe to change the attributes of the transaction object itself.
Transaction tx = Transaction.read(ByteBuffer.wrap(bitcoinSerialize())); Transaction tx = Transaction.read(ByteBuffer.wrap(serialize()));
// Clear input scripts in preparation for signing. If we're signing a fresh // Clear input scripts in preparation for signing. If we're signing a fresh
// transaction that step isn't very helpful, but it doesn't add much cost relative to the actual // transaction that step isn't very helpful, but it doesn't add much cost relative to the actual
@ -1423,7 +1423,7 @@ public class Transaction extends BaseMessage {
} }
@Override @Override
public int getMessageSize() { public int messageSize() {
boolean useSegwit = hasWitnesses() && allowWitness(protocolVersion); boolean useSegwit = hasWitnesses() && allowWitness(protocolVersion);
int size = 4; // version int size = 4; // version
if (useSegwit) if (useSegwit)
@ -1813,7 +1813,7 @@ public class Transaction extends BaseMessage {
public static void verify(Network network, Transaction tx) throws VerificationException { public static void verify(Network network, Transaction tx) throws VerificationException {
if (tx.inputs.size() == 0 || tx.outputs.size() == 0) if (tx.inputs.size() == 0 || tx.outputs.size() == 0)
throw new VerificationException.EmptyInputsOrOutputs(); throw new VerificationException.EmptyInputsOrOutputs();
if (tx.getMessageSize() > Block.MAX_BLOCK_SIZE) if (tx.messageSize() > Block.MAX_BLOCK_SIZE)
throw new VerificationException.LargerThanMaxBlockSize(); throw new VerificationException.LargerThanMaxBlockSize();
HashSet<TransactionOutPoint> outpoints = new HashSet<>(); HashSet<TransactionOutPoint> outpoints = new HashSet<>();

View file

@ -345,7 +345,7 @@ public class PaymentProtocol {
@Nullable List<Protos.Output> refundOutputs, @Nullable String memo, @Nullable byte[] merchantData) { @Nullable List<Protos.Output> refundOutputs, @Nullable String memo, @Nullable byte[] merchantData) {
Protos.Payment.Builder builder = Protos.Payment.newBuilder(); Protos.Payment.Builder builder = Protos.Payment.newBuilder();
for (Transaction transaction : transactions) { for (Transaction transaction : transactions) {
builder.addTransactions(ByteString.copyFrom(transaction.bitcoinSerialize())); builder.addTransactions(ByteString.copyFrom(transaction.serialize()));
} }
if (refundOutputs != null) { if (refundOutputs != null) {
for (Protos.Output output : refundOutputs) for (Protos.Output output : refundOutputs)

View file

@ -1744,7 +1744,7 @@ public class Script {
// Clone the transaction because executing the script involves editing it, and if we die, we'll leave // Clone the transaction because executing the script involves editing it, and if we die, we'll leave
// the tx half broken (also it's not so thread safe to work on it directly. // the tx half broken (also it's not so thread safe to work on it directly.
try { try {
txContainingThis = Transaction.read(ByteBuffer.wrap(txContainingThis.bitcoinSerialize())); txContainingThis = Transaction.read(ByteBuffer.wrap(txContainingThis.serialize()));
} catch (ProtocolException e) { } catch (ProtocolException e) {
throw new RuntimeException(e); // Should not happen unless we were given a totally broken transaction. throw new RuntimeException(e); // Should not happen unless we were given a totally broken transaction.
} }

View file

@ -222,7 +222,7 @@ public class FakeTxBuilder {
* Roundtrip a transaction so that it appears as if it has just come from the wire * Roundtrip a transaction so that it appears as if it has just come from the wire
*/ */
public static Transaction roundTripTransaction(Transaction tx) { public static Transaction roundTripTransaction(Transaction tx) {
return Transaction.read(ByteBuffer.wrap(tx.bitcoinSerialize())); return Transaction.read(ByteBuffer.wrap(tx.serialize()));
} }
public static class DoubleSpends { public static class DoubleSpends {

View file

@ -2028,7 +2028,7 @@ public class Wallet extends BaseTaggableObject
// Clone transaction to avoid multiple wallets pointing to the same transaction. This can happen when // Clone transaction to avoid multiple wallets pointing to the same transaction. This can happen when
// two wallets depend on the same transaction. // two wallets depend on the same transaction.
Transaction cloneTx = params.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(tx.bitcoinSerialize())); Transaction cloneTx = params.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(tx.serialize()));
cloneTx.setPurpose(tx.getPurpose()); cloneTx.setPurpose(tx.getPurpose());
Optional<Instant> updateTime = tx.updateTime(); Optional<Instant> updateTime = tx.updateTime();
if (updateTime.isPresent()) if (updateTime.isPresent())
@ -2051,7 +2051,7 @@ public class Wallet extends BaseTaggableObject
// Clone transaction to avoid multiple wallets pointing to the same transaction. This can happen when // Clone transaction to avoid multiple wallets pointing to the same transaction. This can happen when
// two wallets depend on the same transaction. // two wallets depend on the same transaction.
Transaction cloneTx = params.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(tx.bitcoinSerialize())); Transaction cloneTx = params.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(tx.serialize()));
cloneTx.setPurpose(tx.getPurpose()); cloneTx.setPurpose(tx.getPurpose());
Optional<Instant> updateTime = tx.updateTime(); Optional<Instant> updateTime = tx.updateTime();
if (updateTime.isPresent()) if (updateTime.isPresent())
@ -2647,9 +2647,9 @@ public class Wallet extends BaseTaggableObject
// so the exact nature of the mutation can be examined. // so the exact nature of the mutation can be examined.
log.warn("Saw two pending transactions double spend each other"); log.warn("Saw two pending transactions double spend each other");
log.warn(" offending input is input {}", tx.getInputs().indexOf(input)); log.warn(" offending input is input {}", tx.getInputs().indexOf(input));
log.warn("{}: {}", tx.getTxId(), ByteUtils.formatHex(tx.bitcoinSerialize())); log.warn("{}: {}", tx.getTxId(), ByteUtils.formatHex(tx.serialize()));
Transaction other = output.getSpentBy().getParentTransaction(); Transaction other = output.getSpentBy().getParentTransaction();
log.warn("{}: {}", other.getTxId(), ByteUtils.formatHex(other.bitcoinSerialize())); log.warn("{}: {}", other.getTxId(), ByteUtils.formatHex(other.serialize()));
} }
} else if (result == TransactionInput.ConnectionResult.SUCCESS) { } else if (result == TransactionInput.ConnectionResult.SUCCESS) {
// Otherwise we saw a transaction spend our coins, but we didn't try and spend them ourselves yet. // Otherwise we saw a transaction spend our coins, but we didn't try and spend them ourselves yet.
@ -4512,7 +4512,7 @@ public class Wallet extends BaseTaggableObject
signTransaction(req); signTransaction(req);
// Check size. // Check size.
final int size = req.tx.bitcoinSerialize().length; final int size = req.tx.serialize().length;
if (size > Transaction.MAX_STANDARD_TX_SIZE) if (size > Transaction.MAX_STANDARD_TX_SIZE)
throw new ExceededMaxTransactionSize(); throw new ExceededMaxTransactionSize();
@ -5721,7 +5721,7 @@ public class Wallet extends BaseTaggableObject
if (sign) if (sign)
signTransaction(req); signTransaction(req);
// KeyTimeCoinSelector should never select enough inputs to push us oversize. // KeyTimeCoinSelector should never select enough inputs to push us oversize.
checkState(rekeyTx.bitcoinSerialize().length < Transaction.MAX_STANDARD_TX_SIZE); checkState(rekeyTx.serialize().length < Transaction.MAX_STANDARD_TX_SIZE);
return rekeyTx; return rekeyTx;
} catch (VerificationException e) { } catch (VerificationException e) {
throw new RuntimeException(e); // Cannot happen. throw new RuntimeException(e); // Cannot happen.

View file

@ -93,6 +93,6 @@ public class AddressV1MessageTest {
assertEquals("6hzph5hv6337r6p2.onion", a3.getHostname()); assertEquals("6hzph5hv6337r6p2.onion", a3.getHostname());
assertEquals(0, a3.getPort()); assertEquals(0, a3.getPort());
assertEquals(MESSAGE_HEX, ByteUtils.formatHex(message.bitcoinSerialize())); assertEquals(MESSAGE_HEX, ByteUtils.formatHex(message.serialize()));
} }
} }

View file

@ -114,6 +114,6 @@ public class AddressV2MessageTest {
assertEquals("kpgvmscirrdqpekbqjsvw5teanhatztpp2gl6eee4zkowvwfxwenqaid.onion", a4.getHostname()); assertEquals("kpgvmscirrdqpekbqjsvw5teanhatztpp2gl6eee4zkowvwfxwenqaid.onion", a4.getHostname());
assertEquals(0, a4.getPort()); assertEquals(0, a4.getPort());
assertEquals(MESSAGE_HEX, ByteUtils.formatHex(message.bitcoinSerialize())); assertEquals(MESSAGE_HEX, ByteUtils.formatHex(message.serialize()));
} }
} }

View file

@ -77,18 +77,18 @@ public class BitcoinSerializerTest {
assertEquals("10.0.0.1", peerAddress.getAddr().getHostAddress()); assertEquals("10.0.0.1", peerAddress.getAddr().getHostAddress());
ByteArrayOutputStream bos = new ByteArrayOutputStream(ADDRESS_MESSAGE_BYTES.length); ByteArrayOutputStream bos = new ByteArrayOutputStream(ADDRESS_MESSAGE_BYTES.length);
serializer.serialize(addressMessage, bos); serializer.serialize(addressMessage, bos);
assertEquals(31, addressMessage.getMessageSize()); assertEquals(31, addressMessage.messageSize());
addressMessage.addAddress(PeerAddress.inet(InetAddress.getLocalHost(), MAINNET.getPort(), addressMessage.addAddress(PeerAddress.inet(InetAddress.getLocalHost(), MAINNET.getPort(),
Services.none(), TimeUtils.currentTime().truncatedTo(ChronoUnit.SECONDS))); Services.none(), TimeUtils.currentTime().truncatedTo(ChronoUnit.SECONDS)));
bos = new ByteArrayOutputStream(61); bos = new ByteArrayOutputStream(61);
serializer.serialize(addressMessage, bos); serializer.serialize(addressMessage, bos);
assertEquals(61, addressMessage.getMessageSize()); assertEquals(61, addressMessage.messageSize());
addressMessage.removeAddress(0); addressMessage.removeAddress(0);
bos = new ByteArrayOutputStream(31); bos = new ByteArrayOutputStream(31);
serializer.serialize(addressMessage, bos); serializer.serialize(addressMessage, bos);
assertEquals(31, addressMessage.getMessageSize()); assertEquals(31, addressMessage.messageSize());
//this wont be true due to dynamic timestamps. //this wont be true due to dynamic timestamps.
//assertTrue(LazyParseByteCacheTest.arrayContains(bos.toByteArray(), addrMessage)); //assertTrue(LazyParseByteCacheTest.arrayContains(bos.toByteArray(), addrMessage));

View file

@ -145,7 +145,7 @@ public class BlockTest {
@Test @Test
public void testHeaderParse() { public void testHeaderParse() {
Block header = block700000.cloneAsHeader(); Block header = block700000.cloneAsHeader();
Block reparsed = TESTNET.getDefaultSerializer().makeBlock(ByteBuffer.wrap(header.bitcoinSerialize())); Block reparsed = TESTNET.getDefaultSerializer().makeBlock(ByteBuffer.wrap(header.serialize()));
assertEquals(reparsed, header); assertEquals(reparsed, header);
} }
@ -155,7 +155,7 @@ public class BlockTest {
// proves that transaction serialization works, along with all its subobjects like scripts and in/outpoints. // proves that transaction serialization works, along with all its subobjects like scripts and in/outpoints.
// //
// NB: This tests the bitcoin serialization protocol. // NB: This tests the bitcoin serialization protocol.
assertArrayEquals(block700000Bytes, block700000.bitcoinSerialize()); assertArrayEquals(block700000Bytes, block700000.serialize());
} }
@Test @Test
@ -325,7 +325,7 @@ public class BlockTest {
stream.write(VarInt.of(Integer.MAX_VALUE).serialize()); stream.write(VarInt.of(Integer.MAX_VALUE).serialize());
} }
}; };
byte[] serializedBlock = block.bitcoinSerialize(); byte[] serializedBlock = block.serialize();
try { try {
TESTNET.getDefaultSerializer().makeBlock(ByteBuffer.wrap(serializedBlock)); TESTNET.getDefaultSerializer().makeBlock(ByteBuffer.wrap(serializedBlock));
fail("We expect BufferUnderflowException with the fixed code and OutOfMemoryError with the buggy code, so this is weird"); fail("We expect BufferUnderflowException with the fixed code and OutOfMemoryError with the buggy code, so this is weird");

View file

@ -54,7 +54,7 @@ public class BloomFilterTest {
assertTrue(filter.contains(ByteUtils.parseHex("b9300670b4c5366e95b2699e8b18bc75e5f729c5"))); assertTrue(filter.contains(ByteUtils.parseHex("b9300670b4c5366e95b2699e8b18bc75e5f729c5")));
// Value generated by Bitcoin Core // Value generated by Bitcoin Core
assertEquals("03614e9b050000000000000001", ByteUtils.formatHex(filter.bitcoinSerialize())); assertEquals("03614e9b050000000000000001", ByteUtils.formatHex(filter.serialize()));
} }
@Test @Test
@ -73,7 +73,7 @@ public class BloomFilterTest {
assertTrue(filter.contains(ByteUtils.parseHex("b9300670b4c5366e95b2699e8b18bc75e5f729c5"))); assertTrue(filter.contains(ByteUtils.parseHex("b9300670b4c5366e95b2699e8b18bc75e5f729c5")));
// Value generated by Bitcoin Core // Value generated by Bitcoin Core
assertEquals("03ce4299050000000100008002", ByteUtils.formatHex(filter.bitcoinSerialize())); assertEquals("03ce4299050000000100008002", ByteUtils.formatHex(filter.serialize()));
} }
@Test @Test
@ -97,6 +97,6 @@ public class BloomFilterTest {
BloomFilter filter = wallet.getBloomFilter(wallet.getBloomFilterElementCount(), 0.001, 0); BloomFilter filter = wallet.getBloomFilter(wallet.getBloomFilterElementCount(), 0.001, 0);
// Value generated by Bitcoin Core // Value generated by Bitcoin Core
assertEquals("082ae5edc8e51d4a03080000000000000002", ByteUtils.formatHex(filter.bitcoinSerialize())); assertEquals("082ae5edc8e51d4a03080000000000000002", ByteUtils.formatHex(filter.serialize()));
} }
} }

View file

@ -271,7 +271,7 @@ public class ChainSplitTest {
} }
private Block roundtrip(Block b2) throws ProtocolException { private Block roundtrip(Block b2) throws ProtocolException {
return TESTNET.getDefaultSerializer().makeBlock(ByteBuffer.wrap(b2.bitcoinSerialize())); return TESTNET.getDefaultSerializer().makeBlock(ByteBuffer.wrap(b2.serialize()));
} }
@Test @Test

View file

@ -39,7 +39,7 @@ public class FeeFilterMessageTest {
FeeFilterMessage ffm = FeeFilterMessage.read(ByteBuffer.wrap(buf)); FeeFilterMessage ffm = FeeFilterMessage.read(ByteBuffer.wrap(buf));
assertEquals(feeRate, ffm.feeRate()); assertEquals(feeRate, ffm.feeRate());
byte[] serialized = ffm.bitcoinSerialize(); byte[] serialized = ffm.serialize();
FeeFilterMessage ffm2 = FeeFilterMessage.read(ByteBuffer.wrap(serialized)); FeeFilterMessage ffm2 = FeeFilterMessage.read(ByteBuffer.wrap(serialized));
assertEquals(feeRate, ffm2.feeRate()); assertEquals(feeRate, ffm2.feeRate());
} }

View file

@ -193,7 +193,7 @@ public class FullBlockTestGenerator {
if (outStream != null && element instanceof BlockAndValidity) { if (outStream != null && element instanceof BlockAndValidity) {
try { try {
ByteUtils.writeInt32BE(params.getPacketMagic(), outStream); ByteUtils.writeInt32BE(params.getPacketMagic(), outStream);
byte[] block = ((BlockAndValidity) element).block.bitcoinSerialize(); byte[] block = ((BlockAndValidity) element).block.serialize();
byte[] length = new byte[4]; byte[] length = new byte[4];
ByteUtils.writeInt32LE(block.length, length, 0); ByteUtils.writeInt32LE(block.length, length, 0);
outStream.write(length); outStream.write(length);
@ -447,28 +447,28 @@ public class FullBlockTestGenerator {
NewBlock b23 = createNextBlock(b15, chainHeadHeight + 7, out6, null); NewBlock b23 = createNextBlock(b15, chainHeadHeight + 7, out6, null);
{ {
Transaction tx = new Transaction(); Transaction tx = new Transaction();
byte[] outputScript = new byte[Block.MAX_BLOCK_SIZE - b23.block.getMessageSize() - 65]; byte[] outputScript = new byte[Block.MAX_BLOCK_SIZE - b23.block.messageSize() - 65];
Arrays.fill(outputScript, (byte) OP_FALSE); Arrays.fill(outputScript, (byte) OP_FALSE);
tx.addOutput(new TransactionOutput(tx, ZERO, outputScript)); tx.addOutput(new TransactionOutput(tx, ZERO, outputScript));
addOnlyInputToTransaction(tx, b23); addOnlyInputToTransaction(tx, b23);
b23.addTransaction(tx); b23.addTransaction(tx);
} }
b23.solve(); b23.solve();
checkState(b23.block.getMessageSize() == Block.MAX_BLOCK_SIZE); checkState(b23.block.messageSize() == Block.MAX_BLOCK_SIZE);
blocks.add(new BlockAndValidity(b23, true, false, b23.getHash(), chainHeadHeight + 7, "b23")); blocks.add(new BlockAndValidity(b23, true, false, b23.getHash(), chainHeadHeight + 7, "b23"));
spendableOutputs.offer(b23.getCoinbaseOutput()); spendableOutputs.offer(b23.getCoinbaseOutput());
NewBlock b24 = createNextBlock(b15, chainHeadHeight + 7, out6, null); NewBlock b24 = createNextBlock(b15, chainHeadHeight + 7, out6, null);
{ {
Transaction tx = new Transaction(); Transaction tx = new Transaction();
byte[] outputScript = new byte[Block.MAX_BLOCK_SIZE - b24.block.getMessageSize() - 64]; byte[] outputScript = new byte[Block.MAX_BLOCK_SIZE - b24.block.messageSize() - 64];
Arrays.fill(outputScript, (byte) OP_FALSE); Arrays.fill(outputScript, (byte) OP_FALSE);
tx.addOutput(new TransactionOutput(tx, ZERO, outputScript)); tx.addOutput(new TransactionOutput(tx, ZERO, outputScript));
addOnlyInputToTransaction(tx, b24); addOnlyInputToTransaction(tx, b24);
b24.addTransaction(tx); b24.addTransaction(tx);
} }
b24.solve(); b24.solve();
checkState(b24.block.getMessageSize() == Block.MAX_BLOCK_SIZE + 1); checkState(b24.block.messageSize() == Block.MAX_BLOCK_SIZE + 1);
blocks.add(new BlockAndValidity(b24, false, true, b23.getHash(), chainHeadHeight + 7, "b24")); blocks.add(new BlockAndValidity(b24, false, true, b23.getHash(), chainHeadHeight + 7, "b24"));
// Extend the b24 chain to make sure bitcoind isn't accepting b24 // Extend the b24 chain to make sure bitcoind isn't accepting b24
@ -717,7 +717,7 @@ public class FullBlockTestGenerator {
} }
b39numP2SHOutputs++; b39numP2SHOutputs++;
while (b39.block.getMessageSize() < Block.MAX_BLOCK_SIZE) while (b39.block.messageSize() < Block.MAX_BLOCK_SIZE)
{ {
Transaction tx = new Transaction(); Transaction tx = new Transaction();
@ -727,7 +727,7 @@ public class FullBlockTestGenerator {
tx.addInput(new TransactionInput(tx, new byte[]{OP_1}, lastOutPoint)); tx.addInput(new TransactionInput(tx, new byte[]{OP_1}, lastOutPoint));
lastOutPoint = new TransactionOutPoint(1, tx.getTxId()); lastOutPoint = new TransactionOutPoint(1, tx.getTxId());
if (b39.block.getMessageSize() + tx.getMessageSize() < Block.MAX_BLOCK_SIZE) { if (b39.block.messageSize() + tx.messageSize() < Block.MAX_BLOCK_SIZE) {
b39.addTransaction(tx); b39.addTransaction(tx);
b39numP2SHOutputs++; b39numP2SHOutputs++;
} else } else
@ -1066,7 +1066,7 @@ public class FullBlockTestGenerator {
Block b56; Block b56;
try { try {
b56 = params.getDefaultSerializer().makeBlock(ByteBuffer.wrap(b57.block.bitcoinSerialize())); b56 = params.getDefaultSerializer().makeBlock(ByteBuffer.wrap(b57.block.serialize()));
} catch (ProtocolException e) { } catch (ProtocolException e) {
throw new RuntimeException(e); // Cannot happen. throw new RuntimeException(e); // Cannot happen.
} }
@ -1107,7 +1107,7 @@ public class FullBlockTestGenerator {
Block b56p2; Block b56p2;
try { try {
b56p2 = params.getDefaultSerializer().makeBlock(ByteBuffer.wrap(b57p2.block.bitcoinSerialize())); b56p2 = params.getDefaultSerializer().makeBlock(ByteBuffer.wrap(b57p2.block.serialize()));
} catch (ProtocolException e) { } catch (ProtocolException e) {
throw new RuntimeException(e); // Cannot happen. throw new RuntimeException(e); // Cannot happen.
} }
@ -1207,15 +1207,15 @@ public class FullBlockTestGenerator {
{ {
b64Original = createNextBlock(b60, chainHeadHeight + 19, out18, null); b64Original = createNextBlock(b60, chainHeadHeight + 19, out18, null);
Transaction tx = new Transaction(); Transaction tx = new Transaction();
byte[] outputScript = new byte[Block.MAX_BLOCK_SIZE - b64Original.block.getMessageSize() - 65]; byte[] outputScript = new byte[Block.MAX_BLOCK_SIZE - b64Original.block.messageSize() - 65];
Arrays.fill(outputScript, (byte) OP_FALSE); Arrays.fill(outputScript, (byte) OP_FALSE);
tx.addOutput(new TransactionOutput(tx, ZERO, outputScript)); tx.addOutput(new TransactionOutput(tx, ZERO, outputScript));
addOnlyInputToTransaction(tx, b64Original); addOnlyInputToTransaction(tx, b64Original);
b64Original.addTransaction(tx); b64Original.addTransaction(tx);
b64Original.solve(); b64Original.solve();
checkState(b64Original.block.getMessageSize() == Block.MAX_BLOCK_SIZE); checkState(b64Original.block.messageSize() == Block.MAX_BLOCK_SIZE);
ByteArrayOutputStream stream = new ByteArrayOutputStream(b64Original.block.getMessageSize() + 8); ByteArrayOutputStream stream = new ByteArrayOutputStream(b64Original.block.messageSize() + 8);
b64Original.block.writeHeader(stream); b64Original.block.writeHeader(stream);
byte[] varIntBytes = new byte[9]; byte[] varIntBytes = new byte[9];
@ -1230,7 +1230,7 @@ public class FullBlockTestGenerator {
// The following checks are checking to ensure block serialization functions in the way needed for this test // The following checks are checking to ensure block serialization functions in the way needed for this test
// If they fail, it is likely not an indication of error, but an indication that this test needs rewritten // If they fail, it is likely not an indication of error, but an indication that this test needs rewritten
checkState(stream.size() == b64Original.block.getMessageSize() + 8); checkState(stream.size() == b64Original.block.messageSize() + 8);
// This check fails because it was created for "retain mode" and the likely encoding is not "optimal". // This check fails because it was created for "retain mode" and the likely encoding is not "optimal".
// We since removed this capability retain the original encoding, but could not rewrite this test data. // We since removed this capability retain the original encoding, but could not rewrite this test data.
// checkState(stream.size() == b64.getMessageSize()); // checkState(stream.size() == b64.getMessageSize());
@ -1356,7 +1356,7 @@ public class FullBlockTestGenerator {
} }
b72.solve(); b72.solve();
Block b71 = params.getDefaultSerializer().makeBlock(ByteBuffer.wrap(b72.block.bitcoinSerialize())); Block b71 = params.getDefaultSerializer().makeBlock(ByteBuffer.wrap(b72.block.serialize()));
b71.addTransaction(b72.block.getTransactions().get(2)); b71.addTransaction(b72.block.getTransactions().get(2));
checkState(b71.getHash().equals(b72.getHash())); checkState(b71.getHash().equals(b72.getHash()));
blocks.add(new BlockAndValidity(b71, false, true, b69.getHash(), chainHeadHeight + 21, "b71")); blocks.add(new BlockAndValidity(b71, false, true, b69.getHash(), chainHeadHeight + 21, "b71"));
@ -1631,7 +1631,7 @@ public class FullBlockTestGenerator {
for (int i = 0; i < LARGE_REORG_SIZE; i++) { for (int i = 0; i < LARGE_REORG_SIZE; i++) {
nextBlock = createNextBlock(nextBlock, nextHeight, largeReorgOutput, null); nextBlock = createNextBlock(nextBlock, nextHeight, largeReorgOutput, null);
Transaction tx = new Transaction(); Transaction tx = new Transaction();
byte[] outputScript = new byte[Block.MAX_BLOCK_SIZE - nextBlock.block.getMessageSize() - 65]; byte[] outputScript = new byte[Block.MAX_BLOCK_SIZE - nextBlock.block.messageSize() - 65];
Arrays.fill(outputScript, (byte) OP_FALSE); Arrays.fill(outputScript, (byte) OP_FALSE);
tx.addOutput(new TransactionOutput(tx, ZERO, outputScript)); tx.addOutput(new TransactionOutput(tx, ZERO, outputScript));
addOnlyInputToTransaction(tx, nextBlock); addOnlyInputToTransaction(tx, nextBlock);
@ -1682,7 +1682,7 @@ public class FullBlockTestGenerator {
final int TRANSACTION_CREATION_BLOCKS = 100; final int TRANSACTION_CREATION_BLOCKS = 100;
for (blockCountAfter1001 = 0; blockCountAfter1001 < TRANSACTION_CREATION_BLOCKS; blockCountAfter1001++) { for (blockCountAfter1001 = 0; blockCountAfter1001 < TRANSACTION_CREATION_BLOCKS; blockCountAfter1001++) {
NewBlock block = createNextBlock(lastBlock, nextHeight++, null, null); NewBlock block = createNextBlock(lastBlock, nextHeight++, null, null);
while (block.block.getMessageSize() < Block.MAX_BLOCK_SIZE - 500) { while (block.block.messageSize() < Block.MAX_BLOCK_SIZE - 500) {
Transaction tx = new Transaction(); Transaction tx = new Transaction();
tx.addInput(lastOutput.hash(), lastOutput.index(), OP_NOP_SCRIPT); tx.addInput(lastOutput.hash(), lastOutput.index(), OP_NOP_SCRIPT);
tx.addOutput(ZERO, OP_TRUE_SCRIPT); tx.addOutput(ZERO, OP_TRUE_SCRIPT);
@ -1700,7 +1700,7 @@ public class FullBlockTestGenerator {
Iterator<Sha256Hash> hashes = hashesToSpend.iterator(); Iterator<Sha256Hash> hashes = hashesToSpend.iterator();
for (int i = 0; hashes.hasNext(); i++) { for (int i = 0; hashes.hasNext(); i++) {
NewBlock block = createNextBlock(lastBlock, nextHeight++, null, null); NewBlock block = createNextBlock(lastBlock, nextHeight++, null, null);
while (block.block.getMessageSize() < Block.MAX_BLOCK_SIZE - 500 && hashes.hasNext()) { while (block.block.messageSize() < Block.MAX_BLOCK_SIZE - 500 && hashes.hasNext()) {
Transaction tx = new Transaction(); Transaction tx = new Transaction();
tx.addInput(hashes.next(), 0, OP_NOP_SCRIPT); tx.addInput(hashes.next(), 0, OP_NOP_SCRIPT);
tx.addOutput(ZERO, OP_TRUE_SCRIPT); tx.addOutput(ZERO, OP_TRUE_SCRIPT);

View file

@ -98,17 +98,17 @@ public class ParseByteCacheTest {
ByteArrayOutputStream bos = new ByteArrayOutputStream(); ByteArrayOutputStream bos = new ByteArrayOutputStream();
serializer.serialize(tx1, bos); serializer.serialize(tx1, bos);
tx1BytesWithHeader = bos.toByteArray(); tx1BytesWithHeader = bos.toByteArray();
tx1Bytes = tx1.bitcoinSerialize(); tx1Bytes = tx1.serialize();
bos.reset(); bos.reset();
serializer.serialize(tx2, bos); serializer.serialize(tx2, bos);
tx2BytesWithHeader = bos.toByteArray(); tx2BytesWithHeader = bos.toByteArray();
tx2Bytes = tx2.bitcoinSerialize(); tx2Bytes = tx2.serialize();
bos.reset(); bos.reset();
serializer.serialize(b1, bos); serializer.serialize(b1, bos);
b1BytesWithHeader = bos.toByteArray(); b1BytesWithHeader = bos.toByteArray();
b1Bytes = b1.bitcoinSerialize(); b1Bytes = b1.serialize();
} }
@Test @Test

View file

@ -173,7 +173,7 @@ public class TransactionTest {
@Test @Test
public void testMessageSize() { public void testMessageSize() {
Transaction tx = new Transaction(); Transaction tx = new Transaction();
int length = tx.getMessageSize(); int length = tx.messageSize();
// add fake transaction input // add fake transaction input
TransactionInput input = new TransactionInput(null, ScriptBuilder.createEmpty().program(), TransactionInput input = new TransactionInput(null, ScriptBuilder.createEmpty().program(),
@ -187,7 +187,7 @@ public class TransactionTest {
length += output.getMessageSize(); length += output.getMessageSize();
// message size has now grown // message size has now grown
assertEquals(length, tx.getMessageSize()); assertEquals(length, tx.messageSize());
} }
@Test @Test
@ -223,7 +223,7 @@ public class TransactionTest {
// verify signature // verify signature
input.getScriptSig().correctlySpends(tx, 0, null, null, ScriptBuilder.createOutputScript(fromAddress), null); input.getScriptSig().correctlySpends(tx, 0, null, null, ScriptBuilder.createOutputScript(fromAddress), null);
byte[] rawTx = tx.bitcoinSerialize(); byte[] rawTx = tx.serialize();
assertNotNull(rawTx); assertNotNull(rawTx);
} }
@ -246,7 +246,7 @@ public class TransactionTest {
input.getScriptSig().correctlySpends(tx, 0, input.getWitness(), input.getValue(), input.getScriptSig().correctlySpends(tx, 0, input.getWitness(), input.getValue(),
ScriptBuilder.createOutputScript(fromAddress), null); ScriptBuilder.createOutputScript(fromAddress), null);
byte[] rawTx = tx.bitcoinSerialize(); byte[] rawTx = tx.serialize();
assertNotNull(rawTx); assertNotNull(rawTx);
} }
@ -264,11 +264,11 @@ public class TransactionTest {
for (TransactionInput in : tx.getInputs()) for (TransactionInput in : tx.getInputs())
assertFalse(in.hasWitness()); assertFalse(in.hasWitness());
assertEquals(3, tx.getOutputs().size()); assertEquals(3, tx.getOutputs().size());
assertEquals(hex, ByteUtils.formatHex(tx.bitcoinSerialize())); assertEquals(hex, ByteUtils.formatHex(tx.serialize()));
assertEquals("Uncorrect hash", "38d4cfeb57d6685753b7a3b3534c3cb576c34ca7344cd4582f9613ebf0c2b02a", assertEquals("Uncorrect hash", "38d4cfeb57d6685753b7a3b3534c3cb576c34ca7344cd4582f9613ebf0c2b02a",
tx.getTxId().toString()); tx.getTxId().toString());
assertEquals(tx.getWTxId(), tx.getTxId()); assertEquals(tx.getWTxId(), tx.getTxId());
assertEquals(hex.length() / 2, tx.getMessageSize()); assertEquals(hex.length() / 2, tx.messageSize());
// Roundtrip with witness // Roundtrip with witness
hex = "0100000000010213206299feb17742091c3cb2ab45faa3aa87922d3c030cafb3f798850a2722bf0000000000feffffffa12f2424b9599898a1d30f06e1ce55eba7fabfeee82ae9356f07375806632ff3010000006b483045022100fcc8cf3014248e1a0d6dcddf03e80f7e591605ad0dbace27d2c0d87274f8cd66022053fcfff64f35f22a14deb657ac57f110084fb07bb917c3b42e7d033c54c7717b012102b9e4dcc33c9cc9cb5f42b96dddb3b475b067f3e21125f79e10c853e5ca8fba31feffffff02206f9800000000001976a9144841b9874d913c430048c78a7b18baebdbea440588ac8096980000000000160014e4873ef43eac347471dd94bc899c51b395a509a502483045022100dd8250f8b5c2035d8feefae530b10862a63030590a851183cb61b3672eb4f26e022057fe7bc8593f05416c185d829b574290fb8706423451ebd0a0ae50c276b87b43012102179862f40b85fa43487500f1d6b13c864b5eb0a83999738db0f7a6b91b2ec64f00db080000"; hex = "0100000000010213206299feb17742091c3cb2ab45faa3aa87922d3c030cafb3f798850a2722bf0000000000feffffffa12f2424b9599898a1d30f06e1ce55eba7fabfeee82ae9356f07375806632ff3010000006b483045022100fcc8cf3014248e1a0d6dcddf03e80f7e591605ad0dbace27d2c0d87274f8cd66022053fcfff64f35f22a14deb657ac57f110084fb07bb917c3b42e7d033c54c7717b012102b9e4dcc33c9cc9cb5f42b96dddb3b475b067f3e21125f79e10c853e5ca8fba31feffffff02206f9800000000001976a9144841b9874d913c430048c78a7b18baebdbea440588ac8096980000000000160014e4873ef43eac347471dd94bc899c51b395a509a502483045022100dd8250f8b5c2035d8feefae530b10862a63030590a851183cb61b3672eb4f26e022057fe7bc8593f05416c185d829b574290fb8706423451ebd0a0ae50c276b87b43012102179862f40b85fa43487500f1d6b13c864b5eb0a83999738db0f7a6b91b2ec64f00db080000";
@ -278,11 +278,11 @@ public class TransactionTest {
assertTrue(tx.getInput(0).hasWitness()); assertTrue(tx.getInput(0).hasWitness());
assertFalse(tx.getInput(1).hasWitness()); assertFalse(tx.getInput(1).hasWitness());
assertEquals(2, tx.getOutputs().size()); assertEquals(2, tx.getOutputs().size());
assertEquals(hex, ByteUtils.formatHex(tx.bitcoinSerialize())); assertEquals(hex, ByteUtils.formatHex(tx.serialize()));
assertEquals("Uncorrect hash", "99e7484eafb6e01622c395c8cae7cb9f8822aab6ba993696b39df8b60b0f4b11", assertEquals("Uncorrect hash", "99e7484eafb6e01622c395c8cae7cb9f8822aab6ba993696b39df8b60b0f4b11",
tx.getTxId().toString()); tx.getTxId().toString());
assertNotEquals(tx.getWTxId(), tx.getTxId()); assertNotEquals(tx.getWTxId(), tx.getTxId());
assertEquals(hex.length() / 2, tx.getMessageSize()); assertEquals(hex.length() / 2, tx.messageSize());
} }
@Test @Test
@ -298,8 +298,8 @@ public class TransactionTest {
+ "9093510d00000000" + "1976a914" + "3bde42dbee7e4dbe6a21b2d50ce2f0167faa8159" + "88ac" // txOut + "9093510d00000000" + "1976a914" + "3bde42dbee7e4dbe6a21b2d50ce2f0167faa8159" + "88ac" // txOut
+ "11000000"; // nLockTime + "11000000"; // nLockTime
Transaction tx = Transaction.read(ByteBuffer.wrap(ByteUtils.parseHex(txHex))); Transaction tx = Transaction.read(ByteBuffer.wrap(ByteUtils.parseHex(txHex)));
assertEquals(txHex, ByteUtils.formatHex(tx.bitcoinSerialize())); assertEquals(txHex, ByteUtils.formatHex(tx.serialize()));
assertEquals(txHex.length() / 2, tx.getMessageSize()); assertEquals(txHex.length() / 2, tx.messageSize());
assertEquals(2, tx.getInputs().size()); assertEquals(2, tx.getInputs().size());
assertEquals(2, tx.getOutputs().size()); assertEquals(2, tx.getOutputs().size());
TransactionInput txIn0 = tx.getInput(0); TransactionInput txIn0 = tx.getInput(0);
@ -363,8 +363,8 @@ public class TransactionTest {
+ "21" // push length + "21" // push length
+ "025476c2e83188368da1ff3e292e7acafcdb3566bb0ad253f62fc70f07aeee6357" // push + "025476c2e83188368da1ff3e292e7acafcdb3566bb0ad253f62fc70f07aeee6357" // push
+ "11000000"; // nLockTime + "11000000"; // nLockTime
assertEquals(signedTxHex, ByteUtils.formatHex(tx.bitcoinSerialize())); assertEquals(signedTxHex, ByteUtils.formatHex(tx.serialize()));
assertEquals(signedTxHex.length() / 2, tx.getMessageSize()); assertEquals(signedTxHex.length() / 2, tx.messageSize());
} }
@Test @Test
@ -379,8 +379,8 @@ public class TransactionTest {
+ "0008af2f00000000" + "1976a914" + "fd270b1ee6abcaea97fea7ad0402e8bd8ad6d77c" + "88ac" // txOut + "0008af2f00000000" + "1976a914" + "fd270b1ee6abcaea97fea7ad0402e8bd8ad6d77c" + "88ac" // txOut
+ "92040000"; // nLockTime + "92040000"; // nLockTime
Transaction tx = Transaction.read(ByteBuffer.wrap(ByteUtils.parseHex(txHex))); Transaction tx = Transaction.read(ByteBuffer.wrap(ByteUtils.parseHex(txHex)));
assertEquals(txHex, ByteUtils.formatHex(tx.bitcoinSerialize())); assertEquals(txHex, ByteUtils.formatHex(tx.serialize()));
assertEquals(txHex.length() / 2, tx.getMessageSize()); assertEquals(txHex.length() / 2, tx.messageSize());
assertEquals(1, tx.getInputs().size()); assertEquals(1, tx.getInputs().size());
assertEquals(2, tx.getOutputs().size()); assertEquals(2, tx.getOutputs().size());
TransactionInput txIn = tx.getInput(0); TransactionInput txIn = tx.getInput(0);
@ -433,8 +433,8 @@ public class TransactionTest {
+ "21" // push length + "21" // push length
+ "03ad1d8e89212f0b92c74d23bb710c00662ad1470198ac48c43f7d6f93a2a26873" // push + "03ad1d8e89212f0b92c74d23bb710c00662ad1470198ac48c43f7d6f93a2a26873" // push
+ "92040000"; // nLockTime + "92040000"; // nLockTime
assertEquals(signedTxHex, ByteUtils.formatHex(tx.bitcoinSerialize())); assertEquals(signedTxHex, ByteUtils.formatHex(tx.serialize()));
assertEquals(signedTxHex.length() / 2, tx.getMessageSize()); assertEquals(signedTxHex.length() / 2, tx.messageSize());
} }
@Test @Test
@ -568,7 +568,7 @@ public class TransactionTest {
@Test @Test
public void testPrioSizeCalc() { public void testPrioSizeCalc() {
Transaction tx1 = FakeTxBuilder.createFakeTx(TESTNET.network(), Coin.COIN, ADDRESS); Transaction tx1 = FakeTxBuilder.createFakeTx(TESTNET.network(), Coin.COIN, ADDRESS);
int size1 = tx1.getMessageSize(); int size1 = tx1.messageSize();
int size2 = tx1.getMessageSizeForPriorityCalc(); int size2 = tx1.getMessageSizeForPriorityCalc();
assertEquals(113, size1 - size2); assertEquals(113, size1 - size2);
tx1.getInput(0).setScriptSig(Script.parse(new byte[109])); tx1.getInput(0).setScriptSig(Script.parse(new byte[109]));
@ -669,7 +669,7 @@ public class TransactionTest {
@Test @Test
public void parseTransactionWithHugeDeclaredInputsSize() { public void parseTransactionWithHugeDeclaredInputsSize() {
Transaction tx = new HugeDeclaredSizeTransaction(true, false, false); Transaction tx = new HugeDeclaredSizeTransaction(true, false, false);
byte[] serializedTx = tx.bitcoinSerialize(); byte[] serializedTx = tx.serialize();
try { try {
Transaction.read(ByteBuffer.wrap(serializedTx)); Transaction.read(ByteBuffer.wrap(serializedTx));
fail("We expect BufferUnderflowException with the fixed code and OutOfMemoryError with the buggy code, so this is weird"); fail("We expect BufferUnderflowException with the fixed code and OutOfMemoryError with the buggy code, so this is weird");
@ -681,7 +681,7 @@ public class TransactionTest {
@Test @Test
public void parseTransactionWithHugeDeclaredOutputsSize() { public void parseTransactionWithHugeDeclaredOutputsSize() {
Transaction tx = new HugeDeclaredSizeTransaction(false, true, false); Transaction tx = new HugeDeclaredSizeTransaction(false, true, false);
byte[] serializedTx = tx.bitcoinSerialize(); byte[] serializedTx = tx.serialize();
try { try {
Transaction.read(ByteBuffer.wrap(serializedTx)); Transaction.read(ByteBuffer.wrap(serializedTx));
fail("We expect BufferUnderflowException with the fixed code and OutOfMemoryError with the buggy code, so this is weird"); fail("We expect BufferUnderflowException with the fixed code and OutOfMemoryError with the buggy code, so this is weird");
@ -693,7 +693,7 @@ public class TransactionTest {
@Test @Test
public void parseTransactionWithHugeDeclaredWitnessPushCountSize() { public void parseTransactionWithHugeDeclaredWitnessPushCountSize() {
Transaction tx = new HugeDeclaredSizeTransaction(false, false, true); Transaction tx = new HugeDeclaredSizeTransaction(false, false, true);
byte[] serializedTx = tx.bitcoinSerialize(); byte[] serializedTx = tx.serialize();
try { try {
Transaction.read(ByteBuffer.wrap(serializedTx)); Transaction.read(ByteBuffer.wrap(serializedTx));
fail("We expect BufferUnderflowException with the fixed code and OutOfMemoryError with the buggy code, so this is weird"); fail("We expect BufferUnderflowException with the fixed code and OutOfMemoryError with the buggy code, so this is weird");
@ -767,7 +767,7 @@ public class TransactionTest {
// example from https://en.bitcoin.it/wiki/Weight_units // example from https://en.bitcoin.it/wiki/Weight_units
String txHex = "0100000000010115e180dc28a2327e687facc33f10f2a20da717e5548406f7ae8b4c811072f85603000000171600141d7cd6c75c2e86f4cbf98eaed221b30bd9a0b928ffffffff019caef505000000001976a9141d7cd6c75c2e86f4cbf98eaed221b30bd9a0b92888ac02483045022100f764287d3e99b1474da9bec7f7ed236d6c81e793b20c4b5aa1f3051b9a7daa63022016a198031d5554dbb855bdbe8534776a4be6958bd8d530dc001c32b828f6f0ab0121038262a6c6cec93c2d3ecd6c6072efea86d02ff8e3328bbd0242b20af3425990ac00000000"; String txHex = "0100000000010115e180dc28a2327e687facc33f10f2a20da717e5548406f7ae8b4c811072f85603000000171600141d7cd6c75c2e86f4cbf98eaed221b30bd9a0b928ffffffff019caef505000000001976a9141d7cd6c75c2e86f4cbf98eaed221b30bd9a0b92888ac02483045022100f764287d3e99b1474da9bec7f7ed236d6c81e793b20c4b5aa1f3051b9a7daa63022016a198031d5554dbb855bdbe8534776a4be6958bd8d530dc001c32b828f6f0ab0121038262a6c6cec93c2d3ecd6c6072efea86d02ff8e3328bbd0242b20af3425990ac00000000";
Transaction tx = Transaction.read(ByteBuffer.wrap(ByteUtils.parseHex(txHex))); Transaction tx = Transaction.read(ByteBuffer.wrap(ByteUtils.parseHex(txHex)));
assertEquals(218, tx.getMessageSize()); assertEquals(218, tx.messageSize());
assertEquals(542, tx.getWeight()); assertEquals(542, tx.getWeight());
assertEquals(136, tx.getVsize()); assertEquals(136, tx.getVsize());
} }
@ -777,7 +777,7 @@ public class TransactionTest {
// Non segwit tx with zero input and outputs // Non segwit tx with zero input and outputs
String txHex = "010000000000f1f2f3f4"; String txHex = "010000000000f1f2f3f4";
Transaction tx = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(ByteUtils.parseHex(txHex))); Transaction tx = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(ByteUtils.parseHex(txHex)));
assertEquals(txHex, ByteUtils.formatHex(tx.bitcoinSerialize())); assertEquals(txHex, ByteUtils.formatHex(tx.serialize()));
} }
@Test @Test
@ -788,6 +788,6 @@ public class TransactionTest {
String txHex = "0100000000010100000000000000016af1f2f3f4"; String txHex = "0100000000010100000000000000016af1f2f3f4";
int protoVersionNoWitness = serializer.getProtocolVersion() | Transaction.SERIALIZE_TRANSACTION_NO_WITNESS; int protoVersionNoWitness = serializer.getProtocolVersion() | Transaction.SERIALIZE_TRANSACTION_NO_WITNESS;
Transaction tx = serializer.withProtocolVersion(protoVersionNoWitness).makeTransaction(ByteBuffer.wrap(ByteUtils.parseHex(txHex))); Transaction tx = serializer.withProtocolVersion(protoVersionNoWitness).makeTransaction(ByteBuffer.wrap(ByteUtils.parseHex(txHex)));
assertEquals(txHex, ByteUtils.formatHex(tx.bitcoinSerialize())); assertEquals(txHex, ByteUtils.formatHex(tx.serialize()));
} }
} }

View file

@ -68,7 +68,7 @@ public class TxConfidenceTableTest {
@Test @Test
public void pinHandlers() { public void pinHandlers() {
Transaction tx = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(tx1.bitcoinSerialize())); Transaction tx = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(tx1.serialize()));
Sha256Hash hash = tx.getTxId(); Sha256Hash hash = tx.getTxId();
table.seen(hash, address1); table.seen(hash, address1);
assertEquals(1, tx.getConfidence().numBroadcastPeers()); assertEquals(1, tx.getConfidence().numBroadcastPeers());

View file

@ -74,7 +74,7 @@ public class VersionMessageTest {
ver.subVer = "/bitcoinj/"; ver.subVer = "/bitcoinj/";
ver.localServices = Services.of(1); ver.localServices = Services.of(1);
ver.receivingAddr = new InetSocketAddress(InetAddress.getByName("4.3.2.1"), 8333); ver.receivingAddr = new InetSocketAddress(InetAddress.getByName("4.3.2.1"), 8333);
byte[] serialized = ver.bitcoinSerialize(); byte[] serialized = ver.serialize();
VersionMessage ver2 = VersionMessage.read(ByteBuffer.wrap(serialized)); VersionMessage ver2 = VersionMessage.read(ByteBuffer.wrap(serialized));
assertEquals(1234, ver2.bestHeight); assertEquals(1234, ver2.bestHeight);
assertEquals(Instant.ofEpochSecond(23456), ver2.time); assertEquals(Instant.ofEpochSecond(23456), ver2.time);
@ -92,7 +92,7 @@ public class VersionMessageTest {
ver.subVer = "/bitcoinj/"; ver.subVer = "/bitcoinj/";
ver.localServices = Services.of(1); ver.localServices = Services.of(1);
ver.receivingAddr = new InetSocketAddress(InetAddress.getByName("2002:db8:85a3:0:0:8a2e:370:7335"), 8333); ver.receivingAddr = new InetSocketAddress(InetAddress.getByName("2002:db8:85a3:0:0:8a2e:370:7335"), 8333);
byte[] serialized = ver.bitcoinSerialize(); byte[] serialized = ver.serialize();
VersionMessage ver2 = VersionMessage.read(ByteBuffer.wrap(serialized)); VersionMessage ver2 = VersionMessage.read(ByteBuffer.wrap(serialized));
assertEquals(1234, ver2.bestHeight); assertEquals(1234, ver2.bestHeight);
assertEquals(Instant.ofEpochSecond(23456), ver2.time); assertEquals(Instant.ofEpochSecond(23456), ver2.time);

View file

@ -147,7 +147,7 @@ public class WalletProtobufSerializerTest {
assertEquals(1, wallet1.getTransactions(true).size()); assertEquals(1, wallet1.getTransactions(true).size());
assertEquals(v1, wallet1.getBalance(Wallet.BalanceType.ESTIMATED)); assertEquals(v1, wallet1.getBalance(Wallet.BalanceType.ESTIMATED));
Transaction t1copy = wallet1.getTransaction(t1.getTxId()); Transaction t1copy = wallet1.getTransaction(t1.getTxId());
assertArrayEquals(t1.bitcoinSerialize(), t1copy.bitcoinSerialize()); assertArrayEquals(t1.serialize(), t1copy.serialize());
assertEquals(2, t1copy.getConfidence().numBroadcastPeers()); assertEquals(2, t1copy.getConfidence().numBroadcastPeers());
assertNotNull(t1copy.getConfidence().lastBroadcastTime()); assertNotNull(t1copy.getConfidence().lastBroadcastTime());
assertEquals(TransactionConfidence.Source.NETWORK, t1copy.getConfidence().getSource()); assertEquals(TransactionConfidence.Source.NETWORK, t1copy.getConfidence().getSource());

View file

@ -693,7 +693,7 @@ public class WalletTest extends TestWithWallet {
// Send 0.10 to somebody else. // Send 0.10 to somebody else.
Transaction send1 = wallet.createSend(OTHER_ADDRESS, valueOf(0, 10)); Transaction send1 = wallet.createSend(OTHER_ADDRESS, valueOf(0, 10));
// Reserialize. // Reserialize.
Transaction send2 = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(send1.bitcoinSerialize())); Transaction send2 = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(send1.serialize()));
assertEquals(nanos, send2.getValueSentFromMe(wallet)); assertEquals(nanos, send2.getValueSentFromMe(wallet));
assertEquals(ZERO.subtract(valueOf(0, 10)), send2.getValue(wallet)); assertEquals(ZERO.subtract(valueOf(0, 10)), send2.getValue(wallet));
} }
@ -709,7 +709,7 @@ public class WalletTest extends TestWithWallet {
assertTrue(wallet.isConsistent()); assertTrue(wallet.isConsistent());
Transaction txClone = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(tx.bitcoinSerialize())); Transaction txClone = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(tx.serialize()));
try { try {
wallet.receiveFromBlock(txClone, null, BlockChain.NewBlockType.BEST_CHAIN, 0); wallet.receiveFromBlock(txClone, null, BlockChain.NewBlockType.BEST_CHAIN, 0);
fail("Illegal argument not thrown when it should have been."); fail("Illegal argument not thrown when it should have been.");
@ -837,7 +837,7 @@ public class WalletTest extends TestWithWallet {
// Create a double spend of just the first one. // Create a double spend of just the first one.
Address BAD_GUY = new ECKey().toAddress(ScriptType.P2PKH, BitcoinNetwork.TESTNET); Address BAD_GUY = new ECKey().toAddress(ScriptType.P2PKH, BitcoinNetwork.TESTNET);
Transaction send2 = wallet.createSend(BAD_GUY, COIN); Transaction send2 = wallet.createSend(BAD_GUY, COIN);
send2 = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(send2.bitcoinSerialize())); send2 = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(send2.serialize()));
// Broadcast send1, it's now pending. // Broadcast send1, it's now pending.
wallet.commitTx(send1); wallet.commitTx(send1);
assertEquals(ZERO, wallet.getBalance()); // change of 10 cents is not yet mined so not included in the balance. assertEquals(ZERO, wallet.getBalance()); // change of 10 cents is not yet mined so not included in the balance.
@ -862,7 +862,7 @@ public class WalletTest extends TestWithWallet {
sendMoneyToWallet(AbstractBlockChain.NewBlockType.BEST_CHAIN, value.add(value2)); sendMoneyToWallet(AbstractBlockChain.NewBlockType.BEST_CHAIN, value.add(value2));
Transaction send1 = Objects.requireNonNull(wallet.createSend(OTHER_ADDRESS, value2)); Transaction send1 = Objects.requireNonNull(wallet.createSend(OTHER_ADDRESS, value2));
Transaction send2 = Objects.requireNonNull(wallet.createSend(OTHER_ADDRESS, value2)); Transaction send2 = Objects.requireNonNull(wallet.createSend(OTHER_ADDRESS, value2));
byte[] buf = send1.bitcoinSerialize(); byte[] buf = send1.serialize();
buf[43] = 0; // Break the signature: bitcoinj won't check in SPV mode and this is easier than other mutations. buf[43] = 0; // Break the signature: bitcoinj won't check in SPV mode and this is easier than other mutations.
send1 = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(buf)); send1 = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(buf));
wallet.commitTx(send2); wallet.commitTx(send2);
@ -919,7 +919,7 @@ public class WalletTest extends TestWithWallet {
// Create a double spend. // Create a double spend.
Address BAD_GUY = new ECKey().toAddress(ScriptType.P2PKH, BitcoinNetwork.TESTNET); Address BAD_GUY = new ECKey().toAddress(ScriptType.P2PKH, BitcoinNetwork.TESTNET);
Transaction send2 = wallet.createSend(BAD_GUY, valueOf(0, 50)); Transaction send2 = wallet.createSend(BAD_GUY, valueOf(0, 50));
send2 = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(send2.bitcoinSerialize())); send2 = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(send2.serialize()));
// Broadcast send1. // Broadcast send1.
wallet.commitTx(send1); wallet.commitTx(send1);
assertEquals(send1, received.getOutput(0).getSpentBy().getParentTransaction()); assertEquals(send1, received.getOutput(0).getSpentBy().getParentTransaction());
@ -1347,7 +1347,7 @@ public class WalletTest extends TestWithWallet {
sendMoneyToWallet(AbstractBlockChain.NewBlockType.BEST_CHAIN); sendMoneyToWallet(AbstractBlockChain.NewBlockType.BEST_CHAIN);
Threading.waitForUserCode(); Threading.waitForUserCode();
assertNull(reasons[0]); assertNull(reasons[0]);
final Transaction t1Copy = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(t1.bitcoinSerialize())); final Transaction t1Copy = TESTNET.getDefaultSerializer().makeTransaction(ByteBuffer.wrap(t1.serialize()));
sendMoneyToWallet(AbstractBlockChain.NewBlockType.BEST_CHAIN, t1Copy); sendMoneyToWallet(AbstractBlockChain.NewBlockType.BEST_CHAIN, t1Copy);
Threading.waitForUserCode(); Threading.waitForUserCode();
assertFalse(flags[0]); assertFalse(flags[0]);
@ -2345,7 +2345,7 @@ public class WalletTest extends TestWithWallet {
SendRequest request15 = SendRequest.to(OTHER_ADDRESS, CENT); SendRequest request15 = SendRequest.to(OTHER_ADDRESS, CENT);
for (int i = 0; i < 29; i++) for (int i = 0; i < 29; i++)
request15.tx.addOutput(CENT, OTHER_ADDRESS); request15.tx.addOutput(CENT, OTHER_ADDRESS);
assertTrue(request15.tx.bitcoinSerialize().length > 1000); assertTrue(request15.tx.serialize().length > 1000);
request15.feePerKb = Transaction.DEFAULT_TX_FEE; request15.feePerKb = Transaction.DEFAULT_TX_FEE;
request15.ensureMinRequiredFee = true; request15.ensureMinRequiredFee = true;
wallet.completeTx(request15); wallet.completeTx(request15);
@ -2362,7 +2362,7 @@ public class WalletTest extends TestWithWallet {
request16.ensureMinRequiredFee = true; request16.ensureMinRequiredFee = true;
for (int i = 0; i < 29; i++) for (int i = 0; i < 29; i++)
request16.tx.addOutput(CENT, OTHER_ADDRESS); request16.tx.addOutput(CENT, OTHER_ADDRESS);
assertTrue(request16.tx.bitcoinSerialize().length > 1000); assertTrue(request16.tx.serialize().length > 1000);
wallet.completeTx(request16); wallet.completeTx(request16);
// Just the reference fee should be added if feePerKb == 0 // Just the reference fee should be added if feePerKb == 0
// Hardcoded tx length because actual length may vary depending on actual signature length // Hardcoded tx length because actual length may vary depending on actual signature length
@ -2384,14 +2384,14 @@ public class WalletTest extends TestWithWallet {
assertEquals(Coin.valueOf(99900), request17.tx.getFee()); assertEquals(Coin.valueOf(99900), request17.tx.getFee());
assertEquals(1, request17.tx.getInputs().size()); assertEquals(1, request17.tx.getInputs().size());
// Calculate its max length to make sure it is indeed 999 // Calculate its max length to make sure it is indeed 999
int theoreticalMaxLength17 = request17.tx.bitcoinSerialize().length + myKey.getPubKey().length + 75; int theoreticalMaxLength17 = request17.tx.serialize().length + myKey.getPubKey().length + 75;
for (TransactionInput in : request17.tx.getInputs()) for (TransactionInput in : request17.tx.getInputs())
theoreticalMaxLength17 -= in.getScriptBytes().length; theoreticalMaxLength17 -= in.getScriptBytes().length;
assertEquals(999, theoreticalMaxLength17); assertEquals(999, theoreticalMaxLength17);
Transaction spend17 = request17.tx; Transaction spend17 = request17.tx;
{ {
// Its actual size must be between 996 and 999 (inclusive) as signatures have a 3-byte size range (almost always) // Its actual size must be between 996 and 999 (inclusive) as signatures have a 3-byte size range (almost always)
final int length = spend17.bitcoinSerialize().length; final int length = spend17.serialize().length;
assertTrue(Integer.toString(length), length >= 996 && length <= 999); assertTrue(Integer.toString(length), length >= 996 && length <= 999);
} }
// Now check that it got a fee of 1 since its max size is 999 (1kb). // Now check that it got a fee of 1 since its max size is 999 (1kb).
@ -2412,13 +2412,13 @@ public class WalletTest extends TestWithWallet {
assertEquals(1, request18.tx.getInputs().size()); assertEquals(1, request18.tx.getInputs().size());
// Calculate its max length to make sure it is indeed 1001 // Calculate its max length to make sure it is indeed 1001
Transaction spend18 = request18.tx; Transaction spend18 = request18.tx;
int theoreticalMaxLength18 = spend18.bitcoinSerialize().length + myKey.getPubKey().length + 75; int theoreticalMaxLength18 = spend18.serialize().length + myKey.getPubKey().length + 75;
for (TransactionInput in : spend18.getInputs()) for (TransactionInput in : spend18.getInputs())
theoreticalMaxLength18 -= in.getScriptBytes().length; theoreticalMaxLength18 -= in.getScriptBytes().length;
assertEquals(1001, theoreticalMaxLength18); assertEquals(1001, theoreticalMaxLength18);
// Its actual size must be between 998 and 1000 (inclusive) as signatures have a 3-byte size range (almost always) // Its actual size must be between 998 and 1000 (inclusive) as signatures have a 3-byte size range (almost always)
assertTrue(spend18.bitcoinSerialize().length >= 998); assertTrue(spend18.serialize().length >= 998);
assertTrue(spend18.bitcoinSerialize().length <= 1001); assertTrue(spend18.serialize().length <= 1001);
// Now check that it did get a fee since its max size is 1000 // Now check that it did get a fee since its max size is 1000
assertEquals(25, spend18.getOutputs().size()); assertEquals(25, spend18.getOutputs().size());
// We optimize for priority, so the output selected should be the largest one // We optimize for priority, so the output selected should be the largest one
@ -2524,7 +2524,7 @@ public class WalletTest extends TestWithWallet {
Coin dustThresholdMinusOne = new TransactionOutput(null, Coin.COIN, OTHER_ADDRESS).getMinNonDustValue().subtract(SATOSHI); Coin dustThresholdMinusOne = new TransactionOutput(null, Coin.COIN, OTHER_ADDRESS).getMinNonDustValue().subtract(SATOSHI);
request26.tx.addOutput(CENT.subtract(fee.add(dustThresholdMinusOne)), request26.tx.addOutput(CENT.subtract(fee.add(dustThresholdMinusOne)),
OTHER_ADDRESS); OTHER_ADDRESS);
assertTrue(request26.tx.bitcoinSerialize().length > 1000); assertTrue(request26.tx.serialize().length > 1000);
request26.feePerKb = SATOSHI; request26.feePerKb = SATOSHI;
request26.ensureMinRequiredFee = true; request26.ensureMinRequiredFee = true;
wallet.completeTx(request26); wallet.completeTx(request26);

View file

@ -111,7 +111,7 @@ public class GenerateLowSTests {
+ inputTransaction.getTxId() + "\", " + inputTransaction.getTxId() + "\", "
+ output.getIndex() + ", \"" + output.getIndex() + ", \""
+ scriptToString(output.getScriptPubKey()) + "\"]],\n" + scriptToString(output.getScriptPubKey()) + "\"]],\n"
+ "\"" + ByteUtils.formatHex(proposedTransaction.partialTx.bitcoinSerialize()) + "\", \"" + "\"" + ByteUtils.formatHex(proposedTransaction.partialTx.serialize()) + "\", \""
+ Script.VerifyFlag.P2SH.name() + "," + Script.VerifyFlag.LOW_S.name() + "\"],"); + Script.VerifyFlag.P2SH.name() + "," + Script.VerifyFlag.LOW_S.name() + "\"],");
final BigInteger highS = HIGH_S_DIFFERENCE.subtract(signature.s); final BigInteger highS = HIGH_S_DIFFERENCE.subtract(signature.s);
@ -126,7 +126,7 @@ public class GenerateLowSTests {
+ inputTransaction.getTxId() + "\", " + inputTransaction.getTxId() + "\", "
+ output.getIndex() + ", \"" + output.getIndex() + ", \""
+ scriptToString(output.getScriptPubKey()) + "\"]],\n" + scriptToString(output.getScriptPubKey()) + "\"]],\n"
+ "\"" + ByteUtils.formatHex(proposedTransaction.partialTx.bitcoinSerialize()) + "\", \"" + "\"" + ByteUtils.formatHex(proposedTransaction.partialTx.serialize()) + "\", \""
+ Script.VerifyFlag.P2SH.name() + "\"],"); + Script.VerifyFlag.P2SH.name() + "\"],");
// Lastly a conventional high-S transaction with the LOW_S flag, for the tx_invalid.json set // Lastly a conventional high-S transaction with the LOW_S flag, for the tx_invalid.json set
@ -135,7 +135,7 @@ public class GenerateLowSTests {
+ inputTransaction.getTxId() + "\", " + inputTransaction.getTxId() + "\", "
+ output.getIndex() + ", \"" + output.getIndex() + ", \""
+ scriptToString(output.getScriptPubKey()) + "\"]],\n" + scriptToString(output.getScriptPubKey()) + "\"]],\n"
+ "\"" + ByteUtils.formatHex(proposedTransaction.partialTx.bitcoinSerialize()) + "\", \"" + "\"" + ByteUtils.formatHex(proposedTransaction.partialTx.serialize()) + "\", \""
+ Script.VerifyFlag.P2SH.name() + "," + Script.VerifyFlag.LOW_S.name() + "\"],"); + Script.VerifyFlag.P2SH.name() + "," + Script.VerifyFlag.LOW_S.name() + "\"],");
} }

View file

@ -106,7 +106,7 @@ public class FilteredBlockAndPartialMerkleTreeTest extends TestWithPeerGroup {
assertTrue(txesMatched.contains(Sha256Hash.wrap("63194f18be0af63f2c6bc9dc0f777cbefed3d9415c4af83f3ee3a3d669c00cb5"))); assertTrue(txesMatched.contains(Sha256Hash.wrap("63194f18be0af63f2c6bc9dc0f777cbefed3d9415c4af83f3ee3a3d669c00cb5")));
// Check round tripping. // Check round tripping.
assertEquals(block, FilteredBlock.read(ByteBuffer.wrap(block.bitcoinSerialize()))); assertEquals(block, FilteredBlock.read(ByteBuffer.wrap(block.serialize())));
} }
@Test @Test
@ -181,7 +181,7 @@ public class FilteredBlockAndPartialMerkleTreeTest extends TestWithPeerGroup {
BloomFilter filter = wallet.getBloomFilter(wallet.getKeyChainGroupSize()*2, 0.001, 0xDEADBEEF); BloomFilter filter = wallet.getBloomFilter(wallet.getKeyChainGroupSize()*2, 0.001, 0xDEADBEEF);
// Compare the serialized bloom filter to a known-good value // Compare the serialized bloom filter to a known-good value
assertArrayEquals(ByteUtils.parseHex("0e1b091ca195e45a9164889b6bc46a09000000efbeadde02"), filter.bitcoinSerialize()); assertArrayEquals(ByteUtils.parseHex("0e1b091ca195e45a9164889b6bc46a09000000efbeadde02"), filter.serialize());
// Create a peer. // Create a peer.
peerGroup.start(); peerGroup.start();

View file

@ -828,7 +828,7 @@ public class PeerGroupTest extends TestWithPeerGroup {
// Send the chain that doesn't have all the transactions in it. The blocks after the exhaustion point should all // Send the chain that doesn't have all the transactions in it. The blocks after the exhaustion point should all
// be ignored. // be ignored.
int epoch = wallet.getKeyChainGroupCombinedKeyLookaheadEpochs(); int epoch = wallet.getKeyChainGroupCombinedKeyLookaheadEpochs();
BloomFilter filter = BloomFilter.read(ByteBuffer.wrap(p1.lastReceivedFilter.bitcoinSerialize())); BloomFilter filter = BloomFilter.read(ByteBuffer.wrap(p1.lastReceivedFilter.serialize()));
filterAndSend(p1, blocks, filter); filterAndSend(p1, blocks, filter);
Block exhaustionPoint = blocks.get(3); Block exhaustionPoint = blocks.get(3);
pingAndWait(p1); pingAndWait(p1);

View file

@ -865,7 +865,7 @@ public class PeerTest extends TestWithNetworkConnections {
bits = Arrays.copyOf(bits, bits.length / 2); bits = Arrays.copyOf(bits, bits.length / 2);
stream.write(bits); stream.write(bits);
} }
}.bitcoinSerialize(), out); }.serialize(), out);
writeTarget.writeTarget.writeBytes(out.toByteArray()); writeTarget.writeTarget.writeBytes(out.toByteArray());
try { try {
result.get(); result.get();

View file

@ -86,7 +86,7 @@ public class TestFeeLevel {
request.feePerKb = feeRateToTest; request.feePerKb = feeRateToTest;
request.ensureMinRequiredFee = false; request.ensureMinRequiredFee = false;
kit.wallet().completeTx(request); kit.wallet().completeTx(request);
System.out.println("Size in bytes is " + request.tx.bitcoinSerialize().length); System.out.println("Size in bytes is " + request.tx.serialize().length);
System.out.println("TX is " + request.tx); System.out.println("TX is " + request.tx);
System.out.println("Waiting for " + kit.peerGroup().getMaxConnections() + " connected peers"); System.out.println("Waiting for " + kit.peerGroup().getMaxConnections() + " connected peers");
kit.peerGroup().addDisconnectedEventListener((peer, peerCount) -> System.out.println(peerCount + kit.peerGroup().addDisconnectedEventListener((peer, peerCount) -> System.out.println(peerCount +