diff --git a/src/main/java/org/qortal/block/BlockMinter.java b/src/main/java/org/qortal/block/BlockMinter.java index 2f27a9dc..0fa6d315 100644 --- a/src/main/java/org/qortal/block/BlockMinter.java +++ b/src/main/java/org/qortal/block/BlockMinter.java @@ -341,17 +341,19 @@ public class BlockMinter extends Thread { this.interrupt(); } - public static void mintTestingBlock(Repository repository, PrivateKeyAccount mintingAccount) throws DataException { + public static void mintTestingBlock(Repository repository, PrivateKeyAccount... mintingAndOnlineAccounts) throws DataException { if (!BlockChain.getInstance().isTestChain()) { LOGGER.warn("Ignoring attempt to mint testing block for non-test chain!"); return; } // Ensure mintingAccount is 'online' so blocks can be minted - Controller.getInstance().ensureTestingAccountOnline(mintingAccount); + Controller.getInstance().ensureTestingAccountsOnline(mintingAndOnlineAccounts); BlockData previousBlockData = repository.getBlockRepository().getLastBlock(); + PrivateKeyAccount mintingAccount = mintingAndOnlineAccounts[0]; + Block newBlock = Block.mint(repository, previousBlockData, mintingAccount); // Make sure we're the only thread modifying the blockchain diff --git a/src/main/java/org/qortal/controller/Controller.java b/src/main/java/org/qortal/controller/Controller.java index b7b184d9..8419a11f 100644 --- a/src/main/java/org/qortal/controller/Controller.java +++ b/src/main/java/org/qortal/controller/Controller.java @@ -1342,7 +1342,7 @@ public class Controller extends Thread { } } - public void ensureTestingAccountOnline(PrivateKeyAccount mintingAccount) { + public void ensureTestingAccountsOnline(PrivateKeyAccount... onlineAccounts) { if (!BlockChain.getInstance().isTestChain()) { LOGGER.warn("Ignoring attempt to ensure test account is online for non-test chain!"); return; @@ -1352,19 +1352,21 @@ public class Controller extends Thread { if (now == null) return; - // Check mintingAccount is actually reward-share? - - // Add reward-share & timestamp to online accounts final long onlineAccountsTimestamp = Controller.toOnlineAccountTimestamp(now); byte[] timestampBytes = Longs.toByteArray(onlineAccountsTimestamp); - byte[] signature = mintingAccount.sign(timestampBytes); - byte[] publicKey = mintingAccount.getPublicKey(); - - OnlineAccountData ourOnlineAccountData = new OnlineAccountData(onlineAccountsTimestamp, signature, publicKey); synchronized (this.onlineAccounts) { this.onlineAccounts.clear(); - this.onlineAccounts.add(ourOnlineAccountData); + + for (PrivateKeyAccount onlineAccount : onlineAccounts) { + // Check mintingAccount is actually reward-share? + + byte[] signature = onlineAccount.sign(timestampBytes); + byte[] publicKey = onlineAccount.getPublicKey(); + + OnlineAccountData ourOnlineAccountData = new OnlineAccountData(onlineAccountsTimestamp, signature, publicKey); + this.onlineAccounts.add(ourOnlineAccountData); + } } }