Technical Whitepaper

4 The PoR Blockchain

We next describe how a PoR-fair lottery can be used to obtain a PoR-blockchain. The ground truth of the 13blockchain is recorded on the genesis block which includes the (initial) set of reputation parties, their public keys, and the corresponding reputation vector. We assume a canonical way of validating transactions submitted in the same round, e.g., if two received transactions which have not-yet been inserted into a block would contradict each other (e.g., correspond to double-spending), a default rule of ignoring both can be adopted. We abstract this by means of a predicate Validate, that takes as input a sequence T (of transactions) along with a current vector TH of transaction history—composed by concatenating the transactions in the blockchain, and outputs a subset T′⊆ T such that TH||Tis a valid sequence of transactions.


PIC

Fig. 7: High level description of protocol for choosing next block in the chain.


An informal description of the protocol is given in Fig.  7 . The idea of the protocol for proposing and agreeing on the block of any given slot is as follows: A small (i.e., polylogarithmic) slot-committee CBA is chosen using our above lottery—recall that the lottery will guarantee that the majority in CBA is honest and therefore it can run Byzantine agreement protocols (Consensus and Broadcast). From CBA a smaller (constant-size) committee CBC is randomly chosen to broadcast its transactions to everyone. Note that whenever in our protocol we say that a party P broadcasts a message, we mean that a Byzantine broadcast protocol is executed with P as sender; to avoid confusion we will signify this by saying that that the message is broadcasted by means of protocol Broadcast. We will use multicasting to refer to the process of sending a message through the diffusion network to all parties.

Using Broadcast to communicate the transactions known to CBC allows us to agree on the union of all transactions known to these parties. However, broadcasting to the whole player set has a big communication and round overhead. To avoid the overhead we use the following idea: Recall that the parties in CBA are all reputation parties and can therefore communicate directly. Thus, instead of directly broadcasting to the whole party set P the parties in CBC broadcast to the parties in CBA. 14 The security of the broadcast protocol ensures that the parties in CBA agree on the broadcasted messages and therefore also on the union. What remains is to extend this agreement to the whole player set. This can be easily done since the majority of the parties in CBA is honest: Every party in CBA signs the union of the received broadcasted messages and sends it to every party in P. The fact that CBA has honest majority implies that the only message that might be accepted is this agreed upon union. Hence, once any P P receives such a majority-supported set, he can adopt it as the contents of this slot’s block. The above approach brings an asymptotic reduction on the communication complexity of the protocol from Ω(n2) down to O(nlog ϵn), for some constant ϵ > 1. (The worst-case round complexity also has an asymptotic reduction but this depends on the actual reputation system and the choice of protocol Broadcast.) Additionally, the fact that reputation parties communicate over point-to-point (rather than gossiping) network is likely to further to improve the concrete communication complexity, at least for certain network topologies.

A remaining question is: Where does the randomness for the selection of CBA and CBC come from? For the static reputation-restricted adversary considered here, we extract the randomness for choosing each CBA by repeated calls to the random oracle. In the appendix we discuss how we can extend our treatment using standard techniques to tolerate epoch-resettable adversaries. The formal description of the protocol for announcing and agreeing on the next block can be found in Figure  8 . The proof of the following theorem follows the above line of argument and can also be found in Appendix  C.2 .




BlockAnnounce(ˆP,P,Rep,Bρ-1,ρ,δ,ϵ,L = O(1)):
1.
Each party in P locally runs the reputation-fair lottery L(ˆP,Rep, (c1,,cm),δ,ϵ,h(ρ||0)), where the cjs are as in Theorem  1 , to sample a set CBA ˆP (of size polylog(n)); out of this set, the parties choose a random subset CBC of constant size L = O(1) by invoking RandSet(CBA,L; h(ρ||1)).
2.
Each party ˆPi CBC acts as sender in an invocation of Broadcast with receivers the parties in CBA and input ˆPi’s current transaction pool Ti; ˆPi removes the broadcasted transactions from its local transaction pool.
3.
All parties in CBA compute Tˆ = Validate(TH,T) for T = piCBCTi. If some party ˆPj CBC did not broadcast a valid message in the previous round of the protocol, then all parties in CBA set Tj = {(abort,j)}.
4.
Every Pˆj CBA signs h(Tˆ,h = h(Bρ-1)), where Bρ-1 is the previous block,a and sends it to every party in CBC.
5.
Each  ˆ
                                 Pi CBC: If  ˆ
                                 Pi receives at least |CBA|2 signatures from parties in CBA on some (ˆ
                                 T,h), where ρ is the current slot and h = h(Bρ-1) is a valid hash pointer to the previous block, then  ˆ
                                    Pi multicasts ( ˆ
                                    T,h,ρ) along with all the corresponding signatures to all parties in P.
6.
Each Pi P: Upon receiving any (Tˆ,h,ρ) along with signatures on it from at least ⌈|CBA|2parties from CBA, create a block consisting of (Tˆ,h,ρ) and the related signatures and add this block to the local (blockchain) ledger state as the current slot’s block and mark the current slot as completed.



Fig. 8: Block announcing protocol for Slot ρ


Theorem 2. Let Rep be a reputation system, ϵ and δ be small positive constants, L denote our sampling algorithm (lottery) discussed in the previous section used for choosing CBA according to Rep, and the ci’s be as in Theorem  1 . If for a static adversary A, Rep is ϵ-feasible, and all parties in ˆPρ participate in slot ρ then in protocol BlockAnnounce, every node in P adds the same block on his local blockchain for slot ρ. Moreover, this block will include the union of all transactions known to parties in CBC at the beginning of round ρ.

Using BlockAnnounce it is straightforward to build a blockchain-based ledger: In each round parties collect all valid transactions they know and execute BlockAnnounce. For completeness, we provide a description of this simple reputation-based blockchain ledger protocol in Appendix  B . Its security follows directly from the above theorem. We remark that although the above theorem is proven for static reputations and adversaries, its proof can be extended, using standard techniques, to dynamic reputation systems with epoch-resettable adversaries. This extension will also extend the corresponding PoR-based blockchain protocol to that setting.

14  For clarity in our description we will use a deterministic broadcast protocol for Broadcast, e.g., the Dolev-Strong broadcast protocol [43] for which we know the exact number of rounds. However, since our lottery will ensure honest majority in CBA, using the techniques by Cohen et al.  [37, 38], we can replace the round-expensive Dolev-Strong broadcast protocol by an randomized, expected-constant round broadcast protocol for honest majorities, e.g., [63].

a  As is common in blockchains assuming a compact representation of the block, e.g., a Merkle-tree will allow for more efficiency by signing just the root.