本文整理了Java中io.nuls.kernel.model.Transaction.getCoinData()
方法的一些代码示例,展示了Transaction.getCoinData()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Transaction.getCoinData()
方法的具体详情如下:
包路径:io.nuls.kernel.model.Transaction
类名称: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());
内容来源于网络,如有侵权,请联系作者删除!