Search in sources :

Example 1 with UtxoAccountsBalance

use of io.nuls.utxo.accounts.model.UtxoAccountsBalance in project nuls by nuls-io.

the class AccountLedgerServiceImpl method getBalance.

@Override
public Result<Balance> getBalance(byte[] address) {
    if (address == null || address.length != Address.ADDRESS_LENGTH) {
        return Result.getFailed(AccountErrorCode.ADDRESS_ERROR);
    }
    Account account = AccountLegerUtils.isLocalAccount(address);
    if (null == account) {
        return Result.getFailed(AccountErrorCode.ACCOUNT_NOT_EXIST);
    }
    Balance balance;
    if (account.isOk()) {
        balance = balanceManager.getBalance(address).getData();
    } else {
        balance = new Balance();
        Result<UtxoAccountsBalance> result = this.utxoAccountsBalanceService.getUtxoAccountsBalance(address);
        if (!result.isFailed()) {
            UtxoAccountsBalance uab = result.getData();
            balance.setBalance(uab.getBalance());
            balance.setLocked(uab.getHadLocked());
            balance.setUsable(balance.getBalance().subtract(balance.getLocked()));
        }
    }
    if (balance == null) {
        return Result.getFailed(AccountErrorCode.ACCOUNT_NOT_EXIST);
    }
    return Result.getSuccess().setData(balance);
}
Also used : Account(io.nuls.account.model.Account) MultiSigAccount(io.nuls.account.model.MultiSigAccount) UtxoAccountsBalance(io.nuls.utxo.accounts.model.UtxoAccountsBalance) UtxoAccountsBalance(io.nuls.utxo.accounts.model.UtxoAccountsBalance) Balance(io.nuls.account.model.Balance)

Example 2 with UtxoAccountsBalance

use of io.nuls.utxo.accounts.model.UtxoAccountsBalance in project nuls by nuls-io.

the class UtxoAccountsBalanceServiceImpl method getUtxoAccountsBalance.

@Override
public Result<UtxoAccountsBalance> getUtxoAccountsBalance(byte[] owner) {
    if (!AddressTool.validAddress(AddressTool.getStringAddressByBytes(owner))) {
        return Result.getFailed(AccountErrorCode.ADDRESS_ERROR);
    }
    try {
        Result<UtxoAccountsBalancePo> utxoAccountsBalance = utxoAccountsStorageService.getUtxoAccountsBalanceByAddress(owner);
        long synBlockHeight = utxoAccountsStorageService.getHadSynBlockHeight();
        if (null == utxoAccountsBalance || null == utxoAccountsBalance.getData()) {
            return Result.getFailed(UtxoAccountsErrorCode.DATA_NOT_FOUND);
        }
        UtxoAccountsBalancePo dbAccountsBalance = utxoAccountsBalance.getData();
        UtxoAccountsBalance accountBalance = new UtxoAccountsBalance();
        accountBalance.setOwner(dbAccountsBalance.getOwner());
        long totalNa = dbAccountsBalance.getOutputBalance() - (dbAccountsBalance.getInputBalance());
        totalNa += dbAccountsBalance.getContractToBalance();
        totalNa -= dbAccountsBalance.getContractFromBalance();
        accountBalance.setBalance(Na.valueOf(totalNa));
        long permanentLockedNa = dbAccountsBalance.getLockedPermanentBalance() - (dbAccountsBalance.getUnLockedPermanentBalance());
        long lockedNa = permanentLockedNa;
        List<LockedBalance> timeLockedBalance = dbAccountsBalance.getLockedTimeList();
        long currentTime = TimeService.currentTimeMillis();
        for (LockedBalance balance : timeLockedBalance) {
            if (balance.getLockedTime() > currentTime) {
                lockedNa += balance.getLockedBalance();
            } else {
                break;
            }
        }
        List<LockedBalance> heightLockedBalance = dbAccountsBalance.getLockedHeightList();
        for (LockedBalance balance : heightLockedBalance) {
            if (balance.getLockedTime() > synBlockHeight) {
                lockedNa += balance.getLockedBalance();
            } else {
                break;
            }
        }
        accountBalance.setHadLocked(Na.valueOf(lockedNa));
        return Result.getSuccess().setData(accountBalance);
    } catch (NulsException e) {
        Log.error(e);
    }
    return Result.getFailed(UtxoAccountsErrorCode.SYS_UNKOWN_EXCEPTION);
}
Also used : UtxoAccountsBalancePo(io.nuls.utxo.accounts.storage.po.UtxoAccountsBalancePo) LockedBalance(io.nuls.utxo.accounts.storage.po.LockedBalance) NulsException(io.nuls.kernel.exception.NulsException) UtxoAccountsBalance(io.nuls.utxo.accounts.model.UtxoAccountsBalance)

Aggregations

UtxoAccountsBalance (io.nuls.utxo.accounts.model.UtxoAccountsBalance)2 Account (io.nuls.account.model.Account)1 Balance (io.nuls.account.model.Balance)1 MultiSigAccount (io.nuls.account.model.MultiSigAccount)1 NulsException (io.nuls.kernel.exception.NulsException)1 LockedBalance (io.nuls.utxo.accounts.storage.po.LockedBalance)1 UtxoAccountsBalancePo (io.nuls.utxo.accounts.storage.po.UtxoAccountsBalancePo)1