Skip to content

Commit

Permalink
Add l2 validator
Browse files Browse the repository at this point in the history
  • Loading branch information
gianbelinche committed Dec 30, 2024
1 parent 1a466cd commit d62bd27
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 5 deletions.
15 changes: 11 additions & 4 deletions l1-contracts/deploy-scripts/DeployL1.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,15 @@ contract DeployL1Script is Script, DeployUtils {
);
}

function getEigenDAL2ValidatorAddress() internal returns (address) {
return
Utils.getL2AddressViaCreate2Factory(
bytes32(0),
L2ContractHelper.hashL2Bytecode(L2ContractsBytecodesLib.readEigenDAL2ValidatorBytecode()),
hex""
);
}

function deployDAValidators() internal {
vm.broadcast(msg.sender);
address rollupDAManager = address(new RollupDAManager());
Expand Down Expand Up @@ -203,10 +212,7 @@ contract DeployL1Script is Script, DeployUtils {
}

if (config.contracts.eigenDAL1Validator == address(0)) {
addresses.daAddresses.eigenDAL1Validator = deployViaCreate2(
Utils.readEigenDAL1ValidatorBytecode(),
""
);
addresses.daAddresses.eigenDAL1Validator = deployViaCreate2(Utils.readEigenDAL1ValidatorBytecode(), "");
console.log("EigenDAL1Validator deployed at:", addresses.daAddresses.eigenDAL1Validator);
} else {
addresses.daAddresses.eigenDAL1Validator = config.contracts.eigenDAL1Validator;
Expand Down Expand Up @@ -740,6 +746,7 @@ contract DeployL1Script is Script, DeployUtils {
vm.serializeAddress("root", "expected_rollup_l2_da_validator_addr", getRollupL2ValidatorAddress());
vm.serializeAddress("root", "expected_no_da_validium_l2_validator_addr", getNoDAValidiumL2ValidatorAddress());
vm.serializeAddress("root", "expected_avail_l2_da_validator_addr", getAvailL2ValidatorAddress());
vm.serializeAddress("root", "expected_eigenda_l2_validator_addr", getEigenDAL2ValidatorAddress());
string memory toml = vm.serializeAddress("root", "owner_address", config.ownerAddress);

vm.writeToml(toml, outputPath);
Expand Down
2 changes: 1 addition & 1 deletion l1-contracts/deploy-scripts/DeployL2Contracts.sol
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ contract DeployL2Script is Script {
} else if (config.validatorType == DAValidatorType.Avail) {
bytecode = L2ContractsBytecodesLib.readAvailL2DAValidatorBytecode();
} else if (config.validatorType == DAValidatorType.EigenDA) {
bytecode = L2ContractsBytecodesLib.readNoDAL2DAValidatorBytecode(); // TODO: update to EigenDA
bytecode = L2ContractsBytecodesLib.readEigenDAL2ValidatorBytecode();
} else {
revert("Invalid DA validator type");
}
Expand Down
6 changes: 6 additions & 0 deletions l1-contracts/deploy-scripts/L2ContractsBytecodesLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,12 @@ library L2ContractsBytecodesLib {
return Utils.readZKFoundryBytecodeL2("AvailL2DAValidator.sol", "AvailL2DAValidator");
}

/// @notice Reads the bytecode of the ValidiumL2DAValidator contract for EigenDA.
/// @return The bytecode of the ValidiumL2DAValidator contract.
function readEigenDAL2ValidatorBytecode() internal view returns (bytes memory) {
return Utils.readZKFoundryBytecodeL2("EigenDAL2Validator.sol", "EigenDAL2Validator");
}

/// @notice Reads the bytecode of the ValidiumL2DAValidator contract for NoDA validium.
/// @return The bytecode of the ValidiumL2DAValidator contract.
function readNoDAL2DAValidatorBytecode() internal view returns (bytes memory) {
Expand Down
28 changes: 28 additions & 0 deletions l2-contracts/contracts/data-availability/EigenDAL2Validator.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// SPDX-License-Identifier: MIT

pragma solidity 0.8.24;

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

/// Rollup DA validator. It will publish data that would allow to use either calldata or blobs.
contract EigenDAL2Validator is IL2DAValidator {
function validatePubdata(
// The rolling hash of the user L2->L1 logs.
bytes32,
// The root hash of the user L2->L1 logs.
bytes32,
// The chained hash of the L2->L1 messages
bytes32,
// The chained hash of uncompressed bytecodes sent to L1
bytes32,
// Operator data, that is related to the DA itself
bytes calldata
) external returns (bytes32 outputHash) {
// Since we do not need to publish anything to L1, we can just return 0.
// Note, that Rollup validator sends the hash of uncompressed state diffs, since the
// correctness of the publish pubdata depends on it. However Validium doesn't sent anything,
// so we don't need to publish even that.
// TODO: Implement real validation logic.
outputHash = bytes32(0);
}
}

0 comments on commit d62bd27

Please sign in to comment.