So it has been really bugging me that Sparkle lacks the nice predictable block times that DPOS provides so I set out to design a better approach to proof of work.
Imagine if you will that miners don't create a block at the same time that they find a hash. Imagine instead that every time a miner produces a hash they get put in a queue to sign a block. Now imagine this queue is processed every 10 seconds just like DPOS. It would be like a buffered video stream.
If the queue length is less than X blocks difficulty decreases, if it is more than X blocks difficulty increases.
So now you end up with two "chains" the proof of work chain to determine the signers and the transaction chain that executes every 10 seconds exactly. The proof of work chain would have to reference the head of the transaction chain and thus support and confirm the transaction history.
The issue becomes what new attacks can be executed:
1) a bad miner (who is anonymous) could easily sign many different blocks when their turn shows up.
2) a bad miner would know in advance when they have a run of blocks
3) what would a good "confirmation time" be?
We can mitigate the first attack by having their mining reward vest for X blocks and allow any crypto graphic proof to the contrary to deny their pay.
Just a wild idea
Perhaps too complex and untested and Sparkle should simply stick with what is known.