pub fn new(
        storage: HashMap<H256, Option<(H256, u64)>>,
        factory_deps: HashMap<H256, Vec<u8>>,
    ) -> Self {
        Self {
            storage,
            factory_deps: factory_deps
                .into_iter()
                .map(|(hash, bytecode)| (hash, web3::Bytes(bytecode)))
                .collect(),
        }
    }
Creates a new storage snapshot.

# Arguments

- `storage` should contain all storage slots accessed during VM execution, i.e. protective reads + initial / repeated writes
for batch execution, keyed by the hashed storage key. `None` map values correspond to accessed slots without an assigned enum index
and 0 values. There may be slots w/o an index and non-zero value if the snapshot captures execution from a middle of batch;
in this case, you should supply `Some(_, 0)`.
core/lib/vm_interface/src/storage/snapshot.rs