/** * Use {@link #getIntOrThrow(String)} instead. * * @param key parameter name * @return parameter value or throws {@link IllegalArgumentException}. */ @Deprecated public int getInt(String key) { return getIntOrThrow(key); }
/** * Add some delta to a numeric field with a given name that must exist and be convertible to integer. After hte * operation the modified value of type Integer is stored in this binder * * @param name * @param delta * @return new value */ public int addToInt(String name, int delta) { int value = getIntOrThrow(name); value += delta; put(name, value); return value; }
@Override public void deserialize(Binder data, BiDeserializer deserializer) { publicKey = deserializer.deserialize(data.getBinderOrThrow("publicKey")); publicHost = data.getStringOrThrow("publicHost"); String host = data.getStringOrThrow("host"); nodeAddress = new InetSocketAddress(host, data.getIntOrThrow("udpPort")); clientAddress = new InetSocketAddress(host, data.getIntOrThrow("clientPort")); serverAddress = new InetSocketAddress(host, data.getIntOrThrow("serverPort")); nodeName = data.getStringOrThrow("name"); number = data.getIntOrThrow("number"); }
private boolean isInheritedParsed(Binder condition, Reference ref, Contract refContract, Collection<Contract> contracts, int iteration) { int operator = condition.getIntOrThrow("operator"); String rightOperand = condition.getString("rightOperand", null); if (((operator == INHERITS) || (operator == INHERIT)) && (rightOperand != null)) return isInheritedOperand(rightOperand, ref, refContract, contracts, iteration); return false; }
@Override public void deserialize(Binder data, BiDeserializer deserializer) throws IOException { expiresAt = data.getZonedDateTimeOrThrow("expiresAt"); mutedAt = data.getZonedDateTimeOrThrow("mutedAt"); spent = data.getDouble("spent"); startedCallbacks = data.getIntOrThrow("startedCallbacks"); }
private boolean isOriginCondition(Object condition, HashId origin) { if (condition instanceof String) return condition.equals(REFERENCE_CONDITION_PREFIX + origin.toBase64String()); else if (((Binder) condition).containsKey("operator")) { int operator = ((Binder) condition).getIntOrThrow("operator"); if (operator == REFERENCE_CONDITION_OPERATOR) { String leftOperand = ((Binder) condition).getString("leftOperand", null); if ((leftOperand != null) && leftOperand.equals(REFERENCE_CONDITION_LEFT)) { String rightOperand = ((Binder) condition).getString("rightOperand", null); if ((rightOperand != null) && rightOperand.equals(origin.toBase64String())) return true; } } } return false; }
public static JSApiScriptParameters fromBinder(Binder binder) { JSApiScriptParameters scriptParameters = new JSApiScriptParameters(); JSApiCompressionEnum compression = JSApiCompressionEnum.valueOf(binder.getStringOrThrow("compression")); scriptParameters.isCompressed = (compression != JSApiCompressionEnum.RAW); scriptParameters.timeLimitMillis = binder.getIntOrThrow("time_limit"); scriptParameters.permissions = binder.getBinderOrThrow("permissions"); scriptParameters.domainMasks = binder.getListOrThrow("domainMasks"); scriptParameters.ipMasks = binder.getListOrThrow("ipMasks"); return scriptParameters; }
public Contract createUnsPayment() throws IOException { PrivateKey ownerKey = new PrivateKey(Do.read(rootPath + "keys/stepan_mamontov.private.unikey")); Set<PublicKey> keys = new HashSet(); keys.add(ownerKey.getPublicKey()); Contract stepaU = InnerContractsService.createFreshU(100000000, keys); Contract paymentDecreased = stepaU.createRevision(ownerKey); paymentDecreased.getStateData().set("transaction_units", stepaU.getStateData().getIntOrThrow("transaction_units") - 2000); paymentDecreased.seal(); return paymentDecreased; } }
public Contract createSlotPayment() throws IOException { PrivateKey ownerKey = new PrivateKey(Do.read(rootPath + "keys/stepan_mamontov.private.unikey")); Set<PublicKey> keys = new HashSet(); keys.add(ownerKey.getPublicKey()); Contract stepaU = InnerContractsService.createFreshU(100000000, keys); Contract paymentDecreased = stepaU.createRevision(ownerKey); paymentDecreased.getStateData().set("transaction_units", stepaU.getStateData().getIntOrThrow("transaction_units") - 100); paymentDecreased.seal(); return paymentDecreased; } }
@Test public void createTestU() throws Exception { PrivateKey privateKey = TestKeys.privateKey(3); Set<PublicKey> keys = new HashSet(); keys.add(privateKey.getPublicKey()); Contract u = InnerContractsService.createFreshU(100, keys, true); u.check(); u.traceErrors(); assertEquals(true, u.getRole("owner").isAllowedForKeys(keys)); assertEquals(100, u.getStateData().getIntOrThrow("transaction_units")); assertEquals(10000, u.getStateData().getIntOrThrow("test_transaction_units")); PrivateKey manufacturePrivateKey = new PrivateKey(Do.read( "./src/test_contracts/keys/u_key.private.unikey")); Set<PublicKey> badKeys = new HashSet(); badKeys.add(manufacturePrivateKey.getPublicKey()); assertEquals(false, u.getRole("owner").isAllowedForKeys(badKeys)); }
@Test public void shouldSplitWithChangedOwnerAndNewValueSerialize() throws Exception { int defaultValue = 1000000; int valueForSplit = 85; Contract c = createCoin(); c.addSignerKeyFromFile(PRIVATE_KEY_PATH); Binder d = c.getStateData(); sealCheckTrace(c, true); Contract c2 = c.splitValue(FIELD_NAME, new Decimal(valueForSplit)); c2.addSignerKey(ownerKey2); Binder d2 = c2.getStateData(); sealCheckTrace(c2, true); assertEquals(defaultValue - valueForSplit, d.getIntOrThrow(FIELD_NAME)); assertEquals(valueForSplit, d2.getIntOrThrow(FIELD_NAME)); }
@Test public void getInt() throws Exception { Binder b = Binder.fromKeysValues( "i1", 100, "i2", "101", "l1", "1505774997427", "l2", 1505774997427L ); assertEquals(100, (int) b.getInt("i1",222)); assertEquals(101, (int) b.getInt("i2",222)); assertEquals(100, b.getIntOrThrow("i1")); assertEquals(101, b.getIntOrThrow("i2")); assertEquals(1505774997427L, b.getLongOrThrow("l1")); assertEquals(1505774997427L, b.getLongOrThrow("l2")); }
@Test public void shouldTransferSumOf7() throws Exception { Decimal valueToSend = new Decimal(280); List<Contract> listOfCoinsWithAmount = createListOfCoinsWithAmount(Arrays.asList(5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60)); List<Wallet> wallets = Wallet.determineWallets(listOfCoinsWithAmount); assertEquals(1, wallets.size()); assertEquals(12, wallets.get(0).getContracts().size()); Wallet wallet = wallets.get(0); Contract contract = wallet.buildContractWithValue(FIELD_NAME, valueToSend); contract.addSignerKeyFromFile(PRIVATE_KEY_PATH); sealCheckTrace(contract, true); assertEquals(6, wallet.getContracts().size()); TransactionPack tp = contract.getTransactionPack(); Contract contractToSend = new Contract(contract.seal(), tp); contractToSend.addSignerKeyFromFile(PRIVATE_KEY_PATH); sealCheckTrace(contractToSend, true); assertEquals(valueToSend.intValue(), contractToSend.getStateData().getIntOrThrow(FIELD_NAME)); }
@Test public void cheatCreateValue() throws Exception { Contract c = createCoin(); c.addSignerKeyFromFile(PRIVATE_KEY_PATH); Binder d = c.getStateData(); int a = 1000000; assertEquals(a, d.getIntOrThrow(FIELD_NAME)); c.seal(); assertTrue(c.check()); Contract c1 = c.createRevision(ownerKey2); // Good split but wrong amount Contract c2 = c1.splitValue(FIELD_NAME, new Decimal(500)); assertEquals(a - 500, c1.getStateData().getIntOrThrow(FIELD_NAME)); assertEquals(500, c2.getStateData().getIntOrThrow(FIELD_NAME)); c2.getStateData().set(FIELD_NAME, "500.00000001"); sealCheckTrace(c1, false); }
@Test(timeout = 90000) public void declinePaymentAndPaymentWithChangedData() throws Exception { Set<PrivateKey> stepaPrivateKeys = new HashSet<>(); stepaPrivateKeys.add(new PrivateKey(Do.read(ROOT_PATH + "keys/stepan_mamontov.private.unikey"))); Contract uContract = getApprovedUContract(); Contract modifiedU = uContract.createRevision(stepaPrivateKeys); modifiedU.getStateData().set("transaction_units", modifiedU.getStateData().getIntOrThrow("transaction_units") - 1); modifiedU.seal(); // stepaPrivateKeys - is also U keys Parcel parcel = ContractsService.createParcel(modifiedU, uContract, 150, stepaPrivateKeys); System.out.println("-------------"); node.registerParcel(parcel); synchronized (uContractLock) { uContract = parcel.getPaymentContract(); } waitAndCheckState(parcel, ItemState.UNDEFINED); }
@Test public void toBinder() throws Exception { ItemResult r1 = new ItemResult(REVOKED, false, ZonedDateTime.now(), inFuture(300)); r1.extraDataBinder.set("someString", "90314tughiouqehmtcy34ntcn8341tgfesgfwerh"); r1.extraDataBinder.set("someInteger", 42); ItemResult r2 = new ItemResult(r1.toBinder()); assertEquals(r1.state, r2.state); assertEquals(r1.haveCopy, r2.haveCopy); assertEquals(r1.createdAt, r2.createdAt); assertEquals(r1.expiresAt, r2.expiresAt); assertEquals(r1.extraDataBinder.getStringOrThrow("someString"), r2.extraDataBinder.getStringOrThrow("someString")); assertEquals(r1.extraDataBinder.getIntOrThrow("someInteger"), r2.extraDataBinder.getIntOrThrow("someInteger")); assertEquals(r1, r2); }
@Test public void createU() throws Exception { PrivateKey privateKey = TestKeys.privateKey(3); Set<PublicKey> keys = new HashSet(); keys.add(privateKey.getPublicKey()); Contract u = InnerContractsService.createFreshU(100, keys); u.check(); u.traceErrors(); assertEquals(true, u.getRole("owner").isAllowedForKeys(keys)); assertEquals(100, u.getStateData().getIntOrThrow("transaction_units")); PrivateKey manufacturePrivateKey = new PrivateKey(Do.read( "./src/test_contracts/keys/u_key.private.unikey")); Set<PublicKey> badKeys = new HashSet(); badKeys.add(manufacturePrivateKey.getPublicKey()); assertEquals(false, u.getRole("owner").isAllowedForKeys(badKeys)); }
@Test public void packBytes() throws Exception { StructureDescriptor d = new StructureDescriptor(); d.addField("type", 1) .addBinaryField("bb",12); byte[] res = d.pack(Binder.fromKeysValues( "type", 17, "bb", "Hello world!".getBytes() )); assertEquals("11 48 65 6C 6C 6F 20 77 6F 72 6C 64 21", Bytes.toHex(res)); Binder r = d.unpack(res); assertEquals(17, r.getIntOrThrow("type")); assertEquals("Hello world!", r.getBytesOrThrow("bb").toString()); }
@Test public void cheatCreateValue2() throws Exception { Contract c = createCoin(); c.addSignerKeyFromFile(PRIVATE_KEY_PATH); Binder d = c.getStateData(); int a = 1000000; assertEquals(a, d.getIntOrThrow(FIELD_NAME)); c.seal(); assertTrue(c.check()); Contract c1 = c.createRevision(ownerKey2); c1.getStateData().set(FIELD_NAME, "500.00000001"); sealCheckTrace(c1, false); }
@Test public void packSmallString() throws Exception { StructureDescriptor d = new StructureDescriptor(); d.addField("type", 1) .addStringField("bb",19); byte[] res = d.pack(Binder.fromKeysValues( "type", 32, "bb", "Hello world!" )); // Bytes.dump(res); assertEquals("20 0C 48 65 6C 6C 6F 20 77 6F 72 6C 64 21 00 00 00 00 00 00", Bytes.toHex(res)); Binder r = d.unpack(res); assertEquals(32, r.getIntOrThrow("type")); assertEquals("Hello world!", r.getStringOrThrow("bb")); } }