use of io.nuls.account.storage.po.AliasPo in project nuls by nuls-io.
the class AccountServiceImpl method updatePasswordByAccountKeyStore.
@Override
public Result<Account> updatePasswordByAccountKeyStore(AccountKeyStore keyStore, String password) {
AssertUtil.canNotEmpty(keyStore, AccountErrorCode.PARAMETER_ERROR.getMsg());
AssertUtil.canNotEmpty(keyStore.getAddress(), AccountErrorCode.PARAMETER_ERROR.getMsg());
AssertUtil.canNotEmpty(password, AccountErrorCode.PARAMETER_ERROR.getMsg());
Account account;
byte[] priKey = null;
if (null != keyStore.getPrikey() && keyStore.getPrikey().length > 0) {
if (!ECKey.isValidPrivteHex(Hex.encode(keyStore.getPrikey()))) {
return Result.getFailed(AccountErrorCode.PARAMETER_ERROR);
}
priKey = keyStore.getPrikey();
try {
account = AccountTool.createAccount(Hex.encode(priKey));
} catch (NulsException e) {
return Result.getFailed(AccountErrorCode.FAILED);
}
} else {
try {
account = AccountTool.createAccount();
} catch (NulsException e) {
return Result.getFailed(AccountErrorCode.FAILED);
}
account.setAddress(new Address(keyStore.getAddress()));
}
try {
account.encrypt(password);
} catch (NulsException e) {
Log.error(e);
return Result.getFailed(e.getErrorCode());
}
if (StringUtils.isNotBlank(keyStore.getAlias())) {
Alias aliasDb = aliasService.getAlias(keyStore.getAlias());
if (null != aliasDb && account.getAddress().toString().equals(AddressTool.getStringAddressByBytes(aliasDb.getAddress()))) {
account.setAlias(aliasDb.getAlias());
} else {
List<AliasPo> list = aliasStorageService.getAliasList().getData();
for (AliasPo aliasPo : list) {
// 如果全网别名中的地址有和当前导入的账户地址相同,则赋值别名到账户中
if (AddressTool.getStringAddressByBytes(aliasPo.getAddress()).equals(account.getAddress().toString())) {
account.setAlias(aliasPo.getAlias());
break;
}
}
}
}
account.setOk(false);
AccountPo po = new AccountPo(account);
Result result = accountStorageService.saveAccount(po);
if (result.isFailed()) {
return result;
}
accountCacheService.localAccountMaps.put(account.getAddress().getBase58(), account);
TaskManager.asynExecuteRunnable(new Runnable() {
@Override
public void run() {
String address = account.getAddress().getBase58();
Result res = accountLedgerService.importLedger(address);
if (res.isFailed()) {
AccountServiceImpl.this.removeAccount(address, password);
} else {
AccountServiceImpl.this.finishImport(account);
}
}
});
return Result.getSuccess().setData(account);
}
use of io.nuls.account.storage.po.AliasPo in project nuls by nuls-io.
the class AliasStorageServiceImpl method getAlias.
@Override
public Result<AliasPo> getAlias(String alias) {
try {
byte[] aliasByte = alias.getBytes(NulsConfig.DEFAULT_ENCODING);
AliasPo aliasPo = dbService.getModel(AccountStorageConstant.DB_NAME_ACCOUNT_ALIAS, aliasByte, AliasPo.class);
return Result.getSuccess().setData(aliasPo);
} catch (UnsupportedEncodingException e) {
Log.error(e);
return Result.getFailed();
}
}
use of io.nuls.account.storage.po.AliasPo 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);
}
use of io.nuls.account.storage.po.AliasPo 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();
}
use of io.nuls.account.storage.po.AliasPo in project nuls by nuls-io.
the class AccountResource method getAliasList.
@GET
@Path("/allalias")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "[查询] 查询全部别名列表数据")
@ApiResponses(value = { @ApiResponse(code = 200, message = "success", response = RpcClientResult.class) })
public RpcClientResult getAliasList() throws Exception {
List<AliasPo> result = aliasService.getAllAlias();
Map<String, String> map = new HashMap<>();
for (AliasPo po : result) {
map.put(Hex.encode(po.getAddress()), po.getAlias());
}
return Result.getSuccess().setData(map).toRpcClientResult();
}
Aggregations