Skip to content
2 changes: 1 addition & 1 deletion lib/eigenlayer-contracts
2 changes: 1 addition & 1 deletion script/AVSContractsDeploy.s.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
Expand Down
2 changes: 1 addition & 1 deletion script/DeploySharedContracts.s.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import "../src/OperatorStateRetriever.sol";

Expand Down
2 changes: 1 addition & 1 deletion script/utils/Utils.s.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import "forge-std/Script.sol";
import "forge-std/StdJson.sol";
Expand Down
2 changes: 1 addition & 1 deletion src/BLSSignatureChecker.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {IBLSSignatureChecker} from "./interfaces/IBLSSignatureChecker.sol";
import {IEORegistryCoordinator} from "./interfaces/IEORegistryCoordinator.sol";
Expand Down
2 changes: 1 addition & 1 deletion src/EOBLSApkRegistry.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

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

Expand Down
2 changes: 1 addition & 1 deletion src/EOBLSApkRegistryStorage.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {IEOBLSApkRegistry} from "./interfaces/IEOBLSApkRegistry.sol";
import {IEORegistryCoordinator} from "./interfaces/IEORegistryCoordinator.sol";
Expand Down
2 changes: 1 addition & 1 deletion src/EOIndexRegistry.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {EOIndexRegistryStorage} from "./EOIndexRegistryStorage.sol";
import {IEORegistryCoordinator} from "./interfaces/IEORegistryCoordinator.sol";
Expand Down
2 changes: 1 addition & 1 deletion src/EOIndexRegistryStorage.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {Initializable} from "@openzeppelin-upgrades/contracts/proxy/utils/Initializable.sol";

Expand Down
3 changes: 2 additions & 1 deletion src/EORegistryCoordinator.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {IPauserRegistry} from "eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol";
import {ISignatureUtils} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol";
Expand Down Expand Up @@ -367,6 +367,7 @@ contract EORegistryCoordinator is
function setChainManager(IEOChainManager newChainManager) external onlyOwner {
emit ChainManagerUpdated(address(chainManager), address(newChainManager));
chainManager = newChainManager;
stakeRegistry.setChainManager(newChainManager);
}

/**
Expand Down
2 changes: 1 addition & 1 deletion src/EORegistryCoordinatorStorage.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {IEOBLSApkRegistry} from "./interfaces/IEOBLSApkRegistry.sol";
import {IEOStakeRegistry} from "./interfaces/IEOStakeRegistry.sol";
Expand Down
2 changes: 1 addition & 1 deletion src/EOServiceManager.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {ServiceManagerBase, IAVSDirectory, IEORegistryCoordinator, IEOStakeRegistry} from "./ServiceManagerBase.sol";

Expand Down
22 changes: 19 additions & 3 deletions src/EOStakeRegistry.sol
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {IDelegationManager} from "eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol";

import {EOStakeRegistryStorage, IStrategy} from "./EOStakeRegistryStorage.sol";
import {EOStakeRegistryStorage, IStrategy, IEOChainManager} from "./EOStakeRegistryStorage.sol";

import {IEORegistryCoordinator} from "./interfaces/IEORegistryCoordinator.sol";

Expand Down Expand Up @@ -149,6 +149,7 @@ contract EOStakeRegistry is EOStakeRegistryStorage {
bytes calldata quorumNumbers
) external onlyEORegistryCoordinator returns (uint192) {
uint192 quorumsToRemove;
uint96[] memory newStakeWeights = new uint96[](IEORegistryCoordinator(registryCoordinator).quorumCount());

/**
* For each quorum, update the operator's stake and record the delta
Expand All @@ -170,6 +171,10 @@ contract EOStakeRegistry is EOStakeRegistryStorage {
if (!hasMinimumStake) {
stakeWeight = 0;
quorumsToRemove = uint192(quorumsToRemove.setBit(quorumNumber));
} else {
// If the quorum's stake should be updated,
// push the operator's new stake weight to the array
newStakeWeights[quorumNumber] = stakeWeight;
}

// Update the operator's stake and retrieve the delta
Expand All @@ -179,10 +184,12 @@ contract EOStakeRegistry is EOStakeRegistryStorage {
quorumNumber: quorumNumber,
newStake: stakeWeight
});

// Apply the delta to the quorum's total stake
_recordTotalStakeUpdate(quorumNumber, stakeDelta);
}
if (address(chainManager) != address(0)){
chainManager.updateOperator(operator, newStakeWeights);
}

return quorumsToRemove;
}
Expand All @@ -204,6 +211,15 @@ contract EOStakeRegistry is EOStakeRegistryStorage {
}));
}

/**
* @notice Sets the chainManager, which is used to comunicate with Eoracle's contracts
* @param newChainManager the new chainManager
* @dev only callable by the registry coordinator
*/
function setChainManager(IEOChainManager newChainManager) external onlyEORegistryCoordinator {
chainManager = newChainManager;
}

function setMinimumStakeForQuorum(
uint8 quorumNumber,
uint96 minimumStake
Expand Down
6 changes: 5 additions & 1 deletion src/EOStakeRegistryStorage.sol
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {IDelegationManager} from "eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol";
import {IStrategyManager, IStrategy} from "eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol";

import {IEORegistryCoordinator} from "./interfaces/IEORegistryCoordinator.sol";
import {IEOStakeRegistry} from "./interfaces/IEOStakeRegistry.sol";
import {IEOChainManager} from "./interfaces/IEOChainManager.sol";

/**
* @title Storage variables for the `EOStakeRegistry` contract.
Expand All @@ -24,6 +25,9 @@ abstract contract EOStakeRegistryStorage is IEOStakeRegistry {
/// @notice The address of the Delegation contract for EigenLayer.
IDelegationManager public immutable delegation;

/// @notice the Chain Manager contract which forwards calls onto EOracle's contracts
IEOChainManager public chainManager;

/// @notice the coordinator contract that this registry is associated with
address public immutable registryCoordinator;

Expand Down
2 changes: 1 addition & 1 deletion src/OperatorStateRetriever.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {IEORegistryCoordinator} from "./interfaces/IEORegistryCoordinator.sol";
import {IEOBLSApkRegistry} from "./interfaces/IEOBLSApkRegistry.sol";
Expand Down
2 changes: 1 addition & 1 deletion src/ServiceManagerBase.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {OwnableUpgradeable} from "@openzeppelin-upgrades/contracts/access/OwnableUpgradeable.sol";

Expand Down
2 changes: 1 addition & 1 deletion src/interfaces/IBLSSignatureChecker.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {IEORegistryCoordinator} from "./IEORegistryCoordinator.sol";
import {IEOBLSApkRegistry} from "./IEOBLSApkRegistry.sol";
Expand Down
2 changes: 1 addition & 1 deletion src/interfaces/IEOBLSApkRegistry.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

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

Expand Down
3 changes: 2 additions & 1 deletion src/interfaces/IEOChainManager.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// SPDX-License-Identifier: MIT
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

interface IEOChainManager {
function registerChainValidator(address operator, uint96[] calldata stakes, uint256[2] memory chainValidatorSignature, uint256[4] memory publicG2Key) external;
function registerDataValidator(address operator, uint96[] calldata stakes) external;
function deregisterValidator(address operator) external;
function updateOperator(address operator, uint96[] calldata newStakeWeights) external;
}
2 changes: 1 addition & 1 deletion src/interfaces/IEOIndexRegistry.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

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

Expand Down
10 changes: 9 additions & 1 deletion src/interfaces/IEORegistryCoordinator.sol
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {IEOBLSApkRegistry} from "./IEOBLSApkRegistry.sol";
import {IEOStakeRegistry} from "./IEOStakeRegistry.sol";
import {IEOIndexRegistry} from "./IEOIndexRegistry.sol";
import {IEOChainManager} from "./IEOChainManager.sol";
import {BN254} from "../libraries/BN254.sol";

/**
Expand Down Expand Up @@ -102,6 +103,13 @@ interface IEORegistryCoordinator {
bytes calldata quorumNumbers
) external;

/**
* @notice Sets the chainManager, which is used to register validators on the EOchain
* @param newChainManager the new chainManager
* @dev only callable by the owner
*/
function setChainManager(IEOChainManager newChainManager) external;

/// @notice Returns the number of quorums the registry coordinator has created
function quorumCount() external view returns (uint8);

Expand Down
10 changes: 9 additions & 1 deletion src/interfaces/IEOStakeRegistry.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {IDelegationManager} from "eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol";
import {IStrategy} from "eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol";
import {IEOChainManager} from "./IEOChainManager.sol";

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

Expand Down Expand Up @@ -91,6 +92,13 @@ interface IEOStakeRegistry is IRegistry {
*/
function initializeQuorum(uint8 quorumNumber, uint96 minimumStake, StrategyParams[] memory strategyParams) external;

/**
* @notice Sets the chainManager, which is used to comunicate with Eoracle's contracts
* @param newChainManager the new chainManager
* @dev only callable by the registry coordinator
*/
function setChainManager(IEOChainManager newChainManager) external;

/// @notice Adds new strategies and the associated multipliers to the @param quorumNumber.
function addStrategies(
uint8 quorumNumber,
Expand Down
2 changes: 1 addition & 1 deletion src/interfaces/ISocketUpdater.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

/**
* @title Interface for an `ISocketUpdater` where operators can update their sockets.
Expand Down
2 changes: 1 addition & 1 deletion src/libraries/BN254.sol
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

// The remainder of the code in this library is written by LayrLabs Inc. and is also under an MIT license

pragma solidity =0.8.12;
pragma solidity ^0.8.12;

/**
* @title Library for operations on the BN254 elliptic curve.
Expand Down
2 changes: 1 addition & 1 deletion src/libraries/BitmapUtils.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: BUSL-1.1

pragma solidity =0.8.12;
pragma solidity ^0.8.12;

/**
* @title Library for Bitmap utilities such as converting between an array of bytes and a bitmap and finding the number of 1s in a bitmap.
Expand Down
2 changes: 1 addition & 1 deletion test/events/IEOBLSApkRegistryEvents.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {BN254} from "../../src/libraries/BN254.sol";

Expand Down
2 changes: 1 addition & 1 deletion test/events/IEOIndexRegistryEvents.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

interface IEOIndexRegistryEvents {
// emitted when an operator's index in the ordered operator list for the quorum with number `quorumNumber` is updated
Expand Down
2 changes: 1 addition & 1 deletion test/events/IEOStakeRegistryEvents.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {IEOStakeRegistry, IStrategy} from "src/interfaces/IEOStakeRegistry.sol";

Expand Down
2 changes: 1 addition & 1 deletion test/ffi/BLSPubKeyCompendiumFFI.t.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import "../../src/EOBLSApkRegistry.sol";
import "../ffi/util/G2Operations.sol";
Expand Down
2 changes: 1 addition & 1 deletion test/ffi/BLSSignatureCheckerFFI.t.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import {G2Operations} from "../ffi/util/G2Operations.sol";
import {MockAVSDeployer} from "../utils/MockAVSDeployer.sol";
Expand Down
2 changes: 1 addition & 1 deletion test/ffi/UpdateOperators.t.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import "test/integration/User.t.sol";

Expand Down
2 changes: 1 addition & 1 deletion test/ffi/util/G2Operations.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import "forge-std/Test.sol";
import "openzeppelin-contracts/contracts/utils/Strings.sol";
Expand Down
2 changes: 1 addition & 1 deletion test/harnesses/BitmapUtilsWrapper.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import "../../src/libraries/BitmapUtils.sol";

Expand Down
2 changes: 1 addition & 1 deletion test/harnesses/EOBLSApkRegistryHarness.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import "../../src/EOBLSApkRegistry.sol";

Expand Down
2 changes: 1 addition & 1 deletion test/harnesses/EORegistryCoordinatorHarness.t.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import "../../src/EORegistryCoordinator.sol";

Expand Down
2 changes: 1 addition & 1 deletion test/harnesses/EOStakeRegistryHarness.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import "../../src/EOStakeRegistry.sol";

Expand Down
2 changes: 1 addition & 1 deletion test/integration/CoreRegistration.t.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import "../utils/MockAVSDeployer.sol";
import { AVSDirectory } from "eigenlayer-contracts/src/contracts/core/AVSDirectory.sol";
Expand Down
2 changes: 1 addition & 1 deletion test/integration/IntegrationBase.t.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import "forge-std/Test.sol";

Expand Down
2 changes: 1 addition & 1 deletion test/integration/IntegrationChecks.t.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import "test/integration/IntegrationBase.t.sol";
import "test/integration/User.t.sol";
Expand Down
2 changes: 1 addition & 1 deletion test/integration/IntegrationConfig.t.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.12;
pragma solidity ^0.8.12;

import "forge-std/Test.sol";

Expand Down
Loading