use of io.nuls.kernel.validate.ValidateResult in project nuls by nuls-io.
the class RegisterAgentProcessTest method testConflictDetect.
@Test
public void testConflictDetect() {
assertNotNull(tx);
assertNotNull(registerAgentProcess);
List<Transaction> list = new ArrayList<>();
ValidateResult result = registerAgentProcess.conflictDetect(list);
assertTrue(result.isSuccess());
list.add(tx);
result = registerAgentProcess.conflictDetect(list);
assertTrue(result.isSuccess());
list.add(newTx());
result = registerAgentProcess.conflictDetect(list);
assertTrue(result.isSuccess());
list.add(tx);
result = registerAgentProcess.conflictDetect(list);
assertFalse(result.isSuccess());
}
use of io.nuls.kernel.validate.ValidateResult in project nuls by nuls-io.
the class ConsensusPocServiceTest method newTx.
@Test
public void newTx() throws Exception {
assertNotNull(service);
// new a tx
Transaction tx = new TestTransaction();
CoinData coinData = new CoinData();
List<Coin> fromList = new ArrayList<>();
fromList.add(new Coin(new byte[20], Na.NA, 0L));
coinData.setFrom(fromList);
tx.setCoinData(coinData);
tx.setTime(1l);
assertNotNull(tx);
assertNotNull(tx.getHash());
assertEquals(tx.getHash().getDigestHex(), "00204a54f8b12b75c3c1fe5f261416adaf1a1b906ccf5673bb7a133ede5a0a4c56f8");
Result result = service.newTx(tx);
assertNotNull(result);
assertTrue(result.isSuccess());
assertFalse(result.isFailed());
// test orphan
NulsDataValidator<TestTransaction> testValidator = new NulsDataValidator<TestTransaction>() {
@Override
public ValidateResult validate(TestTransaction data) {
if (data.getHash().getDigestHex().equals("0020e27ee243921bf482d7b62b6ee63c7ab1938953c834318b79fa3204c5c869e26b")) {
return ValidateResult.getFailedResult("test.transaction", TransactionErrorCode.ORPHAN_TX);
} else {
return ValidateResult.getSuccessResult();
}
}
};
ValidatorManager.addValidator(TestTransaction.class, testValidator);
tx = new TestTransaction();
tx.setTime(2l);
assertEquals(tx.getHash().getDigestHex(), "0020e27ee243921bf482d7b62b6ee63c7ab1938953c834318b79fa3204c5c869e26b");
result = service.newTx(tx);
assertNotNull(result);
assertTrue(result.isSuccess());
assertFalse(result.isFailed());
List<Transaction> list = TxMemoryPool.getInstance().getAll();
assertNotNull(list);
assertEquals(list.size(), 1);
List<Transaction> orphanList = TxMemoryPool.getInstance().getAllOrphan();
assertNotNull(orphanList);
assertEquals(orphanList.size(), 1);
}
use of io.nuls.kernel.validate.ValidateResult in project nuls by nuls-io.
the class TxVersionForScriptValidator method validate.
@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();
}
use of io.nuls.kernel.validate.ValidateResult in project nuls by nuls-io.
the class BlockFieldValidator method validate.
@Override
public ValidateResult validate(Block data) {
ValidateResult result = ValidateResult.getSuccessResult();
boolean failed = false;
do {
if (data == null) {
failed = true;
break;
}
if (data.getHeader() == null) {
failed = true;
break;
}
if (data.getTxs() == null || data.getTxs().isEmpty()) {
failed = true;
break;
}
if (data.getHeader().getTxCount() == 0 || data.getTxs().size() != data.getHeader().getTxCount()) {
failed = true;
break;
}
} while (false);
if (failed) {
result = ValidateResult.getFailedResult(this.getClass().getName(), ProtocolErroeCode.BLOCK_FIELD_CHECK_FAILED);
}
return result;
}
use of io.nuls.kernel.validate.ValidateResult in project nuls by nuls-io.
the class AccountLedgerResource method validate.
@POST
@Path("/transaction/validate")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "验证交易是否正确", notes = "result.data: resultJson 返回验证结果")
@ApiResponses(value = { @ApiResponse(code = 200, message = "success") })
public RpcClientResult validate(@ApiParam(name = "form", value = "验证交易是否正确", required = true) BroadHexTxForm form) {
if (StringUtils.isBlank(form.getTxHex())) {
return Result.getFailed(AccountErrorCode.PARAMETER_ERROR).toRpcClientResult();
}
try {
byte[] data = Hex.decode(form.getTxHex());
Transaction tx = TransactionManager.getInstance(new NulsByteBuffer(data));
ValidateResult validateResult = tx.verify();
if (validateResult.isFailed()) {
return Result.getFailed(validateResult.getErrorCode()).toRpcClientResult();
}
validateResult = this.ledgerService.verifyCoinData(tx, new HashMap<>(), new HashSet<>());
if (validateResult.isFailed()) {
return Result.getFailed(validateResult.getErrorCode()).toRpcClientResult();
}
Result result = Result.getSuccess();
return result.toRpcClientResult();
} catch (Exception e) {
Log.error(e);
return Result.getFailed(LedgerErrorCode.DATA_PARSE_ERROR).toRpcClientResult();
}
}
Aggregations