mutatrum 6283480fa1
Parse stratum api reject reason (#472)
* Parse stratum api reject reason

* Remove superfluous nullcheck
2024-12-09 16:35:13 +01:00

87 lines
2.1 KiB
C

#ifndef STRATUM_API_H
#define STRATUM_API_H
#include "cJSON.h"
#include <stdint.h>
#include <stdbool.h>
#define MAX_MERKLE_BRANCHES 32
#define HASH_SIZE 32
#define COINBASE_SIZE 100
#define COINBASE2_SIZE 128
typedef enum
{
STRATUM_UNKNOWN,
MINING_NOTIFY,
MINING_SET_DIFFICULTY,
MINING_SET_VERSION_MASK,
STRATUM_RESULT,
STRATUM_RESULT_SETUP,
STRATUM_RESULT_VERSION_MASK,
STRATUM_RESULT_SUBSCRIBE,
CLIENT_RECONNECT
} stratum_method;
static const int STRATUM_ID_CONFIGURE = 1;
static const int STRATUM_ID_SUBSCRIBE = 2;
typedef struct
{
char *job_id;
char *prev_block_hash;
char *coinbase_1;
char *coinbase_2;
uint8_t *merkle_branches;
size_t n_merkle_branches;
uint32_t version;
uint32_t version_mask;
uint32_t target;
uint32_t ntime;
uint32_t difficulty;
} mining_notify;
typedef struct
{
char * extranonce_str;
int extranonce_2_len;
int64_t message_id;
// Indicates the type of request the message represents.
stratum_method method;
// mining.notify
int should_abandon_work;
mining_notify *mining_notification;
// mining.set_difficulty
uint32_t new_difficulty;
// mining.set_version_mask
uint32_t version_mask;
// result
bool response_success;
char * error_str;
} StratumApiV1Message;
void STRATUM_V1_reset_uid();
void STRATUM_V1_initialize_buffer();
char *STRATUM_V1_receive_jsonrpc_line(int sockfd);
int STRATUM_V1_subscribe(int socket, char * model);
void STRATUM_V1_parse(StratumApiV1Message *message, const char *stratum_json);
void STRATUM_V1_free_mining_notify(mining_notify *params);
int STRATUM_V1_authenticate(int socket, const char *username, const char *pass);
int STRATUM_V1_configure_version_rolling(int socket, uint32_t * version_mask);
int STRATUM_V1_suggest_difficulty(int socket, uint32_t difficulty);
int STRATUM_V1_submit_share(int socket, const char *username, const char *jobid,
const char *extranonce_2, const uint32_t ntime, const uint32_t nonce,
const uint32_t version);
#endif // STRATUM_API_H