From 8910cd7a251e3ff979c4dcb6190a7ed6237d1e03 Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Sun, 17 Feb 2019 10:35:16 +0100 Subject: [PATCH] GetDataMessage: Support fetching of blocks with witnesses. --- core/src/main/java/org/bitcoinj/core/GetDataMessage.java | 5 +++-- core/src/main/java/org/bitcoinj/core/Peer.java | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/bitcoinj/core/GetDataMessage.java b/core/src/main/java/org/bitcoinj/core/GetDataMessage.java index 1cdba992..2019f6c0 100644 --- a/core/src/main/java/org/bitcoinj/core/GetDataMessage.java +++ b/core/src/main/java/org/bitcoinj/core/GetDataMessage.java @@ -1,5 +1,6 @@ /* * Copyright 2011 Google Inc. + * Copyright 2019 Andreas Schildbach * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,8 +52,8 @@ public class GetDataMessage extends ListMessage { includeWitness ? InventoryItem.Type.WITNESS_TRANSACTION : InventoryItem.Type.TRANSACTION, hash)); } - public void addBlock(Sha256Hash hash) { - addItem(new InventoryItem(InventoryItem.Type.BLOCK, hash)); + public void addBlock(Sha256Hash hash, boolean includeWitness) { + addItem(new InventoryItem(includeWitness ? InventoryItem.Type.WITNESS_BLOCK : InventoryItem.Type.BLOCK, hash)); } public void addFilteredBlock(Sha256Hash hash) { diff --git a/core/src/main/java/org/bitcoinj/core/Peer.java b/core/src/main/java/org/bitcoinj/core/Peer.java index 60bf1a07..00d1369d 100644 --- a/core/src/main/java/org/bitcoinj/core/Peer.java +++ b/core/src/main/java/org/bitcoinj/core/Peer.java @@ -1288,7 +1288,7 @@ public class Peer extends PeerSocketHandler { getdata.addFilteredBlock(item.hash); pingAfterGetData = true; } else { - getdata.addBlock(item.hash); + getdata.addBlock(item.hash, vPeerVersionMessage.isWitnessSupported()); } pendingBlockDownloads.add(item.hash); } @@ -1326,7 +1326,7 @@ public class Peer extends PeerSocketHandler { // This does not need to be locked. log.info("Request to fetch block {}", blockHash); GetDataMessage getdata = new GetDataMessage(params); - getdata.addBlock(blockHash); + getdata.addBlock(blockHash, true); return sendSingleGetData(getdata); }