use of io.nuls.kernel.model.Transaction in project nuls by nuls-io.
the class SmallBlock method size.
@Override
public int size() {
int size = header.size();
size += SerializeUtils.sizeOfVarInt(txHashList.size());
for (NulsDigestData hash : txHashList) {
size += SerializeUtils.sizeOfNulsData(hash);
}
size += SerializeUtils.sizeOfVarInt(subTxList.size());
for (Transaction tx : subTxList) {
size += SerializeUtils.sizeOfNulsData(tx);
}
return size;
}
use of io.nuls.kernel.model.Transaction in project nuls by nuls-io.
the class AssemblyBlockUtil method assemblyBlock.
public static Block assemblyBlock(BlockHeader header, Map<NulsDigestData, Transaction> txMap, List<NulsDigestData> txHashList) {
Block block = new Block();
block.setHeader(header);
List<Transaction> txs = new ArrayList<>();
for (NulsDigestData txHash : txHashList) {
Transaction tx = txMap.get(txHash);
if (null == tx) {
throw new NulsRuntimeException(TransactionErrorCode.TX_NOT_EXIST);
}
tx.setBlockHeight(header.getHeight());
txs.add(tx);
}
block.setTxs(txs);
return block;
}
use of io.nuls.kernel.model.Transaction in project nuls by nuls-io.
the class AliasTxProcessor method conflictDetect.
/**
* 冲突检测
* 1.检测一个acount只能设置一个别名
* 2.检查是否多个交易设置了同样的别名
* conflictDetect
* 1.Detecting an acount can only set one alias.
* 2.Check if multiple aliasTransaction have the same alias.
*
* @param txList 需要检查的交易列表/A list of transactions to be checked.
*/
@Override
public ValidateResult conflictDetect(List<Transaction> txList) {
if (null == txList || txList.isEmpty()) {
return ValidateResult.getSuccessResult();
}
Set<String> aliasNames = new HashSet<>();
Set<String> accountAddress = new HashSet<>();
List<AliasPo> polist = this.aliasService.getAllAlias();
for (AliasPo po : polist) {
aliasNames.add(po.getAlias());
accountAddress.add(Hex.encode(po.getAddress()));
}
for (Transaction transaction : txList) {
if (transaction.getType() == AccountConstant.TX_TYPE_ACCOUNT_ALIAS) {
AliasTransaction aliasTransaction = (AliasTransaction) transaction;
Alias alias = aliasTransaction.getTxData();
if (!aliasNames.add(alias.getAlias())) {
return (ValidateResult) ValidateResult.getFailedResult(getClass().getName(), AccountErrorCode.ALIAS_CONFLICT).setData(aliasTransaction);
}
if (!accountAddress.add(Hex.encode(alias.getAddress()))) {
return (ValidateResult) ValidateResult.getFailedResult(getClass().getName(), AccountErrorCode.ACCOUNT_ALREADY_SET_ALIAS).setData(aliasTransaction);
}
}
}
return ValidateResult.getSuccessResult();
}
Aggregations