Абстракция счета
Аккаунт Абстракция позволяет создавать более гибкие и удобные для пользователя контракты на смарт-аккаунты, отходя от ограничений собственных аккаунтов (EOA).
Абстракция счетов (AA) в контексте блокчейна, особенно Ethereum, направлена на расширение функциональности смарт-контрактов за пределы ограничений внешне управляемых счетов (EOA). EOA управляются приватными ключами и имеют фиксированный набор возможностей, в первую очередь подписание транзакций. Абстракция счетов предлагает рассматривать сами смарт-контракты как счета, наделяя их программируемой логикой и расширенными функциями. Это достигается с помощью стандартов, таких как ERC-4337, который вводит «memempool» для проверки и выполнения транзакций, и ERC-1271 для проверки подписей вне сети. Ключевые преимущества включают улучшенный пользовательский опыт, такой как социальное восстановление (восстановление счета без сид-фраз путем назначения доверенных контактов), спонсирование газа (позволяющее третьим сторонам оплачивать комиссии за транзакции) и пакетные транзакции (объединение нескольких операций в одну атомарную транзакцию). С технической точки зрения, AA позволяет использовать гибкие методы аутентификации, помимо криптографии с приватными ключами, обеспечивая кошельки с мультиподписями, интеграцию аппаратных кошельков или даже биометрическую аутентификацию, управляемую смарт-контрактом. Это также облегчает более сложные правила проверки транзакций, такие как условные траты или многоэтапные процессы утверждения. Компромиссы включают повышенную сложность разработки и аудита смарт-контрактов, потенциальное влияние на стоимость газа для более сложных логик счетов и необходимость надежных мер безопасности для предотвращения уязвимостей в самом смарт-контракте счета.
graph LR
Center["Абстракция счета"]:::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 — это внешние сущности, которые агрегируют пользовательские операции (подписанные транзакции от смарт-счетов) и отправляют их как единую транзакцию в сеть. Этот процесс облегчается новым мемпулом, называемым «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 часа
}
}
Этот архитектурный сдвиг отделяет подписание транзакций от управления ключами, позволяя создавать более богатые, безопасные и удобные для пользователя взаимодействия без ущерба для принципов безопасности базового блокчейна.