Skip to content

Commit 29079ca

Browse files
authored
Merge pull request #174 from xchdata/stop-1weso-squaring
Stop 1-Weso squaring on reaching target iterations
2 parents 54c5dad + 5b9ee7b commit 29079ca

File tree

5 files changed

+12
-7
lines changed

5 files changed

+12
-7
lines changed

src/1weso_test.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ int main(int argc, char const* argv[]) try
4949
uint64_t iter = iter_multiplier;
5050
OneWesolowskiCallback weso(D, f, iter);
5151
FastStorage* fast_storage = nullptr;
52-
std::thread vdf_worker(repeated_square, f, D, L, &weso, fast_storage, std::ref(stopped));
52+
std::thread vdf_worker(repeated_square, iter, f, D, L, &weso, fast_storage, std::ref(stopped));
5353
Proof const proof = ProveOneWesolowski(iter, D, f, &weso, stopped);
5454
stopped = true;
5555
vdf_worker.join();

src/2weso_test.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ int main(int argc, char const* argv[]) try
5555
two_weso = true;
5656
TwoWesolowskiCallback weso(D, f);
5757
FastStorage* fast_storage = NULL;
58-
std::thread vdf_worker(repeated_square, f, D, L, &weso, fast_storage, std::ref(stopped));
58+
std::thread vdf_worker(repeated_square, 0, f, D, L, &weso, fast_storage, std::ref(stopped));
5959
// Test 1 - 1 million iters.
6060
uint64_t iteration = 1 * iter_multiplier;
6161
Proof proof = ProveTwoWeso(D, f, iteration, 0, &weso, 0, stopped);

src/prover_test.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ int main() {
5656
if (multi_proc_machine) {
5757
fast_storage = new FastStorage((FastAlgorithmCallback*)weso);
5858
}
59-
std::thread vdf_worker(repeated_square, f, D, L, weso, fast_storage, std::ref(stopped));
59+
std::thread vdf_worker(repeated_square, 0, f, D, L, weso, fast_storage, std::ref(stopped));
6060
ProverManager pm(D, (FastAlgorithmCallback*)weso, fast_storage, segments, thread_count);
6161
pm.start();
6262
std::vector<std::thread> threads;

src/vdf.h

+6-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ void repeated_square_original(vdf_original &vdfo, form& f, const integer& D, con
100100
}
101101

102102
// thread safe; but it is only called from the main thread
103-
void repeated_square(form f, const integer& D, const integer& L,
103+
void repeated_square(uint64_t iterations, form f, const integer& D, const integer& L,
104104
WesolowskiCallback* weso, FastStorage* fast_storage, std::atomic<bool>& stopped)
105105
{
106106
#ifdef VDF_TEST
@@ -221,6 +221,11 @@ void repeated_square(form f, const integer& D, const integer& L,
221221
last_checkpoint += (1 << 15);
222222
}
223223

224+
if (iterations != 0 && num_iterations > iterations) {
225+
weso->iterations = num_iterations;
226+
break;
227+
}
228+
224229
#ifdef VDF_TEST
225230
if (vdf_test_correctness) {
226231
form f_copy_2=f;

src/vdf_client.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ void SessionFastAlgorithm(tcp::socket& sock) {
161161
fast_storage = new FastStorage((FastAlgorithmCallback*)weso);
162162
}
163163
std::atomic<bool> stopped(false);
164-
std::thread vdf_worker(repeated_square, f, std::ref(D), std::ref(L), weso, fast_storage, std::ref(stopped));
164+
std::thread vdf_worker(repeated_square, 0, f, std::ref(D), std::ref(L), weso, fast_storage, std::ref(stopped));
165165
ProverManager pm(D, (FastAlgorithmCallback*)weso, fast_storage, segments, thread_count);
166166
pm.start();
167167

@@ -211,7 +211,7 @@ void SessionOneWeso(tcp::socket& sock) {
211211
std::atomic<bool> stopped(false);
212212
WesolowskiCallback* weso = new OneWesolowskiCallback(D, f, iter);
213213
FastStorage* fast_storage = NULL;
214-
std::thread vdf_worker(repeated_square, f, std::ref(D), std::ref(L), weso, fast_storage, std::ref(stopped));
214+
std::thread vdf_worker(repeated_square, iter, f, std::ref(D), std::ref(L), weso, fast_storage, std::ref(stopped));
215215
std::thread th_prover(CreateAndWriteProofOneWeso, iter, std::ref(D), f, (OneWesolowskiCallback*)weso, std::ref(stopped), std::ref(sock));
216216
iter = ReadIteration(sock);
217217
while (iter != 0) {
@@ -247,7 +247,7 @@ void SessionTwoWeso(tcp::socket& sock) {
247247
std::set<std::pair<uint64_t, uint64_t> > seen_iterations;
248248
WesolowskiCallback* weso = new TwoWesolowskiCallback(D, f);
249249
FastStorage* fast_storage = NULL;
250-
std::thread vdf_worker(repeated_square, f, std::ref(D), std::ref(L), weso, fast_storage, std::ref(stopped));
250+
std::thread vdf_worker(repeated_square, 0, f, std::ref(D), std::ref(L), weso, fast_storage, std::ref(stopped));
251251

252252
while (!stopped) {
253253
uint64_t iters = ReadIteration(sock);

0 commit comments

Comments
 (0)