mirror of
https://github.com/Qortal/qortal.git
synced 2025-02-11 17:55:50 +00:00
Disallow registering/updating to a name that looks like an address
This commit is contained in:
parent
9aabf93523
commit
6eea7c2aa1
@ -6,6 +6,7 @@ import java.util.List;
|
||||
import org.qortal.account.Account;
|
||||
import org.qortal.asset.Asset;
|
||||
import org.qortal.block.BlockChain;
|
||||
import org.qortal.crypto.Crypto;
|
||||
import org.qortal.data.transaction.RegisterNameTransactionData;
|
||||
import org.qortal.data.transaction.TransactionData;
|
||||
import org.qortal.naming.Name;
|
||||
@ -62,6 +63,10 @@ public class RegisterNameTransaction extends Transaction {
|
||||
if (!name.equals(Unicode.normalize(name)))
|
||||
return ValidationResult.NAME_NOT_NORMALIZED;
|
||||
|
||||
// Check name doesn't look like an address
|
||||
if (Crypto.isValidAddress(name))
|
||||
return ValidationResult.INVALID_ADDRESS;
|
||||
|
||||
// Check registrant has enough funds
|
||||
if (registrant.getConfirmedBalance(Asset.QORT) < this.registerNameTransactionData.getFee())
|
||||
return ValidationResult.NO_BALANCE;
|
||||
|
@ -5,6 +5,7 @@ import java.util.List;
|
||||
|
||||
import org.qortal.account.Account;
|
||||
import org.qortal.asset.Asset;
|
||||
import org.qortal.crypto.Crypto;
|
||||
import org.qortal.data.naming.NameData;
|
||||
import org.qortal.data.transaction.TransactionData;
|
||||
import org.qortal.data.transaction.UpdateNameTransactionData;
|
||||
@ -77,6 +78,10 @@ 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_NORMALIZED;
|
||||
|
||||
// Check name doesn't look like an address
|
||||
if (Crypto.isValidAddress(newName))
|
||||
return ValidationResult.INVALID_ADDRESS;
|
||||
}
|
||||
|
||||
// Check new data size bounds (0 length means don't update data)
|
||||
|
@ -41,7 +41,7 @@ public abstract class Unicode {
|
||||
buildHomoglyphCodePointArrays();
|
||||
}
|
||||
|
||||
/** Returns string in Unicode canonical normalized form (NFC),<br>
|
||||
/** Returns string in Unicode canonical normalized form (NFKC),<br>
|
||||
* with zero-width spaces/joiners removed,<br>
|
||||
* leading/trailing whitespace trimmed<br>
|
||||
* and all other whitespace blocks collapsed into a single space character.
|
||||
|
@ -96,4 +96,46 @@ public class MiscTests extends Common {
|
||||
}
|
||||
}
|
||||
|
||||
// test trying to register a name that looks like an address
|
||||
@Test
|
||||
public void testRegisterAddressAsName() throws DataException {
|
||||
try (final Repository repository = RepositoryManager.getRepository()) {
|
||||
// Register-name
|
||||
PrivateKeyAccount alice = Common.getTestAccount(repository, "alice");
|
||||
String name = alice.getAddress();
|
||||
String data = "{}";
|
||||
|
||||
RegisterNameTransactionData transactionData = new RegisterNameTransactionData(TestTransaction.generateBase(alice), name, data);
|
||||
Transaction transaction = Transaction.fromData(repository, transactionData);
|
||||
transaction.sign(alice);
|
||||
|
||||
ValidationResult result = transaction.importAsUnconfirmed();
|
||||
assertTrue("Transaction should be invalid", ValidationResult.OK != result);
|
||||
}
|
||||
}
|
||||
|
||||
// test register then trying to update to a name that looks like an address
|
||||
@Test
|
||||
public void testUpdateToAddressAsName() throws DataException {
|
||||
try (final Repository repository = RepositoryManager.getRepository()) {
|
||||
// Register-name
|
||||
PrivateKeyAccount alice = Common.getTestAccount(repository, "alice");
|
||||
String name = "test-name";
|
||||
String data = "{}";
|
||||
|
||||
TransactionData transactionData = new RegisterNameTransactionData(TestTransaction.generateBase(alice), name, data);
|
||||
TransactionUtils.signAndMint(repository, transactionData, alice);
|
||||
|
||||
// we shouldn't be able to update name to an address
|
||||
String newName = alice.getAddress();
|
||||
String newData = "";
|
||||
transactionData = new UpdateNameTransactionData(TestTransaction.generateBase(alice), name, newName, newData);
|
||||
Transaction transaction = Transaction.fromData(repository, transactionData);
|
||||
transaction.sign(alice);
|
||||
|
||||
ValidationResult result = transaction.importAsUnconfirmed();
|
||||
assertTrue("Transaction should be invalid", ValidationResult.OK != result);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user