3
0
mirror of https://github.com/Qortal/qortal.git synced 2025-02-12 02:05:50 +00:00

Removed name check and decreased difficulty for online signature

This commit is contained in:
AlphaX-Qortal 2024-11-16 21:14:42 +01:00
parent 6648c4be22
commit d79d64f6b0
4 changed files with 47 additions and 5 deletions

View File

@ -219,6 +219,7 @@ public class Account {
int level = accountData.getLevel(); int level = accountData.getLevel();
int groupIdToMint = BlockChain.getInstance().getMintingGroupId(); int groupIdToMint = BlockChain.getInstance().getMintingGroupId();
int groupCheckHeight = BlockChain.getInstance().getGroupMemberCheckHeight(); int groupCheckHeight = BlockChain.getInstance().getGroupMemberCheckHeight();
int removeNameCheckHeight = BlockChain.getInstance().getRemoveOnlyMintWithNameHeight();
String myAddress = accountData.getAddress(); String myAddress = accountData.getAddress();
List<NameData> myName = nameRepository.getNamesByOwner(myAddress); List<NameData> myName = nameRepository.getNamesByOwner(myAddress);
@ -236,7 +237,11 @@ public class Account {
return true; return true;
// Can only mint if have registered a name and is member of minter group id // Can only mint if have registered a name and is member of minter group id
if (blockchainHeight >= groupCheckHeight && level >= levelToMint && !myName.isEmpty() && isMember) if (blockchainHeight >= groupCheckHeight && blockchainHeight < removeNameCheckHeight && level >= levelToMint && !myName.isEmpty() && isMember)
return true;
// Can only mint if is member of minter group id
if (blockchainHeight >= removeNameCheckHeight && level >= levelToMint && isMember)
return true; return true;
// Founders needs to pass same tests like minters // Founders needs to pass same tests like minters
@ -253,12 +258,19 @@ public class Account {
return true; return true;
if (blockchainHeight >= groupCheckHeight && if (blockchainHeight >= groupCheckHeight &&
blockchainHeight < removeNameCheckHeight &&
Account.isFounder(accountData.getFlags()) && Account.isFounder(accountData.getFlags()) &&
accountData.getBlocksMintedPenalty() == 0 && accountData.getBlocksMintedPenalty() == 0 &&
!myName.isEmpty() && !myName.isEmpty() &&
isMember) isMember)
return true; return true;
if (blockchainHeight >= removeNameCheckHeight &&
Account.isFounder(accountData.getFlags()) &&
accountData.getBlocksMintedPenalty() == 0 &&
isMember)
return true;
return false; return false;
} }

View File

@ -71,6 +71,7 @@ public class BlockChain {
transactionV6Timestamp, transactionV6Timestamp,
disableReferenceTimestamp, disableReferenceTimestamp,
increaseOnlineAccountsDifficultyTimestamp, increaseOnlineAccountsDifficultyTimestamp,
decreaseOnlineAccountsDifficultyTimestamp,
onlineAccountMinterLevelValidationHeight, onlineAccountMinterLevelValidationHeight,
selfSponsorshipAlgoV1Height, selfSponsorshipAlgoV1Height,
selfSponsorshipAlgoV2Height, selfSponsorshipAlgoV2Height,
@ -85,6 +86,7 @@ public class BlockChain {
disableRewardshareHeight, disableRewardshareHeight,
enableRewardshareHeight, enableRewardshareHeight,
onlyMintWithNameHeight, onlyMintWithNameHeight,
removeOnlyMintWithNameHeight,
groupMemberCheckHeight groupMemberCheckHeight
} }
@ -217,6 +219,10 @@ public class BlockChain {
* featureTriggers because unit tests need to set this value via Reflection. */ * featureTriggers because unit tests need to set this value via Reflection. */
private long onlineAccountsModulusV2Timestamp; private long onlineAccountsModulusV2Timestamp;
/** Feature trigger timestamp for ONLINE_ACCOUNTS_MODULUS time interval decrease. Can't use
* featureTriggers because unit tests need to set this value via Reflection. */
private long onlineAccountsModulusV3Timestamp;
/** Snapshot timestamp for self sponsorship algo V1 */ /** Snapshot timestamp for self sponsorship algo V1 */
private long selfSponsorshipAlgoV1SnapshotTimestamp; private long selfSponsorshipAlgoV1SnapshotTimestamp;
@ -403,6 +409,10 @@ public class BlockChain {
return this.onlineAccountsModulusV2Timestamp; return this.onlineAccountsModulusV2Timestamp;
} }
public long getOnlineAccountsModulusV3Timestamp() {
return this.onlineAccountsModulusV3Timestamp;
}
/* Block reward batching */ /* Block reward batching */
public long getBlockRewardBatchStartHeight() { public long getBlockRewardBatchStartHeight() {
return this.blockRewardBatchStartHeight; return this.blockRewardBatchStartHeight;
@ -579,6 +589,10 @@ public class BlockChain {
return this.featureTriggers.get(FeatureTrigger.increaseOnlineAccountsDifficultyTimestamp.name()).longValue(); return this.featureTriggers.get(FeatureTrigger.increaseOnlineAccountsDifficultyTimestamp.name()).longValue();
} }
public long getDecreaseOnlineAccountsDifficultyTimestamp() {
return this.featureTriggers.get(FeatureTrigger.decreaseOnlineAccountsDifficultyTimestamp.name()).longValue();
}
public int getSelfSponsorshipAlgoV1Height() { public int getSelfSponsorshipAlgoV1Height() {
return this.featureTriggers.get(FeatureTrigger.selfSponsorshipAlgoV1Height.name()).intValue(); return this.featureTriggers.get(FeatureTrigger.selfSponsorshipAlgoV1Height.name()).intValue();
} }
@ -635,6 +649,10 @@ public class BlockChain {
return this.featureTriggers.get(FeatureTrigger.onlyMintWithNameHeight.name()).intValue(); return this.featureTriggers.get(FeatureTrigger.onlyMintWithNameHeight.name()).intValue();
} }
public int getRemoveOnlyMintWithNameHeight() {
return this.featureTriggers.get(FeatureTrigger.removeOnlyMintWithNameHeight.name()).intValue();
}
public int getGroupMemberCheckHeight() { public int getGroupMemberCheckHeight() {
return this.featureTriggers.get(FeatureTrigger.groupMemberCheckHeight.name()).intValue(); return this.featureTriggers.get(FeatureTrigger.groupMemberCheckHeight.name()).intValue();
} }

View File

@ -44,6 +44,7 @@ public class OnlineAccountsManager {
*/ */
private static final long ONLINE_TIMESTAMP_MODULUS_V1 = 5 * 60 * 1000L; private static final long ONLINE_TIMESTAMP_MODULUS_V1 = 5 * 60 * 1000L;
private static final long ONLINE_TIMESTAMP_MODULUS_V2 = 30 * 60 * 1000L; private static final long ONLINE_TIMESTAMP_MODULUS_V2 = 30 * 60 * 1000L;
private static final long ONLINE_TIMESTAMP_MODULUS_V3 = 10 * 60 * 1000L;
/** /**
* How many 'current' timestamp-sets of online accounts we cache. * How many 'current' timestamp-sets of online accounts we cache.
@ -67,12 +68,13 @@ public class OnlineAccountsManager {
private static final long ONLINE_ACCOUNTS_COMPUTE_INITIAL_SLEEP_INTERVAL = 30 * 1000L; // ms private static final long ONLINE_ACCOUNTS_COMPUTE_INITIAL_SLEEP_INTERVAL = 30 * 1000L; // ms
// MemoryPoW - mainnet // MemoryPoW - mainnet
public static final int POW_BUFFER_SIZE = 1 * 1024 * 1024; // bytes public static final int POW_BUFFER_SIZE = 1024 * 1024; // bytes
public static final int POW_DIFFICULTY_V1 = 18; // leading zero bits public static final int POW_DIFFICULTY_V1 = 18; // leading zero bits
public static final int POW_DIFFICULTY_V2 = 19; // leading zero bits public static final int POW_DIFFICULTY_V2 = 19; // leading zero bits
public static final int POW_DIFFICULTY_V3 = 6; // leading zero bits
// MemoryPoW - testnet // MemoryPoW - testnet
public static final int POW_BUFFER_SIZE_TESTNET = 1 * 1024 * 1024; // bytes public static final int POW_BUFFER_SIZE_TESTNET = 1024 * 1024; // bytes
public static final int POW_DIFFICULTY_TESTNET = 5; // leading zero bits public static final int POW_DIFFICULTY_TESTNET = 5; // leading zero bits
// IMPORTANT: if we ever need to dynamically modify the buffer size using a feature trigger, the // IMPORTANT: if we ever need to dynamically modify the buffer size using a feature trigger, the
@ -106,11 +108,15 @@ public class OnlineAccountsManager {
public static long getOnlineTimestampModulus() { public static long getOnlineTimestampModulus() {
Long now = NTP.getTime(); Long now = NTP.getTime();
if (now != null && now >= BlockChain.getInstance().getOnlineAccountsModulusV2Timestamp()) { if (now != null && now >= BlockChain.getInstance().getOnlineAccountsModulusV2Timestamp() && now < BlockChain.getInstance().getOnlineAccountsModulusV3Timestamp()) {
return ONLINE_TIMESTAMP_MODULUS_V2; return ONLINE_TIMESTAMP_MODULUS_V2;
} }
if (now != null && now >= BlockChain.getInstance().getOnlineAccountsModulusV3Timestamp()) {
return ONLINE_TIMESTAMP_MODULUS_V3;
}
return ONLINE_TIMESTAMP_MODULUS_V1; return ONLINE_TIMESTAMP_MODULUS_V1;
} }
public static Long getCurrentOnlineAccountTimestamp() { public static Long getCurrentOnlineAccountTimestamp() {
Long now = NTP.getTime(); Long now = NTP.getTime();
if (now == null) if (now == null)
@ -135,9 +141,12 @@ public class OnlineAccountsManager {
if (Settings.getInstance().isTestNet()) if (Settings.getInstance().isTestNet())
return POW_DIFFICULTY_TESTNET; return POW_DIFFICULTY_TESTNET;
if (timestamp >= BlockChain.getInstance().getIncreaseOnlineAccountsDifficultyTimestamp()) if (timestamp >= BlockChain.getInstance().getIncreaseOnlineAccountsDifficultyTimestamp() && timestamp < BlockChain.getInstance().getDecreaseOnlineAccountsDifficultyTimestamp())
return POW_DIFFICULTY_V2; return POW_DIFFICULTY_V2;
if (timestamp >= BlockChain.getInstance().getDecreaseOnlineAccountsDifficultyTimestamp())
return POW_DIFFICULTY_V3;
return POW_DIFFICULTY_V1; return POW_DIFFICULTY_V1;
} }

View File

@ -29,6 +29,7 @@
"onlineAccountSignaturesMinLifetime": 43200000, "onlineAccountSignaturesMinLifetime": 43200000,
"onlineAccountSignaturesMaxLifetime": 86400000, "onlineAccountSignaturesMaxLifetime": 86400000,
"onlineAccountsModulusV2Timestamp": 1659801600000, "onlineAccountsModulusV2Timestamp": 1659801600000,
"onlineAccountsModulusV3Timestamp": 9999999999999,
"selfSponsorshipAlgoV1SnapshotTimestamp": 1670230000000, "selfSponsorshipAlgoV1SnapshotTimestamp": 1670230000000,
"selfSponsorshipAlgoV2SnapshotTimestamp": 1708360200000, "selfSponsorshipAlgoV2SnapshotTimestamp": 1708360200000,
"selfSponsorshipAlgoV3SnapshotTimestamp": 1708432200000, "selfSponsorshipAlgoV3SnapshotTimestamp": 1708432200000,
@ -95,6 +96,7 @@
"transactionV6Timestamp": 9999999999999, "transactionV6Timestamp": 9999999999999,
"disableReferenceTimestamp": 1655222400000, "disableReferenceTimestamp": 1655222400000,
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999, "increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"decreaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 1092000, "onlineAccountMinterLevelValidationHeight": 1092000,
"selfSponsorshipAlgoV1Height": 1092400, "selfSponsorshipAlgoV1Height": 1092400,
"selfSponsorshipAlgoV2Height": 1611200, "selfSponsorshipAlgoV2Height": 1611200,
@ -109,6 +111,7 @@
"disableRewardshareHeight": 1899100, "disableRewardshareHeight": 1899100,
"enableRewardshareHeight": 1905100, "enableRewardshareHeight": 1905100,
"onlyMintWithNameHeight": 1900300, "onlyMintWithNameHeight": 1900300,
"removeOnlyMintWithNameHeight": 9999999,
"groupMemberCheckHeight": 1902700 "groupMemberCheckHeight": 1902700
}, },
"checkpoints": [ "checkpoints": [