chainwayxyz / citrea

Citrea, Bitcoin's First ZK Rollup 🍊🍋
https://citrea.xyz
GNU General Public License v3.0
129 stars 26 forks source link

[WIP] Stateful statediff #1509

Open kpp opened 3 days ago

kpp commented 3 days ago

Description

Now instead of storing [address balance nonce code_hash] we store [address diff(balance) diff(nonce) diff(code_hash)]. When nonce/code_hash are not changed, they take 1 byte. And some heuristics to find a diff are implemented.So for a transfer tx we went from [20 + 32 + 8 + 33] + [20 + 32 + 8 + 33] bytes to [20 diff 2 1] + [20 diff 1 1], where diff for balance e.g. (before 4283200000, after 1232308282) is packed into 5 bytes. So 93+93 bytes went to 28+27.

Easy to implement (see https://github.com/chainwayxyz/citrea/issues/1132):

To implement RepeatedWrites we need to scan writes, if:

Linked Issues