forked from Qortal/qortal
In some cases, a freshly cancelled reward-share could still have an associated signed timestamp. Block.mint() failed to spot this and used an incorrect "online account" index when building the to-be-minted block. Block.mint() now checks that AccountRepository.getRewardShareIndex() doesn't return null, i.e. indicating that the associated reward-share for that "online account" no longer exists. In turn, AccountRepository.getRewardShareIndex() didn't fulfill its contract of returning null when the passed public key wasn't present in the repository. So this method has been corrected also. AccountRepository.rewardShareExists(byte[] publicKey) : boolean added. BlockMinter had another bug where it didn't check the return from Block.remint() for null properly. This has been fixed. BlockMinter now has additional logging, with cool-off to prevent log spam, for situations where minting could not happen. Unit test (DisagreementTests) added to cover cancelled reward-share case above. BlockMinter testing support slightly modified to help.