uint256[]
array that included:
uint256
value that encodes both the number of its storage updates and its updated nonce, defined as follows:
uint256
value that encodes the number of storage updates and updated nonce of the first, and only, contract whose storage was updated, which equals and therefore:
1
uint256[]
array that included:
1
if the contract was deployed or replaced and 0
otherwise (i.e., there were only storage updates). When set to 1
, the new class hash occupies the next entry in the array
1
0
, which means that the contract was not deployed or replaced and therefore the next word shouldn’t be treated as the class hash100
and 200
, encode the storage update, where the value of key 100
is set to 200
.i
’th pointer is the bucket of the i
’th element if the i
’th element is a first occurrence, or a special index that indicates a repetition otherwise.
(bucket_index, index_in_bucket)
for every repetition in the original data.
[2^250, 10, 100, 2^63, 2^63+1, 10, 100]
, we construct the following:
[2^250]
[2^63, 2^63+1]
[10, 100]
[0, 5, 5, 3, 3, 6, 6]
[(5, 0), (5, 1)]
(We have two repetitions: the first for 10, which is the first element in bucket index 5, and the second for 100, which is the second element in the same bucket)
0
if the number of updates is less than 256 (and therefore can fit in 8 bits), and 1
otherwise
execute_from_outside
). In this case, the contract’s nonce is unchanged, yet it appears in the state update (since its storage was updated). Pre-v0.13.3, the current nonce of the account would have appeared although it is unchanged, while in v0.13.3 the value of new nonce is zero. This change helps with making the encoding derivable solely from the state diff itself, without referring to the global state of the chain.0x2
was introduced, defined as follows:
0x0
of the contract is the value of a global counter, initialized to 128
in the beginning of the first block of v0.13.4.
0x1
and 0x2
) are not mapped and continue to be referred to directly.