mirror of
https://github.com/LBRYFoundation/pool.git
synced 2025-09-04 21:05:14 +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
129 lines
3 KiB
C++
129 lines
3 KiB
C++
|
|
struct YAAMP_CLIENT;
|
|
|
|
struct COMMONLISTITEM
|
|
{
|
|
void *data;
|
|
|
|
struct COMMONLISTITEM *next;
|
|
struct COMMONLISTITEM *prev;
|
|
};
|
|
|
|
typedef COMMONLISTITEM *CLI;
|
|
|
|
typedef void (*LISTFREEPARAM)(void *);
|
|
|
|
class CommonList
|
|
{
|
|
public:
|
|
CommonList();
|
|
~CommonList();
|
|
|
|
CLI AddHead(void *data);
|
|
CLI AddTail(void *data);
|
|
|
|
void Delete(CLI item);
|
|
void Delete(void *data);
|
|
|
|
void DeleteAll(LISTFREEPARAM freeparam);
|
|
|
|
CLI Find(void *data);
|
|
void Swap(CLI i1, CLI i2);
|
|
|
|
void Enter();
|
|
void Leave();
|
|
|
|
pthread_mutex_t mutex;
|
|
int count;
|
|
|
|
CLI first;
|
|
CLI last;
|
|
};
|
|
|
|
void CommonLock(pthread_mutex_t *mutex);
|
|
void CommonUnlock(pthread_mutex_t *mutex);
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
bool json_get_bool(json_value *json, const char *name);
|
|
json_int_t json_get_int(json_value *json, const char *name);
|
|
double json_get_double(json_value *json, const char *name);
|
|
const char *json_get_string(json_value *json, const char *name);
|
|
json_value *json_get_array(json_value *json, const char *name);
|
|
json_value *json_get_object(json_value *json, const char *name);
|
|
|
|
void yaamp_create_mutex(pthread_mutex_t *mutex);
|
|
bool yaamp_error(char const *message);
|
|
|
|
const char *header_value(const char *data, const char *search, char *value);
|
|
|
|
void initlog(const char *algo);
|
|
|
|
void debuglog(const char *format, ...);
|
|
void stratumlog(const char *format, ...);
|
|
void clientlog(YAAMP_CLIENT *client, const char *format, ...);
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
vector<string> merkle_steps(vector<string> input);
|
|
string merkle_with_first(vector<string> steps, string f);
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
bool base58_decode(const char *input, char *output);
|
|
|
|
void base64_encode(char *base64, const char *normal);
|
|
void base64_decode(char *normal, const char *base64);
|
|
|
|
void ser_number(int n, char *s);
|
|
|
|
void ser_string_be(const char *input, char *output, int len);
|
|
void ser_string_be2(const char *input, char *output, int len);
|
|
|
|
void string_be(const char *input, char *output);
|
|
void string_be1(char *s);
|
|
|
|
void hexlify(char *hex, const unsigned char *bin, int len);
|
|
void binlify(unsigned char *bin, const char *hex);
|
|
|
|
unsigned int htoi(const char *s);
|
|
uint64_t htoi64(const char *s);
|
|
|
|
uint64_t decode_compact(const char *input);
|
|
|
|
uint64_t diff_to_target(double difficulty);
|
|
double target_to_diff(uint64_t target);
|
|
|
|
uint64_t get_hash_difficulty(unsigned char *input);
|
|
|
|
long long current_timestamp();
|
|
|
|
void string_lower(char *s);
|
|
void string_upper(char *s);
|
|
|
|
int getblocheight(const char *coinb1);
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef max
|
|
#define max(a,b) (((a) > (b)) ? (a) : (b))
|
|
#endif
|
|
|
|
#ifndef min
|
|
#define min(a,b) (((a) < (b)) ? (a) : (b))
|
|
#endif
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
#if !HAVE_DECL_LE16DEC
|
|
static inline uint16_t le16dec(const void *pp)
|
|
{
|
|
const uint8_t *p = (uint8_t const *)pp;
|
|
return ((uint16_t)(p[0]) + ((uint16_t)(p[1]) << 8));
|
|
}
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|