From 7a3c2168a29d12de4adb6dd26f0ceef2541d2f4a Mon Sep 17 00:00:00 2001 From: meywood <105049338+meywood@users.noreply.github.com> Date: Thu, 15 Dec 2022 12:26:29 +0000 Subject: [PATCH 1/5] issues/156 - Added example event service API calls to README.md --- README.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/README.md b/README.md index 3cf0053e4..8106d82f5 100644 --- a/README.md +++ b/README.md @@ -157,3 +157,53 @@ Deploy deploy = CasperDeployService.buildTransferDeploy(from, to, DeployResult deployResult = casperServiceTestnet.putDeploy(deploy); ``` + +### 12. Consuming Events + +The Java SDK supports the consumption of casper events using the event service API. This API allows the consumer to +choose the events to be provided as Pojos or as raw JSON via the EventTarget enum values. Each event stream is consumed +individually by providing the required stream (main, sigs, and deploys) using the EventType parameter to the consumeEvents method. + +For more information on events see: [Monitoring and Consuming Events](https://docs.casperlabs.io/dapp-dev-guide/building-dapps/monitoring-events/). + +#### Consuming Raw JSON Event Strings +```Java +// Construct an events service +final EventService eventService = EventService.usingPeer(new URI("http://localhost:28101")); + +// Consume the main events as raw JSON +eventService.consumeEvents(EventType.MAIN, EventTarget.RAW, 0L, new EventConsumer(){ + + @Override + public void accept(final Event event) { + // Obtain the raw JSON event as a String + final String json = event.getData(); + // Obtain the optional event ID + final long id = event.getId().orElse(0L); + } +}); +``` + +#### Consuming Pojo Events + +```Java +// Construct an events service +final EventService eventService = EventService.usingPeer(new URI("http://localhost:28101")); + +// Consume the main events as Casper Java SDK Pojos +eventService.consumeEvents(EventType.MAIN, EventTarget.POJO, 0L, new EventConsumer() { + + @Override + public void accept(final Event event) { + + switch (event.getDataType()) { + + case BLOCK_ADDED: + handleBlockAdded(event.getId().get(), ((BlockAdded) event.getData())); + break; + + // And so on... + } + } +}); +``` \ No newline at end of file From 6bc0f5ac668cb57c15601d278d938bda1d0faacc Mon Sep 17 00:00:00 2001 From: Alexandre C Date: Tue, 7 Feb 2023 16:25:40 -0300 Subject: [PATCH 2/5] Fix CLType Option byte serialization --- .../sdk/helper/CasperTransferHelper.java | 7 +++- .../sdk/model/clvalue/CLValueOption.java | 2 +- .../sdk/helper/CasperTransferHelperTests.java | 38 ++++++++++++++++++- .../sdk/service/AbstractJsonRpcTests.java | 2 +- 4 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/casper/sdk/helper/CasperTransferHelper.java b/src/main/java/com/casper/sdk/helper/CasperTransferHelper.java index d2ac81669..4b7ce5a9a 100644 --- a/src/main/java/com/casper/sdk/helper/CasperTransferHelper.java +++ b/src/main/java/com/casper/sdk/helper/CasperTransferHelper.java @@ -87,8 +87,11 @@ public static Deploy buildTransferDeploy(AbstractPrivateKey signer, PublicKey to NamedArg publicKeyNamedArg = new NamedArg<>("target", new CLValuePublicKey(to)); transferArgs.add(publicKeyNamedArg); - CLValueOption idArg = new CLValueOption(Optional.of( - new CLValueU64(BigInteger.valueOf(id)))); + + CLValueOption idArg = (id == null) ? + new CLValueOption(Optional.of(new CLValueU64())) : + new CLValueOption(Optional.of(new CLValueU64(BigInteger.valueOf(id)))); + NamedArg idNamedArg = new NamedArg<>("id", idArg); transferArgs.add(idNamedArg); diff --git a/src/main/java/com/casper/sdk/model/clvalue/CLValueOption.java b/src/main/java/com/casper/sdk/model/clvalue/CLValueOption.java index d31d8bf95..3538d3991 100644 --- a/src/main/java/com/casper/sdk/model/clvalue/CLValueOption.java +++ b/src/main/java/com/casper/sdk/model/clvalue/CLValueOption.java @@ -63,7 +63,7 @@ public void serialize(SerializerBuffer ser, Target target) throws ValueSerializa if (target.equals(Target.BYTE)) { this.encodeType(ser); - if (child.isPresent() && isPresent.getValue().equals(Boolean.TRUE)) { + if (child.isPresent()) { child.get().encodeType(ser); } } diff --git a/src/test/java/com/casper/sdk/helper/CasperTransferHelperTests.java b/src/test/java/com/casper/sdk/helper/CasperTransferHelperTests.java index 2a4ba2e8b..00d6e40d6 100644 --- a/src/test/java/com/casper/sdk/helper/CasperTransferHelperTests.java +++ b/src/test/java/com/casper/sdk/helper/CasperTransferHelperTests.java @@ -9,7 +9,6 @@ import com.syntifi.crypto.key.Ed25519PrivateKey; import dev.oak3.sbs4j.exception.ValueSerializationException; import org.bouncycastle.util.encoders.Hex; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,6 +23,8 @@ import java.util.Objects; import java.util.Random; +import static org.junit.jupiter.api.Assertions.assertEquals; + /** * Casper Deploy Service test * @@ -74,6 +75,39 @@ void testTransferOnTestnet() throws IOException, NoSuchTypeException, GeneralSec id, BigInteger.valueOf(100000000L), 1L, ttl, new Date(), new ArrayList<>()); DeployResult deployResult = casperServiceTestnet.putDeploy(deploy); - Assertions.assertEquals(deployResult.getDeployHash(), Hex.toHexString(deploy.getHash().getDigest())); + assertEquals(deployResult.getDeployHash(), Hex.toHexString(deploy.getHash().getDigest())); + } + + @Test + void testTransferWithNullIdOnTestnet() throws IOException, NoSuchTypeException, GeneralSecurityException, URISyntaxException, ValueSerializationException { + Ed25519PrivateKey alice = new Ed25519PrivateKey(); + Ed25519PrivateKey bob = new Ed25519PrivateKey(); + alice.readPrivateKey(getResourcesKeyPath("deploy-accounts/Alice_SyntiFi_secret_key.pem")); + bob.readPrivateKey(getResourcesKeyPath("deploy-accounts/Bob_SyntiFi_secret_key.pem")); + + Long id = null; + Ttl ttl = Ttl + .builder() + .ttl("30m") + .build(); + Random rnd = new Random(); + boolean coin = rnd.nextBoolean(); + Ed25519PrivateKey from; + PublicKey to; + if (coin) { + from = alice; + to = PublicKey.fromAbstractPublicKey(bob.derivePublicKey()); + } else { + from = bob; + to = PublicKey.fromAbstractPublicKey(alice.derivePublicKey()); + } + + Deploy deploy = CasperTransferHelper.buildTransferDeploy(from, to, + BigInteger.valueOf(2500000000L), "casper-test", + id, BigInteger.valueOf(100000000L), 1L, ttl, new Date(), + new ArrayList<>()); + DeployResult deployResult = casperServiceTestnet.putDeploy(deploy); + LOGGER.debug("deploy hash: " + deployResult.getDeployHash()); + assertEquals(deployResult.getDeployHash(), Hex.toHexString(deploy.getHash().getDigest())); } } diff --git a/src/test/java/com/casper/sdk/service/AbstractJsonRpcTests.java b/src/test/java/com/casper/sdk/service/AbstractJsonRpcTests.java index 6a664da7a..db8b86422 100644 --- a/src/test/java/com/casper/sdk/service/AbstractJsonRpcTests.java +++ b/src/test/java/com/casper/sdk/service/AbstractJsonRpcTests.java @@ -21,7 +21,7 @@ public abstract class AbstractJsonRpcTests extends AbstractJsonTests { @Getter @AllArgsConstructor(access = AccessLevel.PRIVATE) public enum CasperNetwork { - MAIN_NET("63.33.251.206", 7777), TEST_NET("139.180.189.141", 7777); + MAIN_NET("63.33.251.206", 7777), TEST_NET("95.214.55.138", 7777); private final String ip; private final int port; From 9ab077f5d665d377f06cc7d113265d2bf074a84c Mon Sep 17 00:00:00 2001 From: Alexandre C Date: Tue, 7 Feb 2023 17:18:09 -0300 Subject: [PATCH 3/5] Changes type of CLValueAny's value to generic byte array --- .../sdk/model/clvalue/AbstractCLValue.java | 2 +- .../casper/sdk/model/clvalue/CLValueAny.java | 79 +++++++++++-------- .../model/storedvalue/StoredValueTests.java | 68 ++-------------- .../sdk/service/AbstractJsonRpcTests.java | 2 +- .../stored-value-map-u64-map-i32-any.json | 20 ----- 5 files changed, 53 insertions(+), 118 deletions(-) delete mode 100644 src/test/resources/stored-value-samples/stored-value-map-u64-map-i32-any.json diff --git a/src/main/java/com/casper/sdk/model/clvalue/AbstractCLValue.java b/src/main/java/com/casper/sdk/model/clvalue/AbstractCLValue.java index 51eaf05b7..ce32bf6ff 100644 --- a/src/main/java/com/casper/sdk/model/clvalue/AbstractCLValue.java +++ b/src/main/java/com/casper/sdk/model/clvalue/AbstractCLValue.java @@ -49,7 +49,7 @@ public abstract class AbstractCLValue @Setter @JsonProperty("parsed") @JsonInclude(Include.NON_NULL) - private String parsed; + private Object parsed; @JsonIgnore private T value; diff --git a/src/main/java/com/casper/sdk/model/clvalue/CLValueAny.java b/src/main/java/com/casper/sdk/model/clvalue/CLValueAny.java index ed1d20549..2b9ab7d8a 100644 --- a/src/main/java/com/casper/sdk/model/clvalue/CLValueAny.java +++ b/src/main/java/com/casper/sdk/model/clvalue/CLValueAny.java @@ -9,17 +9,13 @@ import dev.oak3.sbs4j.DeserializerBuffer; import dev.oak3.sbs4j.SerializerBuffer; import dev.oak3.sbs4j.exception.ValueSerializationException; -import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import org.bouncycastle.util.encoders.Hex; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; +import java.util.Arrays; +import java.util.Objects; /** * Casper Object CLValue implementation @@ -32,8 +28,8 @@ @Getter @Setter @NoArgsConstructor -@EqualsAndHashCode(callSuper = true) -public class CLValueAny extends AbstractCLValue { +//@EqualsAndHashCode(callSuper = true) +public class CLValueAny extends AbstractCLValue { private CLTypeAny clType = new CLTypeAny(); @JsonSetter("cl_type") @@ -48,42 +44,59 @@ protected String getJsonClType() { return this.getClType().getTypeName(); } - public CLValueAny(Object value) throws ValueSerializationException { + public CLValueAny(byte[] value) throws ValueSerializationException { this.setValue(value); } @Override public void serialize(SerializerBuffer ser, Target target) throws ValueSerializationException, NoSuchTypeException { if (this.getValue() == null) return; - try (ByteArrayOutputStream bos = new ByteArrayOutputStream(); - ObjectOutputStream oos = new ObjectOutputStream(bos)) { - - if (target.equals(Target.BYTE)) { - super.serializePrefixWithLength(ser); - } - - oos.writeObject(this.getValue()); - byte[] objectByteArray = bos.toByteArray(); - ser.writeI32(objectByteArray.length); - ser.writeByteArray(objectByteArray); - - if (target.equals(Target.BYTE)) { - this.encodeType(ser); - } - } catch (IOException e) { - throw new ValueSerializationException(String.format("Error serializing %s", this.getClass().getSimpleName()), e); - } - + ser.writeByteArray(this.getValue()); this.setBytes(Hex.toHexString(ser.toByteArray())); } @Override public void deserializeCustom(DeserializerBuffer deser) throws Exception { - int objectByteArrayLength = deser.readI32(); - try (ByteArrayInputStream bis = new ByteArrayInputStream(deser.readByteArray(objectByteArrayLength)); - ObjectInputStream ois = new ObjectInputStream(bis)) { - this.setValue(ois.readObject()); - } + this.setValue(deser.readByteArray(deser.getBuffer().remaining())); + } + + @Override + @ExcludeFromJacocoGeneratedReport + public boolean equals(final Object o) { + if (o == this) + return true; + if (!(o instanceof CLValueAny)) + return false; + final CLValueAny other = (CLValueAny) o; + if (!other.canEqual(this)) + return false; + final Object thisBytes = this.getBytes(); + final Object otherBytes = other.getBytes(); + if (!Objects.equals(thisBytes, otherBytes)) + return false; + final byte[] thisValue = this.getValue(); + final byte[] otherValue = other.getValue(); + if (thisValue == null ? otherValue != null : !Arrays.equals(thisValue, otherValue)) + return false; + final Object thisClType = this.getClType(); + final Object otherClType = other.getClType(); + return Objects.equals(thisClType, otherClType); + } + + @ExcludeFromJacocoGeneratedReport + @Override + protected boolean canEqual(final Object other) { + return other instanceof CLValueAny; + } + + @Override + @ExcludeFromJacocoGeneratedReport + public int hashCode() { + final int PRIME = 59; + int result = super.hashCode(); + final Object thisClType = this.getClType(); + result = result * PRIME + (thisClType == null ? 43 : thisClType.hashCode()); + return result; } } diff --git a/src/test/java/com/casper/sdk/model/storedvalue/StoredValueTests.java b/src/test/java/com/casper/sdk/model/storedvalue/StoredValueTests.java index 1ae9e4a48..3e747edc8 100644 --- a/src/test/java/com/casper/sdk/model/storedvalue/StoredValueTests.java +++ b/src/test/java/com/casper/sdk/model/storedvalue/StoredValueTests.java @@ -2,31 +2,7 @@ import com.casper.sdk.model.AbstractJsonTests; import com.casper.sdk.model.account.Account; -import com.casper.sdk.model.clvalue.AbstractCLValue; -import com.casper.sdk.model.clvalue.CLValueAny; -import com.casper.sdk.model.clvalue.CLValueBool; -import com.casper.sdk.model.clvalue.CLValueByteArray; -import com.casper.sdk.model.clvalue.CLValueFixedList; -import com.casper.sdk.model.clvalue.CLValueI32; -import com.casper.sdk.model.clvalue.CLValueI64; -import com.casper.sdk.model.clvalue.CLValueKey; -import com.casper.sdk.model.clvalue.CLValueList; -import com.casper.sdk.model.clvalue.CLValueMap; -import com.casper.sdk.model.clvalue.CLValueOption; -import com.casper.sdk.model.clvalue.CLValuePublicKey; -import com.casper.sdk.model.clvalue.CLValueResult; -import com.casper.sdk.model.clvalue.CLValueString; -import com.casper.sdk.model.clvalue.CLValueTuple1; -import com.casper.sdk.model.clvalue.CLValueTuple2; -import com.casper.sdk.model.clvalue.CLValueTuple3; -import com.casper.sdk.model.clvalue.CLValueU128; -import com.casper.sdk.model.clvalue.CLValueU256; -import com.casper.sdk.model.clvalue.CLValueU32; -import com.casper.sdk.model.clvalue.CLValueU512; -import com.casper.sdk.model.clvalue.CLValueU64; -import com.casper.sdk.model.clvalue.CLValueU8; -import com.casper.sdk.model.clvalue.CLValueURef; -import com.casper.sdk.model.clvalue.CLValueUnit; +import com.casper.sdk.model.clvalue.*; import com.casper.sdk.model.contract.Contract; import com.casper.sdk.model.key.AlgorithmTag; import com.casper.sdk.model.key.Key; @@ -39,11 +15,11 @@ import dev.oak3.sbs4j.SerializerBuffer; import dev.oak3.sbs4j.exception.ValueSerializationException; import dev.oak3.sbs4j.util.ByteUtils; +import org.bouncycastle.util.encoders.Hex; import org.javatuples.Pair; import org.javatuples.Triplet; import org.javatuples.Unit; import org.json.JSONException; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.skyscreamer.jsonassert.JSONAssert; import org.slf4j.Logger; @@ -57,9 +33,7 @@ import java.util.Map; import java.util.Optional; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; /** * Unit tests for {@link StoredValueData} @@ -77,7 +51,6 @@ public class StoredValueTests extends AbstractJsonTests { @Test - @Disabled("CLValuesAny deser is not well understood yet") void validate_CLValueAny_Mapping() throws IOException, JSONException, ValueSerializationException { String inputJson = getPrettyJson(loadJsonFromFile("stored-value-samples/stored-value-any.json")); @@ -87,11 +60,11 @@ void validate_CLValueAny_Mapping() throws IOException, JSONException, ValueSeria // Should be CLValueAny assertTrue(sv.getStoredValue().getValue() instanceof CLValueAny); - CLValueAny expectedClValue = new CLValueAny("Any Object Test"); + CLValueAny expectedClValue = new CLValueAny(Hex.decode("aced000574000f416e79204f626a6563742054657374")); StoredValueData expected = createAndInitExpectedStoredValueData(expectedClValue); - // assertEquals(expected, sv); + assertEquals(expected, sv); String expectedJson = getPrettyJson(expected); @@ -616,37 +589,6 @@ void validate_CLValueMap_Mapping_with_string_tuple1_i32() throws IOException, JSONAssert.assertEquals(inputJson, expectedJson, false); } - @Test - @Disabled("CLValuesAny deser is not well understood yet") - void validate_CLValueMap_Mapping_with_Map_i32_Any() throws IOException, - JSONException, ValueSerializationException { - String inputJson = getPrettyJson( - loadJsonFromFile("stored-value-samples/stored-value-map-u64-map-i32-any.json")); - - LOGGER.debug("Original JSON: {}", inputJson); - - StoredValueData sv = OBJECT_MAPPER.readValue(inputJson, StoredValueData.class); - // Should be CLValueMap - assertTrue(sv.getStoredValue().getValue() instanceof CLValueMap); - - Map map = new LinkedHashMap<>(); - Map childMap = new LinkedHashMap<>(); - childMap.put(new CLValueI32(1), new CLValueAny(DummyClass.builder().name("One").value(1).build())); - childMap.put(new CLValueI32(2), new CLValueAny(DummyClass.builder().name("Two").value(2).build())); - map.put(new CLValueU64(BigInteger.ONE), new CLValueMap(childMap)); - CLValueMap expectedClValue = new CLValueMap(map); - - StoredValueData expected = createAndInitExpectedStoredValueData(expectedClValue); - - assertEquals(expected, sv); - - String expectedJson = getPrettyJson(expected); - - LOGGER.debug("Serialized JSON: {}", expectedJson); - - JSONAssert.assertEquals(inputJson, expectedJson, false); - } - @Test void validate_CLValueResult_Mapping_with_i32_string() throws IOException, JSONException, ValueSerializationException { diff --git a/src/test/java/com/casper/sdk/service/AbstractJsonRpcTests.java b/src/test/java/com/casper/sdk/service/AbstractJsonRpcTests.java index 6a664da7a..9166ee820 100644 --- a/src/test/java/com/casper/sdk/service/AbstractJsonRpcTests.java +++ b/src/test/java/com/casper/sdk/service/AbstractJsonRpcTests.java @@ -21,7 +21,7 @@ public abstract class AbstractJsonRpcTests extends AbstractJsonTests { @Getter @AllArgsConstructor(access = AccessLevel.PRIVATE) public enum CasperNetwork { - MAIN_NET("63.33.251.206", 7777), TEST_NET("139.180.189.141", 7777); + MAIN_NET("152.32.239.13", 7777), TEST_NET("139.180.189.141", 7777); private final String ip; private final int port; diff --git a/src/test/resources/stored-value-samples/stored-value-map-u64-map-i32-any.json b/src/test/resources/stored-value-samples/stored-value-map-u64-map-i32-any.json deleted file mode 100644 index b62c78074..000000000 --- a/src/test/resources/stored-value-samples/stored-value-map-u64-map-i32-any.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "api_version": "1.3.2", - "stored_value": { - "CLValue": { - "cl_type": { - "Map": { - "key": "U64", - "value": { - "Map": { - "key": "I32", - "value": "Any" - } - } - } - }, - "bytes": "0100000001000000000000000200000001000000e8000000aced00057372002b636f6d2e6361737065722e73646b2e6d6f64656c2e73746f72656476616c75652e44756d6d79436c617373a5c3fb2fde805ba00200034a001073657269616c56657273696f6e5549444c00046e616d657400124c6a6176612f6c616e672f537472696e673b4c000576616c75657400134c6a6176612f6c616e672f496e74656765723b787000045ff38efaf7aa7400034f6e65737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c7565787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b02000078700000000102000000e8000000aced00057372002b636f6d2e6361737065722e73646b2e6d6f64656c2e73746f72656476616c75652e44756d6d79436c617373a5c3fb2fde805ba00200034a001073657269616c56657273696f6e5549444c00046e616d657400124c6a6176612f6c616e672f537472696e673b4c000576616c75657400134c6a6176612f6c616e672f496e74656765723b787000045ff38efaf7aa74000354776f737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c7565787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b020000787000000002" - } - }, - "merkle_proof": "-- erased --" -} From 9d2f25bea24507407f56db4b051046e1ca6313d0 Mon Sep 17 00:00:00 2001 From: Alexandre C Date: Tue, 7 Feb 2023 17:51:58 -0300 Subject: [PATCH 4/5] Changing test peer to an active one and removed inconsistent test condition --- src/test/java/com/casper/sdk/service/AbstractJsonRpcTests.java | 2 +- src/test/java/com/casper/sdk/service/CasperServiceTests.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/casper/sdk/service/AbstractJsonRpcTests.java b/src/test/java/com/casper/sdk/service/AbstractJsonRpcTests.java index 9166ee820..353c36935 100644 --- a/src/test/java/com/casper/sdk/service/AbstractJsonRpcTests.java +++ b/src/test/java/com/casper/sdk/service/AbstractJsonRpcTests.java @@ -21,7 +21,7 @@ public abstract class AbstractJsonRpcTests extends AbstractJsonTests { @Getter @AllArgsConstructor(access = AccessLevel.PRIVATE) public enum CasperNetwork { - MAIN_NET("152.32.239.13", 7777), TEST_NET("139.180.189.141", 7777); + MAIN_NET("152.32.239.13", 7777), TEST_NET("85.114.132.133", 7777); private final String ip; private final int port; diff --git a/src/test/java/com/casper/sdk/service/CasperServiceTests.java b/src/test/java/com/casper/sdk/service/CasperServiceTests.java index ee6963fac..59f4a3ae0 100644 --- a/src/test/java/com/casper/sdk/service/CasperServiceTests.java +++ b/src/test/java/com/casper/sdk/service/CasperServiceTests.java @@ -17,6 +17,7 @@ import com.casper.sdk.model.deploy.executabledeploy.ModuleBytes; import com.casper.sdk.model.deploy.executabledeploy.StoredContractByHash; import com.casper.sdk.model.deploy.executionresult.Success; +import com.casper.sdk.model.deploy.transform.Transform; import com.casper.sdk.model.deploy.transform.WriteCLValue; import com.casper.sdk.model.era.EraInfoData; import com.casper.sdk.model.globalstate.GlobalStateData; @@ -216,7 +217,6 @@ void getDeploy() { assertNotNull(deployData.getDeploy()); assertTrue(deployData.getDeploy().getSession() instanceof StoredContractByHash); assertTrue(deployData.getExecutionResults().get(0).getResult() instanceof Success); - assertTrue(((Success) deployData.getExecutionResults().get(0).getResult()).getEffect().getTransforms().get(0).getTransform() instanceof WriteCLValue); assertTrue(deployData.getDeploy().getPayment() instanceof ModuleBytes); assertTrue(deployData.getDeploy().getSession() instanceof StoredContractByHash); String tmp = ((StoredContractByHash) deployData.getDeploy().getSession()).getHash(); From bb49b723e8f18bc398735915679fa9dea61cc557 Mon Sep 17 00:00:00 2001 From: meywood <105049338+meywood@users.noreply.github.com> Date: Fri, 10 Feb 2023 11:22:05 +0000 Subject: [PATCH 5/5] Increment version to 2.1.0 for release --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 44e243ce2..e92015b8f 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ plugins { apply plugin: 'java' group = 'network.casper' -version='2.0.0' +version='2.1.0' sourceCompatibility = 1.8 targetCompatibility = 1.8