Git Source

Author: Lens Protocol, inspired by Aave's implementation, which is in turn inspired by OpenZeppelin's Initializable contract

Helper contract to implement initializer functions. To use it, replace the constructor with a function that has the initializer modifier. WARNING: Unlike constructors, initializer functions must be manually invoked. This applies both to deploying an Initializable contract, as well as extending an Initializable contract via inheritance. WARNING: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or ensure that all initializers are idempotent, because this is not dealt with automatically as with constructors. This is slightly modified from Aave's version.

State Variables


address private immutable originalImpl;



Modifier to use in the initializer function of a contract.

modifier initializer();




returns the revision number of the contract Needs to be defined in the inherited class as a constant.

function getRevision() internal pure virtual returns (uint256);