frodocooper, please note that my fork includes several improvements, not just a change to the maximum number of transactions per share, and consequently actually has a significantly *lower* share orphan rate than the p2pool mainnet. I don't have any good data on whether jtoomimnet is more fair or less fair than mainnet as of yet, but preliminary data suggests that it's about the same or slightly better.
As for the voting, I'm not sure there was any point. If anyone wants to mine on a share chain that allows less than 1 MB of new transactions per share, then there needs to be two separate share chains, because there is at least one miner (me) who chooses not to mine on anything less than full blocks. Rather than have one chain on which everyone compromises, why not just have two chains to satisfy everyone's goals?
Also, there are plenty of methods by which share network traffic can be reduced or taken out of the latency-critical path. I would prefer to just make shares propagate faster regardless of size rather than organize a vote on how much to cap our block sizes.
Edit: Sorry if I came off as irritable earlier. I'm just tired of politics getting in the way of fixing the code. I think that forking, as a permissionless process, is just socially easier to deal with than trying to get consensus, and in the case of p2pool, it has very few disadvantages. This way, I can just write code, and if you think it's better, you can use it. It's really simple that way. I don't have to worry about writing the code and having it never be used, since I know that I will use it even if nobody else does. And users don't have to worry about voting on features they don't understand; they can see the new code already running before they decide whether or not they like it and want to make a switch.
Point taken, jtoomim. I too apologize if I offended you in any way; my intention was simply to get the point across that there is almost always never an optimal solution, but there is almost always a better one. In the case of P2Pool, and Bitcoin in general, my personal belief is that compromise is almost always the better solution, compared to hard-forking.
But nevertheless, you do make very good, and reasonable, points. And I'll respect that, even if I do not agree with all of them.
. (Also, I'm not a programmer, so I may have skimmed over much of the finer workings of your code, simply because I do not understand code. I do apologize if I made unfair and unfounded generalizations.)
Feels like a Scooby Doo caper, but actually your both wrong
I need to update the description on p2pool.org, and do not have the patience to find the code snippet on my phone, but the share chain length is kind of dynamic. While it stays close to three days, if I remember correctly both share weight and the "spread" change it to be less then 3 days under certain circumstances.
The real answer is both deep in this thread, and in the code... I'll spend the time to dig it out and update the site on Monday, unless someone feels like linking the code here before then
Yeah, the P2Pool page on the Bitcoin wiki does
say that "Each share contains a generation transaction that pays to the previous
n shares, where
n is the number of shares whose total work is equal to 3 times the average work required to solve a block, or 8640 (= [72] hours of shares), whichever is smaller."
I'm still confused as to what the first part means.
(By the way, the P2Pool Bitcoin wiki page needs to be updated. It still says that shares are valid to at most 24 hours, among other outdated information.)