From d4ac87f91d39ed243b6e6fbd0ff73d7f3c54f745 Mon Sep 17 00:00:00 2001 From: catbref Date: Wed, 12 Aug 2020 14:17:09 +0100 Subject: [PATCH] Update to more efficient CIYAM AT v1.3.7 --- .../AT-1.3.6.jar => 1.3.7/AT-1.3.7.jar} | Bin 150512 -> 151627 bytes .../AT-1.3.6.pom => 1.3.7/AT-1.3.7.pom} | 2 +- lib/org/ciyam/AT/maven-metadata-local.xml | 5 +++-- pom.xml | 2 +- .../org/qortal/api/resource/AtResource.java | 4 +--- src/main/java/org/qortal/at/AT.java | 16 ++++------------ .../qortal/test/at/GetMessageLengthTests.java | 7 ++----- .../test/at/GetNextTransactionTests.java | 4 +--- .../test/at/GetPartialMessageTests.java | 4 +--- 9 files changed, 14 insertions(+), 30 deletions(-) rename lib/org/ciyam/AT/{1.3.6/AT-1.3.6.jar => 1.3.7/AT-1.3.7.jar} (53%) rename lib/org/ciyam/AT/{1.3.6/AT-1.3.6.pom => 1.3.7/AT-1.3.7.pom} (94%) diff --git a/lib/org/ciyam/AT/1.3.6/AT-1.3.6.jar b/lib/org/ciyam/AT/1.3.7/AT-1.3.7.jar similarity index 53% rename from lib/org/ciyam/AT/1.3.6/AT-1.3.6.jar rename to lib/org/ciyam/AT/1.3.7/AT-1.3.7.jar index d3e341e3ef3dc291b431bf7b6db93d1f3b05a8c1..0e43ba18edf512d6bf610820f34bdbdaa2d99e1a 100644 GIT binary patch delta 16833 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 Uh*yMEgmjM|2??7HcH2h!f3pT)9RL6T delta 15625 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

mk?(e9R|+(=-yw8Q--0+ypR3RGc#d%n(Y(5(q&o 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 diff --git a/lib/org/ciyam/AT/1.3.6/AT-1.3.6.pom b/lib/org/ciyam/AT/1.3.7/AT-1.3.7.pom similarity index 94% rename from lib/org/ciyam/AT/1.3.6/AT-1.3.6.pom rename to lib/org/ciyam/AT/1.3.7/AT-1.3.7.pom index e3b023df..a38b49f4 100644 --- a/lib/org/ciyam/AT/1.3.6/AT-1.3.6.pom +++ b/lib/org/ciyam/AT/1.3.7/AT-1.3.7.pom @@ -4,6 +4,6 @@ 4.0.0 org.ciyam AT - 1.3.6 + 1.3.7 POM was created from install:install-file diff --git a/lib/org/ciyam/AT/maven-metadata-local.xml b/lib/org/ciyam/AT/maven-metadata-local.xml index a60ba88f..ff99d403 100644 --- a/lib/org/ciyam/AT/maven-metadata-local.xml +++ b/lib/org/ciyam/AT/maven-metadata-local.xml @@ -3,12 +3,13 @@ org.ciyam AT - 1.3.6 + 1.3.7 1.3.4 1.3.5 1.3.6 + 1.3.7 - 20200810130321 + 20200812131412 diff --git a/pom.xml b/pom.xml index 4fa70c84..150b61b3 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ 0.15.5 1.64 ${maven.build.timestamp} - 1.3.6 + 1.3.7 3.6 1.8 1.2.2 diff --git a/src/main/java/org/qortal/api/resource/AtResource.java b/src/main/java/org/qortal/api/resource/AtResource.java index 86b79da9..29a2344d 100644 --- a/src/main/java/org/qortal/api/resource/AtResource.java +++ b/src/main/java/org/qortal/api/resource/AtResource.java @@ -25,7 +25,6 @@ import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; import org.qortal.api.ApiException; import org.qortal.api.ApiExceptionFactory; -import org.qortal.at.QortalAtLoggerFactory; import org.qortal.data.at.ATData; import org.qortal.data.at.ATStateData; import org.qortal.data.transaction.DeployAtTransactionData; @@ -147,8 +146,7 @@ public class AtResource { ATStateData atStateData = repository.getATRepository().getLatestATState(atAddress); byte[] stateData = atStateData.getStateData(); - QortalAtLoggerFactory loggerFactory = QortalAtLoggerFactory.getInstance(); - byte[] dataBytes = MachineState.extractDataBytes(loggerFactory, stateData); + byte[] dataBytes = MachineState.extractDataBytes(stateData); return dataBytes; } catch (ApiException e) { diff --git a/src/main/java/org/qortal/at/AT.java b/src/main/java/org/qortal/at/AT.java index 368e3a97..5aba1b73 100644 --- a/src/main/java/org/qortal/at/AT.java +++ b/src/main/java/org/qortal/at/AT.java @@ -117,12 +117,8 @@ public class AT { } public void update(int blockHeight, long blockTimestamp) throws DataException { - // [Re]create AT machine state using AT state data or from scratch as applicable - QortalATAPI api = new QortalATAPI(repository, this.atData, blockTimestamp); - QortalAtLoggerFactory loggerFactory = QortalAtLoggerFactory.getInstance(); - - byte[] codeBytes = this.atData.getCodeBytes(); - MachineState state = MachineState.fromBytes(api, loggerFactory, this.atStateData.getStateData(), codeBytes); + // Extract minimal/flags-only AT machine state using AT state data + MachineState state = MachineState.flagsOnlyfromBytes(this.atStateData.getStateData()); // Save latest AT state data this.repository.getATRepository().save(this.atStateData); @@ -151,12 +147,8 @@ public class AT { if (previousStateData == null) throw new DataException("Can't find previous AT state data for " + atAddress); - // [Re]create AT machine state using AT state data or from scratch as applicable - QortalATAPI api = new QortalATAPI(repository, this.atData, blockTimestamp); - QortalAtLoggerFactory loggerFactory = QortalAtLoggerFactory.getInstance(); - - byte[] codeBytes = this.atData.getCodeBytes(); - MachineState state = MachineState.fromBytes(api, loggerFactory, previousStateData.getStateData(), codeBytes); + // Extract minimal/flags-only AT machine state using AT state data + MachineState state = MachineState.flagsOnlyfromBytes(previousStateData.getStateData()); // Update AT info in repository this.atData.setIsSleeping(state.isSleeping()); diff --git a/src/test/java/org/qortal/test/at/GetMessageLengthTests.java b/src/test/java/org/qortal/test/at/GetMessageLengthTests.java index 730b441f..e7a7bcc4 100644 --- a/src/test/java/org/qortal/test/at/GetMessageLengthTests.java +++ b/src/test/java/org/qortal/test/at/GetMessageLengthTests.java @@ -13,7 +13,6 @@ import org.junit.Before; import org.junit.Test; import org.qortal.account.PrivateKeyAccount; import org.qortal.asset.Asset; -import org.qortal.at.QortalAtLoggerFactory; import org.qortal.at.QortalFunctionCode; import org.qortal.data.at.ATStateData; import org.qortal.data.transaction.BaseTransactionData; @@ -67,8 +66,7 @@ public class GetMessageLengthTests extends Common { ATStateData atStateData = repository.getATRepository().getLatestATState(atAddress); byte[] stateData = atStateData.getStateData(); - QortalAtLoggerFactory loggerFactory = QortalAtLoggerFactory.getInstance(); - byte[] dataBytes = MachineState.extractDataBytes(loggerFactory, stateData); + byte[] dataBytes = MachineState.extractDataBytes(stateData); long extractedLength = BitTwiddling.longFromBEBytes(dataBytes, 0); @@ -88,8 +86,7 @@ public class GetMessageLengthTests extends Common { ATStateData atStateData = repository.getATRepository().getLatestATState(atAddress); byte[] stateData = atStateData.getStateData(); - QortalAtLoggerFactory loggerFactory = QortalAtLoggerFactory.getInstance(); - byte[] dataBytes = MachineState.extractDataBytes(loggerFactory, stateData); + byte[] dataBytes = MachineState.extractDataBytes(stateData); long extractedLength = BitTwiddling.longFromBEBytes(dataBytes, 0); diff --git a/src/test/java/org/qortal/test/at/GetNextTransactionTests.java b/src/test/java/org/qortal/test/at/GetNextTransactionTests.java index eafc22fb..8bbce250 100644 --- a/src/test/java/org/qortal/test/at/GetNextTransactionTests.java +++ b/src/test/java/org/qortal/test/at/GetNextTransactionTests.java @@ -15,7 +15,6 @@ import org.junit.Before; import org.junit.Test; import org.qortal.account.PrivateKeyAccount; import org.qortal.asset.Asset; -import org.qortal.at.QortalAtLoggerFactory; import org.qortal.block.Block; import org.qortal.data.at.ATStateData; import org.qortal.data.block.BlockData; @@ -192,8 +191,7 @@ public class GetNextTransactionTests extends Common { ATStateData atStateData = repository.getATRepository().getLatestATState(atAddress); byte[] stateData = atStateData.getStateData(); - QortalAtLoggerFactory loggerFactory = QortalAtLoggerFactory.getInstance(); - byte[] dataBytes = MachineState.extractDataBytes(loggerFactory, stateData); + byte[] dataBytes = MachineState.extractDataBytes(stateData); System.arraycopy(dataBytes, 0, rawNextTimestamp, 0, rawNextTimestamp.length); } diff --git a/src/test/java/org/qortal/test/at/GetPartialMessageTests.java b/src/test/java/org/qortal/test/at/GetPartialMessageTests.java index 4bc9d9ea..0f9b188a 100644 --- a/src/test/java/org/qortal/test/at/GetPartialMessageTests.java +++ b/src/test/java/org/qortal/test/at/GetPartialMessageTests.java @@ -12,7 +12,6 @@ import org.junit.Before; import org.junit.Test; import org.qortal.account.PrivateKeyAccount; import org.qortal.asset.Asset; -import org.qortal.at.QortalAtLoggerFactory; import org.qortal.at.QortalFunctionCode; import org.qortal.data.at.ATStateData; import org.qortal.data.transaction.BaseTransactionData; @@ -64,8 +63,7 @@ public class GetPartialMessageTests extends Common { ATStateData atStateData = repository.getATRepository().getLatestATState(atAddress); byte[] stateData = atStateData.getStateData(); - QortalAtLoggerFactory loggerFactory = QortalAtLoggerFactory.getInstance(); - byte[] dataBytes = MachineState.extractDataBytes(loggerFactory, stateData); + byte[] dataBytes = MachineState.extractDataBytes(stateData); byte[] actualData = new byte[32]; System.arraycopy(dataBytes, MachineState.VALUE_SIZE, actualData, 0, 32);