I’ve read the various blog posts/documentation but I still haven’t grasped the concept fully. I’m having questions such as: “how is the fraud actually detected?”, “is the proof limited to being submitted for any of the micro blocks of only the last key block?”, “what happens if there was fraud and it was not reported quickly enough?”, “what if the leader is always the same miner?”, “what happens to the double spends?”
I’ll have a go at explaining it as plainly as I can.
First of all, there is only one type of fraud that is currently detected. A leader is not allowed to create a fork in its generation. This is to prevent double spend attacks where a leader maliciously creates a fork to spend more than once.
The fraud is detected by a miner when it encounters (at least) two blocks with the same parent (previous hash), signed by the same leader, which is solid proof that the leader created a fork for no good reason. The actual Proof of Fraud (PoF) contains the two micro block headers, complete with the signatures, so any other miner can verify the proof, even if they didn’t see both headers before.
The miners that discover the fraud will still track both forks since they can’t determine which fork that is the prevailing one, but they will keep mining on the first fork they encountered. If they become the next leader, they will report the fraud in any of the micro blocks in the generation, and by becoming the leader, they will implicitly have chosen one of the forks. If both forks continue, the usual fork rules apply (i.e., the fork with the highest difficulty wins), so in a given fork, only one of the spends will eventually prevail. The fraud can be reported in both forks.
The PoF can only be reported by the leader of the very next generation, which is a vulnerability. In theory, the PoF could be reported in any generation before the beneficiary reward is granted to the malicious miner. After that, the malicious miner could already have spent the reward, so there would be no guarantee that a punishment could be administered, but again theoretically, if the balance was still enough later, the punishment would be effective.
There are practical (technical) reasons for limiting the reporting to the next generation, but no fundamental reasons. We deemed it good enough, since if you wait long enough (confirmation time) for your transactions, the double spend will be resolved by the ordinary fork mechanism. In a healthy network, the PoF handling will deter malicious behavior, and in an unhealthy one, the forks can as easily be created by mining on different forks created by key blocks anyway.
The punishment for the fraudulent miner is that it loses all beneficiary reward for the generation of the fraud, and the reward for the miner is 5% of the coin base reward of the generation where the fraud occurred. The remaining coin base and fees are locked into the special lock account.
I hope it is more clear now, but feel free to ask again if you want me to elaborate more on a specific point.