From 09466ac12737e6535097f6d997b6e348a7682c71 Mon Sep 17 00:00:00 2001 From: Mikael Hirki Date: Wed, 11 Sep 2013 19:03:18 +0300 Subject: [PATCH 1/7] Fix the sieving of BiTwin candidates (thanks to rdebourbon). The last member of a BiTwin chain was not sieved at all if the target chain length was odd. The chains/day estimate was also inflated on mainnet because of this issue. --- src/prime.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/prime.cpp b/src/prime.cpp index 6cfdf8fa..f42803d4 100644 --- a/src/prime.cpp +++ b/src/prime.cpp @@ -1045,7 +1045,7 @@ bool CSieveOfEratosthenes::Weave() vfCompositeBiTwin[nWord] |= vfCompositeLayerCC1[nWord] | vfCompositeLayerCC2[nWord]; } } - else if (nLayerSeq < nBiTwinCC2Layers) + else if (nLayerSeq < nBiTwinCC1Layers) { for (unsigned int nWord = nMinWord; nWord < nMaxWord; nWord++) { @@ -1083,7 +1083,7 @@ bool CSieveOfEratosthenes::Weave() vfExtTWN[nWord] |= vfCompositeLayerCC1[nWord] | vfCompositeLayerCC2[nWord]; } } - else if (nLayerExtendedSeq < nBiTwinCC2Layers) + else if (nLayerExtendedSeq < nBiTwinCC1Layers) { for (unsigned int nWord = nExtMinWord; nWord < nMaxWord; nWord++) { From f32680a8a95d4f15c2659a348b9e68533b016568 Mon Sep 17 00:00:00 2001 From: Mikael Hirki Date: Wed, 11 Sep 2013 21:15:55 +0300 Subject: [PATCH 2/7] Changed the default value for 'sieveextensions' to 9 for mainnet. A value of 9 seems to give slightly higher chains/day after commit 09466ac127. --- src/prime.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/prime.h b/src/prime.h index 75c15464..3f268d7e 100644 --- a/src/prime.h +++ b/src/prime.h @@ -18,7 +18,7 @@ extern std::vector vPrimes; static const unsigned int nMaxSieveExtensions = 20; static const unsigned int nMinSieveExtensions = 0; -static const unsigned int nDefaultSieveExtensions = 6; +static const unsigned int nDefaultSieveExtensions = 9; static const unsigned int nDefaultSieveExtensionsTestnet = 4; extern unsigned int nSieveExtensions; static const unsigned int nMaxSievePercentage = 100; From bfca87b84cb56fed7727008e84b59a4e15022d03 Mon Sep 17 00:00:00 2001 From: Thomas Baumbach Date: Fri, 13 Sep 2013 15:17:07 +0200 Subject: [PATCH 3/7] share submission on disconnect fix --- src/main_poolminer.cpp | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/main_poolminer.cpp b/src/main_poolminer.cpp index ed8e5adc..339091c6 100644 --- a/src/main_poolminer.cpp +++ b/src/main_poolminer.cpp @@ -62,11 +62,12 @@ struct blockHeader_t { unsigned char primemultiplier[48]; // 80+48 }; // =128 bytes header (80 default + 48 primemultiplier) -size_t thread_num_max; -boost::asio::ip::tcp::socket* socket_to_server; -boost::posix_time::ptime t_start; -std::map statistics; -bool running; +static size_t thread_num_max; +static boost::asio::ip::tcp::socket* socket_to_server; +static boost::posix_time::ptime t_start; +static std::map statistics; +static bool running; +static volatile int submitting_share; /********************************* * helping functions @@ -149,11 +150,15 @@ public: blockraw.primemultiplier[1 + i] = primemultiplier[i]; boost::system::error_code error; - while (socket_to_server == NULL) - boost::this_thread::sleep(boost::posix_time::seconds(1)); - socket_to_server->write_some(boost::asio::buffer((unsigned char*)&blockraw, 128)); - if (error) - std::cout << error << " @ write_some_submit" << std::endl; + ++submitting_share; + while (socket_to_server == NULL && running) + boost::this_thread::sleep(boost::posix_time::milliseconds(100)); + if (running) { + socket_to_server->write_some(boost::asio::buffer((unsigned char*)&blockraw, 128)); + if (error) + std::cout << error << " @ write_some_submit" << std::endl; + } + --submitting_share; } protected: @@ -228,9 +233,11 @@ public: boost::system::error_code error_socket = boost::asio::error::host_not_found; while (error_socket && endpoint != end) { - //socket.close(); + //socket->close(); socket.reset(new boost::asio::ip::tcp::socket(io_service)); - socket->connect(*endpoint++, error_socket); + boost::asio::ip::tcp::endpoint tcp_ep = *endpoint++; + socket->connect(tcp_ep, error_socket); + std::cout << "connecting to " << tcp_ep << std::endl; } socket->set_option(nd_option); @@ -348,7 +355,8 @@ public: } socket_to_server = NULL; //TODO: lock/mutex - boost::this_thread::sleep(boost::posix_time::seconds(10)); + for (int i = 0; i < 100 && submitting_share < 1; ++i) + boost::this_thread::sleep(boost::posix_time::milliseconds(100)); } } From 27285b851fd9750f37cdc1c3caa868a54fdb1ff9 Mon Sep 17 00:00:00 2001 From: Thomas Baumbach Date: Fri, 13 Sep 2013 15:19:09 +0200 Subject: [PATCH 4/7] increased value for forced reconnection on rejects --- src/main_poolminer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main_poolminer.cpp b/src/main_poolminer.cpp index 339091c6..59a2cfb4 100644 --- a/src/main_poolminer.cpp +++ b/src/main_poolminer.cpp @@ -333,8 +333,8 @@ public: reject_counter = 0; else reject_counter++; - if (reject_counter >= 3) { - std::cout << "too many rejects, forcing reconnect." << std::endl; + if (reject_counter >= 4) { + std::cout << "too many rejects (4), forcing reconnect." << std::endl; socket->close(); done = true; } From ace506e0e8a82130e7f750244bd4d5c20acd8ee3 Mon Sep 17 00:00:00 2001 From: Thomas Baumbach Date: Fri, 13 Sep 2013 15:36:54 +0200 Subject: [PATCH 5/7] extended share submission on disconnect fix --- src/main_poolminer.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main_poolminer.cpp b/src/main_poolminer.cpp index 59a2cfb4..69f88a43 100644 --- a/src/main_poolminer.cpp +++ b/src/main_poolminer.cpp @@ -149,14 +149,17 @@ public: for (size_t i = 0; i < primemultiplier.size(); ++i) blockraw.primemultiplier[1 + i] = primemultiplier[i]; - boost::system::error_code error; + boost::posix_time::ptime submit_start = boost::posix_time::second_clock::universal_time(); + boost::system::error_code submit_error = boost::asio::error::host_not_found; //run at least 1 time ++submitting_share; - while (socket_to_server == NULL && running) - boost::this_thread::sleep(boost::posix_time::milliseconds(100)); - if (running) { - socket_to_server->write_some(boost::asio::buffer((unsigned char*)&blockraw, 128)); - if (error) - std::cout << error << " @ write_some_submit" << std::endl; + while (submit_error && running && (boost::posix_time::second_clock::universal_time() - submit_start).total_seconds() < 100) { + while (socket_to_server == NULL && running && (boost::posix_time::second_clock::universal_time() - submit_start).total_seconds() < 100) //socket error was issued somewhere else + boost::this_thread::sleep(boost::posix_time::milliseconds(100)); + if (running && (boost::posix_time::second_clock::universal_time() - submit_start).total_seconds() < 100) { + socket_to_server->write_some(boost::asio::buffer((unsigned char*)&blockraw, 128), submit_error); + if (submit_error) + std::cout << submit_error << " @ write_some_submit" << std::endl; + } } --submitting_share; } From 032cac6b22a90595ab47bbc985944d35fc64d798 Mon Sep 17 00:00:00 2001 From: Mikael Hirki Date: Fri, 13 Sep 2013 20:56:50 +0300 Subject: [PATCH 6/7] Remove a redundant check in the sieve (thanks cabin). --- src/prime.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/prime.cpp b/src/prime.cpp index f42803d4..76446924 100644 --- a/src/prime.cpp +++ b/src/prime.cpp @@ -1036,7 +1036,7 @@ bool CSieveOfEratosthenes::Weave() // Apply the layer to the primary sieve arrays if (nLayerSeq < nChainLength) { - if (nLayerSeq < nBiTwinCC1Layers && nLayerSeq < nBiTwinCC2Layers) + if (nLayerSeq < nBiTwinCC2Layers) { for (unsigned int nWord = nMinWord; nWord < nMaxWord; nWord++) { @@ -1074,7 +1074,7 @@ bool CSieveOfEratosthenes::Weave() sieve_word_t *vfExtCC1 = vfExtendedCompositeCunningham1 + nExtensionSeq * nCandidatesWords; sieve_word_t *vfExtCC2 = vfExtendedCompositeCunningham2 + nExtensionSeq * nCandidatesWords; sieve_word_t *vfExtTWN = vfExtendedCompositeBiTwin + nExtensionSeq * nCandidatesWords; - if (nLayerExtendedSeq < nBiTwinCC1Layers && nLayerExtendedSeq < nBiTwinCC2Layers) + if (nLayerExtendedSeq < nBiTwinCC2Layers) { for (unsigned int nWord = nExtMinWord; nWord < nMaxWord; nWord++) { From f8cf45d79bd2443754bbd360f4a111688bbc8a82 Mon Sep 17 00:00:00 2001 From: Thomas Baumbach Date: Fri, 13 Sep 2013 20:50:54 +0200 Subject: [PATCH 7/7] v0.3 RC0, mikaelh merge, rename to xolominer, reconnect on share-submit --- src/main_poolminer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main_poolminer.cpp b/src/main_poolminer.cpp index 69f88a43..337487f1 100644 --- a/src/main_poolminer.cpp +++ b/src/main_poolminer.cpp @@ -18,7 +18,8 @@ #include #define VERSION_MAJOR 0 -#define VERSION_MINOR 2 +#define VERSION_MINOR 3 +#define VERSION_EXT "RC0" // be compatible to original code (not actually used!) #include "txdb.h" @@ -483,7 +484,7 @@ void ctrl_handler(int signum) { int main(int argc, char **argv) { std::cout << "********************************************" << std::endl; - std::cout << "*** Primeminer - Primecoin Pool Miner v" << VERSION_MAJOR << "." << VERSION_MINOR << std::endl; + std::cout << "*** Xolominer - Primecoin Pool Miner v" << VERSION_MAJOR << "." << VERSION_MINOR << " " << VERSION_EXT << std::endl; std::cout << "*** by xolokram/TB - www.beeeeer.org - glhf" << std::endl; std::cout << "***" << std::endl; std::cout << "*** thx to Sunny King & mikaelh" << std::endl;