Skip to main content

UpgradeableBeacon

OpenZeppelin UpgradeableBeacon used as the StakingVault beacon. It stores the current StakingVault implementation for all beacon proxies.

What is UpgradeableBeacon?​

UpgradeableBeacon is a beacon proxy controller:

  • holds the current implementation address
  • allows the Lido DAO to upgrade the implementation if vaults are not ossified
  • is referenced by all PinnedBeaconProxy vaults created by VaultFactory

Ownership and upgrades​

The beacon is owned by the Lido DAO (via the Agent/Aragon governance). This means:

  • Only Lido DAO governance can upgrade the StakingVault implementation
  • All beacon proxy vaults automatically use the new implementation after an upgrade
  • Upgrades affect all vaults simultaneously unless they have been ossified

Ossification​

Individual vaults can opt out of future upgrades by calling ossify() on their StakingVault. This "pins" the vault to its current implementation, making it immune to beacon upgrades. Ossification is:

  • Irreversible: Once ossified, a vault cannot be un-ossified
  • Only available after disconnect: Vaults must disconnect from VaultHub before ossifying
  • Owner-controlled: Only the vault owner can ossify their vault

View methods​

implementation()​

function implementation() public view returns (address)

Returns the current implementation address.

owner()​

function owner() public view returns (address)

Returns the beacon owner.

Methods​

upgradeTo(address newImplementation)​

function upgradeTo(address newImplementation) public onlyOwner

Upgrades the implementation used by the beacon.

transferOwnership(address newOwner)​

function transferOwnership(address newOwner) public onlyOwner

Transfers beacon ownership.

renounceOwnership()​

function renounceOwnership() public onlyOwner

Renounces ownership of the beacon.