The PoR or "public" setting has a stricter adversarial model at the cost of transaction speed. First, the PoR consensus and messaging layer is asynchronous which is expected to scale better.
Epochs are no longer coordinated by a master node but in a decentralized manner using Thresold Logical Clocks.
As the underlying gossip layer is async and peers only have knowledge of their neighbour, the FLP problem states we won't be able to distinguish adversarial/faulty behaviour from simple timeouts.
By making a compromise on communication speed, TLCs which work similarly as Vector Clocks are used in the messaging layer (without witnesses) meaning a node has to "earn the right" to broadcast a message by forwarding a predefined number of other peers' messages. Currently QAN does not utilize cryptographic witnesses for this method which we plan to address in future releases. As long as we can assume a majority of honest nodes, we can model the upper layers of the consensus protocol as if it were a synchronous one, and define the VRF proof timeouts in a TLC epoch rather than wall-clock time.
Difficulty in PoR is adjusted based on:
- the number of stakeholders in the precompile contract
- whether TLC timeouts happened
- the number of ommers happened in previous block proposals