Ouroboros MPC

Hey i am trying to figure out how the Multi Party Computation works to generate randomness for the slot leader selection

Ouroboros is using VRF now, check a simple and brief explanation below.

https://vincenthz.github.io/ouroboros-vrf-explanation/

UPDATE: A layman explanation.

A very simple explanation. Assuming 4 parties with 10%, 20%, 30% and 40% stake.

  1. All 4 parties roll a dice (the dice have the probability mentioned above) for each slot
  2. That means, that they will get a probability between 0 and 1 based on their stake.
  3. Those win who have smaller value then their stake probability (meaning more than 1 parties can win for a slot).

P1 - got 0.35 i.e. 35%, his stake is 10% therefore - NOT allowed to create block.
P2 - got 0.15 i.e. 15%, his stake is 20% therefore - allowed to create block.
P3 - got 0.5 i.e. 50%, his stake is 30% therefore - NOT allowed to create block.
P4 - go 0.24 i.e. 24%, his stake is 40% therefore - allowed to create block.

So, you can see that more than 1 party can have the block creation right for the same slot, and that’s ok and by design.

The validator nodes just need to have the block header (that contains VRF vkey, eta0 seed etc.) to check whether the block was created rightfully or not.

Hi, thank you so much for your answer
So which version of ouroboros are we currently using? Is it Praos or something else? And will it change soon? Or has it changed in the last months. I saw a video not to long ago where somone explained Ouroboros is using MPC.
And with the model you described, will it just come down to who of the authorized partys creates the block faster?

Currently Praos and Genesis is coming around September.

The validation and block creation are two very different things.
Block creation is relative easy as it picks the already validated transactions from the mempool (as block body) and add some values to the blockheader’s properties, such as block an slot nr, VRF key, nonce hash of block body etc. etc.

Validation first check the block header only whether the block was rightfully created or not and only after that fast validation will do a computationally bit more expensive validations.

It’s quite complex, but you do not need to know the details.