mirror of
https://github.com/LBRYFoundation/pool.git
synced 2025-09-30 15:20:36 +00:00
blake (SFR) and whirlpool (J) tested ok with a sha256d merkleroot So add a stratum setting to allow single sha256 merkle root... The shares are now valid on the pool side, but remains to find an old wallet to test... like Whirlcoin or blakecoin keccak not tested, could have the same problem about merkle/miners
155 lines
3.6 KiB
C++
155 lines
3.6 KiB
C++
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/time.h>
|
|
#include <sys/resource.h>
|
|
#include <netinet/in.h>
|
|
#include <arpa/inet.h>
|
|
#include <netdb.h>
|
|
#include <errno.h>
|
|
#include <math.h>
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stdarg.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
#include <fcntl.h>
|
|
#include <pthread.h>
|
|
#include <mysql.h>
|
|
#include <errmsg.h>
|
|
#include <ifaddrs.h>
|
|
|
|
#include <iostream>
|
|
#include <vector>
|
|
|
|
using namespace std;
|
|
|
|
#include "iniparser/src/iniparser.h"
|
|
|
|
#include "json.h"
|
|
#include "util.h"
|
|
|
|
#define json_typeof(json) ((json)->type)
|
|
#define json_is_array(json) (json && json_typeof(json) == json_array)
|
|
|
|
#define YAAMP_RESTARTDELAY (24*60*60)
|
|
#define YAAMP_MAXJOBDELAY (2*60)
|
|
|
|
#define YAAMP_MS 1000
|
|
#define YAAMP_SEC 1000000
|
|
|
|
#define YAAMP_MAXALGOS 32
|
|
|
|
typedef void (*YAAMP_HASH_FUNCTION)(const char *, char *, uint32_t);
|
|
|
|
#define YAAMP_SHAREPERSEC 10
|
|
|
|
#define YAAMP_MINDIFF 0x0000000080000000
|
|
#define YAAMP_MAXDIFF 0x4000000000000000
|
|
|
|
#define YAAMP_SMALLBUFSIZE (32*1024)
|
|
|
|
#define YAAMP_NONCE_SIZE 4
|
|
#define YAAMP_EXTRANONCE2_SIZE 4
|
|
|
|
#define YAAMP_HASHLEN_STR 65
|
|
#define YAAMP_HASHLEN_BIN 32
|
|
|
|
extern CommonList g_list_coind;
|
|
extern CommonList g_list_client;
|
|
extern CommonList g_list_job;
|
|
extern CommonList g_list_remote;
|
|
extern CommonList g_list_renter;
|
|
extern CommonList g_list_share;
|
|
extern CommonList g_list_worker;
|
|
extern CommonList g_list_block;
|
|
extern CommonList g_list_submit;
|
|
extern CommonList g_list_source;
|
|
|
|
extern int g_tcp_port;
|
|
|
|
extern char g_tcp_server[1024];
|
|
extern char g_tcp_password[1024];
|
|
|
|
extern char g_sql_host[1024];
|
|
extern char g_sql_database[1024];
|
|
extern char g_sql_username[1024];
|
|
extern char g_sql_password[1024];
|
|
|
|
extern char g_stratum_algo[1024];
|
|
extern double g_stratum_difficulty;
|
|
|
|
extern int g_stratum_max_ttf;
|
|
extern bool g_stratum_reconnect;
|
|
extern bool g_stratum_renting;
|
|
|
|
extern time_t g_last_broadcasted;
|
|
|
|
extern struct ifaddrs *g_ifaddr;
|
|
|
|
extern pthread_mutex_t g_db_mutex;
|
|
extern pthread_mutex_t g_nonce1_mutex;
|
|
extern pthread_mutex_t g_job_create_mutex;
|
|
|
|
#include "db.h"
|
|
#include "object.h"
|
|
#include "socket.h"
|
|
#include "client.h"
|
|
#include "rpc.h"
|
|
#include "job.h"
|
|
#include "coind.h"
|
|
#include "remote.h"
|
|
#include "share.h"
|
|
|
|
extern YAAMP_DB *g_db;
|
|
extern YAAMP_ALGO g_algos[];
|
|
extern YAAMP_ALGO *g_current_algo;
|
|
|
|
extern bool g_autoexchange;
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
YAAMP_ALGO *stratum_find_algo(const char *name);
|
|
|
|
extern "C"
|
|
{
|
|
void sha256_hash(const char *input, char *output, unsigned int len);
|
|
void sha256_double_hash(const char *input, char *output, unsigned int len);
|
|
|
|
void scrypt_1024_1_1_256(const unsigned char *input, unsigned char *output);
|
|
void scrypt_N_R_1_256(const char* input, char* output, uint32_t N, uint32_t R, uint32_t len);
|
|
}
|
|
|
|
void sha256_hash_hex(const char *input, char *output, unsigned int len);
|
|
void sha256_double_hash_hex(const char *input, char *output, unsigned int len);
|
|
|
|
#include "algos/c11.h"
|
|
#include "algos/x11.h"
|
|
#include "algos/x13.h"
|
|
#include "algos/x14.h"
|
|
#include "algos/x15.h"
|
|
#include "algos/nist5.h"
|
|
#include "algos/fresh.h"
|
|
#include "algos/quark.h"
|
|
#include "algos/neoscrypt.h"
|
|
#include "algos/lyra2re.h"
|
|
#include "algos/lyra2v2.h"
|
|
#include "algos/blake.h"
|
|
#include "algos/blakecoin.h"
|
|
#include "algos/qubit.h"
|
|
#include "algos/groestl.h"
|
|
#include "algos/skein.h"
|
|
#include "algos/keccak.h"
|
|
|
|
#include "algos/bmw.h"
|
|
#include "algos/luffa.h"
|
|
#include "algos/pentablake.h"
|
|
#include "algos/whirlpool.h"
|
|
#include "algos/whirlpoolx.h"
|
|
#include "algos/skein2.h"
|
|
#include "algos/zr5.h"
|
|
#include "algos/hive.h"
|
|
#include "algos/sib.h"
|
|
#include "algos/m7m.h"
|
|
|