Search in sources :

Example 96 with NulsException

use of io.nuls.kernel.exception.NulsException in project nuls by nuls-io.

the class AliasService method saveAlias.

/**
 * 保存别名(全网)
 * 1.保存别名alias至数据库
 * 2.从数据库取出对应的account账户,将别名设置进account然后保存至数据库
 * 3.将修改后的account重新进行缓存
 * saveAlias
 * 1. Save the alias to the database.
 * 2. Take the corresponding account from the database, set the alias to account and save it to the database.
 * 3. Re-cache the modified account.
 */
public Result saveAlias(AliasPo aliaspo) throws NulsException {
    try {
        Result result = aliasStorageService.saveAlias(aliaspo);
        if (result.isFailed()) {
            this.rollbackAlias(aliaspo);
        }
        AccountPo po = accountStorageService.getAccount(aliaspo.getAddress()).getData();
        if (null != po) {
            po.setAlias(aliaspo.getAlias());
            Result resultAcc = accountStorageService.updateAccount(po);
            if (resultAcc.isFailed()) {
                this.rollbackAlias(aliaspo);
            }
            Account account = po.toAccount();
            accountCacheService.localAccountMaps.put(account.getAddress().getBase58(), account);
        }
    } catch (Exception e) {
        this.rollbackAlias(aliaspo);
        Log.error(e);
        return Result.getFailed(AccountErrorCode.FAILED);
    }
    return Result.getSuccess().setData(true);
}
Also used : Account(io.nuls.account.model.Account) MultiSigAccount(io.nuls.account.model.MultiSigAccount) AccountPo(io.nuls.account.storage.po.AccountPo) IOException(java.io.IOException) NulsException(io.nuls.kernel.exception.NulsException) CoinDataResult(io.nuls.account.ledger.model.CoinDataResult)

Example 97 with NulsException

use of io.nuls.kernel.exception.NulsException in project nuls by nuls-io.

the class AliasService method rollbackAlias.

/**
 * 回滚别名操作(删除别名(全网))
 * 1.从数据库删除别名对象数据
 * 2.取出对应的account将别名清除,重新存入数据库
 * 3.重新缓存account
 * rollbackAlias
 * 1.Delete the alias data from the database.
 * 2. Remove the corresponding account to clear the alias and restore it in the database.
 * 3. Recache the account.
 */
public Result rollbackAlias(AliasPo aliasPo) throws NulsException {
    try {
        AliasPo po = aliasStorageService.getAlias(aliasPo.getAlias()).getData();
        if (po != null && Arrays.equals(po.getAddress(), aliasPo.getAddress())) {
            aliasStorageService.removeAlias(aliasPo.getAlias());
            Result<AccountPo> rs = accountStorageService.getAccount(aliasPo.getAddress());
            if (rs.isSuccess()) {
                AccountPo accountPo = rs.getData();
                accountPo.setAlias("");
                Result result = accountStorageService.updateAccount(accountPo);
                if (result.isFailed()) {
                    return Result.getFailed(AccountErrorCode.FAILED);
                }
                Account account = accountPo.toAccount();
                accountCacheService.localAccountMaps.put(account.getAddress().getBase58(), account);
            }
        }
    } catch (Exception e) {
        Log.error(e);
        throw new NulsException(AccountErrorCode.ALIAS_ROLLBACK_ERROR);
    }
    return Result.getSuccess().setData(true);
}
Also used : Account(io.nuls.account.model.Account) MultiSigAccount(io.nuls.account.model.MultiSigAccount) NulsException(io.nuls.kernel.exception.NulsException) AccountPo(io.nuls.account.storage.po.AccountPo) AliasPo(io.nuls.account.storage.po.AliasPo) IOException(java.io.IOException) NulsException(io.nuls.kernel.exception.NulsException) CoinDataResult(io.nuls.account.ledger.model.CoinDataResult)

Example 98 with NulsException

use of io.nuls.kernel.exception.NulsException in project nuls by nuls-io.

the class AliasTransactionValidator method validate.

@Override
public ValidateResult validate(AliasTransaction tx) {
    Alias alias = tx.getTxData();
    if (tx.isSystemTx()) {
        return ValidateResult.getFailedResult(this.getClass().getName(), TransactionErrorCode.TX_TYPE_ERROR);
    }
    if (NulsContext.CONTRACT_ADDRESS_TYPE == alias.getAddress()[2]) {
        return ValidateResult.getFailedResult(this.getClass().getName(), AccountErrorCode.ADDRESS_ERROR);
    }
    if (!StringUtils.validAlias(alias.getAlias())) {
        return ValidateResult.getFailedResult(this.getClass().getName(), AccountErrorCode.ALIAS_FORMAT_WRONG);
    }
    if (!aliasService.isAliasUsable(alias.getAlias())) {
        return ValidateResult.getFailedResult(this.getClass().getName(), AccountErrorCode.ALIAS_EXIST);
    }
    List<AliasPo> list = aliasStorageService.getAliasList().getData();
    for (AliasPo aliasPo : list) {
        if (Arrays.equals(aliasPo.getAddress(), alias.getAddress())) {
            return ValidateResult.getFailedResult(this.getClass().getName(), AccountErrorCode.ACCOUNT_ALREADY_SET_ALIAS);
        }
    }
    CoinData coinData = tx.getCoinData();
    if (null == coinData || null == coinData.getTo() || coinData.getTo().isEmpty()) {
        return ValidateResult.getFailedResult(this.getClass().getName(), TransactionErrorCode.COINDATA_NOT_FOUND);
    }
    boolean burned = false;
    for (Coin coin : coinData.getTo()) {
        if (ArraysTool.arrayEquals(coin.getOwner(), NulsConstant.BLACK_HOLE_ADDRESS) && coin.getNa().equals(Na.NA)) {
            burned = true;
            break;
        }
        if (!burned && !ArraysTool.arrayEquals(coin.getOwner(), NulsConstant.BLACK_HOLE_ADDRESS_TEST_NET) && coin.getNa().equals(Na.NA)) {
            burned = true;
            break;
        }
    }
    if (!burned) {
        return ValidateResult.getFailedResult(this.getClass().getName(), AccountErrorCode.MUST_BURN_A_NULS);
    }
    TransactionSignature sig = new TransactionSignature();
    try {
        sig.parse(tx.getTransactionSignature(), 0);
    } catch (NulsException e) {
        Log.error(e);
        return ValidateResult.getFailedResult(this.getClass().getName(), e.getErrorCode());
    }
    boolean sign;
    try {
        sign = SignatureUtil.containsAddress(tx, tx.getTxData().getAddress());
    } catch (NulsException e) {
        sign = false;
    }
    if (!sign) {
        ValidateResult result = ValidateResult.getFailedResult(this.getClass().getName(), AccountErrorCode.ADDRESS_ERROR);
        result.setLevel(SeverityLevelEnum.FLAGRANT_FOUL);
        return result;
    }
    return ValidateResult.getSuccessResult();
}
Also used : Coin(io.nuls.kernel.model.Coin) Alias(io.nuls.account.model.Alias) CoinData(io.nuls.kernel.model.CoinData) NulsException(io.nuls.kernel.exception.NulsException) ValidateResult(io.nuls.kernel.validate.ValidateResult) AliasPo(io.nuls.account.storage.po.AliasPo) TransactionSignature(io.nuls.kernel.script.TransactionSignature)

Example 99 with NulsException

use of io.nuls.kernel.exception.NulsException in project nuls by nuls-io.

the class AccountBaseServiceTest method changePassword.

@Test
public void changePassword() {
    List<Account> accounts = this.accountService.createAccount(1, "nuls123456").getData();
    Account account = accounts.get(0);
    accountBaseService.changePassword(account.getAddress().toString(), "nuls123456", "nuls111111");
    Account acc = accountService.getAccount(account.getAddress()).getData();
    try {
        assertFalse(acc.unlock("nuls123456"));
        assertTrue(acc.unlock("nuls111111"));
        assertArrayEquals(acc.getPriKey(), account.getPriKey());
    } catch (NulsException e) {
    }
}
Also used : Account(io.nuls.account.model.Account) NulsException(io.nuls.kernel.exception.NulsException) Test(org.junit.Test)

Example 100 with NulsException

use of io.nuls.kernel.exception.NulsException in project nuls by nuls-io.

the class AccountBaseServiceTest method getPrivateKeyTest.

@Test
public void getPrivateKeyTest() {
    List<Account> accounts = this.accountService.createAccount(1, "nuls123456").getData();
    Account account = accounts.get(0);
    Result result = accountBaseService.getPrivateKey(account.getAddress().toString(), "nuls123456");
    assertTrue(result.isSuccess());
    try {
        account.unlock("nuls123456");
    } catch (NulsException e) {
        e.printStackTrace();
    }
    assertArrayEquals(Hex.decode((String) result.getData()), account.getPriKey());
    List<Account> accounts2 = this.accountService.createAccount(1, "").getData();
    Account account2 = accounts2.get(0);
    Result result2 = accountBaseService.getPrivateKey(account2.getAddress().toString(), "");
    assertTrue(result2.isSuccess());
    assertArrayEquals(Hex.decode((String) result2.getData()), account2.getPriKey());
}
Also used : Account(io.nuls.account.model.Account) NulsException(io.nuls.kernel.exception.NulsException) Result(io.nuls.kernel.model.Result) Test(org.junit.Test)

Aggregations

NulsException (io.nuls.kernel.exception.NulsException)109 IOException (java.io.IOException)35 Account (io.nuls.account.model.Account)25 ValidateResult (io.nuls.kernel.validate.ValidateResult)23 ECKey (io.nuls.core.tools.crypto.ECKey)20 CoinDataResult (io.nuls.account.ledger.model.CoinDataResult)18 NulsRuntimeException (io.nuls.kernel.exception.NulsRuntimeException)16 UnsupportedEncodingException (java.io.UnsupportedEncodingException)14 TransferTransaction (io.nuls.protocol.model.tx.TransferTransaction)13 Coin (io.nuls.kernel.model.Coin)12 MultiSigAccount (io.nuls.account.model.MultiSigAccount)11 ContractResult (io.nuls.contract.dto.ContractResult)9 NulsByteBuffer (io.nuls.kernel.utils.NulsByteBuffer)9 ArrayList (java.util.ArrayList)9 TransactionSignature (io.nuls.kernel.script.TransactionSignature)8 BigInteger (java.math.BigInteger)8 TransactionDataResult (io.nuls.account.ledger.model.TransactionDataResult)7 AccountPo (io.nuls.account.storage.po.AccountPo)7 AliasPo (io.nuls.account.storage.po.AliasPo)7 CryptoException (io.nuls.core.tools.crypto.Exception.CryptoException)7