2018-01-04 --- Thinking about transacting PC on the blockchain

Observations

  1. We can generalize the Casper protocol with PC to come to consensus on something other than a blockDAG by separating the consensus DAG from the result DAG

Evidence

  1. Recall that in general estimate safety protocols (see Political Capital + Casper#GeneralEstimateSafetyConsensusProtocols) have a collection of possible consensus values, C, and a logic consisting of propositions which either true or false for elements of C. Originally, I specialized to the case where C is the set of all blockDAGs replicating a rholang virtual machine and the logic was left vague, but generally was only concerned with parent-child relationships between blocks and which block was at the head of the structure. However, we can keep essentially the same protocol without specifying C by simply changing the data in "propose" blocks. Instead of making the data virtual machine transactions, we have it be a proposition from the logic which the result of the consensus must satisfy. The result of the consensus is the set of elements which satisfy the proposition obtained by walking through the DAG (from the head chosen by the fork-choice rule – be it GHOST or PoW-like, as I have been considering) with "and"s between all the logical propositions on the propose blocks. This could also be thought of as set intersection between each propose block in the main DAG. Implicitly, there is a rule that this intersection can never be empty (the logical proposition cannot be a contradiction), which constrains what new proposals can be added. Similarly, acknowledgements cannot join contradictory branches of the DAG (this rule was already partially in place when I originally stated the protocol since I mentioned that acknowledgements can only join independent blocks).
    The case in which C is also a blockDAG is degenerate in the sense that propose blocks can serve a dual purpose. Rather than including logical propositions as the data, we include the data of the DAG we want consensus on, with the implicit rule that the DAG we want consensus on is obtained by stripping out all acknowledgement blocks, while maintaining existing parent-child relationships (this being my original formulation of the protocol). Hopefully it is clear that scheme is isomorphic with the scheme presented in the paragraph above for the case that C is a set blockDAG structures.

Conclusions, Speculations and Future Work

  1. Having isolated Casper-PC from the virtual machine replication, we can start to think more clearly about what it would mean to have PC be transacted on the DAG because Casper-PC can be thought of as having its own DAG on which to do that.