Cardano's chain selection rule

Hi all, can anyone help me out with this question regarding chain selection:

Ouroboros Praos (currently running on mainnet) uses the simple **longest **chain rule, so a newly joining node could be subject to a long range attack.
Ouroboros Genesis uses the **densest **chain rule, where nodes go through the chain from the genesis block and choose the one with the most blocks.

Now, recently Charles mentioned that Genesis is going to use Mithril certificates, which are kind of checkpoints that are signed by all pools. This way the newly joined node would go through the chain from checkpoint to checkpoint and choose the ones signed by the most stake.

Do these rules complement each other? Was there a change in plan? Why isn’t the densest chain rule already implemented, it seems pretty straight forward and much safer than the longest chain rule, or am I missing something here?

For reference check the (unfortunately incomplete) Cardano Consensus and Storage Layer report, chapter 21.1.

1 Like

Hello @Klobbinger

I believe this comment was about new lite wallet clients and not about chain adaption by block producers.

If you want to run a independent lite client at the moment you would have to run a sycn that replays EVERY block on the ledger. It makes every block in existence a data point. This is very cumbersome and makes building a independent lite wallet (almost) impossible. As the ledger and adaption of Cardano grows this becomes even more of a problem

If Mithril is applied then stakeholders can issues an aggregate proof and save them as ‘check points’ at steady intervals. This way if you open up a lite wallet you wouldn’t have to verify every block, just every check point and sync to the latest block.

Lets say, for example, they set check point interval every epoch. Epochs have around 20k blocks these days. This makes one year of ledger data have about 1.44 million data points. If they set check marks every epoch that number drops to 72 data points. This would translate in a huge improvement in start up time and overall performance of any lite wallet app. (NOTE: these are very ruff figures and ignore the fact that transactions are data points as well. I’m just simplifying for the sake of this example :smiley:)


That was my understanding of how mithril for lite clients work as well. Maybe I remember his comment wrong, but I thought he mentioned in the context of Ouroboros genesis and bootstrapping from the genesis block in a trustless manner.

Either way part of my qurstion remains, why isn’t the genesis rule implemented yet. From a high level perspective it doesn’t seem to be very complex and it’s basically the last thing, together with p2p, making cardano inferior to bitcoin.