use of io.nuls.account.ledger.storage.po.TransactionInfoPo in project nuls by nuls-io.
the class AccountLedgerServiceImpl method deleteTransaction.
@Override
public Result<Integer> deleteTransaction(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);
}
TransactionInfoPo txInfoPo = new TransactionInfoPo(tx);
Result result = transactionInfoService.deleteTransactionInfo(txInfoPo);
if (result.isFailed()) {
return result;
}
result = localUtxoService.deleteUtxoOfTransaction(tx);
if (result.isFailed()) {
return result;
}
result = unconfirmedTransactionStorageService.deleteUnconfirmedTx(tx.getHash());
for (int i = 0; i < addresses.size(); i++) {
balanceManager.refreshBalance(addresses.get(i));
}
if (usedTxSets != null) {
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;
}
use of io.nuls.account.ledger.storage.po.TransactionInfoPo in project nuls by nuls-io.
the class AccountLedgerServiceImpl method saveConfirmedTransaction.
private Result<Integer> saveConfirmedTransaction(Transaction tx, List<byte[]> addresses) {
if (tx == null) {
return Result.getFailed(KernelErrorCode.NULL_PARAMETER);
}
TransactionInfoPo txInfoPo = new TransactionInfoPo(tx);
txInfoPo.setStatus(TransactionInfo.CONFIRMED);
Result result = transactionInfoService.saveTransactionInfo(txInfoPo, addresses);
if (result.isFailed()) {
return result;
}
// 判断交易是否已经存在,如果存在则不处理coin
Transaction unconfirmedTx = unconfirmedTransactionStorageService.getUnconfirmedTx(tx.getHash()).getData();
if (unconfirmedTx == null) {
result = localUtxoService.saveUtxoForLocalAccount(tx);
if (result.isFailed()) {
transactionInfoService.deleteTransactionInfo(txInfoPo);
return result;
}
} else {
unconfirmedTransactionStorageService.deleteUnconfirmedTx(tx.getHash());
}
for (int i = 0; i < addresses.size(); i++) {
balanceManager.refreshBalance(addresses.get(i));
}
result.setData(1);
return result;
}
use of io.nuls.account.ledger.storage.po.TransactionInfoPo in project nuls by nuls-io.
the class AccountLedgerServiceImpl method importConfirmedTransaction.
protected Result<Integer> importConfirmedTransaction(Transaction tx, byte[] address) {
if (!AccountLegerUtils.isTxRelatedToAddress(tx, address)) {
return Result.getSuccess().setData(0);
}
TransactionInfoPo txInfoPo = new TransactionInfoPo(tx);
txInfoPo.setStatus(TransactionInfo.CONFIRMED);
List<byte[]> addresses = new ArrayList<>();
addresses.add(address);
Result result = transactionInfoService.saveTransactionInfo(txInfoPo, addresses);
if (result.isFailed()) {
return result;
}
result = localUtxoService.saveUtxoForAccount(tx, address);
if (result.isFailed()) {
transactionInfoService.deleteTransactionInfo(txInfoPo);
}
return result;
}
use of io.nuls.account.ledger.storage.po.TransactionInfoPo in project nuls by nuls-io.
the class AccountLedgerServiceImpl method saveUnconfirmedTransaction.
protected Result saveUnconfirmedTransaction(Transaction tx) {
if (tx == null) {
return Result.getFailed(KernelErrorCode.NULL_PARAMETER);
}
// 查询本地账户地址
List<byte[]> localAccountList = AccountLegerUtils.getLocalAddresses();
List<byte[]> addresses = AccountLegerUtils.getRelatedAddresses(tx, localAccountList);
if (addresses == null || addresses.size() == 0) {
return Result.getSuccess().setData(0);
}
TransactionInfoPo txInfoPo = new TransactionInfoPo(tx);
txInfoPo.setStatus(TransactionInfo.UNCONFIRMED);
Result result = transactionInfoService.saveTransactionInfo(txInfoPo, addresses);
if (result.isFailed()) {
return result;
}
result = unconfirmedTransactionStorageService.saveUnconfirmedTx(tx.getHash(), tx);
if (result.isFailed()) {
return result;
}
result = localUtxoService.saveUtxoForAccount(tx, addresses);
if (result.isFailed()) {
transactionInfoService.deleteTransactionInfo(txInfoPo);
unconfirmedTransactionStorageService.deleteUnconfirmedTx(tx.getHash());
return result;
}
for (int i = 0; i < addresses.size(); i++) {
balanceManager.refreshBalance(addresses.get(i));
}
return result;
}
use of io.nuls.account.ledger.storage.po.TransactionInfoPo in project nuls by nuls-io.
the class TransactionInfoServiceImpl method getTxInfoList.
@Override
public Result<List<TransactionInfo>> getTxInfoList(byte[] address) {
try {
List<TransactionInfoPo> infoPoList = transactionInfoStorageService.getTransactionInfoListByAddress(address);
List<TransactionInfo> infoList = new ArrayList<>();
for (TransactionInfoPo po : infoPoList) {
if (po.getTxType() == ConsensusConstant.TX_TYPE_RED_PUNISH || po.getTxType() == ConsensusConstant.TX_TYPE_YELLOW_PUNISH) {
continue;
}
infoList.add(po.toTransactionInfo());
}
Collections.sort(infoList, TxInfoComparator.getInstance());
return Result.getSuccess().setData(infoList);
} catch (NulsException e) {
Log.error(e);
return Result.getFailed(e.getErrorCode());
}
}
Aggregations