Mining protocol made compatible with MinerGate.com

Fixed incorrect nonce offset in job data.
This commit is contained in:
Erik Kimmo 2014-04-18 18:24:52 +04:00
parent 9682a15400
commit 8d91aac912
2 changed files with 19 additions and 4 deletions

View file

@ -2,7 +2,6 @@
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include "common/command_line.h" #include "common/command_line.h"
#include "misc_log_ex.h" #include "misc_log_ex.h"
#include "simpleminer.h" #include "simpleminer.h"
@ -120,6 +119,7 @@ namespace mining
COMMAND_RPC_LOGIN::request req = AUTO_VAL_INIT(req); COMMAND_RPC_LOGIN::request req = AUTO_VAL_INIT(req);
req.login = m_login; req.login = m_login;
req.pass = m_pass; req.pass = m_pass;
req.agent = "simpleminer/0.1";
COMMAND_RPC_LOGIN::response resp = AUTO_VAL_INIT(resp); COMMAND_RPC_LOGIN::response resp = AUTO_VAL_INIT(resp);
if(!epee::net_utils::invoke_http_json_rpc<mining::COMMAND_RPC_LOGIN>("/", req, resp, m_http_client)) if(!epee::net_utils::invoke_http_json_rpc<mining::COMMAND_RPC_LOGIN>("/", req, resp, m_http_client))
{ {
@ -137,7 +137,12 @@ namespace mining
} }
pool_session_id = resp.id; pool_session_id = resp.id;
//78 //78
if(!text_job_details_to_native_job_details(resp.job, job)) if (resp.job.blob.empty() && resp.job.target.empty() && resp.job.job_id.empty())
{
LOG_PRINT_L0("Job didn't change");
continue;
}
else if(!text_job_details_to_native_job_details(resp.job, job))
{ {
LOG_PRINT_L0("Failed to text_job_details_to_native_job_details(), disconnect and sleep...."); LOG_PRINT_L0("Failed to text_job_details_to_native_job_details(), disconnect and sleep....");
m_http_client.disconnect(); m_http_client.disconnect();
@ -161,7 +166,8 @@ namespace mining
COMMAND_RPC_SUBMITSHARE::response submit_response = AUTO_VAL_INIT(submit_response); COMMAND_RPC_SUBMITSHARE::response submit_response = AUTO_VAL_INIT(submit_response);
submit_request.id = pool_session_id; submit_request.id = pool_session_id;
submit_request.job_id = job.job_id; submit_request.job_id = job.job_id;
submit_request.nonce = epee::string_tools::pod_to_hex((*((uint32_t*)&job.blob.data()[78]))); submit_request.nonce = epee::string_tools::pod_to_hex((*((uint32_t*)&job.blob.data()[39])));
submit_request.result = epee::string_tools::pod_to_hex(h);
LOG_PRINT_L0("Share found: nonce=" << submit_request.nonce << " for job=" << job.job_id << ", submitting..."); LOG_PRINT_L0("Share found: nonce=" << submit_request.nonce << " for job=" << job.job_id << ", submitting...");
if(!epee::net_utils::invoke_http_json_rpc<mining::COMMAND_RPC_SUBMITSHARE>("/", submit_request, submit_response, m_http_client)) if(!epee::net_utils::invoke_http_json_rpc<mining::COMMAND_RPC_SUBMITSHARE>("/", submit_request, submit_response, m_http_client))
{ {
@ -193,7 +199,12 @@ namespace mining
epee::misc_utils::sleep_no_w(1000); epee::misc_utils::sleep_no_w(1000);
break; break;
} }
if(!text_job_details_to_native_job_details(getjob_response, job)) if (getjob_response.blob.empty() && getjob_response.target.empty() && getjob_response.job_id.empty())
{
LOG_PRINT_L0("Job didn't change");
continue;
}
else if(!text_job_details_to_native_job_details(getjob_response, job))
{ {
LOG_PRINT_L0("Failed to text_job_details_to_native_job_details(), disconnect and sleep...."); LOG_PRINT_L0("Failed to text_job_details_to_native_job_details(), disconnect and sleep....");
m_http_client.disconnect(); m_http_client.disconnect();

View file

@ -36,10 +36,12 @@ namespace mining
{ {
std::string login; std::string login;
std::string pass; std::string pass;
std::string agent;
BEGIN_KV_SERIALIZE_MAP() BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(login) KV_SERIALIZE(login)
KV_SERIALIZE(pass) KV_SERIALIZE(pass)
KV_SERIALIZE(agent)
END_KV_SERIALIZE_MAP() END_KV_SERIALIZE_MAP()
}; };
@ -82,11 +84,13 @@ namespace mining
{ {
std::string id; std::string id;
std::string nonce; std::string nonce;
std::string result;
std::string job_id; std::string job_id;
BEGIN_KV_SERIALIZE_MAP() BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(id) KV_SERIALIZE(id)
KV_SERIALIZE(nonce) KV_SERIALIZE(nonce)
KV_SERIALIZE(result)
KV_SERIALIZE(job_id) KV_SERIALIZE(job_id)
END_KV_SERIALIZE_MAP() END_KV_SERIALIZE_MAP()
}; };