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.
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