crate-crypto / go-ipa

A Go implementation of cryptographic primitives for Verkle Trees
https://verkle.dev
Apache License 2.0
32 stars 14 forks source link

banderwagon: add uncompress serialization methods #52

Closed jsign closed 1 year ago

jsign commented 1 year ago

This PR adds some helpers to deal with serialize/deserialize points in uncompressed form.

Some time ago we did an experiment to try this, and we discarded it since it caused a lot of IO work for geth. But, now that geth is moving to PBSS (path-based state storage), we found a way to serialize Verkle Tree nodes that avoid serializing commitments in the InternalNodes, which reduces IO load by a big factor.

The good part of this is that now, since we serialize the nodes uncompressed using PBSS, we don't rely on calculating the sqrt-fp when deserializing nodes which is a big benefit.

We've been using his PR branch for weeks actually since we've been building on top of it for a while, and everything seems to work correctly. I'm opening this PR to "officialize" these methods. We still keep the compressed ones (untouched and with the same name) since we still need them for proofs of course.