throw new Failure("getNameBy failed: returning null"); UnsName unsName = new UnsName(); long nameRecord_id = 0; ZonedDateTime nameRecord_expiresAt = ZonedDateTime.now(); if (firstRow) { nameRecord_id = rs.getLong("id"); unsName.setUnsReducedName(rs.getString("name_reduced")); unsName.setUnsName(rs.getString("name_full")); unsName.setUnsDescription(rs.getString("description")); unsName.setUnsURL(rs.getString("url")); nameRecord_expiresAt = StateRecord.getTime(rs.getLong("expires_at")); nameRecord_environmentId = rs.getLong("environment_id");
private ZonedDateTime calcExpiresAt () { // get number of entries int entries = 0; for (UnsName sn: storedNames) entries += sn.getRecordsCount(); if (entries == 0) entries = 1; final int finalEntries = entries; return prepaidFrom.plusSeconds((long) (prepaidNamesForDays * 24 * 3600 / finalEntries)); }
public NNameRecord(@NonNull UnsName unsName, @NonNull ZonedDateTime expiresAt) { name = unsName.getUnsName(); nameReduced = unsName.getUnsReducedName(); description = unsName.getUnsDescription(); url = unsName.getUnsURL(); this.expiresAt = expiresAt; unsName.getUnsRecords().forEach(unsRecord -> { String longAddress = null; String shortAddress = null; for (KeyAddress keyAddress : unsRecord.getAddresses()) { if (keyAddress.isLong()) longAddress = keyAddress.toString(); else shortAddress = keyAddress.toString(); } entries.add(new NNameRecordEntry(unsRecord.getOrigin(), shortAddress, longAddress)); }); }
protected UnsContract initializeWithDsl(Binder root) throws EncryptionError { super.initializeWithDsl(root); ArrayList<?> arrayNames = root.getBinder("state").getBinder("data").getArray(NAMES_FIELD_NAME); for (Object name: arrayNames) { Binder binder; if (name.getClass().getName().endsWith("Binder")) binder = (Binder) name; else binder = new Binder((Map) name); UnsName unsName = new UnsName().initializeWithDsl(binder); storedNames.add(unsName); } return this; }
UnsName unsName = new UnsName(reducedName, "test description", "http://test.com"); unsName.setUnsReducedName(reducedName); unsName.setUnsDescription("test description modified"); unsName.setUnsURL("http://test_modified.com"); unsName.addUnsRecord(unsRecord1); unsName.addUnsRecord(unsRecord2); uns.addUnsName(unsName); uns.addOriginContract(referencesContract); assertTrue(((ModifyDataPermission)mdp.iterator().next()).getFields().containsKey("action")); assertEquals(uns.getUnsName(reducedName).getUnsReducedName(), reducedName); assertEquals(uns.getUnsName(reducedName).getUnsDescription(), "test description modified"); assertEquals(uns.getUnsName(reducedName).getUnsURL(), "http://test_modified.com"); assertNotEquals(uns.getUnsName(reducedName).findUnsRecordByOrigin(referencesContract.getOrigin()), -1); assertNotEquals(uns.getUnsName(reducedName).findUnsRecordByKey(randomPrivKey.getPublicKey()), -1); assertNotEquals(uns.getUnsName(reducedName).findUnsRecordByAddress(new KeyAddress(randomPrivKey.getPublicKey(), 0, true)), -1);
@Test public void environmentSerializationTest() throws Exception{ UnsName unsName = new UnsName(); unsName.setUnsName("test"); unsName.setUnsReducedName("test"); UnsRecord record2 = new UnsRecord(privateKey.getPublicKey()); unsName.addUnsRecord(record1); unsName.addUnsRecord(record2); ZonedDateTime now = ZonedDateTime.now(); NNameRecord nnr = new NNameRecord(unsName, now); assertTrue(nnr2.getEntries().stream().anyMatch(nre -> unsName.getUnsRecords().stream().anyMatch(ur -> ur.equalsTo(nre)))); assertEquals(nnr2.getEntries().size(),unsName.getRecordsCount()); assertEquals(nnr2.getName(),unsName.getUnsName()); assertEquals(nnr2.getNameReduced(),unsName.getUnsReducedName()); assertEquals(nnr2.getDescription(),unsName.getUnsDescription()); assertEquals(nnr2.getUrl(),unsName.getUnsURL()); assertEquals(nnr.expiresAt().toEpochSecond(),nnr2.expiresAt().toEpochSecond());
uns.seal(); UnsName unsName = new UnsName("test"+Instant.now().getEpochSecond(), "test description", "http://test.com"); unsName.setUnsReducedName("test"+Instant.now().getEpochSecond()); UnsRecord unsRecord1 = new UnsRecord(randomPrivKey.getPublicKey()); UnsRecord unsRecord2 = new UnsRecord(referencesContract.getId()); unsName.addUnsRecord(unsRecord1); unsName.addUnsRecord(unsRecord2); uns.addUnsName(unsName); uns.addOriginContract(referencesContract); nodes.forEach(n -> assertEquals(n.getLedger().getNameRecord(unsName.getUnsReducedName()).getEntries().size(),2)); assertEquals(ledger.getNameRecord(unsName.getUnsReducedName()).getEntries().size(),2);
UnsName unsNameToChange = new UnsName("change"+Instant.now().getEpochSecond(), "test description", "http://test.com"); unsNameToChange.setUnsReducedName("change"+Instant.now().getEpochSecond()); UnsName unsNameToAdd = new UnsName("add"+Instant.now().getEpochSecond(), "test description", "http://test.com"); unsNameToAdd.setUnsReducedName("add"+Instant.now().getEpochSecond()); UnsName unsNameToRemove = new UnsName("remove"+Instant.now().getEpochSecond(), "test description", "http://test.com"); unsNameToRemove.setUnsReducedName("remove"+Instant.now().getEpochSecond()); unsNameToChange.addUnsRecord(unsRecordToChange); unsNameToChange.addUnsRecord(unsRecordToRemove); unsNameToRemove.addUnsRecord(new UnsRecord(referencesContract1.getId())); unsNameToAdd.addUnsRecord(new UnsRecord(referencesContract2.getId())); nodes.forEach(n -> assertEquals(n.getLedger().getNameRecord(unsNameToChange.getUnsReducedName()).getEntries().size(),2)); nodes.forEach(n -> assertEquals(n.getLedger().getNameRecord(unsNameToRemove.getUnsReducedName()).getEntries().size(),1)); assertEquals(ledger.getNameRecord(unsNameToChange.getUnsReducedName()).getEntries().size(),2); assertEquals(ledger.getNameRecord(unsNameToRemove.getUnsReducedName()).getEntries().size(),1); uns.removeName(unsNameToRemove.getUnsName()); UnsName unsNameToChangeCopy = uns.getUnsName(unsNameToChange.getUnsName()); for(int i = 0; i < unsNameToChangeCopy.getUnsRecords().size();i++) { UnsRecord unsRecord = unsNameToChangeCopy.getUnsRecord(i); if(unsRecord.getAddresses().equals(unsRecordToRemove.getAddresses())) { unsNameToChangeCopy.getUnsRecords().remove(i); i--; continue; unsNameToChangeCopy.addUnsRecord(unsRecordToAdd);
uns.addSignerKey(authorizedNameServiceKey); UnsName unsName = new UnsName(name, "test description", "http://test.com"); unsName.setUnsReducedName(name); UnsRecord unsRecord = new UnsRecord(randomPrivKey1.getPublicKey()); unsName.addUnsRecord(unsRecord); uns.addUnsName(unsName); assertEquals(ItemState.APPROVED, testSpace.node.node.waitItem(uns.getNew().get(0).getId(), 8000).state); assertEquals(testSpace.node.node.getLedger().getNameRecord(unsName.getUnsName()).getEntries().size(),1); UnsName unsName2 = new UnsName(name2, "test description", "http://test.com"); unsName2.setUnsReducedName(name2); UnsRecord unsRecord2 = new UnsRecord(randomPrivKey2.getPublicKey()); unsName2.addUnsRecord(unsRecord2); uns.addUnsName(unsName2); assertEquals(ItemState.APPROVED, testSpace.node.node.waitItem(parcel.getPayment().getContract().getId(), 8000).state); assertNull(testSpace.node.node.getLedger().getNameRecord(unsName.getUnsName())); UnsName unsName3 = new UnsName(name, "test description", "http://test.com"); unsName3.setUnsReducedName(name); UnsRecord unsRecord3 = new UnsRecord(randomPrivKey3.getPublicKey()); unsName3.addUnsRecord(unsRecord3); uns.addUnsName(unsName3);
uns1.seal(); UnsName unsName = new UnsName("testbusyorigin"+Instant.now().getEpochSecond(), "testbusyorigin description", "http://testbusyorigin.com"); unsName.setUnsReducedName("testbusyorigin"+Instant.now().getEpochSecond()); UnsRecord unsRecord1 = new UnsRecord(randomPrivateKey1.getPublicKey()); UnsRecord unsRecord2 = new UnsRecord(nameContract.getId()); unsName.addUnsRecord(unsRecord1); unsName.addUnsRecord(unsRecord2); uns1.addUnsName(unsName); uns1.addOriginContract(nameContract); unsName = new UnsName("testbusyorigin"+Instant.now().getEpochSecond(), "testbusyorigin description", "http://testbusyorigin.com"); unsName.setUnsReducedName("testbusyorigin"+Instant.now().getEpochSecond()); unsRecord1 = new UnsRecord(randomPrivateKey2.getPublicKey()); unsRecord2 = new UnsRecord(nameContract.getId()); unsName.addUnsRecord(unsRecord1); unsName.addUnsRecord(unsRecord2); uns2.addUnsName(unsName); uns2.addOriginContract(nameContract);
unsName.removeUnsRecord(0); unsName.setUnsName("test_from_dsl" + Instant.now().getEpochSecond()); unsName.setUnsReducedName("test_from_dsl" + Instant.now().getEpochSecond()); unsName.addUnsRecord(new UnsRecord(randomPrivKey.getPublicKey()));
UnsName unsName = new UnsName(name, description, URL); UnsRecord unsRecord = new UnsRecord(namedKey); unsName.addUnsRecord(unsRecord); UnsContract.addUnsName(unsName);
private List<HashId> getOriginsToCheck() { Set<HashId> origins = new HashSet<>(); for (UnsName unsName : storedNames) for (UnsRecord unsRecord : unsName.getUnsRecords()) if (unsRecord.getOrigin() != null) origins.add(unsRecord.getOrigin()); for (Approvable revoked : getRevokingItems()) removeRevokedOrigins(revoked, origins); return new ArrayList<>(origins); }
checkResult = storedNames.stream().allMatch(n -> n.getUnsRecords().stream().allMatch(unsRecord -> { if(unsRecord.getOrigin() != null) { if(!unsRecord.getAddresses().isEmpty()) { addError(Errors.FAILED_CHECK, NAMES_FIELD_NAME, "name " + n.getUnsName() + " referencing to origin AND addresses. Should be either origin or addresses"); return false; addError(Errors.FAILED_CHECK, NAMES_FIELD_NAME, "name " + n.getUnsName() + " referencing to origin " + unsRecord.getOrigin().toString() + " but no corresponding reference is found"); return false; addError(Errors.FAILED_CHECK, NAMES_FIELD_NAME, "name " + n.getUnsName() + " referencing to origin " + unsRecord.getOrigin().toString() + " but no corresponding referenced contract is found"); return false; addError(Errors.FAILED_CHECK, NAMES_FIELD_NAME, "name " + n.getUnsName() + " referencing to origin " + unsRecord.getOrigin().toString() + ". UNS1 contract should be also signed by this contract issuer key."); return false; addError(Errors.FAILED_CHECK, NAMES_FIELD_NAME, "name " + n.getUnsName() + " is missing both addresses and origin."); return false; addError(Errors.FAILED_CHECK, NAMES_FIELD_NAME, "name " + n.getUnsName() + ": Addresses list should not be contains more 2 addresses"); addError(Errors.FAILED_CHECK, NAMES_FIELD_NAME, "name " + n.getUnsName() + ": Addresses list may only contain one short and one long addresses"); addError(Errors.FAILED_CHECK, NAMES_FIELD_NAME, "name " + n.getUnsName() + " using address that missing corresponding key UNS contract signed with."); return false;
private List<String> getReducedNamesToCheck() { Set<String> reducedNames = new HashSet<>(); for (UnsName unsName : storedNames) reducedNames.add(unsName.getUnsReducedName()); for (Approvable revoked : getRevokingItems()) removeRevokedNames(revoked, reducedNames); return new ArrayList<>(reducedNames); }
/** * Returns {@link UnsName} record by it's name. */ public UnsName getUnsName(String name) { for(UnsName unsName : storedNames) { if(unsName.getUnsName().equals(name)) { return unsName; } } return null; }
UnsName unsName = new UnsName(reducedName, "test description", "http://test.com"); unsName.setUnsReducedName(reducedName); UnsRecord unsRecord1 = new UnsRecord(randomPrivKey.getPublicKey()); UnsRecord unsRecord2 = new UnsRecord(referencesContract.getId()); unsName.addUnsRecord(unsRecord1); unsName.addUnsRecord(unsRecord2); uns.addUnsName(unsName); uns.addOriginContract(referencesContract); assertTrue(((ModifyDataPermission)mdp.iterator().next()).getFields().containsKey("action")); assertEquals(((UnsContract)desUns).getUnsName(reducedName).getUnsReducedName(), reducedName); assertEquals(((UnsContract)desUns).getUnsName(reducedName).getUnsDescription(), "test description"); assertEquals(((UnsContract)desUns).getUnsName(reducedName).getUnsURL(), "http://test.com"); assertNotEquals(((UnsContract)desUns).getUnsName(reducedName).findUnsRecordByOrigin(referencesContract.getOrigin()), -1); assertNotEquals(((UnsContract)desUns).getUnsName(reducedName).findUnsRecordByKey(randomPrivKey.getPublicKey()), -1); assertNotEquals(((UnsContract)desUns).getUnsName(reducedName).findUnsRecordByAddress(new KeyAddress(randomPrivKey.getPublicKey(), 0, true)), -1); assertTrue(((ModifyDataPermission)mdp.iterator().next()).getFields().containsKey("action")); assertEquals(((UnsContract)copiedUns).getUnsName(reducedName).getUnsReducedName(), reducedName); assertEquals(((UnsContract)copiedUns).getUnsName(reducedName).getUnsDescription(), "test description"); assertEquals(((UnsContract)copiedUns).getUnsName(reducedName).getUnsURL(), "http://test.com"); assertNotEquals(((UnsContract)copiedUns).getUnsName(reducedName).findUnsRecordByOrigin(referencesContract.getOrigin()), -1); assertNotEquals(((UnsContract)copiedUns).getUnsName(reducedName).findUnsRecordByKey(randomPrivKey.getPublicKey()), -1); assertNotEquals(((UnsContract)copiedUns).getUnsName(reducedName).findUnsRecordByAddress(new KeyAddress(randomPrivKey.getPublicKey(), 0, true)), -1);
UnsName unsName = new UnsName(reducedName, "test description", "http://test.com"); unsName.setUnsReducedName(reducedName); UnsRecord unsRecord1 = new UnsRecord(randomPrivKey.getPublicKey()); UnsRecord unsRecord2 = new UnsRecord(referencesContract.getId()); unsName.addUnsRecord(unsRecord1); unsName.addUnsRecord(unsRecord2); uns.addUnsName(unsName); uns.addOriginContract(referencesContract); assertEquals(ItemState.APPROVED, node.waitItem(uns.getNew().get(0).getId(), 8000).state); assertEquals(ledger.getNameRecord(unsName.getUnsReducedName()).getEntries().size(), 2); double days = (double) 1470 * config.getServiceRate(NSmartContract.SmartContractType.UNS1.name()).doubleValue() / uns.getUnsName(reducedName).getRecordsCount(); long seconds = (long) (days * 24 * 3600); ZonedDateTime calculateExpires = timeReg1.plusSeconds(seconds); assertEquals(refilledUnsContract.getUnsName(reducedName).getRecordsCount(), 2); double spentNDs = (double) spentSeconds / (3600 * 24); days = (double) (2470 - spentNDs) * config.getServiceRate(NSmartContract.SmartContractType.UNS1.name()).doubleValue() / refilledUnsContract.getUnsName(reducedName).getRecordsCount(); seconds = (long) (days * 24 * 3600); calculateExpires = timeReg2.plusSeconds(seconds);
UnsName unsName = new UnsName(name, "test description", "http://test.com"); unsName.setUnsReducedName(name); UnsRecord unsRecord = new UnsRecord(randomPrivKey1.getPublicKey()); unsName.addUnsRecord(unsRecord); uns.addUnsName(unsName); UnsName unsName2 = new UnsName(name, "test description", "http://test.com"); unsName2.setUnsReducedName(name); UnsRecord unsRecord2 = new UnsRecord(randomPrivKey2.getPublicKey()); unsName2.addUnsRecord(unsRecord2); uns2.addUnsName(unsName2); UnsName unsName3 = new UnsName(name, "test description", "http://test.com"); unsName3.setUnsReducedName(name); UnsRecord unsRecord3 = new UnsRecord(randomPrivKey3.getPublicKey()); unsName3.addUnsRecord(unsRecord3); uns3.addUnsName(unsName3); assertEquals(testSpace.node.node.getLedger().getNameRecord(unsName.getUnsName()).getEntries().size(),1); assertNull(testSpace.node.node.getLedger().getNameRecord(unsName.getUnsName())); assertEquals(testSpace.node.node.getLedger().getNameRecord(unsName.getUnsName()).getEntries().size(),1); UnsName unsName2_1 = new UnsName(name+"2", "test description", "http://test.com"); unsName2_1.setUnsReducedName(name+"2"); UnsRecord unsRecord2_1 = new UnsRecord(randomPrivKey4.getPublicKey()); unsName2_1.addUnsRecord(unsRecord2_1); uns2.addUnsName(unsName2_1);
uns1.addSignerKey(authorizedNameServiceKey); UnsName unsName = new UnsName("testbusyaddress"+Instant.now().getEpochSecond(), "testbusyaddress description", "http://testbusyaddress.com"); unsName.setUnsReducedName("testbusyaddress"+Instant.now().getEpochSecond()); UnsRecord unsRecord1 = new UnsRecord(randomPrivateKey.getPublicKey()); UnsRecord unsRecord2 = new UnsRecord(nameContract1.getId()); unsName.addUnsRecord(unsRecord1); unsName.addUnsRecord(unsRecord2); uns1.addUnsName(unsName); uns1.addOriginContract(nameContract1); uns2.seal(); unsName = new UnsName("testbusyaddress"+Instant.now().getEpochSecond(), "testbusyaddress description", "http://testbusyaddress.com"); unsName.setUnsReducedName("testbusyaddress"+Instant.now().getEpochSecond()); unsRecord1 = new UnsRecord(randomPrivateKey.getPublicKey()); unsRecord2 = new UnsRecord(nameContract2.getId()); unsName.addUnsRecord(unsRecord1); unsName.addUnsRecord(unsRecord2); uns2.addUnsName(unsName); uns2.addOriginContract(nameContract2);