diff --git a/src/main/java/org/luyu/sdk/caller/LuyuSDK.java b/src/main/java/org/luyu/sdk/caller/LuyuSDK.java index 0e895bf400c176c7e3182994c8d0a092241f07c4..209ffc504dc33f524678cb60cd8ba8ed694d0c9d 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 0ec11c6e89bac62afb4de0cc0f610689a6ab3b5e..c9390a1cbad7d2bef838d466aecd784a326d4df9 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; } }