Search in sources :

Example 16 with ValidateResult

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());
}
Also used : Transaction(io.nuls.kernel.model.Transaction) CreateAgentTransaction(io.nuls.consensus.poc.protocol.tx.CreateAgentTransaction) ValidateResult(io.nuls.kernel.validate.ValidateResult) ArrayList(java.util.ArrayList) Test(org.junit.Test) BaseTest(io.nuls.consensus.poc.BaseTest)

Example 17 with ValidateResult

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);
}
Also used : TestTransaction(io.nuls.consensus.poc.TestTransaction) NulsDataValidator(io.nuls.kernel.validate.NulsDataValidator) TestTransaction(io.nuls.consensus.poc.TestTransaction) ArrayList(java.util.ArrayList) ValidateResult(io.nuls.kernel.validate.ValidateResult) Test(org.junit.Test) BaseTest(io.nuls.consensus.poc.BaseTest)

Example 18 with ValidateResult

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();
}
Also used : Coin(io.nuls.kernel.model.Coin) ValidateResult(io.nuls.kernel.validate.ValidateResult)

Example 19 with ValidateResult

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;
}
Also used : ValidateResult(io.nuls.kernel.validate.ValidateResult)

Example 20 with ValidateResult

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();
    }
}
Also used : TransferTransaction(io.nuls.protocol.model.tx.TransferTransaction) ValidateResult(io.nuls.kernel.validate.ValidateResult) CryptoException(io.nuls.core.tools.crypto.Exception.CryptoException) NulsException(io.nuls.kernel.exception.NulsException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) NulsRuntimeException(io.nuls.kernel.exception.NulsRuntimeException) IOException(java.io.IOException) ValidateResult(io.nuls.kernel.validate.ValidateResult) CoinDataResult(io.nuls.account.ledger.model.CoinDataResult)

Aggregations

ValidateResult (io.nuls.kernel.validate.ValidateResult)31 NulsException (io.nuls.kernel.exception.NulsException)12 IOException (java.io.IOException)8 Agent (io.nuls.consensus.poc.protocol.entity.Agent)6 RedPunishTransaction (io.nuls.consensus.poc.protocol.tx.RedPunishTransaction)6 Coin (io.nuls.kernel.model.Coin)6 Transaction (io.nuls.kernel.model.Transaction)6 RedPunishData (io.nuls.consensus.poc.protocol.entity.RedPunishData)5 AgentPo (io.nuls.consensus.poc.storage.po.AgentPo)5 TransactionSignature (io.nuls.kernel.script.TransactionSignature)5 HashSet (java.util.HashSet)5 CreateAgentTransaction (io.nuls.consensus.poc.protocol.tx.CreateAgentTransaction)4 CoinData (io.nuls.kernel.model.CoinData)4 SmallBlock (io.nuls.protocol.model.SmallBlock)4 ArrayList (java.util.ArrayList)4 BaseTest (io.nuls.consensus.poc.BaseTest)3 DepositPo (io.nuls.consensus.poc.storage.po.DepositPo)3 ContractResult (io.nuls.contract.dto.ContractResult)3 NulsRuntimeException (io.nuls.kernel.exception.NulsRuntimeException)3 CoinBaseTransaction (io.nuls.protocol.model.tx.CoinBaseTransaction)3