diff --git a/src/main/java/org/qortal/transaction/BuyNameTransaction.java b/src/main/java/org/qortal/transaction/BuyNameTransaction.java index 3b58842d..ad3e0c8d 100644 --- a/src/main/java/org/qortal/transaction/BuyNameTransaction.java +++ b/src/main/java/org/qortal/transaction/BuyNameTransaction.java @@ -13,6 +13,7 @@ import org.qortal.data.transaction.TransactionData; import org.qortal.naming.Name; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import org.qortal.utils.Unicode; import com.google.common.base.Utf8; @@ -58,9 +59,9 @@ public class BuyNameTransaction extends Transaction { if (nameLength < Name.MIN_NAME_SIZE || nameLength > Name.MAX_NAME_SIZE) return ValidationResult.INVALID_NAME_LENGTH; - // Check name is lowercase - if (!name.equals(name.toLowerCase())) - return ValidationResult.NAME_NOT_LOWER_CASE; + // Check name is in normalized form (no leading/trailing whitespace, etc.) + if (!name.equals(Unicode.normalize(name))) + return ValidationResult.NAME_NOT_NORMALIZED; NameData nameData = this.repository.getNameRepository().fromName(name); diff --git a/src/main/java/org/qortal/transaction/CancelSellNameTransaction.java b/src/main/java/org/qortal/transaction/CancelSellNameTransaction.java index da81e4ea..f241db47 100644 --- a/src/main/java/org/qortal/transaction/CancelSellNameTransaction.java +++ b/src/main/java/org/qortal/transaction/CancelSellNameTransaction.java @@ -11,6 +11,7 @@ import org.qortal.data.transaction.TransactionData; import org.qortal.naming.Name; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import org.qortal.utils.Unicode; import com.google.common.base.Utf8; @@ -51,9 +52,9 @@ public class CancelSellNameTransaction extends Transaction { if (nameLength < 1 || nameLength > Name.MAX_NAME_SIZE) return ValidationResult.INVALID_NAME_LENGTH; - // Check name is lowercase - if (!name.equals(name.toLowerCase())) - return ValidationResult.NAME_NOT_LOWER_CASE; + // Check name is in normalized form (no leading/trailing whitespace, etc.) + if (!name.equals(Unicode.normalize(name))) + return ValidationResult.NAME_NOT_NORMALIZED; NameData nameData = this.repository.getNameRepository().fromName(name); diff --git a/src/main/java/org/qortal/transaction/CreateGroupTransaction.java b/src/main/java/org/qortal/transaction/CreateGroupTransaction.java index 63725cfb..7ed61684 100644 --- a/src/main/java/org/qortal/transaction/CreateGroupTransaction.java +++ b/src/main/java/org/qortal/transaction/CreateGroupTransaction.java @@ -72,7 +72,7 @@ public class CreateGroupTransaction extends Transaction { // Check name is in normalized form (no leading/trailing whitespace, etc.) if (!groupName.equals(Unicode.normalize(groupName))) - return ValidationResult.NAME_NOT_LOWER_CASE; + return ValidationResult.NAME_NOT_NORMALIZED; Account creator = getCreator(); diff --git a/src/main/java/org/qortal/transaction/CreatePollTransaction.java b/src/main/java/org/qortal/transaction/CreatePollTransaction.java index 07fddce9..4c4b3a0a 100644 --- a/src/main/java/org/qortal/transaction/CreatePollTransaction.java +++ b/src/main/java/org/qortal/transaction/CreatePollTransaction.java @@ -12,6 +12,7 @@ import org.qortal.data.transaction.TransactionData; import org.qortal.data.voting.PollOptionData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import org.qortal.utils.Unicode; import org.qortal.voting.Poll; import com.google.common.base.Utf8; @@ -51,8 +52,9 @@ public class CreatePollTransaction extends Transaction { return ValidationResult.INVALID_ADDRESS; // Check name size bounds - int pollNameLength = Utf8.encodedLength(this.createPollTransactionData.getPollName()); - if (pollNameLength < 1 || pollNameLength > Poll.MAX_NAME_SIZE) + String pollName = this.createPollTransactionData.getPollName(); + int pollNameLength = Utf8.encodedLength(pollName); + if (pollNameLength < Poll.MIN_NAME_SIZE || pollNameLength > Poll.MAX_NAME_SIZE) return ValidationResult.INVALID_NAME_LENGTH; // Check description size bounds @@ -60,9 +62,9 @@ public class CreatePollTransaction extends Transaction { if (pollDescriptionLength < 1 || pollDescriptionLength > Poll.MAX_DESCRIPTION_SIZE) return ValidationResult.INVALID_DESCRIPTION_LENGTH; - // Check poll name is lowercase - if (!this.createPollTransactionData.getPollName().equals(this.createPollTransactionData.getPollName().toLowerCase())) - return ValidationResult.NAME_NOT_LOWER_CASE; + // Check name is in normalized form (no leading/trailing whitespace, etc.) + if (!pollName.equals(Unicode.normalize(pollName))) + return ValidationResult.NAME_NOT_NORMALIZED; // Check number of options List pollOptions = this.createPollTransactionData.getPollOptions(); diff --git a/src/main/java/org/qortal/transaction/IssueAssetTransaction.java b/src/main/java/org/qortal/transaction/IssueAssetTransaction.java index a562c7a5..e9422dcd 100644 --- a/src/main/java/org/qortal/transaction/IssueAssetTransaction.java +++ b/src/main/java/org/qortal/transaction/IssueAssetTransaction.java @@ -53,7 +53,7 @@ public class IssueAssetTransaction extends Transaction { // Check name is in normalized form (no leading/trailing whitespace, etc.) if (!assetName.equals(Unicode.normalize(assetName))) - return ValidationResult.NAME_NOT_LOWER_CASE; + return ValidationResult.NAME_NOT_NORMALIZED; // Check description size bounds int assetDescriptionlength = Utf8.encodedLength(this.issueAssetTransactionData.getDescription()); diff --git a/src/main/java/org/qortal/transaction/RegisterNameTransaction.java b/src/main/java/org/qortal/transaction/RegisterNameTransaction.java index d02631c0..555fcc60 100644 --- a/src/main/java/org/qortal/transaction/RegisterNameTransaction.java +++ b/src/main/java/org/qortal/transaction/RegisterNameTransaction.java @@ -60,7 +60,7 @@ public class RegisterNameTransaction extends Transaction { // Check name is in normalized form (no leading/trailing whitespace, etc.) if (!name.equals(Unicode.normalize(name))) - return ValidationResult.NAME_NOT_LOWER_CASE; + return ValidationResult.NAME_NOT_NORMALIZED; // Check registrant has enough funds if (registrant.getConfirmedBalance(Asset.QORT) < this.registerNameTransactionData.getFee()) diff --git a/src/main/java/org/qortal/transaction/SellNameTransaction.java b/src/main/java/org/qortal/transaction/SellNameTransaction.java index 5b77097f..81bd9ff7 100644 --- a/src/main/java/org/qortal/transaction/SellNameTransaction.java +++ b/src/main/java/org/qortal/transaction/SellNameTransaction.java @@ -11,6 +11,7 @@ import org.qortal.data.transaction.TransactionData; import org.qortal.naming.Name; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import org.qortal.utils.Unicode; import com.google.common.base.Utf8; @@ -54,9 +55,9 @@ public class SellNameTransaction extends Transaction { if (nameLength < 1 || nameLength > Name.MAX_NAME_SIZE) return ValidationResult.INVALID_NAME_LENGTH; - // Check name is lowercase - if (!name.equals(name.toLowerCase())) - return ValidationResult.NAME_NOT_LOWER_CASE; + // Check name is in normalized form (no leading/trailing whitespace, etc.) + if (!name.equals(Unicode.normalize(name))) + return ValidationResult.NAME_NOT_NORMALIZED; NameData nameData = this.repository.getNameRepository().fromName(name); diff --git a/src/main/java/org/qortal/transaction/Transaction.java b/src/main/java/org/qortal/transaction/Transaction.java index fe10dcd9..761d9064 100644 --- a/src/main/java/org/qortal/transaction/Transaction.java +++ b/src/main/java/org/qortal/transaction/Transaction.java @@ -169,7 +169,7 @@ public abstract class Transaction { BUYER_ALREADY_OWNER(14), INVALID_AMOUNT(15), INVALID_SELLER(16), - NAME_NOT_LOWER_CASE(17), + NAME_NOT_NORMALIZED(17), INVALID_DESCRIPTION_LENGTH(18), INVALID_OPTIONS_COUNT(19), INVALID_OPTION_LENGTH(20), diff --git a/src/main/java/org/qortal/transaction/UpdateNameTransaction.java b/src/main/java/org/qortal/transaction/UpdateNameTransaction.java index 13c5f0fb..fdcba164 100644 --- a/src/main/java/org/qortal/transaction/UpdateNameTransaction.java +++ b/src/main/java/org/qortal/transaction/UpdateNameTransaction.java @@ -54,7 +54,7 @@ public class UpdateNameTransaction extends Transaction { // Check name is in normalized form (no leading/trailing whitespace, etc.) if (!name.equals(Unicode.normalize(name))) - return ValidationResult.NAME_NOT_LOWER_CASE; + return ValidationResult.NAME_NOT_NORMALIZED; NameData nameData = this.repository.getNameRepository().fromName(name); @@ -76,7 +76,7 @@ public class UpdateNameTransaction extends Transaction { // Check new name is in normalized form (no leading/trailing whitespace, etc.) if (!newName.equals(Unicode.normalize(newName))) - return ValidationResult.NAME_NOT_LOWER_CASE; + return ValidationResult.NAME_NOT_NORMALIZED; } // Check new data size bounds (0 length means don't update data) diff --git a/src/main/java/org/qortal/transaction/VoteOnPollTransaction.java b/src/main/java/org/qortal/transaction/VoteOnPollTransaction.java index 3d781caf..35447aa6 100644 --- a/src/main/java/org/qortal/transaction/VoteOnPollTransaction.java +++ b/src/main/java/org/qortal/transaction/VoteOnPollTransaction.java @@ -15,6 +15,7 @@ import org.qortal.data.voting.VoteOnPollData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.VotingRepository; +import org.qortal.utils.Unicode; import org.qortal.voting.Poll; import com.google.common.base.Utf8; @@ -58,9 +59,9 @@ public class VoteOnPollTransaction extends Transaction { if (pollNameLength < 1 || pollNameLength > Poll.MAX_NAME_SIZE) return ValidationResult.INVALID_NAME_LENGTH; - // Check poll name is lowercase - if (!pollName.equals(pollName.toLowerCase())) - return ValidationResult.NAME_NOT_LOWER_CASE; + // Check name is in normalized form (no leading/trailing whitespace, etc.) + if (!pollName.equals(Unicode.normalize(pollName))) + return ValidationResult.NAME_NOT_NORMALIZED; VotingRepository votingRepository = this.repository.getVotingRepository(); diff --git a/src/main/java/org/qortal/voting/Poll.java b/src/main/java/org/qortal/voting/Poll.java index 8792f379..0db71788 100644 --- a/src/main/java/org/qortal/voting/Poll.java +++ b/src/main/java/org/qortal/voting/Poll.java @@ -12,6 +12,7 @@ public class Poll { private PollData pollData; // Other useful constants + public static final int MIN_NAME_SIZE = 3; public static final int MAX_NAME_SIZE = 400; public static final int MAX_DESCRIPTION_SIZE = 4000; public static final int MAX_OPTIONS = 100;