Skip to main content

OssifiableProxy

OssifiableProxy is an ERC-1967 proxy used for non-Aragon upgradeable contract deployments. Its admin can permanently disable upgrades by setting the proxy admin to the zero address.

There are several slightly different variants of the OssifiableProxy contract. They use different versions of the OpenZeppelin libraries, resulting in slightly different interfaces, but their core functionality remains the same. Every contract listed on this page is deployed behind one of the Lido variants described below; none of them use the vanilla OpenZeppelin ERC1967Proxy directly.

Proxy variants​

Core variant​

Defined in the core repository. Written in Solidity 0.8.9 on top of the OpenZeppelin v4.4 ERC1967Proxy. The upgrade-and-call function takes three arguments: proxy__upgradeToAndCall(address newImplementation_, bytes setupCalldata_, bool forceCall_).

Staking modules variant​

Defined in the staking-modules repository. Written in Solidity 0.8.33 on top of the OpenZeppelin v5 ERC1967Proxy. Following the OpenZeppelin v5 interface changes, the upgrade-and-call function takes two arguments — proxy__upgradeToAndCall(address newImplementation_, bytes setupCalldata_).

Core contracts​

All core protocol contracts are deployed behind the core variant:

Staking module contracts​

Community Staking Module​

The following contracts are deployed behind the staking modules variant:

Gates​

Curated Module v2​

All Curated Module v2 contracts, including the gates, are deployed behind the staking modules variant:

Gates​