From 5c5a608b8959d7420e8e62abc6b40b5762b7d9ac Mon Sep 17 00:00:00 2001 From: AionJayT Date: Wed, 9 Dec 2020 15:38:19 -0500 Subject: [PATCH] Fix the issue when internal CPU miner update the block template --- .../src/org/aion/zero/impl/pow/AionPoW.java | 18 +++--------------- .../zero/impl/types/MiningBlockHeader.java | 10 ---------- 2 files changed, 3 insertions(+), 25 deletions(-) diff --git a/modAionImpl/src/org/aion/zero/impl/pow/AionPoW.java b/modAionImpl/src/org/aion/zero/impl/pow/AionPoW.java index 1f7465b161..4da1a4f396 100644 --- a/modAionImpl/src/org/aion/zero/impl/pow/AionPoW.java +++ b/modAionImpl/src/org/aion/zero/impl/pow/AionPoW.java @@ -128,7 +128,9 @@ public void init(IAionBlockchain blockchain, IPendingState pendingState, IEventM || now - lastUpdate.get() > 10000) { createNewBlockTemplate(); } else { - updateTimestamp(TimeUnit.MILLISECONDS.toSeconds(now)); + if (TimeUnit.MILLISECONDS.toSeconds(now) == latestBlockTemplate.getTimestamp() + 1) { + createNewBlockTemplate(); + } } } catch (InterruptedException e) { break; @@ -277,20 +279,6 @@ private synchronized void createNewBlockTemplate() { } } - /** Creates a new block template. */ - private synchronized void updateTimestamp(long systemTime) { - if (!shutDown.get() && systemTime > latestBlockTemplate.getTimestamp()) { - MiningBlockHeader newHeader = latestBlockTemplate.getHeader().updateTimestamp(systemTime); - MiningBlock newBlock = new MiningBlock(newHeader, latestBlockTemplate.getTransactionsList()); - - EventConsensus ev = new EventConsensus(EventConsensus.CALLBACK.ON_BLOCK_TEMPLATE); - ev.setFuncArgs(Collections.singletonList(newBlock)); - eventMgr.newEvent(ev); - - latestBlockTemplate = newBlock; - } - } - public synchronized void shutdown() { if (ees != null) { ees.shutdown(); diff --git a/modAionImpl/src/org/aion/zero/impl/types/MiningBlockHeader.java b/modAionImpl/src/org/aion/zero/impl/types/MiningBlockHeader.java index f40aa24997..38f6729810 100644 --- a/modAionImpl/src/org/aion/zero/impl/types/MiningBlockHeader.java +++ b/modAionImpl/src/org/aion/zero/impl/types/MiningBlockHeader.java @@ -135,16 +135,6 @@ public MiningBlockHeader(MiningBlockHeader.Builder builder) { this.solution = builder.solution; this.nonce = builder.nonce; } - - /** - * Returns a new header that is identical to this one, except with a different timestamp - */ - public MiningBlockHeader updateTimestamp(long newTimestamp) { - return Builder.newInstance() - .withHeader(this) - .withTimestamp(newTimestamp) - .build(); - } public byte[] getSolution() { return solution.clone();