With these two effects combined, blockchains which produce blocks quickly are very likely
to lead to one mining pool having a large enough percentage of the network hashpower to
have de facto control over the mining process.
As described by Sompolinsky and Zohar, GHOST solves the first issue of network security
loss by including stale blocks in the calculation of which chain is the "longest"; that is to
say, not just the parent and further ancestors of a block, but also the stale descendants of
the block's ancestor (in Ethereum jargon, "uncles") are added to the calculation of which
block has the largest total proof of work backing it. To solve the second issue of
centralization bias, we go beyond the protocol described by Sompolinsky and Zohar, and
also provide block rewards to stales: a stale block receives 87.5% of its base reward, and
the nephew that includes the stale block receives the remaining 12.5%. Transaction fees,
however, are not awarded to uncles.
Ethereum implements a simplified version of GHOST which only goes down seven levels.
Specifically, it is defined as follows:
A block must specify a parent, and it must specify 0 or more uncles
An uncle included in block B must have the following properties:
It must be a direct child of the k -th generation ancestor of B , where 2 <= k <= 7 .
It cannot be an ancestor of B
An uncle must be a valid block header, but does not need to be a previously verified or
even valid block
An uncle must be different from all uncles included in previous blocks and all other
uncles included in the same block (non-double-inclusion)
For every uncle U in block B , the miner of B gets an additional 3.125% added to its
coinbase reward and the miner of U gets 93.75% of a standard coinbase reward.
This limited version of GHOST, with uncles includable only up to 7 generations, was used
for two reasons. First, unlimited GHOST would include too many complications into the
calculation of which uncles for a given block are valid. Second, unlimited GHOST with
compensation as used in Ethereum removes the incentive for a miner to mine on the main
chain and not the chain of a public attacker.