mirror of
https://github.com/Qortal/qortal.git
synced 2025-04-23 19:37:51 +00:00
Invalid signatures are now stored as ByteArray instead of String, to avoid regular Base58 encoding and decoding, which is very inefficient.
This commit is contained in:
parent
a2568936a0
commit
a93bae616e
@ -724,7 +724,7 @@ public class Controller extends Thread {
|
|||||||
|
|
||||||
public static final Predicate<Peer> hasInvalidBlock = peer -> {
|
public static final Predicate<Peer> hasInvalidBlock = peer -> {
|
||||||
final PeerChainTipData peerChainTipData = peer.getChainTipData();
|
final PeerChainTipData peerChainTipData = peer.getChainTipData();
|
||||||
Map<String, Long> invalidBlockSignatures = Synchronizer.getInstance().getInvalidBlockSignatures();
|
Map<ByteArray, Long> invalidBlockSignatures = Synchronizer.getInstance().getInvalidBlockSignatures();
|
||||||
List<byte[]> peerSignatures = new ArrayList<>();
|
List<byte[]> peerSignatures = new ArrayList<>();
|
||||||
|
|
||||||
// Add peer's latest block signature
|
// Add peer's latest block signature
|
||||||
@ -748,10 +748,9 @@ public class Controller extends Thread {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Loop through our known invalid blocks and check each one against supplied block summaries
|
// Loop through our known invalid blocks and check each one against supplied block summaries
|
||||||
for (String invalidSignature58 : invalidBlockSignatures.keySet()) {
|
for (ByteArray invalidSignature : invalidBlockSignatures.keySet()) {
|
||||||
byte[] invalidSignature = Base58.decode(invalidSignature58);
|
|
||||||
for (byte[] peerSignature : peerSignatures) {
|
for (byte[] peerSignature : peerSignatures) {
|
||||||
if (Arrays.equals(peerSignature, invalidSignature)) {
|
if (Arrays.equals(peerSignature, invalidSignature.value)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,7 +81,7 @@ public class Synchronizer extends Thread {
|
|||||||
private boolean syncRequestPending = false;
|
private boolean syncRequestPending = false;
|
||||||
|
|
||||||
// Keep track of invalid blocks so that we don't keep trying to sync them
|
// Keep track of invalid blocks so that we don't keep trying to sync them
|
||||||
private Map<String, Long> invalidBlockSignatures = Collections.synchronizedMap(new HashMap<>());
|
private Map<ByteArray, Long> invalidBlockSignatures = Collections.synchronizedMap(new HashMap<>());
|
||||||
public Long timeValidBlockLastReceived = null;
|
public Long timeValidBlockLastReceived = null;
|
||||||
public Long timeInvalidBlockLastReceived = null;
|
public Long timeInvalidBlockLastReceived = null;
|
||||||
|
|
||||||
@ -844,7 +844,7 @@ public class Synchronizer extends Thread {
|
|||||||
|
|
||||||
/* Invalid block signature tracking */
|
/* Invalid block signature tracking */
|
||||||
|
|
||||||
public Map<String, Long> getInvalidBlockSignatures() {
|
public Map<ByteArray, Long> getInvalidBlockSignatures() {
|
||||||
return this.invalidBlockSignatures;
|
return this.invalidBlockSignatures;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -855,8 +855,7 @@ public class Synchronizer extends Thread {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add or update existing entry
|
// Add or update existing entry
|
||||||
String sig58 = Base58.encode(signature);
|
invalidBlockSignatures.put(ByteArray.wrap(signature), now);
|
||||||
invalidBlockSignatures.put(sig58, now);
|
|
||||||
}
|
}
|
||||||
private void deleteOlderInvalidSignatures(Long now) {
|
private void deleteOlderInvalidSignatures(Long now) {
|
||||||
if (now == null) {
|
if (now == null) {
|
||||||
@ -881,11 +880,10 @@ public class Synchronizer extends Thread {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Loop through our known invalid blocks and check each one against supplied block summaries
|
// Loop through our known invalid blocks and check each one against supplied block summaries
|
||||||
for (String invalidSignature58 : invalidBlockSignatures.keySet()) {
|
for (ByteArray invalidSignature : invalidBlockSignatures.keySet()) {
|
||||||
byte[] invalidSignature = Base58.decode(invalidSignature58);
|
|
||||||
for (BlockSummaryData blockSummary : blockSummaries) {
|
for (BlockSummaryData blockSummary : blockSummaries) {
|
||||||
byte[] signature = blockSummary.getSignature();
|
byte[] signature = blockSummary.getSignature();
|
||||||
if (Arrays.equals(signature, invalidSignature)) {
|
if (Arrays.equals(signature, invalidSignature.value)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -898,10 +896,9 @@ public class Synchronizer extends Thread {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Loop through our known invalid blocks and check each one against supplied block signatures
|
// Loop through our known invalid blocks and check each one against supplied block signatures
|
||||||
for (String invalidSignature58 : invalidBlockSignatures.keySet()) {
|
for (ByteArray invalidSignature : invalidBlockSignatures.keySet()) {
|
||||||
byte[] invalidSignature = Base58.decode(invalidSignature58);
|
|
||||||
for (byte[] signature : blockSignatures) {
|
for (byte[] signature : blockSignatures) {
|
||||||
if (Arrays.equals(signature, invalidSignature)) {
|
if (Arrays.equals(signature, invalidSignature.value)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user