For a smart contract idea that spins around in my head, I have the situation where I have to conserve the old values of a variable (no storage refund or cheaper
SSTORE updates). As the value I write is comparatively big I wanted to estimate the gas cost that will occur and I realized that it would be cheaper to each time create a new contract with the data as code and then read it over
EXTCODECOPY instead of using
CREATE costs according to the yellow paper 32000 + 6400 per word (200 per byte), whereas an
SSTORE costs 20000 per Word. in the
CREATE case another 20000 are needed to store the address, so already with 4+ words stored the contract creation is cheaper.
EXTCODECOPY costs 700 + 3 per Word (+200 to load the address with
LOAD), whereas the
SLOAD costs 200 per word. Here we need 5+ words for the contract creation to be cheaper.
I'm interested in the reason behind this, why is the intended way more expensive than a way where we misuse the
CREATE opcode. Is one of the two ways underpriced or overpriced?
Even if in cases where the updating
SSTORE (cost 5000 instead of 20000) is used it would still be beneficial in the cases where we update rarely in comparison to the expected reads.