Search in sources :

Example 11 with AliasPo

use of io.nuls.account.storage.po.AliasPo in project nuls by nuls-io.

the class AliasServiceTest method saveAlias.

@Test
public void saveAlias() {
    List<Account> accounts = accountService.createAccount(1, "nuls123456").getData();
    Account account = accounts.get(0);
    Alias alias = new Alias(account.getAddress().getAddressBytes(), "lichao");
    try {
        assertTrue(aliasService.saveAlias(new AliasPo(alias)).isSuccess());
    } catch (NulsException e) {
        e.printStackTrace();
    }
}
Also used : Account(io.nuls.account.model.Account) Alias(io.nuls.account.model.Alias) NulsException(io.nuls.kernel.exception.NulsException) AliasPo(io.nuls.account.storage.po.AliasPo) Test(org.junit.Test)

Example 12 with AliasPo

use of io.nuls.account.storage.po.AliasPo in project nuls by nuls-io.

the class AliasTxProcessor method conflictDetect.

/**
 * 冲突检测
 * 1.检测一个acount只能设置一个别名
 * 2.检查是否多个交易设置了同样的别名
 * conflictDetect
 * 1.Detecting an acount can only set one alias.
 * 2.Check if multiple aliasTransaction have the same alias.
 *
 * @param txList 需要检查的交易列表/A list of transactions to be checked.
 */
@Override
public ValidateResult conflictDetect(List<Transaction> txList) {
    if (null == txList || txList.isEmpty()) {
        return ValidateResult.getSuccessResult();
    }
    Set<String> aliasNames = new HashSet<>();
    Set<String> accountAddress = new HashSet<>();
    List<AliasPo> polist = this.aliasService.getAllAlias();
    for (AliasPo po : polist) {
        aliasNames.add(po.getAlias());
        accountAddress.add(Hex.encode(po.getAddress()));
    }
    for (Transaction transaction : txList) {
        if (transaction.getType() == AccountConstant.TX_TYPE_ACCOUNT_ALIAS) {
            AliasTransaction aliasTransaction = (AliasTransaction) transaction;
            Alias alias = aliasTransaction.getTxData();
            if (!aliasNames.add(alias.getAlias())) {
                return (ValidateResult) ValidateResult.getFailedResult(getClass().getName(), AccountErrorCode.ALIAS_CONFLICT).setData(aliasTransaction);
            }
            if (!accountAddress.add(Hex.encode(alias.getAddress()))) {
                return (ValidateResult) ValidateResult.getFailedResult(getClass().getName(), AccountErrorCode.ACCOUNT_ALREADY_SET_ALIAS).setData(aliasTransaction);
            }
        }
    }
    return ValidateResult.getSuccessResult();
}
Also used : AliasTransaction(io.nuls.account.tx.AliasTransaction) Transaction(io.nuls.kernel.model.Transaction) AliasTransaction(io.nuls.account.tx.AliasTransaction) Alias(io.nuls.account.model.Alias) ValidateResult(io.nuls.kernel.validate.ValidateResult) AliasPo(io.nuls.account.storage.po.AliasPo) HashSet(java.util.HashSet)

Aggregations

AliasPo (io.nuls.account.storage.po.AliasPo)12 NulsException (io.nuls.kernel.exception.NulsException)7 AccountPo (io.nuls.account.storage.po.AccountPo)4 Alias (io.nuls.account.model.Alias)3 Result (io.nuls.kernel.model.Result)3 Account (io.nuls.account.model.Account)2 NulsByteBuffer (io.nuls.kernel.utils.NulsByteBuffer)2 ValidateResult (io.nuls.kernel.validate.ValidateResult)2 CoinDataResult (io.nuls.account.ledger.model.CoinDataResult)1 MultiSigAccount (io.nuls.account.model.MultiSigAccount)1 AliasTransaction (io.nuls.account.tx.AliasTransaction)1 CryptoException (io.nuls.core.tools.crypto.Exception.CryptoException)1 Address (io.nuls.kernel.model.Address)1 Coin (io.nuls.kernel.model.Coin)1 CoinData (io.nuls.kernel.model.CoinData)1 Transaction (io.nuls.kernel.model.Transaction)1 TransactionSignature (io.nuls.kernel.script.TransactionSignature)1 IOException (java.io.IOException)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 HashSet (java.util.HashSet)1