Абстракція облікового запису (Account Abstraction)
Абстракція облікового запису забезпечує більш гнучкі та зручні для користувача смарт-контрактні облікові записи, відходячи від обмежень зовнішніх керованих облікових записів (EOA).
Абстракція облікового запису (AA) у контексті блокчейну, зокрема Ethereum, має на меті розвинути функціональність смарт-контрактів за межі обмежень Зовнішніх керованих облікових записів (EOA). EOA контролюються приватними ключами та мають фіксований набір можливостей, переважно підписання транзакцій. Абстракція облікового запису пропонує розглядати самі смарт-контракти як облікові записи, наділяючи їх програмованою логікою та розширеними функціями. Це досягається за допомогою стандартів, таких як ERC-4337, який вводить "memempool" для валідації та виконання транзакцій, та ERC-1271 для валідації підписів поза мережею. Ключові переваги включають покращений користувацький досвід, такий як соціальне відновлення (відновлення облікового запису без фрази відновлення шляхом призначення довірених контактів), спонсорство газу (дозволяє третім сторонам оплачувати комісії за транзакції) та пакетні транзакції (об'єднання кількох операцій в одну атомарну транзакцію). З технічної точки зору, AA дозволяє використовувати гнучкі методи автентифікації, окрім криптографії з приватним ключем, забезпечуючи гаманці з мультипідписами, інтеграцію апаратних гаманців або навіть біометричну автентифікацію, керовану смарт-контрактом. Це також полегшує складніші правила валідації транзакцій, такі як умовні витрати або багатоетапні процеси затвердження. Компроміси включають підвищену складність розробки та аудиту смарт-контрактів, потенційні витрати на газ для більш складних логік облікових записів та необхідність надійних заходів безпеки для запобігання вразливостям у самому смарт-контракті облікового запису.
graph LR
Center["Абстракція облікового запису (Account Abstraction)"]:::main
Pre_blockchain["blockchain"]:::pre --> Center
click Pre_blockchain "/terms/blockchain"
Pre_smart_contracts["smart-contracts"]:::pre --> Center
click Pre_smart_contracts "/terms/smart-contracts"
Pre_ethereum["ethereum"]:::pre --> Center
click Pre_ethereum "/terms/ethereum"
Rel_wallet["wallet"]:::related -.-> Center
click Rel_wallet "/terms/wallet"
Rel_reflection_token["reflection-token"]:::related -.-> Center
click Rel_reflection_token "/terms/reflection-token"
Rel_distributed_ledger_technology_dlt["distributed-ledger-technology-dlt"]:::related -.-> Center
click Rel_distributed_ledger_technology_dlt "/terms/distributed-ledger-technology-dlt"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧠 Перевірка знань
🧒 Простими словами
Уявіть, що ваш звичайний онлайн-акаунт схожий на просту іграшкову машинку, яка їде тільки вперед. Абстракція облікового запису робить його схожим на супер-автомобіль-робот, який може виконувати багато крутих трюків, наприклад, дозволяти друзям допомагати вам, якщо ви загубите пульт, або навіть оплачувати власний бензин!
🤓 Expert Deep Dive
Абстракція облікового запису (AA), головним чином керована стандартами Ethereum, такими як ERC-4337, революціонізує управління обліковими записами, розглядаючи смарт-контракти як повноцінні елементи, здатні ініціювати транзакції. На відміну від традиційних Зовнішніх керованих облікових записів (EOA), керованих виключно приватними ключами, облікові записи з підтримкою AA, відомі як 'смарт-облікові записи' або 'облікові записи-контракти', є розгорнутими смарт-контрактами, що відповідають певним інтерфейсам (наприклад, IAccountAbstraction).
Ключовим елементом AA є концепція 'Paymaster' (спонсор платежів) та 'Bundler' (пакувальник). Bundler'и — це позамережеві сутності, які агрегують операції користувачів (підписані транзакції зі смарт-облікових записів) і надсилають їх як єдину транзакцію до мережі. Цей процес полегшується новим mempool, який називається 'UserOperation mempool'. Paymaster, інший смарт-контракт, може спонсорувати комісії за газ для користувачів (дозволяючи оплату газу в токенах ERC-20 або навіть безкоштовні транзакції для користувачів) або застосовувати власну логіку валідації.
Процес валідації для смарт-облікового запису зазвичай включає виклик функції isValidSignature або власної функції validateUserOp у смарт-контракті облікового запису. Ця функція отримує хеш UserOperation та підпис, наданий користувачем. Потім смарт-обліковий запис виконує свою внутрішню логіку для перевірки операції, яка може включати багатофакторну автентифікацію (наприклад, вимагати підпис від апаратного гаманця та резервну копію з часовим блокуванням), механізми соціального відновлення або сесійні ключі.
solidity
// Спрощений приклад логіки валідації смарт-облікового запису
interface ISmartAccount {
function validateUserOp(UserOperation calldata op, bytes calldata signature) external returns (uint256 validUntil, bytes32 validHash);
}
contract MySmartAccount is ISmartAccount {
address public owner;
address public guardian;
uint256 public recoveryTimeout;
function validateUserOp(UserOperation calldata op, bytes calldata signature) external view override returns (uint256, bytes32) {
// Логіка перевірки підпису тут, наприклад, ECDSA, multi-sig тощо.
// Приклад: require(ecrecover(keccak256(hash(op)), sig) == owner);
// Також можна реалізувати логіку відновлення з часовим блокуванням на основі підпису опікуна
return (block.timestamp + 3600, keccak256(abi.encode(op))); // Валідно протягом 1 години
}
}
Ця архітектурна зміна відокремлює підписання транзакцій від управління ключами, дозволяючи більш багату, безпечну та зручну для користувача взаємодію без шкоди для принципів безпеки базового блокчейну.