// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; // Core Aggregator Contract contract CrossChainAggregator { mapping(bytes32 => bool) public processedHashes; mapping(uint256 => address) public validators; uint256 public validatorCount; event CrossChainSwap( bytes32 indexed swapId, address indexed user, uint256 sourceChain, uint256 destChain, uint256 amount ); modifier onlyValidator() { require(validators[block.chainid] == msg.sender, "Not validator"); _; } function initiateSwap( address token, uint256 amount, uint256 destChainId ) external returns (bytes32 swapId) { swapId = keccak256(abi.encodePacked(msg.sender, token, amount, block.timestamp)); require(!processedHashes[swapId], "Already processed"); // Lock tokens IERC20(token).transferFrom(msg.sender, address(this), amount); emit CrossChainSwap(swapId, msg.sender, block.chainid, destChainId, amount); return swapId; } function finalizeSwap( bytes32 swapId, address user, uint256 amount, bytes calldata signature ) external onlyValidator {…