Inherited contract should implement verifyState(address) method by checking storage variables (see verifyState(address) in Dispatcher). Also contract should implement finishUpgrade(address) if it is using constructor parameters by coping this parameters to the dispatcher storage
Base contract for upgradeable contract
Copy values from the new target to the current storage
New target contract address
msg.senderis the owner of the contract.
the address of the owner.
Allows the current owner to relinquish control of the contract.
Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the
Allows the current owner to transfer control of the contract to a newOwner.
The address to transfer ownership to.
Method for verifying storage state. Should check that new target contract returns right storage value
Upgrade status. Explicit
uint8type is used instead of
boolto save gas by excluding 0 value
Previous contract address (if available). Used for rollback
Guarantees that next slot will be separated from the previous
Contracts at the target must reserve the same location in storage for this address as in Dispatcher Stored data actually lives in the Dispatcher However the storage layout is specified here in the implementing contracts