io.nuls.kernel.model.Transaction.getCoinData()方法的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(10.9k)|赞(0)|评价(0)|浏览(102)

本文整理了Java中io.nuls.kernel.model.Transaction.getCoinData()方法的一些代码示例,展示了Transaction.getCoinData()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Transaction.getCoinData()方法的具体详情如下:
包路径:io.nuls.kernel.model.Transaction
类名称:Transaction
方法名:getCoinData

Transaction.getCoinData介绍

暂无

代码示例

代码示例来源:origin: nuls-io/nuls

public void initUsedTxSets() {
  usedTxSets = new HashSet<>();
  List<Transaction> allUnconfirmedTxs = unconfirmedTransactionStorageService.loadAllUnconfirmedList().getData();
  for (Transaction tx : allUnconfirmedTxs) {
    CoinData coinData = tx.getCoinData();
    if (coinData == null) {
      continue;
    }
    List<Coin> froms = tx.getCoinData().getFrom();
    for (Coin from : froms) {
      usedTxSets.add(LedgerUtil.asString(from.getOwner()));
    }
  }
}

代码示例来源:origin: nuls-io/nuls

@Override
  public ValidateResult validate(Transaction tx) {
    if (NulsContext.MAIN_NET_VERSION > 1) {
      return ValidateResult.getSuccessResult();
    }
    if (null == tx.getCoinData() || tx.getCoinData().getTo() == null || tx.getCoinData().getTo().isEmpty()) {
      return ValidateResult.getSuccessResult();
    }
    List<Coin> toList = tx.getCoinData().getTo();
    ValidateResult failed = ValidateResult.getFailedResult(this.getClass().getName(), KernelErrorCode.VERSION_NOT_NEWEST);
    for (Coin coin : toList) {
      if (coin.getOwner().length != Address.ADDRESS_LENGTH) {
        return failed;
      }
      if (coin.getOwner()[2] != NulsContext.DEFAULT_ADDRESS_TYPE) {
        return failed;
      }
    }
    return ValidateResult.getSuccessResult();
  }
}

代码示例来源:origin: nuls-io/nuls

@Override
  public ValidateResult validate(Transaction tx) throws NulsException {
    try {
      if(tx.getCoinData() == null){
        return ValidateResult.getSuccessResult();
      }
      List<Coin> toList = tx.getCoinData().getTo();
      if(toList == null || toList.size() == 0){
        return ValidateResult.getSuccessResult();
      }
      for (Coin coin:toList) {
        if(coin.getOwner().length == Address.ADDRESS_LENGTH && coin.getOwner()[2] == NulsContext.P2SH_ADDRESS_TYPE){
          return ValidateResult.getFailedResult(this.getClass().getName(), KernelErrorCode.COIN_OWNER_ERROR);
        }
      }
    } catch (Exception e) {
      Log.error(e);
      return ValidateResult.getFailedResult(this.getClass().getName(), KernelErrorCode.DATA_ERROR);
    }
    return ValidateResult.getSuccessResult();
  }
}

代码示例来源:origin: nuls-io/nuls

@Override
  public ValidateResult validate(Transaction tx) throws NulsException {
    if(tx.getCoinData() == null){
      return ValidateResult.getSuccessResult();
    }
    List<Coin> toList = tx.getCoinData().getTo();
    if(toList == null || toList.size() == 0){
      return ValidateResult.getSuccessResult();
    }
    int type = tx.getType();
    for (Coin coin : toList) {
      if(ContractUtil.isLegalContractAddress(coin.getOwner())) {
        if(type != NulsConstant.TX_TYPE_COINBASE && type != ContractConstant.TX_TYPE_CALL_CONTRACT) {
          Log.error("contract data error: The contract does not accept transfers of this type[{}] of transaction.", type);
          return ValidateResult.getFailedResult(this.getClass().getSimpleName(), TransactionErrorCode.TX_DATA_VALIDATION_ERROR);
        }
      }
    }
    return ValidateResult.getSuccessResult();
  }
}

代码示例来源:origin: nuls-io/nuls

private void rollbackToMapAndContractUsedCoinMap(Transaction tx, Map<String, Coin> toMaps, Map<String,Coin> contractUsedCoinMap) {
  if (tx == null || tx.getCoinData() == null || contractUsedCoinMap == null) {
    return;
  }
  CoinData coinData = tx.getCoinData();
  List<Coin> froms = coinData.getFrom();
  List<Coin> tos = coinData.getTo();
  String key;
  for (Coin from : froms) {
    key = from.getKey();
    if(key != null) {
      contractUsedCoinMap.remove(from.getKey());
    }
  }
  try {
    byte[] txHashBytes = tx.getHash().serialize();
    for (int i = 0, size = tos.size(); i < size; i++) {
      toMaps.remove(LedgerUtil.asString(ArraysTool.concatenate(txHashBytes, new VarInt(i).encode())));
    }
  } catch (Exception e) {
    throw new RuntimeException(e);
  }
}

代码示例来源:origin: nuls-io/nuls

for (Transaction tx : txs) {
  try {
    if (tx.getCoinData() == null) {
      continue;
    List<Coin> from = tx.getCoinData().getFrom();
    List<Coin> to = tx.getCoinData().getTo();

代码示例来源:origin: nuls-io/nuls

private Map<String, Coin> addToCoinMap(Transaction transaction) {
  Map<String, Coin> toMap = new HashMap<>();
  CoinData coinData = transaction.getCoinData();
  if (coinData == null) {
    return toMap;
  }
  List<Coin> froms = coinData.getFrom();
  if (froms == null || froms.size() == 0) {
    return toMap;
  }
  for (Coin coin : froms) {
    byte[] keyBytes = coin.getOwner();
    try {
      Transaction unconfirmedTx = getUnconfirmedTransaction(NulsDigestData.fromDigestHex(LedgerUtil.getTxHash(keyBytes))).getData();
      if (unconfirmedTx != null) {
        int index = LedgerUtil.getIndex(keyBytes);
        Coin toCoin = unconfirmedTx.getCoinData().getTo().get(index);
        toMap.put(LedgerUtil.asString(keyBytes), toCoin);
      }
    } catch (NulsException e) {
      Log.error(e);
    }
  }
  return toMap;
}

代码示例来源:origin: nuls-io/nuls

private void setBlockReward(Transaction tx) {
  CoinData coinData = tx.getCoinData();
  if (null == coinData) {
    throw new NulsRuntimeException(TransactionErrorCode.COINDATA_NOT_FOUND);
  }
  Na rewardNa = Na.ZERO;
  for (Coin coin : coinData.getTo()) {
    rewardNa = rewardNa.add(coin.getNa());
  }
  this.reward = rewardNa.getValue();
}

代码示例来源:origin: nuls-io/nuls

private void setBlockReward(Transaction tx) {
  CoinData coinData = tx.getCoinData();
  if (null == coinData) {
    throw new NulsRuntimeException(TransactionErrorCode.COINDATA_NOT_FOUND);
  }
  Na rewardNa = Na.ZERO;
  for (Coin coin : coinData.getTo()) {
    rewardNa = rewardNa.add(coin.getNa());
  }
  this.reward = rewardNa.getValue();
}

代码示例来源:origin: nuls-io/nuls

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

代码示例来源:origin: nuls-io/nuls

CoinData coinData = tx.getCoinData();
if (coinData != null) {
  List<Coin> froms = tx.getCoinData().getFrom();
  for (Coin from : froms) {
    usedTxSets.remove(LedgerUtil.asString(from.getOwner()));

代码示例来源:origin: nuls-io/nuls

@Override
public Result<List<byte[]>> rollbackUnlockTxCoinData(Transaction tx) {
  List<byte[]> addresses = new ArrayList<>();
  CoinData coinData = tx.getCoinData();
  if (coinData != null) {
    // lock utxo - to
    List<Coin> tos = coinData.getTo();
    for (int i = 0, length = tos.size(); i < length; i++) {
      Coin to = tos.get(i);
      if (to.getLockTime() == -1L) {
        try {
          byte[] outKey = ArraysTool.concatenate(tx.getHash().serialize(), new VarInt(i).encode());
          saveUTXO(outKey, to.serialize());
          addresses.add(to.getAddress());
        } catch (IOException e) {
          throw new NulsRuntimeException(e);
        }
        break;
      }
    }
  }
  return Result.getSuccess().setData(addresses);
}

代码示例来源:origin: nuls-io/nuls

@Override
  public ValidateResult validate(Transaction tx) {
    int txType = tx.getType();
    if (tx.isSystemTx()) {
      return ValidateResult.getSuccessResult();
    }
    CoinData coinData = tx.getCoinData();
    if (null == coinData) {
      return ValidateResult.getFailedResult(this.getClass().getName(), TransactionErrorCode.COINDATA_NOT_FOUND);
    }
    Na realFee = tx.getFee();
    Na fee = null;
    if (txType == ProtocolConstant.TX_TYPE_TRANSFER
        || txType == ProtocolConstant.TX_TYPE_DATA
        || txType == ContractConstant.TX_TYPE_CREATE_CONTRACT
        || txType == ContractConstant.TX_TYPE_CALL_CONTRACT
        || txType == ContractConstant.TX_TYPE_DELETE_CONTRACT) {
      fee = TransactionFeeCalculator.getTransferFee(tx.size());
    } else {
      fee = TransactionFeeCalculator.getMaxFee(tx.size());
    }
    if (realFee.isGreaterOrEquals(fee)) {
      return ValidateResult.getSuccessResult();
    }
    return ValidateResult.getFailedResult(this.getClass().getName(), TransactionErrorCode.FEE_NOT_RIGHT);
  }
}

代码示例来源:origin: nuls-io/nuls

private byte[] getInputAddress(Coin from) {
  byte[] fromHash;
  int fromIndex;
  byte[] owner = from.getOwner();
  // owner拆分出txHash和index
  fromHash = UtxoAccountsUtil.getTxHashBytes(owner);
  fromIndex = UtxoAccountsUtil.getIndex(owner);
  NulsDigestData fromHashObj = new NulsDigestData();
  try {
    fromHashObj.parse(fromHash, 0);
    Transaction outPutTx = utxoAccountsStorageService.getTx(fromHashObj);
    return outPutTx.getCoinData().getTo().get(fromIndex).getOwner();
  } catch (NulsException e) {
    Log.error(e);
    return null;
  }
}

代码示例来源:origin: nuls-io/nuls

private void fillBlockTxInputAddress(BlockDto dto) {
  for (TransactionDto transaction : dto.getTxList()) {
    if (transaction.getInputs() == null || transaction.getInputs().isEmpty()) {
      continue;
    }
    for (InputDto inputDto : transaction.getInputs()) {
      Transaction tx;
      try {
        tx = ledgerService.getTx(NulsDigestData.fromDigestHex(inputDto.getFromHash()));
      } catch (NulsException e) {
        Log.error(e);
        continue;
      }
      Coin coin = tx.getCoinData().getTo().get(inputDto.getFromIndex());
      //inputDto.setAddress(AddressTool.getStringAddressByBytes(coin.()));
      inputDto.setAddress(AddressTool.getStringAddressByBytes(coin.getAddress()));
    }
  }
}

代码示例来源:origin: nuls-io/nuls

/**
 * 生成交易的锁定脚本
 *
 * @param tx 交易
 */
public static boolean createOutputScript(Transaction tx) {
  CoinData coinData = tx.getCoinData();
  //生成锁定脚本
  for (Coin coin : coinData.getTo()) {
    Script scriptPubkey = null;
    byte[] toAddr = coin.getAddress();
    if (toAddr[2] == NulsContext.DEFAULT_ADDRESS_TYPE) {
      scriptPubkey = ScriptUtil.createP2PKHOutputScript(toAddr);
    } else if (toAddr[2] == NulsContext.P2SH_ADDRESS_TYPE) {
      scriptPubkey = ScriptUtil.createP2SHOutputScript(toAddr);
    }
    if (scriptPubkey != null && scriptPubkey.getProgram().length > 0) {
      coin.setOwner(scriptPubkey.getProgram());
    }
  }
  return true;
}

代码示例来源:origin: nuls-io/nuls

@Override
public Result<List<byte[]>> unlockCoinData(Transaction tx, long newLockTime) {
  List<byte[]> addresses = new ArrayList<>();
  CoinData coinData = tx.getCoinData();
  if (coinData != null) {
    List<Coin> tos = coinData.getTo();
    Coin to;
    for (int i = 0, length = tos.size(); i < length; i++) {
      to = tos.get(i);
      if (to.getLockTime() == -1L) {
        Coin needUnLockUtxoNew = new Coin(to.getOwner(), to.getNa(), newLockTime);
        needUnLockUtxoNew.setFrom(to.getFrom());
        try {
          byte[] outKey = ArraysTool.concatenate(tx.getHash().serialize(), new VarInt(i).encode());
          saveUTXO(outKey, needUnLockUtxoNew.serialize());
          addresses.add(to.getAddress());
        } catch (IOException e) {
          throw new NulsRuntimeException(e);
        }
        //todo , think about weather to add a transaction history
        break;
      }
    }
  }
  return Result.getSuccess().setData(addresses);
}

代码示例来源:origin: nuls-io/nuls

public static TransactionCreatedReturnInfo makeReturnInfo(Transaction tx) throws IOException {
    String hash = NulsDigestData.calcDigestData(tx.serializeForHash()).getDigestHex();
    String txHex = Hex.encode(tx.serialize());
    CoinData coinData = tx.getCoinData();
    List<InputDto> inputs = ConvertCoinTool.convertInputList(coinData.getFrom());
    List<OutputDto> outputs = ConvertCoinTool.convertOutputList(coinData.getTo(), hash);
    TransactionCreatedReturnInfo returnInfo = new TransactionCreatedReturnInfo(hash, txHex, inputs, outputs);
    return returnInfo;
  }
}

代码示例来源:origin: nuls-io/nuls

@Override
public Result rollbackUnlockTxCoinData(Transaction tx) throws NulsException {
  if (tx == null || tx.getCoinData() == null) {
    return ValidateResult.getFailedResult(CLASS_NAME, LedgerErrorCode.NULL_PARAMETER);
    CoinData coinData = tx.getCoinData();
    List<Coin> tos = coinData.getTo();
    boolean isExistLockUtxo = false;

代码示例来源:origin: nuls-io/nuls

pool.add(tx, false);
List<Coin> fromCoins = tx.getCoinData().getFrom();
for (Coin coin : fromCoins) {
  String key = LedgerUtil.asString(coin.getOwner());

相关文章