Faster block/blob propagation in Ethereum

Because each individual chunk needs to come signed to not dos nodes. As I noted above there’s only one signature that is needed (to the commitment of all of them) but this signature needs to come in chunks, therefore you change the current signature scheme, which is what makes deep CL changes.

Exciting work! Thanks for testing this :rocket:

A couple of questions:

  • What are the network specs of the machines?
  • Could you link the code that distributes the RLNC chunks to the mesh?
  • How does parallelization speed up the commitment computation?

I’ll defer the first question to @parithosh, all I remember from them is s-8vcpu-16gb-amd for spec. The branch that was tested is [DO NOT MERGE] Use RLNC for block propagation by potuz · Pull Request #14813 · OffchainLabs/prysm · GitHub without the last commits for parallelization. The call to distribute the chunks starts in this line.

The last bench I can find parallelized is

cpu: Intel(R) Core(TM) i9-14900
BenchmarkChunkMSM_6MB-32               1        1383648871 ns/op        317930016 B/op    197009 allocs/op
BenchmarkChunkMSM_2MB-32               3         355434164 ns/op        106150704 B/op     65944 allocs/op
BenchmarkChunkMSM_200KB-32            33          34271750 ns/op        10362574 B/op       6798 allocs/op

Paralellized:
BenchmarkChunkMSM_6MB-32               4         267416300 ns/op        317934364 B/op    197033 allocs/op
BenchmarkChunkMSM_2MB-32              14          82303238 ns/op        106154188 B/op     65969 allocs/op
BenchmarkChunkMSM_200KB-32           139           8521646 ns/op        10363791 B/op       6823 allocs/op

But this is a fast machine.

EDIT: I want to stress that anyway if this goes into production, we most probably want to use a curve defined over F_2 instead of Ristretto.

1 Like