Storage Rules

Access to contract storage is restricted in some instances.

STO-010 Account storage

Permanent storage access to "account" storage with SLOAD and SSTORE instructions is always allowed.

STO-021 Account already exists

Access to the associated storage of an account in an external contract is allowed if the account already exists.

STO-022 Staked Factory

Access to associated storage of an account in an external contract is allowed if there is an initCode and the factory contract is staked.

STO-031 Paymaster and factory storage

Paymaster and factory entities are allowed to access their own storage if they are staked.

STO-032 write to storage associated with paymasters and factories

Read/write access to storage slots in non-entity contracts is allowed if that storage slot is associated with the entity.

STO-033 Read-only storage access

Staked paymasters and factories are allowed ready-only access to non-entity contracts.

STO-040 Storage access with multiple user operations

UserOperations may not use an entity address (factory/paymaster/aggregator) that is used as an "account" in another UserOperation in the mempool.

This means that paymaster and factory contracts cannot practically be an "account" contract.

STO-041 Storage access to senders in mempool

A contract whose associated storage slot is accessed during a UserOperation may not be an address of a sender in another UserOperation in the mempool.