Storage

The storage keys in Zink is slot based, for example, the first detected storage in compilation will be using 0 as storage key.

// Loading storage at 0
PUSH0
SLOAD

// Loading storage at 1
PUSH1 0x01
SLOAD

Key-Value

As mentioned above, all key-value pairs follows using number as storage key, however, the value will be limited with 32 bytes, dynamic value like string is currently not supported.

Mapping

Mapping keys are generated via keccak256(slot, key)

Array

Similar to mappings, but the keys will be using u32 / u64 for indexing due to the optimization on the wasm side in the zink compiler, which means, the max size of an array is max(u64).