Skip to content
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
2 changes: 1 addition & 1 deletion lib/eigenlayer-contracts
Submodule eigenlayer-contracts updated 49 files
+24 −7 docs/multichain/destination/CertificateVerifier.md
+37 −5 docs/multichain/destination/OperatorTableUpdater.md
+68 −11 docs/multichain/source/CrossChainRegistry.md
+50 −6 docs/permissions/KeyRegistrar.md
+1 −1 foundry.toml
+126 −2 pkg/bindings/BN254CertificateVerifier/binding.go
+64 −2 pkg/bindings/CrossChainRegistry/binding.go
+63 −1 pkg/bindings/CrossChainRegistryStorage/binding.go
+2 −2 pkg/bindings/ECDSACertificateVerifier/binding.go
+1 −1 pkg/bindings/ECDSACertificateVerifierStorage/binding.go
+63 −1 pkg/bindings/ICrossChainRegistry/binding.go
+1 −1 pkg/bindings/IECDSACertificateVerifier/binding.go
+1 −1 pkg/bindings/IReleaseManager/binding.go
+1 −1 pkg/bindings/KeyRegistrar/binding.go
+317 −0 pkg/bindings/LeafCalculatorMixin/binding.go
+126 −2 pkg/bindings/OperatorTableUpdater/binding.go
+2 −2 pkg/bindings/ReleaseManager/binding.go
+1 −1 pkg/bindings/ReleaseManagerStorage/binding.go
+1 −1 pkg/bindings/TaskMailbox/binding.go
+52 −0 script/operations/README.md
+144 −0 script/operations/update-generator/1-updateGenerator.s.sol
+8 −0 script/operations/update-generator/README.md
+11 −0 script/operations/update-generator/upgrade.json
+1 −1 script/releases/README.md
+5 −4 script/releases/v1.7.0-multichain/configs/testnet.toml
+27 −0 src/contracts/interfaces/IBN254CertificateVerifier.sol
+16 −0 src/contracts/interfaces/IBaseCertificateVerifier.sol
+125 −7 src/contracts/interfaces/ICrossChainRegistry.sol
+46 −10 src/contracts/interfaces/IECDSACertificateVerifier.sol
+62 −7 src/contracts/interfaces/IKeyRegistrar.sol
+1 −1 src/contracts/interfaces/IOperatorTableCalculator.sol
+64 −0 src/contracts/interfaces/IOperatorTableUpdater.sol
+79 −0 src/contracts/mixins/LeafCalculatorMixin.sol
+8 −2 src/contracts/multichain/BN254CertificateVerifier.sol
+2 −0 src/contracts/multichain/BN254CertificateVerifierStorage.sol
+41 −5 src/contracts/multichain/CrossChainRegistry.sol
+1 −1 src/contracts/multichain/ECDSACertificateVerifier.sol
+13 −1 src/contracts/multichain/OperatorTableUpdater.sol
+2 −0 src/contracts/multichain/OperatorTableUpdaterStorage.sol
+6 −9 src/test/integration/MultichainIntegrationBase.t.sol
+25 −42 src/test/integration/tests/Multichain_Full_Flow.t.sol
+2 −2 src/test/integration/tests/Multichain_Generation_Reservation_Removal.t.sol
+221 −313 src/test/integration/tests/Multichain_Timing_Tests.t.sol
+10 −0 src/test/mocks/BN254CertificateVerifierMock.sol
+9 −0 src/test/mocks/ECDSACertificateVerifierMock.sol
+4 −4 src/test/unit/BN254CertificateVerifierUnit.t.sol
+231 −2 src/test/unit/CrossChainRegistryUnit.t.sol
+1 −1 src/test/unit/ECDSACertificateVerifierUnit.t.sol
+69 −7 src/test/unit/OperatorTableUpdaterUnit.t.sol
8 changes: 6 additions & 2 deletions src/middlewareV2/tableCalculator/BN254TableCalculatorBase.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import {IOperatorTableCalculator} from
import {IKeyRegistrar} from "eigenlayer-contracts/src/contracts/interfaces/IKeyRegistrar.sol";
import {Merkle} from "eigenlayer-contracts/src/contracts/libraries/Merkle.sol";
import {BN254} from "eigenlayer-contracts/src/contracts/libraries/BN254.sol";
import {LeafCalculatorMixin} from
"eigenlayer-contracts/src/contracts/mixins/LeafCalculatorMixin.sol";
import {IBN254TableCalculator} from "../../interfaces/IBN254TableCalculator.sol";

/**
Expand All @@ -15,7 +17,7 @@ import {IBN254TableCalculator} from "../../interfaces/IBN254TableCalculator.sol"
* @dev This contract contains all the core logic for operator table calculations,
* with weight calculation left to be implemented by derived contracts
*/
abstract contract BN254TableCalculatorBase is IBN254TableCalculator {
abstract contract BN254TableCalculatorBase is IBN254TableCalculator, LeafCalculatorMixin {
using Merkle for bytes32[];
using BN254 for BN254.G1Point;

Expand Down Expand Up @@ -160,8 +162,10 @@ abstract contract BN254TableCalculatorBase is IBN254TableCalculator {
totalWeights[j] += weights[i][j];
}
(BN254.G1Point memory g1Point,) = keyRegistrar.getBN254Key(operatorSet, operators[i]);

// Use `LeafCalculatorMixin` to calculate the leaf hash for the operator info
operatorInfoLeaves[operatorCount] =
keccak256(abi.encode(BN254OperatorInfo({pubkey: g1Point, weights: weights[i]})));
calculateOperatorInfoLeaf(BN254OperatorInfo({pubkey: g1Point, weights: weights[i]}));

// Add the operator's G1 point to the aggregate pubkey
aggregatePubkey = aggregatePubkey.plus(g1Point);
Expand Down
11 changes: 6 additions & 5 deletions test/unit/middlewareV2/BN254TableCalculatorBaseUnit.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ import {BN254TableCalculatorBase} from
import {MockEigenLayerDeployer} from "./MockDeployer.sol";
import {Random} from "test/utils/Random.sol";
import {Merkle} from "eigenlayer-contracts/src/contracts/libraries/Merkle.sol";
import {LeafCalculatorMixin} from
"eigenlayer-contracts/src/contracts/mixins/LeafCalculatorMixin.sol";

// Mock implementation for testing abstract contract
contract BN254TableCalculatorBaseHarness is BN254TableCalculatorBase {
Expand Down Expand Up @@ -61,7 +63,8 @@ contract BN254TableCalculatorBaseHarness is BN254TableCalculatorBase {
contract BN254TableCalculatorBaseUnitTests is
MockEigenLayerDeployer,
IOperatorTableCalculatorTypes,
IKeyRegistrarTypes
IKeyRegistrarTypes,
LeafCalculatorMixin
{
using BN254 for BN254.G1Point;
using OperatorSetLib for OperatorSet;
Expand Down Expand Up @@ -216,10 +219,8 @@ contract BN254TableCalculatorBaseUnitTests is
BN254.G1Point memory pubkey,
uint256[] memory weights
) internal pure returns (bytes32) {
return keccak256(
abi.encode(
IOperatorTableCalculatorTypes.BN254OperatorInfo({pubkey: pubkey, weights: weights})
)
return calculateOperatorInfoLeaf(
IOperatorTableCalculatorTypes.BN254OperatorInfo({pubkey: pubkey, weights: weights})
);
}
}
Expand Down