From a8a8904ebff595b3974521278882ee30d802ce24 Mon Sep 17 00:00:00 2001 From: kennycud Date: Wed, 8 Jan 2025 16:19:38 -0800 Subject: [PATCH] removed the NULL account from the dev admin reward distribution and added some fail safes in case the admin groups are empty --- src/main/java/org/qortal/block/Block.java | 38 ++++++++++++++++------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/qortal/block/Block.java b/src/main/java/org/qortal/block/Block.java index c254fa7c..e22d7993 100644 --- a/src/main/java/org/qortal/block/Block.java +++ b/src/main/java/org/qortal/block/Block.java @@ -26,6 +26,7 @@ import org.qortal.data.block.BlockTransactionData; import org.qortal.data.group.GroupAdminData; import org.qortal.data.network.OnlineAccountData; import org.qortal.data.transaction.TransactionData; +import org.qortal.group.Group; import org.qortal.repository.*; import org.qortal.settings.Settings; import org.qortal.transaction.AtTransaction; @@ -2497,21 +2498,28 @@ public class Block { .filter(expandedAccount -> minterAdmins.contains(expandedAccount.getMintingAccount().getAddress())) .collect(Collectors.toList()); - BlockRewardDistributor minterAdminDistributor - = (distributionAmount, balanceChanges) - -> - distributeBlockRewardShare(distributionAmount, onlineMinterAdminAccounts, balanceChanges); + long minterAdminShare; - long adminShare = 1_00000000 - totalShares; - LOGGER.info("initial total Shares: {}",totalShares); - LOGGER.info("logging adminShare after hardfork, this is the primary reward that will be split {}",adminShare); + if( onlineMinterAdminAccounts.isEmpty() ) { + minterAdminShare = 0; + } + else { + BlockRewardDistributor minterAdminDistributor + = (distributionAmount, balanceChanges) + -> + distributeBlockRewardShare(distributionAmount, onlineMinterAdminAccounts, balanceChanges); - long minterAdminShare = adminShare / 2; - BlockRewardCandidate minterAdminRewardCandidate - = new BlockRewardCandidate("Minter Admins", minterAdminShare, minterAdminDistributor); - rewardCandidates.add(minterAdminRewardCandidate); + long adminShare = 1_00000000 - totalShares; + LOGGER.info("initial total Shares: {}", totalShares); + LOGGER.info("logging adminShare after hardfork, this is the primary reward that will be split {}", adminShare); - totalShares += minterAdminShare; + minterAdminShare = adminShare / 2; + BlockRewardCandidate minterAdminRewardCandidate + = new BlockRewardCandidate("Minter Admins", minterAdminShare, minterAdminDistributor); + rewardCandidates.add(minterAdminRewardCandidate); + + totalShares += minterAdminShare; + } LOGGER.info("MINTER ADMIN SHARE: {}",minterAdminShare); @@ -2521,6 +2529,10 @@ public class Block { .map(GroupAdminData::getAdmin) .collect(Collectors.toList()); + LOGGER.info("Removing NULL Account Address, Dev Admin Count = {}", devAdminAddresses.size()); + devAdminAddresses.removeIf( address -> Group.NULL_OWNER_ADDRESS.equals(address) ); + LOGGER.info("Removed NULL Account Address, Dev Admin Count = {}", devAdminAddresses.size()); + BlockRewardDistributor devAdminDistributor = (distributionAmount, balanceChanges) -> distributeToAccounts(distributionAmount, devAdminAddresses, balanceChanges); @@ -2548,6 +2560,8 @@ public class Block { */ public static long distributeToAccounts(long distributionAmount, List accountAddressess, Map balanceChanges) { + if( accountAddressess.isEmpty() ) return 0; + long distibutionShare = distributionAmount / accountAddressess.size(); for(String accountAddress : accountAddressess ) {