From dd8cf7c2f2e817ca63daa8af313d3d4c32bbd8a0 Mon Sep 17 00:00:00 2001 From: douxing Date: Mon, 23 Aug 2021 11:40:16 +0800 Subject: [PATCH] 1. NonceUtls.newNonce now only generate non-negative longs 2. LuyuSDK.sendTransaction will not generate nonce if it is set by client --- src/main/java/org/luyu/sdk/caller/LuyuSDK.java | 4 +++- src/main/java/org/luyu/sdk/utils/NonceUtls.java | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/luyu/sdk/caller/LuyuSDK.java b/src/main/java/org/luyu/sdk/caller/LuyuSDK.java index 0e895bf..209ffc5 100644 --- a/src/main/java/org/luyu/sdk/caller/LuyuSDK.java +++ b/src/main/java/org/luyu/sdk/caller/LuyuSDK.java @@ -26,7 +26,9 @@ public class LuyuSDK extends ExtendSDK implements SDK { @Override public RemoteCall sendTransaction(Transaction tx) { // set nonce & version - tx.setNonce(NonceUtls.newNonce()); + if (tx.getNonce() == 0) { + tx.setNonce(NonceUtls.newNonce()); + } tx.setSender(account.getIdentity()); // sign diff --git a/src/main/java/org/luyu/sdk/utils/NonceUtls.java b/src/main/java/org/luyu/sdk/utils/NonceUtls.java index 0ec11c6..c9390a1 100644 --- a/src/main/java/org/luyu/sdk/utils/NonceUtls.java +++ b/src/main/java/org/luyu/sdk/utils/NonceUtls.java @@ -6,6 +6,10 @@ public class NonceUtls { private static final SecureRandom rand = new SecureRandom(); public static synchronized long newNonce() { - return rand.nextLong(); + long n = rand.nextLong(); + if (n < 0) { + n &= Long.MAX_VALUE; + } + return n; } } -- Gitee