1
0
Fork 0
forked from lthn/blockchain
blockchain/src/rpc/mining_protocol_defs.h
2018-12-27 18:50:45 +03:00

207 lines
4 KiB
C++

// Copyright (c) 2014-2018 Zano Project
// Copyright (c) 2014-2018 The Louisdor Project
// Copyright (c) 2012-2013 The Cryptonote developers
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#pragma once
#include "currency_protocol/currency_protocol_defs.h"
#include "currency_core/currency_basic.h"
#include "crypto/hash.h"
#include "net/rpc_method_name.h"
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Seems to be obsolete. Consider removing due to stratum support.
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
namespace mining
{
struct height_info
{
uint64_t height;
std::string block_id;
BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(height)
KV_SERIALIZE(block_id)
END_KV_SERIALIZE_MAP()
};
struct addendum
{
height_info hi;
std::string prev_id;
std::string addm;
BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(hi)
KV_SERIALIZE(prev_id)
KV_SERIALIZE(addm)
END_KV_SERIALIZE_MAP()
};
struct job_details
{
std::string blob;
std::string difficulty;
std::string job_id;
height_info prev_hi;
std::list<addendum> addms;
BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(blob)
KV_SERIALIZE(difficulty)
KV_SERIALIZE(job_id)
KV_SERIALIZE(prev_hi)
KV_SERIALIZE(addms)
END_KV_SERIALIZE_MAP()
};
struct COMMAND_RPC_LOGIN
{
RPC_METHOD_NAME("login");
struct request
{
std::string login;
std::string pass;
std::string agent;
height_info hi;
BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(login)
KV_SERIALIZE(pass)
KV_SERIALIZE(agent)
KV_SERIALIZE(hi)
END_KV_SERIALIZE_MAP()
};
struct response
{
std::string status;
std::string id;
job_details job;
BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(status)
KV_SERIALIZE(id)
KV_SERIALIZE(job)
END_KV_SERIALIZE_MAP()
};
};
struct COMMAND_RPC_GETJOB
{
RPC_METHOD_NAME("getjob");
struct request
{
std::string id;
height_info hi;
BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(id)
KV_SERIALIZE(hi)
END_KV_SERIALIZE_MAP()
};
struct response
{
std::string status;
job_details jd;
BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(status)
KV_CHAIN_MAP(jd)
END_KV_SERIALIZE_MAP()
};
};
struct COMMAND_RPC_GET_FULLSCRATCHPAD
{
RPC_METHOD_NAME("getfullscratchpad");
struct request
{
std::string id;
BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(id)
END_KV_SERIALIZE_MAP()
};
struct response
{
height_info hi;
std::string scratchpad_hex;
std::string status;
BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(hi)
KV_SERIALIZE(scratchpad_hex)
KV_SERIALIZE(status)
END_KV_SERIALIZE_MAP()
};
};
struct COMMAND_RPC_SUBMITSHARE
{
RPC_METHOD_NAME("submit");
struct request
{
std::string id;
uint64_t nonce;
std::string job_id;
std::string result;
BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(id)
KV_SERIALIZE(nonce)
KV_SERIALIZE(job_id)
KV_SERIALIZE(result)
END_KV_SERIALIZE_MAP()
};
struct response
{
std::string status;
BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(status)
END_KV_SERIALIZE_MAP()
};
};
struct COMMAND_RPC_STORE_SCRATCHPAD
{
RPC_METHOD_NAME("store_scratchpad");
struct request
{
std::string local_file_path;
BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(local_file_path)
END_KV_SERIALIZE_MAP()
};
struct response
{
std::string status;
BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(status)
END_KV_SERIALIZE_MAP()
};
};
}