We were reviewing the Polkadot design the other day and noted that they are using libp2p for the networking layer. It fits in with the project ethos, has enabled developing the system quickly, and after all why go to the trouble of building a custom networking layer?
What did Cardano do? They didn’t use libp2p. They designed a custom networking stack. As the paper “Introduction to the design of the Data Diffusion and Networking for Cardano Shelley” by Duncan Coutts et al explains:
The networking requirements for a Proof-of-Stake (PoS) system, such as Ouroboros, differ from those of a Proof-of-Work (PoW) system, such as Bitcoin or Ethereum.
In PoW, adversaries must expend hashing power, which honest players can check in a cheap and stateless way. Honest nodes in a PoS system lack this advantage, which tips the balance towards the attacker, so it is necessary to mitigate this with careful design. Notably, off-the-shelf overlay network solutions tend not to consider such attacks. Existing solutions have been assessed, but the cost of retrofitting them to address the new balance of power between the adversary and honest players above is easy to underestimate and they would require substantial modification which would negate any advantages of code reuse. This is a major reason we undertook a from-scratch development.https://iohk.io/en/research/library/papers/introduction-to-the-design-of-the-data-diffusion-and-networking-for-cardano-shelley/
IOHK has taken time to get the design and implementation right on Cardano, carefully considering threat models, and this is often overlooked by the market which in these relatively early days can be very sentiment driven.
Our belief is that these strong technical foundations will help the Cardano ecosystem weather the slings and arrows of misfortune better than its peers as the market grows and matures. These technical foundations will come to be appreciated more as time passes and it becomes clearer which technologies have what it takes to truly scale and maintain security.