CoreInternals

SigsSlot

struct SigsSlot {
  bytes4[] value;
}

_ADMIN_SLOT

bytes32 _ADMIN_SLOT

Storage slot with the admin of the contract. This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is validated in the constructor.

_DUMMY_IMPLEMENTATION_SLOT

bytes32 _DUMMY_IMPLEMENTATION_SLOT

Storage slot with the address of the current dummy-implementation. This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is validated in the constructor.

_SIG_SLOT_BASE

bytes32 _SIG_SLOT_BASE

use EIP1967 proxy slot (see _DUMMY_IMPLEMENTATION_SLOT) except for first 4 bytes,

_getSlotImplSigsSlot

function _getSlotImplSigsSlot(address implementation_) internal pure returns (bytes32)

Returns the storage slot which stores the sigs array set for the implementation.

_getSlotSigsImplSlot

function _getSlotSigsImplSlot(bytes4 sig_) internal pure returns (bytes32 result_)

Returns the storage slot which stores the implementation address for the function sig.

_getAddressSlot

function _getAddressSlot(bytes32 slot_) internal view returns (address data_)

_Returns an address data_located atslot*.*

_setAddressSlot

function _setAddressSlot(bytes32 slot_, address data_) internal

_Sets an address data_located atslot*.*

_getSigsSlot

function _getSigsSlot(bytes32 slot_) internal pure returns (struct CoreInternals.SigsSlot _r)

Returns an SigsSlot with member value located at slot.

_setImplementationSigs

function _setImplementationSigs(address implementation_, bytes4[] sigs_) internal

Sets new implementation and adds mapping from implementation to sigs and sig to implementation.

_removeImplementationSigs

function _removeImplementationSigs(address implementation_) internal

Removes implementation and the mappings corresponding to it.

_getImplementationSigs

function _getImplementationSigs(address implementation_) internal view returns (bytes4[])

Returns bytes4 sigs from implementation address. If implemenatation is not registered then returns empty array.

_getSigImplementation

function _getSigImplementation(bytes4 sig_) internal view returns (address implementation_)

Returns implementation address from bytes4 sig. If sig is not registered then returns address(0).

_getAdmin

function _getAdmin() internal view returns (address)

Returns the current admin.

_getDummyImplementation

function _getDummyImplementation() internal view returns (address)

Returns the current dummy-implementation.

_setAdmin

function _setAdmin(address newAdmin_) internal

Stores a new address in the EIP1967 admin slot.

_setDummyImplementation

function _setDummyImplementation(address newDummyImplementation_) internal

Stores a new address in the EIP1967 implementation slot.

AdminInternals

onlyAdmin

modifier onlyAdmin()

Only admin guard

constructor

constructor(address admin_, address dummyImplementation_) public

setAdmin

function setAdmin(address newAdmin_) external

Sets new admin.

setDummyImplementation

function setDummyImplementation(address newDummyImplementation_) external

Sets new dummy-implementation.

addImplementation

function addImplementation(address implementation_, bytes4[] sigs_) external

Adds new implementation address.

removeImplementation

function removeImplementation(address implementation_) external

Removes an existing implementation address.

Proxy

This abstract contract provides a fallback function that delegates all calls to another contract using the EVM. It implements the Instadapp infinite-proxy: https://github.com/Instadapp/infinite-proxy

constructor

constructor(address admin_, address dummyImplementation_) internal

getAdmin

function getAdmin() external view returns (address)

Returns admin's address.

getDummyImplementation

function getDummyImplementation() external view returns (address)

Returns dummy-implementations's address.

getImplementationSigs

function getImplementationSigs(address impl_) external view returns (bytes4[])

Returns bytes4 sigs from implementation address If not registered then returns empty array.

getSigsImplementation

function getSigsImplementation(bytes4 sig_) external view returns (address)

Returns implementation address from bytes4 sig. If sig is not registered then returns address(0).

fallback

fallback() external payable

Fallback function that delegates calls to the address returned by Implementations registry.

receive

receive() external payable