Search in sources :

Example 6 with TransactionInfoPo

use of io.nuls.account.ledger.storage.po.TransactionInfoPo in project nuls by nuls-io.

the class TransactionInfoStorageServiceImpl method getTransactionInfoListByAddress.

@Override
public List<TransactionInfoPo> getTransactionInfoListByAddress(byte[] address) throws NulsException {
    List<TransactionInfoPo> infoPoList = new ArrayList<>();
    Set<byte[]> keySet = dbService.keySet(AccountLedgerStorageConstant.DB_NAME_ACCOUNT_LEDGER_TX_INDEX);
    if (keySet == null || keySet.isEmpty()) {
        return infoPoList;
    }
    byte[] addressKey = new byte[Address.ADDRESS_LENGTH];
    for (byte[] key : keySet) {
        System.arraycopy(key, 0, addressKey, 0, Address.ADDRESS_LENGTH);
        if (java.util.Arrays.equals(addressKey, address)) {
            byte[] values = dbService.get(AccountLedgerStorageConstant.DB_NAME_ACCOUNT_LEDGER_TX_INDEX, key);
            TransactionInfoPo transactionInfoPo = new TransactionInfoPo();
            transactionInfoPo.parse(values, 0);
            infoPoList.add(transactionInfoPo);
        }
    }
    return infoPoList;
}
Also used : ArrayList(java.util.ArrayList) TransactionInfoPo(io.nuls.account.ledger.storage.po.TransactionInfoPo)

Example 7 with TransactionInfoPo

use of io.nuls.account.ledger.storage.po.TransactionInfoPo in project nuls by nuls-io.

the class AccountLedgerServiceImpl method rollbackUnlockTxCoinData.

@Override
public Result rollbackUnlockTxCoinData(Transaction tx) {
    List<byte[]> addresses = AccountLegerUtils.getRelatedAddresses(tx);
    if (addresses == null || addresses.size() == 0) {
        return Result.getSuccess();
    }
    byte status = TransactionInfo.CONFIRMED;
    TransactionInfoPo txInfoPo = new TransactionInfoPo(tx);
    txInfoPo.setStatus(status);
    List<byte[]> addresses1 = localUtxoService.rollbackUnlockTxCoinData(tx).getData();
    for (byte[] address : addresses1) {
        balanceManager.refreshBalance(address);
    }
    CoinData coinData = tx.getCoinData();
    if (coinData != null) {
        List<Coin> froms = tx.getCoinData().getFrom();
        for (Coin from : froms) {
            usedTxSets.remove(LedgerUtil.asString(from.getOwner()));
        }
    }
    return Result.getSuccess();
}
Also used : TransactionInfoPo(io.nuls.account.ledger.storage.po.TransactionInfoPo)

Example 8 with TransactionInfoPo

use of io.nuls.account.ledger.storage.po.TransactionInfoPo in project nuls by nuls-io.

the class AccountLedgerServiceImpl method unlockCoinData.

@Override
public Result unlockCoinData(Transaction tx, long newLockTime) {
    List<byte[]> addresses = AccountLegerUtils.getRelatedAddresses(tx);
    if (addresses == null || addresses.size() == 0) {
        return Result.getSuccess();
    }
    byte status = TransactionInfo.CONFIRMED;
    TransactionInfoPo txInfoPo = new TransactionInfoPo(tx);
    txInfoPo.setStatus(status);
    List<byte[]> addresses1 = localUtxoService.unlockCoinData(tx, newLockTime).getData();
    for (byte[] address : addresses1) {
        balanceManager.refreshBalance(address);
    }
    return Result.getSuccess();
}
Also used : TransactionInfoPo(io.nuls.account.ledger.storage.po.TransactionInfoPo)

Example 9 with TransactionInfoPo

use of io.nuls.account.ledger.storage.po.TransactionInfoPo in project nuls by nuls-io.

the class AccountLedgerServiceImpl method rollbackTransaction.

private Result<Integer> rollbackTransaction(Transaction tx) {
    if (!AccountLegerUtils.isLocalTransaction(tx)) {
        return Result.getSuccess().setData(0);
    }
    List<byte[]> addresses = AccountLegerUtils.getRelatedAddresses(tx);
    if (addresses == null || addresses.size() == 0) {
        return Result.getSuccess().setData(0);
    }
    if (tx.isSystemTx()) {
        return deleteTransaction(tx);
    }
    TransactionInfoPo txInfoPo = new TransactionInfoPo(tx);
    Result result = transactionInfoService.saveTransactionInfo(txInfoPo, addresses);
    if (result.isFailed()) {
        return result;
    }
    result = unconfirmedTransactionStorageService.saveUnconfirmedTx(tx.getHash(), tx);
    return result;
}
Also used : TransactionInfoPo(io.nuls.account.ledger.storage.po.TransactionInfoPo) TransactionDataResult(io.nuls.account.ledger.model.TransactionDataResult) ValidateResult(io.nuls.kernel.validate.ValidateResult) CoinDataResult(io.nuls.account.ledger.model.CoinDataResult)

Example 10 with TransactionInfoPo

use of io.nuls.account.ledger.storage.po.TransactionInfoPo in project nuls by nuls-io.

the class CheckUnConfirmTxThread method deleteUnconfirmedTransaction.

private void deleteUnconfirmedTransaction(Transaction tx) {
    accountLedgerService.resetUsedTxSets();
    unconfirmedTransactionStorageService.deleteUnconfirmedTx(tx.getHash());
    TransactionInfoPo txInfoPo = new TransactionInfoPo(tx);
    transactionInfoService.deleteTransactionInfo(txInfoPo);
    rollbackUtxo(tx);
}
Also used : TransactionInfoPo(io.nuls.account.ledger.storage.po.TransactionInfoPo)

Aggregations

TransactionInfoPo (io.nuls.account.ledger.storage.po.TransactionInfoPo)10 CoinDataResult (io.nuls.account.ledger.model.CoinDataResult)5 TransactionDataResult (io.nuls.account.ledger.model.TransactionDataResult)5 ValidateResult (io.nuls.kernel.validate.ValidateResult)5 ArrayList (java.util.ArrayList)2 TransactionInfo (io.nuls.account.ledger.model.TransactionInfo)1 NulsException (io.nuls.kernel.exception.NulsException)1 DataTransaction (io.nuls.protocol.model.tx.DataTransaction)1 TransferTransaction (io.nuls.protocol.model.tx.TransferTransaction)1