Leo Lara @ Thailand 🇹🇭 pfp
Leo Lara @ Thailand 🇹🇭

@leolara

Most SSZ libraries are tested against the spec. I built one where the core properties are formally proved, in Lean 4. It also passes the full upstream test corpus. SSZ is how Ethereum serializes and Merkleizes its data — if hash_tree_root or deserialize is wrong, you get the kind of bug that can split the chain. For this reason I wanted something that is not only tested against the spec, but also proved. Formal verification. The library is called SizzLean. I proved three theorems: roundtrip (decode after encode returns the same value), non-malleability (two different values cannot produce the same encoding), and a size bound. They hold for the fixed-size SSZ types: the integers, bool, fixed vectors and lists, and containers built from those. I have not proved them yet for bitvector, bitlist, and variable-size containers. So this is a base, not a finished proof.
1 reply
0 recast
1 reaction