Vitalik Buterin pfp
Vitalik Buterin
@vitalik.eth
A fun math aside, on the idea of splitting a large zk proving workload between multiple provers. Suppose you have N provers, and you have a proving workload that you split into N parts (so, one part per prover). You require provers to pre-register, but registration is open-access. Suppose you have a constant fault rate (eg. 1/5 of registered provers fail). Provers expect to complete in one round (eg. 3s). If one prover fails, other provers have to come in and re-prove that load. How many rounds does it take for the entire workload to get proven? Answer: log*(N) (yes, that's the iterated-log function) Why: In the first round, you go from N unproven workloads to N/5 unproven workloads In the second round, each remaining workload gets assigned 5 provers, so per-workload failure rate becomes 1 in 5^5. So you go to N / 5 / 5^5 unproven workloads In the third round, each remaining workload gets assigned ~5^5 provers, so failure rate is 1 in 5^(5^5). So you go to N / 5 / 5^5 / 5^(5^5) unproven workloads
18 replies
18 recasts
245 reactions

Fer pfp
Fer
@ferdj
F or normal humans Give N workers N tasks (one each). ~20 % screw up. The few leftover tasks get a lot more helpers next round. That “pile-on” halves the problem so brutally that the whole job wraps up in about log*(N) rounds—think “take log, then log of the log, repeat until 1.” Even if N is a billion, log*(N) ≈ 5. So you’re done in a handful of rounds. Fast.
0 reply
0 recast
0 reaction