Source: https://igm.univ-mlv.fr/~duris/NTREZO/20022003/Peer-to-peer.pdf