Browse Source

Pool option #cksuggest to use CKPool-compatible mining.suggest_difficulty

Suppresses attempting mining.suggest_target.
May optionally take a value of the exact integer Number to send (otherwise --request-diff minus 1 is used).
Luke Dashjr 10 years ago
parent
commit
279a999ccd
2 changed files with 18 additions and 1 deletions
  1. 2 0
      miner.h
  2. 16 1
      util.c

+ 2 - 0
miner.h

@@ -947,6 +947,8 @@ extern bool opt_protocol;
 extern bool opt_dev_protocol;
 extern bool opt_dev_protocol;
 extern char *opt_coinbase_sig;
 extern char *opt_coinbase_sig;
 extern char *request_target_str;
 extern char *request_target_str;
+extern float request_pdiff;
+extern double request_bdiff;
 extern int opt_skip_checks;
 extern int opt_skip_checks;
 extern char *opt_kernel_path;
 extern char *opt_kernel_path;
 extern char *opt_socks_proxy;
 extern char *opt_socks_proxy;

+ 16 - 1
util.c

@@ -2994,6 +2994,21 @@ bool auth_stratum(struct pool *pool)
 	applog(LOG_INFO, "Stratum authorisation success for pool %d", pool->pool_no);
 	applog(LOG_INFO, "Stratum authorisation success for pool %d", pool->pool_no);
 	pool->probed = true;
 	pool->probed = true;
 	successful_connect = true;
 	successful_connect = true;
+	
+	if (uri_get_param_bool(pool->rpc_url, "cksuggest", false)) {
+		unsigned long req_bdiff = request_bdiff;
+		
+		const char *q = uri_find_param(pool->rpc_url, "cksuggest", NULL);
+		if (q && q != URI_FIND_PARAM_FOUND) {
+			req_bdiff = atoi(q);
+		}
+		
+		if (req_bdiff) {
+			int sz = snprintf(s, sizeof(s), "{\"id\": null, \"method\": \"mining.suggest_difficulty\", \"params\": [%lu]}", req_bdiff);
+			stratum_send(pool, s, sz);
+		}
+	}
+	
 out:
 out:
 	if (val)
 	if (val)
 		json_decref(val);
 		json_decref(val);
@@ -3172,7 +3187,7 @@ void suspend_stratum(struct pool *pool)
 bool initiate_stratum(struct pool *pool)
 bool initiate_stratum(struct pool *pool)
 {
 {
 	bool ret = false, recvd = false, noresume = false, sockd = false;
 	bool ret = false, recvd = false, noresume = false, sockd = false;
-	bool trysuggest = request_target_str;
+	bool trysuggest = request_target_str && !uri_get_param_bool(pool->rpc_url, "cksuggest", false);
 	char s[RBUFSIZE], *sret = NULL, *nonce1, *sessionid;
 	char s[RBUFSIZE], *sret = NULL, *nonce1, *sessionid;
 	json_t *val = NULL, *res_val, *err_val;
 	json_t *val = NULL, *res_val, *err_val;
 	json_error_t err;
 	json_error_t err;