|
|
@ -1,3 +1,155 @@ |
|
|
|
|
|
|
|
Version 2.8.0 - October 7, 2012 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Major upgrade - support for the stratum mining protocol. |
|
|
|
|
|
|
|
- Fix various modminer warnings on mingw. |
|
|
|
|
|
|
|
- Fix sign warning on windows build for bitforce. |
|
|
|
|
|
|
|
- Cast socketfail to integer since SOCKET is an unsigned int on windows. |
|
|
|
|
|
|
|
- Use strtod not strtol for bitforce temp backup. |
|
|
|
|
|
|
|
- Cope with broken drivers returning nonsense values for bitforce temperatures. |
|
|
|
|
|
|
|
- Minor warning fixes. |
|
|
|
|
|
|
|
- Use the stratum thread to detect when a stratum pool has died based on no |
|
|
|
|
|
|
|
message for 2 minutes. |
|
|
|
|
|
|
|
- Only set the stratum auth flag once and once the stratum thread is started, |
|
|
|
|
|
|
|
use that to set/unset the stratum active flag. |
|
|
|
|
|
|
|
- Only hand off to stratum from getwork if we succeed in initiating the |
|
|
|
|
|
|
|
protocol. |
|
|
|
|
|
|
|
- Target should only be 32 bytes copied. |
|
|
|
|
|
|
|
- Use a static array for work submission data instead of stack memory. |
|
|
|
|
|
|
|
- Clear the buffer data before sprinting to it. |
|
|
|
|
|
|
|
- Clear work stratum strings before setting them and add them to debug output. |
|
|
|
|
|
|
|
- Drop stratum connect failed message to verbose level only since it's a regular |
|
|
|
|
|
|
|
probing message. |
|
|
|
|
|
|
|
- TCP Keepalive in curl is only in very recent versions and not required with |
|
|
|
|
|
|
|
regular messages on stratum anyway. |
|
|
|
|
|
|
|
- Move stratum sockets to curl infrastructure with locking around send+recv to |
|
|
|
|
|
|
|
begin support for proxies and ssl. |
|
|
|
|
|
|
|
- Make detect stratum fail if a proxy has been set up. |
|
|
|
|
|
|
|
- Stratum does not currently have any proxy support so do not try to switch to |
|
|
|
|
|
|
|
stratum if a proxy has been specified. |
|
|
|
|
|
|
|
- Windows doesn't work with MSG_PEEK on recv so move to a continuously updating |
|
|
|
|
|
|
|
buffer for incoming messages. |
|
|
|
|
|
|
|
- Alloca is unreliable on windows so use static arrays in util.c stratum code. |
|
|
|
|
|
|
|
- Begin support for mingw stratum build. |
|
|
|
|
|
|
|
- Add space to reject reason. |
|
|
|
|
|
|
|
- Parse the reject reason where possible from stratum share submission. |
|
|
|
|
|
|
|
- Pass json error value to share result function to be able to parse reject |
|
|
|
|
|
|
|
reason in stratum. |
|
|
|
|
|
|
|
- Don't try to parse unneeded parameters in response to mining.subscribe. |
|
|
|
|
|
|
|
- Remove the sshare hash entry if we failed to send it. |
|
|
|
|
|
|
|
- Change notify message to info level to avoid spamming repeatedly when a pool |
|
|
|
|
|
|
|
is down. |
|
|
|
|
|
|
|
- Check the stratum pool difference has not changed compared to the work diff |
|
|
|
|
|
|
|
when testing whether a share meets the target or not and retarget if necessary. |
|
|
|
|
|
|
|
- Bit error in target calculation for stratum. |
|
|
|
|
|
|
|
- Set work_block in gen_stratum_work for when work is reused to avoid thinking |
|
|
|
|
|
|
|
it's all stale. |
|
|
|
|
|
|
|
- Offset the current block detection to the prev block hash. |
|
|
|
|
|
|
|
- We should be testing for id_val, not id in parse stratum response. |
|
|
|
|
|
|
|
- Make target on stratum scale to any size by clearing sequential bits according |
|
|
|
|
|
|
|
to diff. |
|
|
|
|
|
|
|
- Correct target calculation in gen_stratum_work. |
|
|
|
|
|
|
|
- If a share result has an error code but still has an id, it is likely a |
|
|
|
|
|
|
|
reject, not an error. |
|
|
|
|
|
|
|
- Initiate stratum the first time in pool_active only, allowing us to switch to |
|
|
|
|
|
|
|
it on getting a failed getwork and detecting the presence of stratum on the url |
|
|
|
|
|
|
|
at that time. |
|
|
|
|
|
|
|
- Use 5 second timeout on sock full for now as a temporary workaround. |
|
|
|
|
|
|
|
- If no stratum url is set by the end of the detect stratum routine, copy the |
|
|
|
|
|
|
|
sockaddr url. |
|
|
|
|
|
|
|
- Make all buffers slightly larger to prevent overflow. |
|
|
|
|
|
|
|
- Make the stratum recv buffer larger than the recvsize. |
|
|
|
|
|
|
|
- Userpass needs to be copied to user and pass earlier to allow stratum |
|
|
|
|
|
|
|
authorisation to work with it. |
|
|
|
|
|
|
|
- Store a sockaddr url of the stripped url used in determining sockaddr to not |
|
|
|
|
|
|
|
confuse it with the stratum url and fix build warnings. |
|
|
|
|
|
|
|
- Decrease the queued count with stratum work once it's staged as well. |
|
|
|
|
|
|
|
- Allow the stratum retry to initiate and auth stratum in pool_alive to make |
|
|
|
|
|
|
|
sure the stratum thread is started. |
|
|
|
|
|
|
|
- Avoid duplicating pool->rpc_url and setting pool->stratum_url twice to itself. |
|
|
|
|
|
|
|
- Detect if a getwork based pool has the X-Stratum header on startup, and if so, |
|
|
|
|
|
|
|
switch to the stratum based pool. |
|
|
|
|
|
|
|
- Comment update. |
|
|
|
|
|
|
|
- Minor message change. |
|
|
|
|
|
|
|
- Create a work item from a "clean" request from stratum allowing the new block |
|
|
|
|
|
|
|
to be detected and the appropriate block change message to be given. |
|
|
|
|
|
|
|
- Use statically allocated stratum strings in struct work to cope with the |
|
|
|
|
|
|
|
inability to safely deallocate dynamically allocated ram. |
|
|
|
|
|
|
|
- Use the current pool when deciding whether to reuse work from a stratum source |
|
|
|
|
|
|
|
rather than the work's previous pool. |
|
|
|
|
|
|
|
- Copy the stratum url to the rpc url to avoid none being set. |
|
|
|
|
|
|
|
- Provide locking around stratum send operations to avoid races. |
|
|
|
|
|
|
|
- Submit shares from stratum through the abstracted submit share function |
|
|
|
|
|
|
|
detecting what message they belong to and showing the data from the associated |
|
|
|
|
|
|
|
work, and then deleting it from the hash. |
|
|
|
|
|
|
|
- Use a more robust mechanism to obtain a \n terminated string over a socket. |
|
|
|
|
|
|
|
- Abstract out share submit as a function to be useable by stratum. |
|
|
|
|
|
|
|
- Rename parse_stratum to parse_method as it is only for stratum messages that |
|
|
|
|
|
|
|
contain methods. |
|
|
|
|
|
|
|
- Display stratum as mechanism in status line when current pool is running it. |
|
|
|
|
|
|
|
- Count each stratum notify as a getwork equivalent. |
|
|
|
|
|
|
|
- Correct nonce submitted with share. |
|
|
|
|
|
|
|
- Extranonce2 should be added before coinbase2. |
|
|
|
|
|
|
|
- We should be hashing the binary coinbase, not the hex one. |
|
|
|
|
|
|
|
- Fix endianness of nonce submitted for stratum. |
|
|
|
|
|
|
|
- Check that stratum is already active in initiate_stratum to avoid |
|
|
|
|
|
|
|
de-authorising ourselves by subscribing again. |
|
|
|
|
|
|
|
- Begin implementing a hash database of submissions and attempt sending results. |
|
|
|
|
|
|
|
- Copy parameters from stratum work required for share submission. |
|
|
|
|
|
|
|
- Set lagging flag on first adding a pool to prevent pool slow warning at |
|
|
|
|
|
|
|
startup. |
|
|
|
|
|
|
|
- Fix work->target being a 32 byte binary in gen_stratum_work. |
|
|
|
|
|
|
|
- Store and display stripped url in its own variable. |
|
|
|
|
|
|
|
- Create machinery to divert work requests to stratum. |
|
|
|
|
|
|
|
- Generate the work target in gen_stratum_work, setting default diff to 1 in |
|
|
|
|
|
|
|
case it is not yet set. |
|
|
|
|
|
|
|
- Generate work data, midstate and hash1 in gen_stratum_work. |
|
|
|
|
|
|
|
- Generate header created from stratum structures in gen_stratum_work. |
|
|
|
|
|
|
|
- Generate merkle root hash in gen_stratum_work. |
|
|
|
|
|
|
|
- Generate the coinbase for generation of stratum based work. |
|
|
|
|
|
|
|
- The number of transactions is variable so make merkle a variable length |
|
|
|
|
|
|
|
dynamically allocated array and track how many there are for stratum. |
|
|
|
|
|
|
|
- Rename nonce2 to n2size reflecting that it's a size variable and not the |
|
|
|
|
|
|
|
actual nonce. |
|
|
|
|
|
|
|
- Provide rudimentary support for stratum clean work command in the stratum |
|
|
|
|
|
|
|
thread. |
|
|
|
|
|
|
|
- Cope with pools being removed in the stratum thread. |
|
|
|
|
|
|
|
- Use the pool sock value directly in the stratum thread in case it changes |
|
|
|
|
|
|
|
after reconnecting. |
|
|
|
|
|
|
|
- Create a stratum thread per pool that has stratum that monitors the socket and |
|
|
|
|
|
|
|
serves received data. |
|
|
|
|
|
|
|
- Check return value of stratum_parse. |
|
|
|
|
|
|
|
- Complete authorisation in stratum. |
|
|
|
|
|
|
|
- Implement stratum parsing of notify parameters and storing them in the pool |
|
|
|
|
|
|
|
stratum work structure. |
|
|
|
|
|
|
|
- Create helper functions for duplicating json strings to avoid keeping json |
|
|
|
|
|
|
|
references in use. |
|
|
|
|
|
|
|
- Append \n in the sock_send function instead of adding it when constructing |
|
|
|
|
|
|
|
json in stratum. |
|
|
|
|
|
|
|
- Don't keep any json references around with stratum structures. |
|
|
|
|
|
|
|
- Create parse_stratum function that hands off stratum parameters to other |
|
|
|
|
|
|
|
functions to manage pool stratum work struct variables. Implement mining |
|
|
|
|
|
|
|
difficulty setting. |
|
|
|
|
|
|
|
- Create helper functions for checking when a socket is ready to read on and |
|
|
|
|
|
|
|
receive a single line at a time. Begin stratum authorisation process. |
|
|
|
|
|
|
|
- Provide a helper function for reading a single \n terminated string from a |
|
|
|
|
|
|
|
socket. |
|
|
|
|
|
|
|
- Create a stratum work structure to store current work variables. |
|
|
|
|
|
|
|
- Test specifically for stratum being active in pool_active. |
|
|
|
|
|
|
|
- Detect stratum in common place when adding urls, and use a bool to tell us |
|
|
|
|
|
|
|
when it's active. |
|
|
|
|
|
|
|
- Fix warnings. |
|
|
|
|
|
|
|
- Extract and store various parameters on stratum init confirming successful |
|
|
|
|
|
|
|
mining notify. |
|
|
|
|
|
|
|
- Use existing socket macros and close the socket on failure in init stratum. |
|
|
|
|
|
|
|
- Initiate stratum and grab first json result. |
|
|
|
|
|
|
|
- Get detailed addressinfo from the parsed URL for future raw socket usage when |
|
|
|
|
|
|
|
possible. IPV4 only for now. |
|
|
|
|
|
|
|
- Prepare for getaddrinfo call. |
|
|
|
|
|
|
|
- Add data structures to pool struct for socket communications. |
|
|
|
|
|
|
|
- Put all socket definitions in util.h to allow reusing by added socket |
|
|
|
|
|
|
|
functions to be used in util.c. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Version 2.7.7 - October 7, 2012 |
|
|
|
Version 2.7.7 - October 7, 2012 |
|
|
|
|
|
|
|
|
|
|
|
- Fix unused warnings on ming build. |
|
|
|
- Fix unused warnings on ming build. |
|
|
|