This will finally fix all block finding issues with a 4 way detection.
The find upstream method will continue to try other ways to find a
proper share until they are all exhausted or a match was found.
* Use stratum solution, create scrypt hash from block header
* Use pushpoold solution, create solution string from block header
* Use first available upstream share in timerange of block time
* Use *any* first available valid share older than time of block
This will fix#405 - no more unknown blocks. Ever.
Implemented a fallback method in case no upstream share can be found for
a block. This will result in same strange behaviour especially if a
later block has properly added a valid share and this will be used for a
previous block. At least now even the last block will be properly found
and marked as discovered by a user, even though no actual upstream share
was involved in this.
This is a dirty workaround for pools having payout issues. After all
blocks are processed and assuming upstream shares continue to work as
expected, this will *skip* broken blocks/shares.
Workaround fix for #392
* Added 3rd party logger library KLogger
* Adjusted all cronjobs from verbose output to logging
* Added new logs folder for crons to write to
* Added new .gitignore for logs folder data
* Updated blocks class to only fetch blocks with no share_id
* Adjusted findblocks to use no blocks class method
When shares are inserted with a delay for performance optimizations,
this will cause block timestamps to be completely off with share
timestamps. Hence the timestamp limited search is now removed, it would
cause too many issues for Stratum users/pools.
Addresses #392
* display an error if user tries to re-use an email address
* moved SQL files to indicate the order of SQL import
* added unique email index SQL file
This will address #389, still needs email validation.
This should fix#312 and fix#256 where hashrates are reset on quick rounds.
Users are not able to properly view their past 24h hashrates.
Will be merged once confirmed working.
While at it, I also extracted the hash function into it's own getHash
method. This will allow easy changes to hashing for string in the
future.
Fixes#382
This will fix an issue with blocks being assigned upstream shares that
are marked as valid but are not the actual solution for a block.
Only shares inserted when or after the block timestamp are now looked
at. This will ensure other shares inserted earlier and marked as
upstream valid are skipped.
This will not fix edge cases where many shares are inserted at the same
time and are all in the same timeframe of the block. Then the first
valid share in that time is used.
This worked fine on a testnet with a number of blocks found and false
shares inserted by hand.
Fixes#352
If the shares archive table is used via config option, those shares are
included when calculating the users hashrate. This will help on very
short rounds where each round end deletes all shares and users will not
be able to track their hashrates. They will be very jumpy and change to
0 all the time.
Still missing this implementation for the hourly hashrate function to
ensure the graphs are always kept up-to-date.
Addresses #331
* Fix API Key generation not using SALT when creating hash
* This should not affect existing API keys since hashes are compared
* Fix PHP Warning for RECAPTCHA if disabled
Fixes#328
This will allow any admin to enable or disable a pool maintenance mode.
Regular users that are still logged in will not be kicked out (yet). New
users that are trying to login and are not admins will be denied access.
Also added registration option to Admin Settings via WebUI. You can now
disable new accounts via web option or configuration setting.
Fixes#259 but also adds an additional feature.
This will prevent PHP OOM errors due to a large amount of transactions.
You can find navigation arrows at the top and fetch 30 transactions at a
time.
Fixes#267
* Added mobile device detection PHP library
* Call PHP library to decide which theme to use
* Added theme as a configuration option into global config
* Selectable Desktop theme (default: mmcFE)
* Selectable Mobile theme (default: mobile)
* Disable mobile theme support entirely
**NOTE**: This requires updates to the `global.inc.php` so please check
the dist file and update your config before filing a new issue!
Addresses #25
This will fetch all user shares in a single run, not user by user as
done previously. Saves one query and can possibly increase SQL execution
time.
Addresses #246
Warn a user with an error that there have been failed login attempts
for their account. Login errors can be cleared by clicking on the URL in
the message itself.
Fixes#240
This will allow users to change the API url, added coinchose as an
example as pointed out by @vias79 .
* tools class detects the API type
* getPrice returns the price based on API URL parsed
Fixes#236
* Adding dynamic news posts from DB
* Support Adding, Editing, Activating, Deactivating through admin panel
* Display all active posts on news page
* Implemented Markdown Library by Michelf
Fixes#61
This will add back the transaction fees. Prior to this commit the pool
had to cover the transaction fees. Now for each transaction the full
balance is transferred (RPC Daemon will remove the TX Fee) but two
transactions are added. One for the Debig and one TXFee.
Fixes#203.
**Requires database upgrade with supplied SQL file**
This will fix#199 and help on loading times for the website in case
caches are empty. Caches are pre-filled by a cron so the website only
does it as a fall back. Check Ticket for details.
* Currently no GUI, use DB access to change the row entry
* Upgraded Database table `accounts` with upgrade SQL
* Updated `admin` field to `is_admin` as boolean
* Modified pages, classes, templates to support is_admin and is_locked
Addresses #147
* Added SQL code to support both balances
* Added sidebar entries
* Modified auto_payout to use new index
* Mofified account page to use new index
Addresses #140 but needs to be tested!
This commit changed a few things in the backend and classes code:
* Any <type>_PPS transaction does NOT need to be confirmed
* Queries updated for added <type>_PPS transactions
* Template updated to properly display these transactions
Cronjob
* Added pps_payput cron to run payouts based on worker submitted shares
* **IMPORTANT**: Can NOT be run with proportional_payout!
Addresses #70
* Added new configuration option `block_bonus`, see `global.inc.dist.php`, default 0
* Added new transaction types: `Bonus` and `Orphan_Bonus`
* Changes transaction table structure, added upgrade SQL
* Changed findblock cron to credit bonus to finder
* Modified transactions class to reflect changes
Fixes#148
* Modified findblocks cron
* Modified notifications cron for new structure
* Improved notification class
* Added new template for new_block type
* Moved idle_worker type template
* Added new_block type to notification settings
* Adding new SQL upgrade for notifications
* Added support for per user notification settings
* Added account_id to notifications table
* Added new notification_settings table
* Added new account page: notifications
Addresses #144
* Added things to mail templates
* Modified user password reset call for new mail template
* Added BASEPATH to smarty code to ensure templates are compiled in the
proper directory
* Updated mail and notification class
* Updated notification cron
* Added notification cron to run-cron list
Go through all active notifications (active means they are not notified
again) and check if their state has changed. If so, mark as inactive and
allow for re-notification of the same type and data.
* Added main mail class
* notification class extends mail class
* Added mail template for IDLE workers
* Added notification table to SQL structure
This works already but once notified the status is not reset as soon as
a worker is active again. Need to think of a system to do that
automatically.
Addresses #116
* Fixes#130. Removed total shares in favor of the hashrate.
* Fixes hashrate display.
* Added pagination template file to include pagination on other pages in
the future.
When finding more than a single block between runs it added shares to a
new block from a previous one. Properly fetch the last highest share ID
from the database prior to scanning for shares assigned to a block.
Fixes#124
* Properly calculate hashrate
* Remove number formatting, it breaks the graph
* Not properly in order based on time but displays correct values
Addresses #90
* Check for min/max values set for auto payouts
* Display error messages to the user
* Sanitize values just in case we fall through the validation
* Updated template and class
* New configuration option added! Update your local configs!
Fixes#108
* Users are all fetched from the DB
* Each user is assigned special stats
* Hashrate
* Shares
* Balance
* Est. Payout
* Est. Donation
* Display in sortable and paginated table
This is not well optimized. Each user stats are grabbed individually
via the stats and transaction classes. It would probably make sense to
expand the statistics class to list a full user list with all statistics
available instead to cover this in a single SQL query.
* Added isAdmin to user class
* Run isAdmin on EACH page to ensure admin status hasn't changed
* Added main page with no content
* Added user query page with basic form, no content
* Do not include shares_archive table
* Main reason: This table is optional
* Secondary reason: Speeds up the query from 1.3s to 0.005s
* Drawback: Once a block is found it takes 10 minutes for the stats to
be accuracte again
This could potentially be reverted but since shares_archive is optional
and the speed increase is rather significant I'd like to keep it this
way.
* Findblocks cronjob changes
* Find & Store upstream share
* Use last found `share_id` as starting ID or `0`
* Find & Store upstream finder
* Use last found `share_id` as starting ID or `0`
* Use stored information when running propotional payout
* Fetch current checked blocks upstream share from block table
* Fetch previous upstream share of previous block from block table
* Calculated payouts in that range of IDs
* Updated `block.class.php` to store share_id in block and fetch highest `share_id`
* Fetch all blocks unaccounted for in ASC oder (low to high height)
* Use lowest height block to find lowest ID upstream accepted share
* Use this share as the finding share for a block
* Set share as last found upstream share for further blocks
* This only applies if shares are not deleted at all which they should!
* Use tickerupdate.php cron to update setting value
* Added new configuration variables for ticket updates
* Added some missing configuration vars for some URLs
* Adjusted blockupdate cronjob
* Fetch block information via `gettransaction`
* Adjusted block class
* Only getAllUnconfirmed where confirmations > -1
* Adjusted transaction class
* added setOrphan method to mark orphaned transactions
* If block is orphaned
* Mark all related transactions as Orphan_*type*
* Set confirmations of block to -1 so it is ignored and marked as orphan
* Change transaction template, added listing for orphan transactions
* Add orphan status to block listings template