(PGP signed copy of the post below available here:
http://pastebin.com/YeLqMaAV)
Greetings, Eligius Miners!
As you know, the reward system has been changed from SMPPS to CPPSRB. You also should know that I've not fully completed the code for CPPSRB, but, I have most of it complete. I wanted to give an official update on my progress so that you aren't left in the dark.
Lets list some things that are complete and working in the code as it stands:
- CPPSRB Share Log - Keeps track of every share in order so that the exact shares to be paid are paid correctly according to the spec for the reward system
- User Database - CPPSRB keeps it's own user database and track balances on the fly so that automatic payouts from the coinbase transaction are possible when the block is generated
- Basic Coinbaser Output - The code is currently able to generate a list of payouts instantly for the exact moment the list is requested, which is needed for automatic payouts from the coinbase/generation transaction. The current block's reward is included in this data immediately.
- SMPPS Balances Imported - All balances and extra credit are carried over from the SMPPS reward system. Unpaid balances are treated as earned, as they should be, and extra credit will be paid as possible under the CPPSRB spec. (For those who have read the CPPSRB information, the SMPPS extra credit is basically treated as unpaid shares submitted before the official start of CPPSRB, so, CPPSRB will pay out as much as possible based on pool luck.)
- Minimum Payout/Inactivity Timeout Payout - Minimum payout code is implemented to add miners to the payout list as soon as they reach the minimum payout amount. This could be from past blocks or from the current potential block at the moment the payout list is polled. Miners who's balance has not increased in 7 or more days will be added to the payout list even if their balance is below the minimum payout. (This will pay off many SMPPS miners with balances below the minumum payout who have been waiting patiently likely in the next payout.)
- Support for Variable Difficulty Shares - The CPPSRB setup, unlike the SMPPS setup, will have support for variable difficulty (> 1) shares. This code is in place in the reward system, and that means that it can be activated for the pool in the future when needed/desired.
- Must more, but these are the big ones
Now, there is more to do:
- Payout verification - The CPPSRB code needs to verify payments to miners from the pool to make sure no one is overpaid/underpaid. This code is still being tested extensively, because with realtime payout list generation there is little to no margin for error here. This is also why I have automatic payouts currently disabled so that I can verify the payments are accurate manually while testing the code.
- Orphan Block catching - Code needs to be able to see when a block gets orphaned as quickly as possible. This will allow the shares that were originally paid by that block to be marked as unpaid again and any payments to those miners returned to their unpaid balance. Otherwise, miner's would be losing out on shares for orphaned blocks and Eligius has always treated orphans as if they didn't exist as far as payouts go so that miners are never out potential rewards.
- Stats File Updates - The CPPSRB code does not currently update the json data files (balances.json, (blockhash).json, etc) interpreted by wizstats for current balance and payout information. This is why the balances shown on the stats pages have been incorrect since CPPSRB was implemented. This is high on my priority list, so that stats can function once again and get miners at ease knowing that they are earning!
- Code Optimizations/Long term details/etc: Currently at every restart of the CPPSRB code, it reprocesses EVERY share starting with the first share for when CPPSRB was announced active and runs until it calculates out all of the current balances and such. Ideally, this data should be cached and loaded at startup to save resources, but, other items are higher priority.
- Many more, but nothing too major. Mostly features!
So, that's where it stands currently. Technically, the code is very far along and just needs some finishing touches and a little more field testing to put into full duty (generating automatic payments, mainly).
I have less time during the work week to work on this project than I do on the weekends, so, I'm
hoping that I have sufficient time between now and this Sunday to get the job done. I know I said that last weekend, but, this is actually fairly complex code and it's taking a bit more effort to implement than I had originally anticipated.
I've now put in over 40 hours of development time into this project, so, I'm not slacking!
That said, this project is taking up a considerable amount of my free time, so, without begging, any donations are appreciated. If it were not for my "real life" obligations (full time job and other such work) this code would have been done long ago, but, for purely financial reasons, I can't afford to dedicate more time to this project than I already have been. I hope everyone understands.
Also, I will likely process another manual payout soon unless I get the automatic payment code in place in the next day or so. I don't want miners going too long without a payment, but, I also don't want to constantly do the work for a manual payout for only a short list of miners who have the minimum payout amount.
Thank you all for your support of the pool! I can't wait to have this all up and running completely!
-wk
CPPSRB work donations: 1
CPPSRBAhYcYtLN7Y6n1KcwhF49VwMtptT