I'm interested/worried about the size of the State Trie over time
Lets suppose I have a contract with two vars:
uint myNumber; uint myArray;
As far as I understand, If I change the value of "myNumber", a new copy of it will be added to the State Tree (thus taking more HDD space), which is fine and needed because if we ever want to rebuild data history from a previous state we need it (and maybe rewrite-performance reasons).
But, what about if I push (increase length and set value) a new uint into "myArray". Will the whole array be copied to the new State Tree? Or only the new "uint" will be added to the tree and the array will be rebuilt by iterating over the State Tree/DB?
I'm not asking about mappings because I assume they are just spread independent variables in the memory. Are arrays the same kind of "magic"?