Search in sources :

Example 31 with ValidateResult

use of io.nuls.kernel.validate.ValidateResult 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

ValidateResult (io.nuls.kernel.validate.ValidateResult)31 NulsException (io.nuls.kernel.exception.NulsException)12 IOException (java.io.IOException)8 Agent (io.nuls.consensus.poc.protocol.entity.Agent)6 RedPunishTransaction (io.nuls.consensus.poc.protocol.tx.RedPunishTransaction)6 Coin (io.nuls.kernel.model.Coin)6 Transaction (io.nuls.kernel.model.Transaction)6 RedPunishData (io.nuls.consensus.poc.protocol.entity.RedPunishData)5 AgentPo (io.nuls.consensus.poc.storage.po.AgentPo)5 TransactionSignature (io.nuls.kernel.script.TransactionSignature)5 HashSet (java.util.HashSet)5 CreateAgentTransaction (io.nuls.consensus.poc.protocol.tx.CreateAgentTransaction)4 CoinData (io.nuls.kernel.model.CoinData)4 SmallBlock (io.nuls.protocol.model.SmallBlock)4 ArrayList (java.util.ArrayList)4 BaseTest (io.nuls.consensus.poc.BaseTest)3 DepositPo (io.nuls.consensus.poc.storage.po.DepositPo)3 ContractResult (io.nuls.contract.dto.ContractResult)3 NulsRuntimeException (io.nuls.kernel.exception.NulsRuntimeException)3 CoinBaseTransaction (io.nuls.protocol.model.tx.CoinBaseTransaction)3