8000 feat: move Accounting to 0.8.9 and refactor interfaces by arwer13 · Pull Request #1182 · lidofinance/core · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

feat: move Accounting to 0.8.9 and refactor interfaces #1182

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Jun 17, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions contracts/0.8.25/ValidatorExitDelayVerifier.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@

pragma solidity 0.8.25;

import {BeaconBlockHeader, Validator} from "../common/lib/BeaconTypes.sol";
import {GIndex} from "../common/lib/GIndex.sol";
import {SSZ} from "../common/lib/SSZ.sol";
import {ILidoLocator} from "../common/interfaces/ILidoLocator.sol";
import {IValidatorsExitBus} from "./interfaces/IValidatorsExitBus.sol";
import {IStakingRouter} from "./interfaces/IStakingRouter.sol";
import {IStakingRouter} from "contracts/common/interfaces/IStakingRouter.sol";
import {BeaconBlockHeader, Validator} from "contracts/common/lib/BeaconTypes.sol";
import {GIndex} from "contracts/common/lib/GIndex.sol";
import {SSZ} from "contracts/common/lib/SSZ.sol";
import {ILidoLocator} from "contracts/common/interfaces/ILidoLocator.sol";
import {IValidatorsExitBus} from "contracts/common/interfaces/IValidatorsExitBus.sol";

struct ExitRequestData {
bytes data;
Expand Down
18 changes: 0 additions & 18 deletions contracts/0.8.25/interfaces/IPostTokenRebaseReceiver.sol

This file was deleted.

3 changes: 2 additions & 1 deletion contracts/0.8.25/utils/PausableUntilWithRoles.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
// See contracts/COMPILERS.md
pragma solidity 0.8.25;

import {PausableUntil} from "contracts/common/utils/PausableUntil.sol";
import {AccessControlEnumerableUpgradeable} from "contracts/openzeppelin/5.2/upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol";

import {PausableUntil} from "contracts/common/utils/PausableUntil.sol";

/**
* @title PausableUntilWithRoles
* @notice a `PausableUntil` implementation using OpenZeppelin's `AccessControlEnumerableUpgradeable`
Expand Down
3 changes: 2 additions & 1 deletion contracts/0.8.25/vaults/LazyOracle.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@
import {Math256} from "contracts/common/lib/Math256.sol";
import {ILazyOracle} from "contracts/common/interfaces/ILazyOracle.sol";
import {ILidoLocator} from "contracts/common/interfaces/ILidoLocator.sol";
import {ILido} from "contracts/common/interfaces/ILido.sol";
import {IHashConsensus} from "contracts/common/interfaces/IHashConsensus.sol";

Check warning on line 15 in contracts/0.8.25/vaults/LazyOracle.sol

View workflow job for this annotation

GitHub Actions / Solhint

imported name IHashConsensus is not used

import {VaultHub} from "./VaultHub.sol";
import {OperatorGrid} from "./OperatorGrid.sol";

import {IStakingVault} from "./interfaces/IStakingVault.sol";
import {ILido} from "../interfaces/ILido.sol";

contract LazyOracle is ILazyOracle, AccessControlEnumerableUpgradeable {
/// @custom:storage-location erc7201:LazyOracle
Expand Down
2 changes: 1 addition & 1 deletion contracts/0.8.25/vaults/StakingVault.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ pragma solidity 0.8.25;
import {OwnableUpgradeable} from "contracts/openzeppelin/5.2/upgradeable/access/OwnableUpgradeable.sol";
import {Ownable2StepUpgradeable} from "contracts/openzeppelin/5.2/upgradeable/access/Ownable2StepUpgradeable.sol";
import {TriggerableWithdrawals} from "contracts/common/lib/TriggerableWithdrawals.sol";
import {IDepositContract} from "contracts/common/interfaces/IDepositContract.sol";

import {PinnedBeaconUtils} from "./lib/PinnedBeaconUtils.sol";
import {IDepositContract} from "../interfaces/IDepositContract.sol";
import {IStakingVault} from "./interfaces/IStakingVault.sol";

/**
Expand Down
5 changes: 3 additions & 2 deletions contracts/0.8.25/vaults/VaultFactory.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@ pragma solidity 0.8.25;
import {Clones} from "@openzeppelin/contracts-v5.2/proxy/Clones.sol";
import {PinnedBeaconProxy} from "./PinnedBeaconProxy.sol";

import {ILidoLocator} from "contracts/common/interfaces/ILidoLocator.sol";

import {VaultHub} from "./VaultHub.sol";
import {Permissions} from "./dashboard/Permissions.sol";
import {ILidoLocator} from "contracts/common/interfaces/ILidoLocator.sol";
import {IStakingVault} from "./interfaces/IStakingVault.sol";
import {Dashboard} from "./dashboard/Dashboard.sol";
import {IStakingVault} from "./interfaces/IStakingVault.sol";

/**
* @title VaultFactory
Expand Down
4 changes: 2 additions & 2 deletions contracts/0.8.25/vaults/VaultHub.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ pragma solidity 0.8.25;

import {Math256} from "contracts/common/lib/Math256.sol";
import {ILidoLocator} from "contracts/common/interfaces/ILidoLocator.sol";
import {ILido} from "contracts/common/interfaces/ILido.sol";
import {IHashConsensus} from "contracts/common/interfaces/IHashConsensus.sol";

import {IStakingVault} from "./interfaces/IStakingVault.sol";
import {ILido} from "../interfaces/ILido.sol";
import {IPredepositGuarantee} from "./interfaces/IPredepositGuarantee.sol";
import {IHashConsensus} from "./interfaces/IHashConsensus.sol";

import {OperatorGrid} from "./OperatorGrid.sol";
import {LazyOracle} from "./LazyOracle.sol";
Expand Down
7 changes: 3 additions & 4 deletions contracts/0.8.25/vaults/dashboard/Dashboard.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,12 @@
pragma solidity 0.8.25;

import {SafeERC20} from "@openzeppelin/contracts-v5.2/token/ERC20/utils/SafeERC20.sol";
import {Math256} from "contracts/common/lib/Math256.sol";
import {IERC20} from "@openzeppelin/contracts-v5.2/token/ERC20/IERC20.sol";
import {IERC721} from "@openzeppelin/contracts-v5.2/token/ERC721/IERC721.sol";

import {IDepositContract} from "contracts/0.8.25/interfaces/IDepositContract.sol";

import {ILido as IStETH} from "contracts/0.8.25/interfaces/ILido.sol";
import {Math256} from "contracts/common/lib/Math256.sol";
import {ILido as IStETH} from "contracts/common/interfaces/ILido.sol";
import {IDepositContract} from "contracts/common/interfaces/IDepositContract.sol";

import {IStakingVault} from "../interfaces/IStakingVault.sol";
import {IPredepositGuarantee} from "../interfaces/IPredepositGuarantee.sol";
Expand Down
2 changes: 1 addition & 1 deletion contracts/0.8.25/vaults/dashboard/Permissions.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ pragma solidity 0.8.25;

import {Clones} from "@openzeppelin/contracts-v5.2/proxy/Clones.sol";
import {AccessControlConfirmable} from "contracts/0.8.25/utils/AccessControlConfirmable.sol";
import {ILidoLocator} from "contracts/common/interfaces/ILidoLocator.sol";

import {IStakingVault} from "../interfaces/IStakingVault.sol";
import {IPredepositGuarantee} from "../interfaces/IPredepositGuarantee.sol";
import {ILidoLocator} from "contracts/common/interfaces/ILidoLocator.sol";
import {OperatorGrid} from "../OperatorGrid.sol";
import {VaultHub} from "../VaultHub.sol";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
// SPDX-License-Identifier: GPL-3.0

// See contracts/COMPILERS.md
pragma solidity 0.8.25;
// solhint-disable-next-line lido/fixed-compiler-version
pragma solidity >=0.8.0;

import {IStakingVault} from "./IStakingVault.sol";

Expand Down
5 changes: 3 additions & 2 deletions contracts/0.8.25/vaults/interfaces/IStakingVault.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
// SPDX-License-Identifier: GPL-3.0

// See contracts/COMPILERS.md
pragma solidity 0.8.25;
// solhint-disable-next-line lido/fixed-compiler-version
pragma solidity >=0.8.0;

import {IDepositContract} from "contracts/0.8.25/interfaces/IDepositContract.sol";
import {IDepositContract} from "contracts/common/interfaces/IDepositContract.sol";

/**
* @title IStakingVault
Expand Down
2 changes: 1 addition & 1 deletion contracts/0.8.25/vaults/lib/RefSlotCache.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
// See contracts/COMPILERS.md
pragma solidity 0.8.25;

import {IHashConsensus} from "../interfaces/IHashConsensus.sol";
import {IHashConsensus} from "contracts/common/interfaces/IHashConsensus.sol";

library RefSlotCache {
struct Int112WithRefSlotCache {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,20 @@
// SPDX-License-Identifier: GPL-3.0

// See contracts/COMPILERS.md
pragma solidity 0.8.25;
pragma solidity 0.8.9;

import {VaultHub} from "./vaults/VaultHub.sol";
import {ILidoLocator} from "contracts/common/interfaces/ILidoLocator.sol";
import {IBurner} from "contracts/common/interfaces/IBurner.sol";
import {IOracleReportSanityChecker} from "contracts/common/interfaces/IOracleReportSanityChecker.sol";
import {ILido} from "contracts/common/interfaces/ILido.sol";
import {ReportValues} from "contracts/common/interfaces/ReportValues.sol";
import {IVaultHub} from "contracts/common/interfaces/IVaultHub.sol";

import {ILidoLocator} from "../common/interfaces/ILidoLocator.sol";
import {IBurner} from "../common/interfaces/IBurner.sol";
import {IPostTokenRebaseReceiver} from "./interfaces/IPostTokenRebaseReceiver.sol";
import {IStakingRouter} from "./interfaces/IStakingRouter.sol";
import {IOracleReportSanityChecker} from "./interfaces/IOracleReportSanityChecker.sol";
import {IWithdrawalQueue} from "./interfaces/IWithdrawalQueue.sol";
import {ILido} from "./interfaces/ILido.sol";
import {ReportValues} from "contracts/common/interfaces/ReportValues.sol";

import {WithdrawalQueue} from "./WithdrawalQueue.sol";
import {StakingRouter} from "./StakingRouter.sol";


/// @title Lido Accounting contract
/// @author folkyatina
Expand All @@ -22,13 +24,13 @@ import {ReportValues} from "contracts/common/interfaces/ReportValues.sol";
/// and distributing calculated values to relevant parts of the protocol
contract Accounting {
struct Contracts {
address accountingOracleAddress;
address accountingOracle;
IOracleReportSanityChecker oracleReportSanityChecker;
IBurner burner;
IWithdrawalQueue withdrawalQueue;
WithdrawalQueue withdrawalQueue;
IPostTokenRebaseReceiver postTokenRebaseReceiver;
IStakingRouter stakingRouter;
VaultHub vaultHub;
StakingRouter stakingRouter;
IVaultHub vaultHub;
}

struct PreReportState {
Expand Down Expand Up @@ -121,7 +123,7 @@ contract Accounting {
/// @dev periodically called by the AccountingOracle contract
function handleOracleReport(ReportValues calldata _report) external {
Contracts memory contracts = _loadOracleReportContracts();
if (msg.sender != contracts.accountingOracleAddress) revert NotAuthorized("handleOracleReport", msg.sender);
if (msg.sender != contracts.accountingOracle) revert NotAuthorized("handleOracleReport", msg.sender);

(
PreReportState memory pre,
Expand Down Expand Up @@ -385,7 +387,7 @@ contract Accounting {

/// @dev mints protocol fees to the treasury and node operators
function _distributeFee(
IStakingRouter _stakingRouter,
StakingRouter _stakingRouter,
StakingRewardsDistribution memory _rewardsDistribution,
uint256 _sharesToMintAsFees
) internal {
Expand Down Expand Up @@ -430,7 +432,7 @@ contract Accounting {
/// @dev loads the required contracts from the LidoLocator to the struct in the memory
function _loadOracleReportContracts() internal view returns (Contracts memory) {
(
address accountingOracleAddress,
address accountingOracle,
address oracleReportSanityChecker,
address burner,
address withdrawalQueue,
Expand All @@ -441,19 +443,19 @@ contract Accounting {

return
Contracts(
accountingOracleAddress,
accountingOracle,
IOracleReportSanityChecker(oracleReportSanityChecker),
IBurner(burner),
IWithdrawalQueue(withdrawalQueue),
WithdrawalQueue(withdrawalQueue),
IPostTokenRebaseReceiver(postTokenRebaseReceiver),
IStakingRouter(stakingRouter),
VaultHub(payable(vaultHub))
StakingRouter(payable(stakingRouter)),
IVaultHub(payable(vaultHub))
);
}

/// @dev loads the staking rewards distribution to the struct in the memory
function _getStakingRewardsDistribution(
IStakingRouter _stakingRouter
StakingRouter _stakingRouter
) internal view returns (StakingRewardsDistribution memory ret) {
(ret.recipients, ret.moduleIds, ret.modulesFees, ret.totalFee, ret.precisionPoints) = _stakingRouter
.getStakingRewardsDistribution();
Expand Down
5 changes: 3 additions & 2 deletions contracts/0.8.9/Burner.sol
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,12 @@ import {IERC721} from "@openzeppelin/contracts-v4.4/token/ERC721/IERC721.sol";
import {SafeERC20} from "@openzeppelin/contracts-v4.4/token/ERC20/utils/SafeERC20.sol";
import {Math} from "@openzeppelin/contracts-v4.4/utils/math/Math.sol";

import {IBurner} from "contracts/common/interfaces/IBurner.sol";
import {ILidoLocator} from "contracts/common/interfaces/ILidoLocator.sol";

import {AccessControlEnumerable} from "./utils/access/AccessControlEnumerable.sol";
import {Versioned} from "./utils/Versioned.sol";

import {IBurner} from "../common/interfaces/IBurner.sol";
import {ILidoLocator} from "../common/interfaces/ILidoLocator.sol";

/**
* @title Interface defining Lido contract
Expand Down
9 changes: 5 additions & 4 deletions contracts/0.8.9/sanity_checks/OracleReportSanityChecker.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ pragma solidity 0.8.9;

import {SafeCast} from "@openzeppelin/contracts-v4.4/utils/math/SafeCast.sol";

import {Math256} from "../../common/lib/Math256.sol";
import {Math256} from "contracts/common/lib/Math256.sol";
import {AccessControlEnumerable} from "../utils/access/AccessControlEnumerable.sol";
import {PositiveTokenRebaseLimiter, TokenRebaseLimiterData} from "../lib/PositiveTokenRebaseLimiter.sol";
import {ILidoLocator} from "../../common/interfaces/ILidoLocator.sol";
import {IBurner} from "../../common/interfaces/IBurner.sol";
import {StakingRouter} from "../../0.8.9/StakingRouter.sol";
import {ILidoLocator} from "contracts/common/interfaces/ILidoLocator.sol";
import {IBurner} from "contracts/common/interfaces/IBurner.sol";

import {StakingRouter} from "../StakingRouter.sol";
import {ISecondOpinionOracle} from "../interfaces/ISecondOpinionOracle.sol";

interface IWithdrawalQueue {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
// SPDX-License-Identifier: GPL-3.0

// See contracts/COMPILERS.md
pragma solidity 0.8.25;
// solhint-disable-next-line lido/fixed-compiler-version
pragma solidity >=0.5.0;

interface IDepositContract {
function get_deposit_root() external view returns (bytes32 rootHash);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
// SPDX-FileCopyrightText: 2025 Lido <info@lido.fi>
// SPDX-License-Identifier: GPL-3.0

pragma solidity 0.8.25;
// See contracts/COMPILERS.md
// solhint-disable-next-line lido/fixed-compiler-version
pragma solidity >=0.5.0;


interface IHashConsensus {
function getIsMember(address addr) external view returns (bool);
Expand All @@ -20,4 +23,4 @@ interface IHashConsensus {
function getFrameConfig() external view returns (uint256 initialEpoch, uint256 epochsPerFrame);

function getInitialRefSlot() external view returns (uint256);
}
}
2 changes: 1 addition & 1 deletion contracts/common/interfaces/ILazyOracle.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

// See contracts/COMPILERS.md
// solhint-disable-next-line lido/fixed-compiler-version
pragma solidity ^0.8.9;
pragma solidity >=0.5.0;

/**
* Interface to connect AccountingOracle with LazyOracle and force type consistency
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@
// SPDX-License-Identifier: GPL-3.0

// See contracts/COMPILERS.md
pragma solidity 0.8.25;
// solhint-disable-next-line lido/fixed-compiler-version
pragma solidity >=0.8.0;

import {IERC20} from "@openzeppelin/contracts-v4.4/token/ERC20/IERC20.sol";

import {IERC20} from "@openzeppelin/contracts-v5.2/token/ERC20/IERC20.sol";
import {IERC20Permit} from "@openzeppelin/contracts-v5.2/token/ERC20/extensions/IERC20Permit.sol";
import {IVersioned} from "contracts/common/interfaces/IVersioned.sol";

interface ILido is IERC20, IERC20Permit, IVersioned {
interface ILido is IERC20, IVersioned {
function sharesOf(address) external view returns (uint256);

function getSharesByPooledEth(uint256) external view returns (uint256);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
// SPDX-License-Identifier: GPL-3.0

// See contracts/COMPILERS.md
pragma solidity 0.8.25;
// solhint-disable-next-line lido/fixed-compiler-version
pragma solidity >=0.4.24;

interface IOracleReportSanityChecker {
function smoothenTokenRebase(
Expand Down
2 changes: 1 addition & 1 deletion contracts/common/interfaces/IOssifiableProxy.sol
17AE
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

// See contracts/COMPILERS.md
// solhint-disable-next-line lido/fixed-compiler-version
pragma solidity >=0.4.24 <0.9.0;
pragma solidity >=0.4.24;

interface IOssifiableProxy {
function proxy__upgradeTo(address newImplementation) external;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// SPDX-FileCopyrightText: 2024 Lido <info@lido.fi>
// SPDX-FileCopyrightText: 2025 Lido <info@lido.fi>
// SPDX-License-Identifier: GPL-3.0

// See contracts/COMPILERS.md
pragma solidity 0.8.25;
// solhint-disable-next-line lido/fixed-compiler-version
pragma solidity >=0.5.0;

interface IStakingRouter {
function getStakingRewardsDistribution()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
// SPDX-License-Identifier: GPL-3.0

// See contracts/COMPILERS.md
pragma solidity 0.8.25;
// solhint-disable-next-line lido/fixed-compiler-version
pragma solidity >=0.5.0;

interface IValidatorsExitBus {
function getDeliveryTimestamp(bytes32 exitRequestsHash) external view returns (uint256 timestamp);
Expand Down
Loading
Loading
0