diff --git a/modAionImpl/src/org/aion/zero/impl/blockchain/AionBlockchainImpl.java b/modAionImpl/src/org/aion/zero/impl/blockchain/AionBlockchainImpl.java index 3dfe80a380..99e2151e46 100644 --- a/modAionImpl/src/org/aion/zero/impl/blockchain/AionBlockchainImpl.java +++ b/modAionImpl/src/org/aion/zero/impl/blockchain/AionBlockchainImpl.java @@ -153,6 +153,7 @@ public class AionBlockchainImpl implements IAionBlockchain { public final ForkUtility forkUtility; public final BeaconHashValidator beaconHashValidator; private final boolean isMainnet; + private boolean isAmity; /** * Chain configuration class, because chain configuration may change dependant on the block @@ -260,6 +261,8 @@ public BlockHeaderValidator createBlockHeaderValidatorForImport() { } } : new ChainConfiguration(), eventMgr); + + isAmity = cfgAion.getNetwork().equals("amity"); } /** @@ -1940,7 +1943,7 @@ private Map addReward(Block block) { Map rewards = new HashMap<>(); BigInteger minerReward; - if (forkUtility.isSignatureSwapForkActive(block.getNumber())) { + if (forkUtility.isSignatureSwapForkActive(block.getNumber()) || isAmityRewardException(block.getNumber())) { if (block.getHeader().getSealType().equals(Seal.PROOF_OF_WORK)) { minerReward = TimeVaryingRewardsCalculator.calculateReward( @@ -1970,13 +1973,31 @@ private Map addReward(Block block) { */ track.addBalance(block.getCoinbase(), minerReward); - if (forkUtility.isSignatureSwapForkBlock(block.getNumber())) { + if ((isMainnet && forkUtility.isSignatureSwapForkBlock(block.getNumber())) || isAmityRollbackException(block.getNumber())) { balanceRollback(); } return rewards; } + /** + * Hot-fix for amity network in 1.6.1 + * @param blockNumber + * @return + */ + private boolean isAmityRewardException(long blockNumber) { + return isAmity && forkUtility.isSignatureSwapForkBlock(blockNumber - 1); + } + + /** + * Hot-fix for amity network in 1.6.1 + * @param blockNumber + * @return + */ + private boolean isAmityRollbackException(long blockNumber) { + return isAmity && forkUtility.isSignatureSwapForkBlock(blockNumber + 1); + } + /** * SQ4-142 * Rollback the balance for the mistake transactions