I have a question about Ouroboros and Daedalus. I watched the Ouroboros youtube videos and now I have a question.
Basically Ouroboros Praos and Genesis has some selection process of the canonical chain via a longest chain rule, but an adversary can create an infinite amount of forks which the longest chain rule and therefore Daedalus at the end of the day has to process in order to find the canonical chain. Can an adversary not simply DDOS the network by creating tons of forks and put so much computationally pressure on the nodes that the network cannot handle it? With a double sign slashing component you have less compute requirements and this kind of DDOS attack would not be feasible, but since Ouroboros does not have such double sign slashing conditions, how does it cope with that situation?
Iām asking basically asking in regards to both Ouroboros Genesis and Praos if there are differences in regards this attack gets handled by them.
All the Cardano nodes on the network have built up their chains from the genesis block, including the full node wallet, Daedalus. Thus these nodes know the current stake distribution, epoch nonce, and the public keys for all registered stake pools.
Any block created has to prove that the pool was a valid slot leader using Cardanoās verifiable random function (VRF) and the following inputs:
epoch nonce
slot number
pool total stake
pool private key
How do you think an adversary will be able to make these āinfiniteā malicious blocks appear valid to the rest of the Cardano nodes?
No.
When looking at purely academic presentation, such as the YouTube video posted, you have to realize that it shows a model about very specific element or a process. Most of the time in research functionality of a network is simplified in order to control for variables examined. In this specific case one of the variables they chose to simplify and keep static, in order to study this, is that assumption that full chain is fully broadcast to all nodes at all times.
In real world that is not how it works.
Here are a few things to consider when analyzing this subject:
Nodes are not connected to everyone everywhere. Nodes have āpeerā connections that they āpullā from. So, spamming a node from any connection that is not their āpeerā may just disrupt the one user using that node as a regular DDoS, but it would not affect the ledger or the network.
There is a chain sync protocol that each node performs before adding new blocks to their existing blocks. Nodes donāt append just any info. There are checks in place.
One of these checks is block header validation. Before accepting new blocks nodes will check cryptographic evidence in a block header that it is a valid addition. Nodes are built to be able to receive and select from multiple unmatched sources and perform validation by themselves.
Only after block headers pass validation will node actually download a new block info. There is a resource and a time limit for this operation. At that point it will perform other checks to verify validity of the block.
After that is completed it will then be ready to broadcast new chain height to itās āpeersā, or in a case of Daedalus be ready to send transactions.
Keep in mind that we are talking about what attacker has to deal with JUST ONE NODE in Cardano network which contains thousands of nodes.
Also, making fake blocks would be very difficult since Cardano uses forward secure key evolving signatures. Basically, (and this is over-simplification) it can check that block was produced at the time when it should have been produced and it can orphan any fork branch that fails that.
The best way to think about Cardano implemented Ouroboros is that they are just upgrades to each other. Unless there is a drastic functionality change any security features implemented in one version will still be there in new versions.
NOTE: This doesnāt apply to Ouroboros Samisika or BABE since those versions of Ouroboros were changed to fit specifications of Mina and Polkadot respectively.