The networking protocol is fundamentally identical for these blockchains. “Mining” algorithms are but an emergent property of the network, given the incentives for block creation. In Tezos, we make a blockchain protocol introspective by letting blocks act on the protocol itself. We can then express the set of protocols recursively as {( (S×P)∪{⊘})} P = S,≤,⊘,B⊂S 2.2 The network shell This formal mathematical description doesn’t tell us how to build the block tree. This is the role of the network shell, which acts as an interface between a gossip network and the protocol. The network shell works by maintaining the best chain known to the client. It is aware of three type of objects. The first two are transactions and blocks, which are only propagated through the network if deemed valid. The third are protocols, OCaml modules used to amend the existing protocol. They will be described in more details later on. For now we will focus on transaction and blocks. The most arduous part of the network shell is to protect nodes against denial-of-service attacks. 2.2.1 Clock Every block carries a timestamp visible to the network shell. Blocks that appear to comefromthefuturearebufferediftheirtimestampsarewithinafewminutes of the system time and rejected otherwise. The protocol design must tolerate reasonable clock drifts in the clients and must assume that timestamps can be falsified. 2.2.2 Chain selection algorithm The shell maintains a single chain rather than a full tree of blocks. This chain is only overwritten if the client becomes aware of a strictly better chain. Maintaining a tree would be more parsimonious in terms of network commu- nications but would be susceptible to denial-of-service attacks where an attacker produces a large number of low-scoring but valid forks. Yet, it remains possible for a node to lie about the score of a given chain, a lie that the client may only uncover after having processed a potentially large number of blocks. However, such a node can be subsequently ignored. Fortunately, a protocol can have the property that low scoring chains exhibit a low rate of block creation. Thus, the client would only consider a few blocks of a “weak” fork before concluding that the announced score was a lie. 4
A Self-Amending Crypto-Ledger White Paper Page 5 Page 7