@Override public byte[] call() throws Exception { do { inc(nonce, numberOfCores); mda.update(nonce); mda.update(initialHash); if (!Bytes.lt(target, mda.digest(mda.digest()), 8)) { return nonce; } } while (!Thread.interrupted()); return null; } }
@Override public byte[] calculateNonce(byte[] initialHash, byte[] target) { byte[] nonce = new byte[8]; MessageDigest mda; try { mda = MessageDigest.getInstance("SHA-512"); } catch (Exception e) { throw new RuntimeException(e); } do { inc(nonce); mda.update(nonce); mda.update(initialHash); } while (Bytes.lt(target, mda.digest(mda.digest()), 8)); return nonce; } }
@Override public void run() { do { inc(nonce, numberOfCores); mda.update(nonce); mda.update(initialHash); if (!Bytes.lt(target, mda.digest(mda.digest()), 8)) { successful = true; for (Worker w : workers) { w.interrupt(); } return; } } while (!Thread.interrupted()); } }
@Override public void calculateNonce(byte[] initialHash, byte[] target, Callback callback) { try { MessageDigest mda = MessageDigest.getInstance("SHA-512"); byte[] nonce = new byte[8]; do { inc(nonce); mda.update(nonce); mda.update(initialHash); } while (Bytes.lt(target, mda.digest(mda.digest()), 8)); callback.onNonceCalculated(initialHash, nonce); } catch (NoSuchAlgorithmException e) { throw new ApplicationException(e); } } }