Payout 346912 (finally) sent
725676dfd3128f568f0dcee2d74addc5caa9b2bce4871506ff637b7e48c940d8
and confirmed about 50 minutes ago.
Regarding shifts:
I'll write a long complicated description coz ... well ... not sure how else to describe it
Currently the pool gets about 50 million shares a day
Obviously you can't store each share individually anywhere useful - too much data.
So instead the data is summarised.
These are the shifts.
OK now a long version:ckpool itself gives out work to miners based on a template from bitcoind
We call this a workinfo (that has a unique workinfoid)
ckpool gets a new one every 30 seconds and also every time a new block is found on the network.
The shares ckdb gets from ckpool, it groups them under the workinfoid per worker - called a sharesummary
So that firstly means that the number of sharesummaries a day is ~2880 * workers
These are like mini-shifts ~30 seconds long.
Next ckdb groups every ~100 sharesummaries together into a markersummary (that has a range of workinfoid's defined in a workmarker)
It's not always 100, since it has to stop whenever the pool finds a block and it stops at the point if ckpool restarts.
So now we are down to about ~29 * workers markersummaries a day that are also stored in permanent DB storage.
These are shifts ~50 minutes long.
Workmarkers are defined by 2 consecutive marks that specify a workinfoid range.
These marks are the shift end points as shown on the Shifts page.
A workmarker range is the first workinfoid after the previous shift mark to the end of the current shift mark.
The unique names for shifts include a name at the end to ensure they are unique.
They only had to be a letter, but for fun I decided to give each letter a female anime character name
When a payout is generated, it has to count back shares from the block until it reaches or exceeds the payout limit (at the moment 500%)
It can't stop at exactly the limit since the shares aren't individually stored.
It must stop at the start of a workmarker i.e. the start of a shift, and include all shares in the shift, since that's the only point to stop that's fair to all workers.
This, of course, is due to the fact that a shift has shares ranging over the 50 minutes of the workmarker range, so if one markersummary for a given workmarker is included, all markersummaries for the given workmarker have to be included.