Permalink
Browse files

sia: move specific code in a new rpc unit

part 1: longpoll stuff (nanopool)
  • Loading branch information...
1 parent f84c83a commit 1a31d4d2d620e3ba02521312178f095f00600e6d @tpruvot committed Sep 27, 2016
Showing with 230 additions and 173 deletions.
  1. +1 −1 Makefile.am
  2. +1 −168 ccminer.cpp
  3. +3 −1 ccminer.vcxproj
  4. +16 −3 ccminer.vcxproj.filters
  5. +203 −0 sia/sia-rpc.cpp
  6. +6 −0 sia/sia-rpc.h
  7. 0 { → sia}/sia.cu
View
@@ -47,7 +47,7 @@ ccminer_SOURCES = elist.h miner.h compat.h \
quark/quarkcoin.cu quark/cuda_quark_compactionTest.cu \
neoscrypt/neoscrypt.cpp neoscrypt/neoscrypt-cpu.c neoscrypt/cuda_neoscrypt.cu \
pentablake.cu skein.cu cuda_skeincoin.cu skein2.cpp zr5.cu \
- sia.cu sph/blake2b.c \
+ sia/sia.cu sia/sia-rpc.cpp sph/blake2b.c \
sph/bmw.c sph/blake.c sph/groestl.c sph/jh.c sph/keccak.c sph/skein.c \
sph/cubehash.c sph/echo.c sph/luffa.c sph/sha2.c sph/shavite.c sph/simd.c \
sph/hamsi.c sph/hamsi_helper.c sph/streebog.c \
View
@@ -42,9 +42,9 @@
#include "miner.h"
#include "algos.h"
+#include "sia/sia-rpc.h"
#include <cuda_runtime.h>
-
#ifdef WIN32
#include <Mmsystem.h>
#pragma comment(lib, "winmm.lib")
@@ -713,173 +713,6 @@ static bool work_decode(const json_t *val, struct work *work)
return true;
}
-// ---- SIA LONGPOLL --------------------------------------------------------------------------------
-
-struct data_buffer {
- void *buf;
- size_t len;
-};
-
-static size_t sia_data_cb(const void *ptr, size_t size, size_t nmemb,
- void *user_data)
-{
- struct data_buffer *db = (struct data_buffer *)user_data;
- size_t len = size * nmemb;
- size_t oldlen, newlen;
- void *newmem;
- static const uchar zero = 0;
-
- oldlen = db->len;
- newlen = oldlen + len;
-
- newmem = realloc(db->buf, newlen + 1);
- if (!newmem)
- return 0;
-
- db->buf = newmem;
- db->len = newlen;
- memcpy((char*)db->buf + oldlen, ptr, len);
- memcpy((char*)db->buf + newlen, &zero, 1); /* null terminate */
-
- return len;
-}
-
-char* sia_getheader(CURL *curl, struct pool_infos *pool)
-{
- char curl_err_str[CURL_ERROR_SIZE] = { 0 };
- struct data_buffer all_data = { 0 };
- struct curl_slist *headers = NULL;
- char data[256] = { 0 };
- char url[512];
-
- // nanopool
- snprintf(url, 512, "%s/miner/header?address=%s&worker=%s", //&longpoll
- pool->url, pool->user, pool->pass);
-
- if (opt_protocol)
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
- curl_easy_setopt(curl, CURLOPT_URL, url);
- curl_easy_setopt(curl, CURLOPT_POST, 0);
- curl_easy_setopt(curl, CURLOPT_ENCODING, "");
- curl_easy_setopt(curl, CURLOPT_FAILONERROR, 0);
- curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
- curl_easy_setopt(curl, CURLOPT_TCP_NODELAY, 1);
- curl_easy_setopt(curl, CURLOPT_TIMEOUT, opt_timeout);
- curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
- curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_err_str);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, sia_data_cb);
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, &all_data);
-
- headers = curl_slist_append(headers, "Accept: application/octet-stream");
- headers = curl_slist_append(headers, "Expect:"); // disable Expect hdr
- headers = curl_slist_append(headers, "User-Agent: Sia-Agent"); // required for now
-// headers = curl_slist_append(headers, "User-Agent: " USER_AGENT);
-// headers = curl_slist_append(headers, "X-Mining-Extensions: longpoll");
-
- curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
-
- int rc = curl_easy_perform(curl);
- if (rc && strlen(curl_err_str)) {
- applog(LOG_WARNING, "%s", curl_err_str);
- }
-
- if (all_data.len >= 112)
- cbin2hex(data, (const char*) all_data.buf, 112);
- if (opt_protocol || all_data.len != 112)
- applog(LOG_DEBUG, "received %d bytes: %s", (int) all_data.len, data);
-
- curl_slist_free_all(headers);
-
- return rc == 0 && all_data.len ? strdup(data) : NULL;
-}
-
-bool sia_work_decode(const char *hexdata, struct work *work)
-{
- uint8_t target[32];
- if (!work) return false;
-
- hex2bin((uchar*)target, &hexdata[0], 32);
- swab256(work->target, target);
- work->targetdiff = target_to_diff(work->target);
-
- hex2bin((uchar*)work->data, &hexdata[64], 80);
- // high 16 bits of the 64 bits nonce
- work->data[9] = rand() << 16;
-
- // use work ntime as job id
- cbin2hex(work->job_id, (const char*)&work->data[10], 4);
- calc_network_diff(work);
-
- if (stratum_diff != work->targetdiff) {
- stratum_diff = work->targetdiff;
- applog(LOG_WARNING, "Pool diff set to %g", stratum_diff);
- }
-
- return true;
-}
-
-int share_result(int result, int pooln, double sharediff, const char *reason);
-
-bool sia_submit(CURL *curl, struct pool_infos *pool, struct work *work)
-{
- char curl_err_str[CURL_ERROR_SIZE] = { 0 };
- struct data_buffer all_data = { 0 };
- struct curl_slist *headers = NULL;
- char buf[256] = { 0 };
- char url[512];
-
- if (opt_protocol)
- applog_hex(work->data, 80);
- //applog_hex(&work->data[8], 16);
- //applog_hex(&work->data[10], 4);
-
- // nanopool
- snprintf(url, 512, "%s/miner/header?address=%s&worker=%s",
- pool->url, pool->user, pool->pass);
-
- if (opt_protocol)
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
- curl_easy_setopt(curl, CURLOPT_URL, url);
- curl_easy_setopt(curl, CURLOPT_ENCODING, "");
- curl_easy_setopt(curl, CURLOPT_FAILONERROR, 0);
- curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
- curl_easy_setopt(curl, CURLOPT_TCP_NODELAY, 1);
- curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_err_str);
- curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
- curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10);
-
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, &all_data);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, sia_data_cb);
-
- memcpy(buf, work->data, 80);
- curl_easy_setopt(curl, CURLOPT_POST, 1);
- curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 80);
- curl_easy_setopt(curl, CURLOPT_POSTFIELDS, (void*) buf);
-
-// headers = curl_slist_append(headers, "Content-Type: application/octet-stream");
-// headers = curl_slist_append(headers, "Content-Length: 80");
- headers = curl_slist_append(headers, "Accept:"); // disable Accept hdr
- headers = curl_slist_append(headers, "Expect:"); // disable Expect hdr
- headers = curl_slist_append(headers, "User-Agent: Sia-Agent");
-// headers = curl_slist_append(headers, "User-Agent: " USER_AGENT);
- curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
-
- int res = curl_easy_perform(curl) == 0;
- long errcode;
- CURLcode c = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &errcode);
- if (errcode != 204) {
- if (strlen(curl_err_str))
- applog(LOG_ERR, "submit err %ld %s", errcode, curl_err_str);
- res = 0;
- }
- share_result(res, work->pooln, work->sharediff[0], res ? NULL : (char*) all_data.buf);
-
- curl_slist_free_all(headers);
- return true;
-}
-
-// ---- END SIA LONGPOLL ----------------------------------------------------------------------------
-
#define YES "yes!"
#define YAY "yay!!!"
#define BOO "booooo"
View
@@ -263,6 +263,7 @@
</CudaCompile>
<ClCompile Include="scrypt-jane.cpp" />
<ClCompile Include="scrypt.cpp" />
+ <ClCompile Include="sia\sia-rpc.cpp" />
<ClCompile Include="skein2.cpp" />
<ClCompile Include="sph\aes_helper.c" />
<ClCompile Include="sph\blake.c" />
@@ -322,6 +323,7 @@
<ClInclude Include="quark\cuda_quark_blake512_sp.cuh" />
<ClInclude Include="quark\cuda_skein512_sp.cuh" />
<ClInclude Include="res\resource.h" />
+ <ClInclude Include="sia\sia-rpc.h" />
<ClInclude Include="scrypt\salsa_kernel.h" />
<ClInclude Include="sph\blake2b.h" />
<ClInclude Include="sph\blake2s.h" />
@@ -467,7 +469,7 @@
<CudaCompile Include="lyra2\cuda_lyra2.cu" />
<CudaCompile Include="lyra2\lyra2REv2.cu" />
<CudaCompile Include="lyra2\cuda_lyra2v2.cu" />
- <CudaCompile Include="sia.cu" />
+ <CudaCompile Include="sia\sia.cu" />
<CudaCompile Include="skein.cu">
<MaxRegCount>64</MaxRegCount>
</CudaCompile>
@@ -85,6 +85,9 @@
<Filter Include="Source Files\CUDA\lbry">
<UniqueIdentifier>{3079ea1f-f768-455a-acd6-f517fac535b4}</UniqueIdentifier>
</Filter>
+ <Filter Include="Source Files\sia">
+ <UniqueIdentifier>{86a896c0-1688-4854-98e0-285d166069a3}</UniqueIdentifier>
+ </Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="compat\jansson\dump.c">
@@ -273,6 +276,9 @@
<ClCompile Include="nvapi.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="sia\sia-rpc.cpp">
+ <Filter>Source Files\sia</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="algos.h">
@@ -473,6 +479,9 @@
<ClInclude Include="x11\cuda_x11_simd512_sm2.cuh">
<Filter>Source Files\CUDA\x11</Filter>
</ClInclude>
+ <ClInclude Include="sia\sia-rpc.h">
+ <Filter>Source Files\sia</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<CudaCompile Include="cuda.cpp">
@@ -676,9 +685,6 @@
<CudaCompile Include="zr5.cu">
<Filter>Source Files\CUDA</Filter>
</CudaCompile>
- <CudaCompile Include="sia.cu">
- <Filter>Source Files\CUDA</Filter>
- </CudaCompile>
<CudaCompile Include="skein.cu">
<Filter>Source Files\CUDA</Filter>
</CudaCompile>
@@ -745,9 +751,15 @@
<CudaCompile Include="lbry\cuda_sha512_lbry.cu">
<Filter>Source Files\CUDA\lbry</Filter>
</CudaCompile>
+ <CudaCompile Include="lbry\cuda_lbry_merged.cu">
+ <Filter>Source Files\CUDA\lbry</Filter>
+ </CudaCompile>
<CudaCompile Include="lbry\lbry.cu">
<Filter>Source Files\CUDA\lbry</Filter>
</CudaCompile>
+ <CudaCompile Include="sia\sia.cu">
+ <Filter>Source Files\sia</Filter>
+ </CudaCompile>
</ItemGroup>
<ItemGroup>
<Image Include="res\ccminer.ico">
@@ -765,3 +777,4 @@
</Text>
</ItemGroup>
</Project>
+
Oops, something went wrong.

0 comments on commit 1a31d4d

Please sign in to comment.