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;
}
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();
}
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();
}
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;
}
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);
}
Aggregations