use of io.nem.symbol.sdk.model.transaction.SecretLockTransaction in project nem2-sdk-java by nemtech.
the class TransactionMapperVertxTest method shouldCreateStandaloneSecretLockTransaction.
@Test
void shouldCreateStandaloneSecretLockTransaction() {
TransactionInfoDTO secretLockTransactionDTO = TestHelperVertx.loadTransactionInfoDTO("standaloneSecretLockTransaction.json");
Transaction secretLockTransaction = map(secretLockTransactionDTO);
validateStandaloneTransaction(secretLockTransaction, secretLockTransactionDTO);
}
use of io.nem.symbol.sdk.model.transaction.SecretLockTransaction in project nem2-sdk-java by nemtech.
the class SecretLockSecretProofTransactionIntegrationTest method aggregateSecretLockTransaction.
@ParameterizedTest
@EnumSource(RepositoryType.class)
void aggregateSecretLockTransaction(RepositoryType type) {
byte[] secretBytes = RandomUtils.generateRandomBytes(20);
byte[] result = Hashes.sha3_256(secretBytes);
String secret = ConvertUtils.toHex(result);
Address recipient = config().getTestAccount2().getAddress();
SecretLockTransaction transaction = SecretLockTransactionFactory.create(getNetworkType(), getDeadline(), getNetworkCurrency().createRelative(BigInteger.valueOf(10)), BigInteger.valueOf(100), LockHashAlgorithm.SHA3_256, secret, recipient).maxFee(maxFee).build();
announceAggregateAndValidate(type, transaction, account);
}
use of io.nem.symbol.sdk.model.transaction.SecretLockTransaction in project nem2-sdk-java by nemtech.
the class SecretLockSecretProofTransactionIntegrationTest method standaloneSecretProofTransaction.
@ParameterizedTest
@EnumSource(RepositoryType.class)
void standaloneSecretProofTransaction(RepositoryType type) {
byte[] secretBytes = RandomUtils.generateRandomBytes(20);
byte[] result = Hashes.sha3_256(secretBytes);
String secret = ConvertUtils.toHex(result);
String proof = ConvertUtils.toHex(secretBytes);
Address recipient = config().getTestAccount2().getAddress();
SecretLockTransaction secretLockTransaction = SecretLockTransactionFactory.create(getNetworkType(), getDeadline(), getNetworkCurrency().createRelative(BigInteger.valueOf(10)), BigInteger.valueOf(100), LockHashAlgorithm.SHA3_256, secret, recipient).maxFee(maxFee).build();
announceAndValidate(type, account, secretLockTransaction);
SecretProofTransaction secretProofTransaction = SecretProofTransactionFactory.create(getNetworkType(), getDeadline(), LockHashAlgorithm.SHA3_256, recipient, secret, proof).maxFee(maxFee).build();
announceAndValidate(type, account, secretProofTransaction);
}
use of io.nem.symbol.sdk.model.transaction.SecretLockTransaction in project nem2-sdk-java by nemtech.
the class TransactionMapperOkHttpTest method shouldCreateStandaloneSecretLockTransaction.
@Test
void shouldCreateStandaloneSecretLockTransaction() {
TransactionInfoDTO secretLockTransactionDTO = TestHelperOkHttp.loadTransactionInfoDTO("standaloneSecretLockTransaction.json");
Transaction secretLockTransaction = map(secretLockTransactionDTO);
validateStandaloneTransaction(secretLockTransaction, secretLockTransactionDTO);
}
use of io.nem.symbol.sdk.model.transaction.SecretLockTransaction in project nem2-sdk-java by nemtech.
the class SecretLockIntegrationTest method secretLockAndProofTransaction.
@ParameterizedTest
@MethodSource("provider")
void secretLockAndProofTransaction(RepositoryType type, LockHashAlgorithm lockHashAlgorithm) {
RepositoryFactory repositoryFactory = getRepositoryFactory(type);
byte[] secretSeed = RandomUtils.generateRandomBytes(20);
String secret = ConvertUtils.toHex(lockHashAlgorithm.hash(secretSeed));
String storedSecret = ConvertUtils.padHex(secret, LockHashAlgorithm.DEFAULT_SECRET_HEX_SIZE);
if (lockHashAlgorithm == LockHashAlgorithm.HASH_160) {
Assertions.assertEquals(LockHashAlgorithm.DEFAULT_SECRET_HEX_SIZE, storedSecret.length());
Assertions.assertEquals(40, secret.length());
} else {
Assertions.assertEquals(LockHashAlgorithm.DEFAULT_SECRET_HEX_SIZE, storedSecret.length());
Assertions.assertEquals(LockHashAlgorithm.DEFAULT_SECRET_HEX_SIZE, secret.length());
}
String proof = ConvertUtils.toHex(secretSeed);
Account account = config().getNemesisAccount1();
Account account2 = config().getNemesisAccount2();
Currency currency = get(repositoryFactory.getNetworkCurrency());
Mosaic mosaic = currency.createAbsolute(BigInteger.valueOf(1));
BigInteger amount = mosaic.getAmount();
BigInteger duration = BigInteger.valueOf(10000);
SecretLockTransaction secretLockTransaction = SecretLockTransactionFactory.create(getNetworkType(), getDeadline(), mosaic, duration, lockHashAlgorithm, secret, account2.getAddress()).maxFee(maxFee).build();
announceAndValidate(type, account, secretLockTransaction);
SecretProofTransaction secretProofTransaction = SecretProofTransactionFactory.create(getNetworkType(), getDeadline(), lockHashAlgorithm, account2.getAddress(), secret, proof).maxFee(maxFee).build();
SecretProofTransaction secretProofTransactionAnnounced = announceAndValidate(type, account, secretProofTransaction);
sleep(500);
Assertions.assertEquals(lockHashAlgorithm, secretProofTransactionAnnounced.getHashType());
Assertions.assertEquals(account2.getAddress(), secretProofTransactionAnnounced.getRecipient());
Assertions.assertEquals(storedSecret, secretProofTransactionAnnounced.getSecret());
Assertions.assertEquals(proof, secretProofTransactionAnnounced.getProof());
SecretLockRepository hashLockRepository = getRepositoryFactory(type).createSecretLockRepository();
SecretLockInfo info = get(hashLockRepository.search(new SecretLockSearchCriteria().address(account.getAddress()).secret(storedSecret))).getData().get(0);
Assertions.assertNotNull(info);
Assertions.assertEquals(account.getAddress(), info.getOwnerAddress());
Assertions.assertEquals(account2.getAddress(), info.getRecipientAddress());
Assertions.assertEquals(amount, info.getAmount());
Assertions.assertEquals(storedSecret, info.getSecret());
Assertions.assertEquals(lockHashAlgorithm, info.getHashAlgorithm());
Assertions.assertEquals(LockStatus.USED, info.getStatus());
Page<SecretLockInfo> page = get(hashLockRepository.search(new SecretLockSearchCriteria().address(account.getAddress()).order(OrderBy.DESC)));
Assertions.assertTrue(page.getData().stream().anyMatch(m -> m.getSecret().equals(storedSecret)));
Assertions.assertEquals(20, page.getPageSize());
SecretLockInfo infoSearch = page.getData().stream().filter(m -> m.getSecret().equals(storedSecret)).findFirst().get();
Assertions.assertNotNull(infoSearch);
Assertions.assertEquals(account.getAddress(), infoSearch.getOwnerAddress());
Assertions.assertEquals(account2.getAddress(), infoSearch.getRecipientAddress());
Assertions.assertEquals(amount, infoSearch.getAmount());
Assertions.assertEquals(lockHashAlgorithm, infoSearch.getHashAlgorithm());
Assertions.assertEquals(LockStatus.USED, infoSearch.getStatus());
Assertions.assertEquals(storedSecret, infoSearch.getSecret());
}
Aggregations