Hi,
I've now looked a bit into your whitepaper (the 2.0 version) and read your conversation with monsterer (the discussion with Ix is still missing, it's pretty long, but it may be worth it).
First I want to clarify that while I read a lot about cryptocurrency consensus models (specifically PoS models, as a - possible or impossible? - "solution" to the N@S problem intrigues me, e.g. Vitalik/Vlad's blogs on Casper, anonymint's and monsterer's posts etc.), I'm not a computer scientist nor a professional developer, and so maybe I am wrong in some interpretations.
Well, what I like about your protocol is that you have created something like a DPoS/BFT model without a static "delegate" set (e.g. Bitshares, Tendermint or Casper). The problem of these systems is obviously 1) the "liveness" threshold and 2) the accepted centralization which could lead to social engineering and cartel attacks. As in your system everybody can become an "approver" (of blocks or epocs), that doesn't apply. (
However, you create another threshold as you pre-select some stakers to create blocks; if all block creators go offline, the blockchain stops this is probably wrong as simply the next slot would be chosen, but the problem persists in that it's likely that in some periods with low participation the block production will be slow).
Some observations:
1) It seems that it will be very difficult to reach the quorum of 50% for block approvals. I think this was also mentioned by Ix. In Nxt for example, which even has "stake leasing", about 30% participate in forging.
2) If I understand it right, "block creators" compete to create blocks after a new time slot has begun. Isn't this Proof of Work, as the fastest block creator with the best Internet connections would have most chances to win? Wouldn't that lead to an arms race like in Bitcoin?
3) Time slots can only be orientative as timestamps can be easily faked.
I like the "delayed" epoch approvals a bit, because this way high approval rates can be reached, which make history attacks very, very difficult, although I still haven't grasped if double-voting (what monsterer mentioned) may be a problem or not (if yes, maybe a "slashing" mechanism can help). I would however make epochs pretty long (e.g. the equivalent of a day) because otherwise participation would be lower, inflation would be high, and the coin would suffer from blockchain bloat and traffic issues (imagine millions of small stakers approving multiple epochs per day ...).
Problem 1 could be mitigated with a "leasing" mechanism like in NXT or Waves that lets small stakers lease coins to big stakers with good hardware, but this has the drawback that then the social-engineering/cartel attacks like in DPoS may be possible too, only that "approval pools" would take the place of "delegates".
An interesting idea could be to only let pools approve blocks with "leased" stake but not epochs, as epochs can be approved in a delayed manner and so the participation rate would be higher.
Or, you only let stakers approve epochs, and use a more traditional PoS algorithm for the blocks.
I countinued a bit in the whitepaper and found this sentence about the double-voting problem:
Proof-of-Approval provides award for valid approvals, even on multiple
blocks, as long as they are not in conflict, i.e., they share the same parent. An
approver’s award is maximized when they approves all non-conflicting blocks.
But if they approves any conflicting blocks, the award vanishes.
This looks like "duplicate stake detection" mechanisms in today's PoS coins, which are unfortunately not effective (or at least, only in a small subset of problems, mainly for "unintended" forks because of network problems which get orphaned earlier by this mechanism). The problem is the following: If you want to double spend, then you will publish your "conflicting chain" with the double-spend several blocks/slots after you forked it from the "honest" chain. Now if the staker has already received the reward for the approved block on the main chain (and maybe he has exchanged it for a good or another altcoin) then he can safely approve the attacker's second chain. And as timestamps can be faked, it's no issue to do that after some time. This seems only be (somewhat) solvable with
"slasher"-like designs.
There may be some protection against this problem because of your "block creator selection" process, but I think an attacker with 50% stake could game it, or at least keep trying until he succeeds. Maybe here I'm wrong however.
PS: People like @abdulkhaliq123 and @zgreenz are almost surely bots that want to achieve a higher forum rank, their posts seems to be copied-and-pasted from one of the early post in this thread. It's not necessary to answer them as machines (and more so the bots used in this forum) are still too dumb to understand consensus protocols