Pectra Support
Overview
What is Pectra?
Key Features
EIP-7702: Set EOA Account Code
// Account code that can be set on an EOA
contract SmartWalletLogic {
address public owner;
mapping(address => bool) public guardians;
modifier onlyOwner() {
require(msg.sender == owner, "Not owner");
_;
}
function execute(
address target,
uint256 value,
bytes calldata data
) external onlyOwner returns (bytes memory) {
(bool success, bytes memory result) = target.call{value: value}(data);
require(success, "Execution failed");
return result;
}
function batchExecute(
address[] calldata targets,
uint256[] calldata values,
bytes[] calldata datas
) external onlyOwner {
require(
targets.length == values.length &&
values.length == datas.length,
"Length mismatch"
);
for (uint256 i = 0; i < targets.length; i++) {
(bool success,) = targets[i].call{value: values[i]}(datas[i]);
require(success, "Batch execution failed");
}
}
function addGuardian(address guardian) external onlyOwner {
guardians[guardian] = true;
}
function recover(address newOwner) external {
require(guardians[msg.sender], "Not a guardian");
owner = newOwner;
}
}Enhanced Opcodes
Gas Optimizations
Operation
Pre-Pectra
Post-Pectra
Reduction
EVM Improvements
Account Abstraction Features
Native AA Support
Session Keys
Developer Tools
Pectra-Aware Development
Testing Pectra Features
Migration Guide
Updating Existing Contracts
Leveraging Gas Optimizations
Security Considerations
EIP-7702 Security
Transient Storage Security
Future Compatibility
Resources
Documentation
Last updated
