The idea is that every transaction processing peer ("SH") is incentivized to sign a periodic (daily perhaps) compilation ("CB") of recent past transactions blocks ("TB"s). The author's proposed incentive is that each SH must make a monetary deposit, and this deposit grows with transaction fees if SH signs and shrinks the SH does not sign.
If there are at least 87.6k SHs, each SH will have to create a TB once every 10 CDs, or about once every 10+ days. They will be aware of when they need to sign in advance, which I will get to in a moment. The deposit does not shrink if the SH does not sign, the deposit is destroyed. If there are a lot of missing TBs, the time before destroying shares can be extended to give a chance for network split SHs to rejoin the network with only a soft strike. Which network takes "priority" can be determined simply by whichever has a greater portion of consensus.
If a rogue attack attempts to sign a CB that excludes TBs or has TBs which were not broadcast to other non-rogue peers, the non-rogue consensus will add the TBs from the rogue CB to the non-rogue CB but shrink the deposits of those rogue SH, but I am not yet clear on the mechanism for this. Thus, the rogue SH peers eventually end up with 0 deposit in the non-rogue consensus CB fork and thus are banned. The non-rogue SH peers end up with 0 deposit in the rogue CB fork, but because it excludes non-rogue TBs, then it is clearly the rogue CB to all consumers of the information. There is no way to include a forged TB, because each TB must be signed by the private key of the SH which was selected by the randomized ordering (see prior paragraph).
Correct.
Thus I don't yet see the technical need for CNC and CNBs (and I don't even know what they are and do).
CNCs are just lite clients. They don't do anything but use the network and want to receive legitimate data. CNPs are a CNC's connection to the network. A lite client's view is determined by the view provided to him by the CNPs. CNPs are the first line of defense against rogue SHs attempting to divert attention from the legitimate network by creating TBs in secret. A node that has not been connected to the network recently can't know that these blocks were produced in secret, so the CNPs must drop them (and cut communication with nodes that send them). CNPs protect CNCs (and other CNPs) from evil SHs. This protection is not absolutely necessary, but it can resolve evil network splits before they ever have a chance of accomplishing anything.
But how can all SH know what the hashes of all SH are, until they sign?
Egg-fricken-zactly. It's only a matter of timing.
And how can we be sure that the SH which sign are different on each CB? If instead we use the order of signing as the entropy, how can we stop SH from waiting to be last in order to game the final hash result, thus gridlock.
Because it isn't during the current consensus period that the next random number is determined, it is during the prior, but everyone only knows what that number is
after everyone signs it, meaning the last guy to create a TB can't know what affect his TB will have on the random number.
For example:
1) CB 1 is transaction blocks 1-1000
2) As each SH creates his TB in CB 1, he signs CB 0 (the genesis block) as well as implicitly signing the ongoing consensus by acknowledging prior TBs and current transactions. But this ongoing consensus is only used to help lite nodes determine with provable accuracy the current state of the network as opposed to the state at the last approved CB (and allow for fast tx confirmations).
3) At some point there is a cutoff, say block 1300, where any SH who has missed creating his TB can still sign the prior CB hash. Any signatures after this point will be refused and shares destroyed.
4) At block 1300, we have the signatures of all the SHs who are going to sign the prior CB, now we give a nice propagation period so that everyone has them before changing the order of SHs. Say block 1700.
5) At 1700, the new order takes effect. The random number is hash(all SH
signatures of CB 0's hash). The only way to affect this number is to not sign and lose 3k DCR. The only way to know what affect this might have is to be the very last person to sign the CB (and then you have only 1 of 2 choices, 1 of which causes -3k DCR guaranteed). There is probably a way to fix even this most minor of vulnerabilities, but I haven't yet thought of it.
Depending on how long the window is before TBs will be dropped means that the first X SHs in CB 2 will have to wait until that window closes before signing CB 1. But the signatures themselves do not alter the prior block, they only acknowledge it, so they do not have to wait until block 1300+ or whatever before they can sign it.
In the event of a network split, the network could extend the 300 additional TB period to be much more to prevent honest users from having their shares destroyed due to problems with the internet/government infrastructure. Some trigger figure such as 0.5% or a minimum of X SHs would have to be reached before enabling this mode. The random number last determined could easily keep extending the TB creation order until no longer necessary.
I am ignoring issues about separating minting from transacting
Issues? It is the greatest thing that can possibly be done for cryptocurrency.