use of io.nuls.account.model.Alias 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();
}
}
use of io.nuls.account.model.Alias in project nuls by nuls-io.
the class AliasService method getAliasFee.
/**
* 获取设置别名交易手续费
* Gets to set the alias transaction fee
*
* @param address
* @param aliasName
* @return
*/
public Result<Na> getAliasFee(String address, String aliasName) {
if (!AddressTool.validAddress(address)) {
Result.getFailed(AccountErrorCode.ADDRESS_ERROR);
}
Account account = accountService.getAccount(address).getData();
if (null == account) {
return Result.getFailed(AccountErrorCode.ACCOUNT_NOT_EXIST);
}
if (!account.isOk()) {
return Result.getFailed(AccountErrorCode.IMPORTING_ACCOUNT);
}
byte[] addressBytes = account.getAddress().getAddressBytes();
try {
// 创建一笔设置别名的交易
AliasTransaction tx = new AliasTransaction();
tx.setTime(TimeService.currentTimeMillis());
Alias alias = new Alias(addressBytes, aliasName);
tx.setTxData(alias);
CoinDataResult coinDataResult = accountLedgerService.getCoinData(addressBytes, AccountConstant.ALIAS_NA, tx.size(), TransactionFeeCalculator.OTHER_PRICE_PRE_1024_BYTES);
if (!coinDataResult.isEnough()) {
return Result.getFailed(AccountErrorCode.INSUFFICIENT_BALANCE);
}
CoinData coinData = new CoinData();
coinData.setFrom(coinDataResult.getCoinList());
Coin change = coinDataResult.getChange();
if (null != change) {
// 创建toList
List<Coin> toList = new ArrayList<>();
toList.add(change);
coinData.setTo(toList);
}
Coin coin = new Coin(NulsConstant.BLACK_HOLE_ADDRESS, Na.parseNuls(1), 0);
coinData.addTo(coin);
tx.setCoinData(coinData);
Na fee = TransactionFeeCalculator.getMaxFee(tx.size());
return Result.getSuccess().setData(fee);
} catch (Exception e) {
Log.error(e);
return Result.getFailed(KernelErrorCode.SYS_UNKOWN_EXCEPTION);
}
}
use of io.nuls.account.model.Alias 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();
}
Aggregations