use of org.aion.precompiled.type.PrecompiledContract in project aion by aionnetwork.
the class EDVerifyContractTest method shouldFailIfNotEnoughEnergy.
@Test
public void shouldFailIfNotEnoughEnergy() {
byte[] input = setupInput();
PrecompiledTransactionContext ctx = new PrecompiledTransactionContext(ContractInfo.ED_VERIFY.contractAddress, origin, caller, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), txHash, txHash, blockNumber, nrgLimit, depth);
PrecompiledContract contract = new ContractFactory().getPrecompiledContract(ctx, externalStateForTests);
PrecompiledTransactionResult result = contract.execute(input, 2999L);
assertEquals("OUT_OF_NRG", result.getStatus().causeOfError);
}
use of org.aion.precompiled.type.PrecompiledContract in project aion by aionnetwork.
the class EDVerifyContractTest method shouldFailIfNotEnoughEnergy.
@Test
public void shouldFailIfNotEnoughEnergy() {
byte[] input = setupInput();
PrecompiledTransactionContext ctx = new PrecompiledTransactionContext(ContractInfo.ED_VERIFY.contractAddress, origin, caller, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), txHash, txHash, blockNumber, nrgLimit, depth);
PrecompiledContract contract = new ContractFactory().getPrecompiledContract(ctx, externalStateForTests);
PrecompiledTransactionResult result = contract.execute(input, 2999L);
assertEquals("OUT_OF_NRG", result.getStatus().causeOfError);
}
use of org.aion.precompiled.type.PrecompiledContract in project aion by aionnetwork.
the class EDVerifyContractTest method emptyInputTest.
@Test
public void emptyInputTest() {
byte[] input = new byte[128];
PrecompiledTransactionContext ctx = new PrecompiledTransactionContext(ContractInfo.ED_VERIFY.contractAddress, origin, caller, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), txHash, txHash, blockNumber, nrgLimit, depth);
PrecompiledContract contract = new ContractFactory().getPrecompiledContract(ctx, externalStateForTests);
assertNotNull(contract);
PrecompiledTransactionResult result = contract.execute(input, 21000L);
assertThat(result.getStatus().isSuccess());
assertThat(Arrays.equals(result.getReturnData(), pubKey));
}
use of org.aion.precompiled.type.PrecompiledContract in project aion by aionnetwork.
the class BenchmarkTest method benchBlake2bHash.
@Test
public void benchBlake2bHash() {
PrecompiledTransactionContext context = new PrecompiledTransactionContext(ContractInfo.BLAKE_2B.contractAddress, origin, caller, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), txHash, txHash, blockNumber, nrgLimit, depth);
ExternalStateForTests externalStateForTests = ExternalStateForTests.usingDefaultRepository();
PrecompiledContract ct;
// warm up
for (int i = 0; i < WARMUP; i++) {
ct = cf.getPrecompiledContract(context, externalStateForTests);
ct.execute(txHash, context.transactionEnergy);
}
long t1 = System.currentTimeMillis();
for (int i = 0; i < BENCH; i++) {
ct = cf.getPrecompiledContract(context, externalStateForTests);
ct.execute(txHash, context.transactionEnergy);
}
System.out.println("Bench blake2b: " + String.valueOf(System.currentTimeMillis() - t1) + "ms");
}
use of org.aion.precompiled.type.PrecompiledContract in project aion by aionnetwork.
the class EDVerifyContractTest method emptyInputTest.
@Test
public void emptyInputTest() {
byte[] input = new byte[128];
PrecompiledTransactionContext ctx = new PrecompiledTransactionContext(ContractInfo.ED_VERIFY.contractAddress, origin, caller, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), txHash, txHash, blockNumber, nrgLimit, depth);
PrecompiledContract contract = new ContractFactory().getPrecompiledContract(ctx, externalStateForTests);
assertNotNull(contract);
PrecompiledTransactionResult result = contract.execute(input, 21000L);
assertThat(result.getStatus().isSuccess());
assertThat(Arrays.equals(result.getReturnData(), ownerAddr));
}
Aggregations