До появления абстракции счетов в Ethereum существовало два типа счетов: счета, принадлежащие внешним пользователям (EOA), и смарт-контракты. EOA - это типичная учетная запись пользователя, имеющая закрытый ключ. Это также единственный тип счета, который может инициировать транзакцию. Например, чтобы отправить транзакцию, пользователь должен иметь ETH. Создание пакетных транзакций затруднено, и нет никаких вариантов восстановления, если пользователь потерял свой закрытый ключ. Абстракция счета (AA) была создана для решения этих проблем. Но является ли это решение безрисковым? В этом руководстве рассматриваются основы АА, а затем подробно описываются риски, связанные с ним, и способы их снижения.
Абстракция счета - это технология, которая позволяет смарт-контрактам самостоятельно инициализировать транзакции. Она позволяет пользователям создавать аккаунты, которые представлены смарт-контрактами. Эта технология также позволяет реализовать несколько функций, улучшающих взаимодействие пользователей с цепочкой.
Были разные предложения о том, как внедрить AA в сеть Ethereum. Некоторые из них предполагают значительные изменения в протоколе Ethereum, что усложняет реализацию. Наиболее известной реализацией является ERC-4337, которая не предполагает никаких изменений на уровне консенсуса. Стандарт реплицирует мемпул транзакций на более высоком уровне. Смарт-контракты ERC-4337 были размещены в сети Ethereum в марте 2023 года.
В ERC-4337 вместо EOA используются смарт-контракты, названные кошельками. Кошелек смарт-контракта может контролироваться не только закрытым ключом, но и произвольным сложным механизмом, который закодирован в контракте.
Вместо транзакций пользователи отправляют UserOperations. Операция UserOperation содержит инструкции для выполнения, проверку подписей и другие данные. Как и в случае с транзакциями, пользователь указывает премию, чтобы Bundler определил приоритетность его операции.
Майнеры или бандлеры упаковывают операции в бандл-транзакции, которые затем включаются в сеть Ethereum.
Реализация AA: HashEx
Помимо прочих данных, UserOperation содержит код для создания кошелька смарт-контракта. Если у пользователя нет кошелька, он будет создан для него.
Если пользователь хочет оплатить транзакцию с помощью токена ERC20 или даже не хочет оплачивать транзакцию вообще, он указывает адрес контракта paymaster в UserOperation. Плательщик - это сторонний сервис, который будет оплачивать транзакцию в обмен на токены ERC20.
Хотя абстракция учетных записей создана для повышения безопасности пользователей, существуют некоторые риски, особенно на ранних этапах внедрения. Экосистема Ethereum печально известна ошибками в смарт-контрактах, которые привели к краже миллиардов долларов злоумышленниками. Вот некоторые риски АА и то, как их можно избежать/снизить.
Как и любая новая технология, абстракция счета рискует тем, что ее первая реализация будет содержать ошибки. Смарт-контракты ERC-4337 были проверены ведущей компанией по безопасности блокчейна OpenZeppelin.
Смягчение последствий: Решение заключается в использовании формальной верификации - процесса, который включает в себя использование математических методов для доказательства корректности смарт-контрактов. Процесс формальной проверки контрактов ERC4337 продолжается, но еще не завершен.
Не каждый смарт-контракт совместим с кошельками абстракции счета. Например, смарт-контракты, которые используют поле tx.origin для проверки кошелька, отправившего транзакцию, получат неожиданное значение. Еще одна несовместимость возникает со смарт-контрактами, использующими подписи EOA: они не поддерживаются кошельками AA.
В таких контрактах некоторые важные функции могут работать некорректно. В худшем случае средства пользователей могут быть заблокированы.
Устранение последствий: Чтобы снизить риски, пользователь, использующий кошелек абстракции учетной записи, должен проверить, поддерживает ли протокол, с которым он взаимодействует, эту технологию.
Стандарт разработан таким образом, что кошелек смарт-контракта может быть создан в рамках первой пользовательской операции с помощью фабрики смарт-контрактов. Однако существует риск, что смарт-контракт, реализованный в кошельке, будет содержать ошибки. Крайне важно использовать только те фабрики по производству кошельков, которые прошли тщательный аудит и тестирование ведущими компаниями по обеспечению безопасности блокчейна.
Устранение проблемы: Используйте только проверенные сервисы для создания кошельков и убедитесь, что код кошелька проверяется как минимум одной надежной компанией, занимающейся безопасностью блокчейна.
Если пользователь или проект использует paymasters, он полагается на третью сторону для оплаты транзакций. Могут быть ошибки в реализации paymaster, и вредоносный paymaster может украсть средства пользователей.
Следует отметить, что выбранный сервис paymaster также может пострадать от злоумышленников, которые могут найти способ обманом заставить paymaster оплатить их транзакции.
Устранение проблемы: Кошельки используют только paymaster'ы от надежных провайдеров и гарантируют, что код paymaster'ов был проверен перед их использованием.
Абстракция аккаунтов в блокчейне Ethereum - это относительно новая концепция. Таким образом, лучшие практики и рамки разработчиков для его использования все еще находятся в процессе становления. Существует очень мало примеров использования абстракции счетов, на которых разработчики могли бы поучиться.
Смягчение: Лучшая практика со временем будет развиваться после распространения стандарта. Для разработчиков очень важно делиться опытом использования новой технологии, особенно на ранних этапах ее внедрения.
ERC-4337 все еще находится в черновом режиме, хотя контракты уже развернуты в Mainnet. Существует вероятность того, что стандарт изменится. Следует отметить, что эти изменения должны затронуть более мелкие детали и не повлиять на уже развернутые смарт-контракты.
Устранение последствий: Разработчикам следует следить за тем, как развивается стандарт, и обновлять код своих проектов в соответствии с изменениями стандарта, если они произойдут.
Хотя ERC-4337 разработана таким образом, чтобы каждый мог создать бандлер, по крайней мере, на начальном этапе, экосистема абстракции счетов достаточно централизована, поскольку существует мало готовых к производству реализаций бандлеров.
Устранение проблемы: Чтобы избежать риска того, что ошибка в реализации Bundler повлияет на сеть абстракций аккаунта, следует использовать как минимум несколько реализаций Bundler. В настоящее время в разработке находится множество реализаций Bundler, и вскоре многие из них будут готовы к производству.
Абстракция аккаунтов - это потенциально отличная технология, которая может обеспечить большее распространение Ethereum. В то же время, это одна из разработок, которая может сделать блокчейн более безопасным. Тем не менее, как и в случае с любым новым дополнением к технологии блокчейн на ранних стадиях ее развития, пользователям следует быть особенно бдительными. Обзор и исследование AA - лучший выбор для всех, кто хочет освоить эту технологию.
До появления абстракции счетов в Ethereum существовало два типа счетов: счета, принадлежащие внешним пользователям (EOA), и смарт-контракты. EOA - это типичная учетная запись пользователя, имеющая закрытый ключ. Это также единственный тип счета, который может инициировать транзакцию. Например, чтобы отправить транзакцию, пользователь должен иметь ETH. Создание пакетных транзакций затруднено, и нет никаких вариантов восстановления, если пользователь потерял свой закрытый ключ. Абстракция счета (AA) была создана для решения этих проблем. Но является ли это решение безрисковым? В этом руководстве рассматриваются основы АА, а затем подробно описываются риски, связанные с ним, и способы их снижения.
Абстракция счета - это технология, которая позволяет смарт-контрактам самостоятельно инициализировать транзакции. Она позволяет пользователям создавать аккаунты, которые представлены смарт-контрактами. Эта технология также позволяет реализовать несколько функций, улучшающих взаимодействие пользователей с цепочкой.
Были разные предложения о том, как внедрить AA в сеть Ethereum. Некоторые из них предполагают значительные изменения в протоколе Ethereum, что усложняет реализацию. Наиболее известной реализацией является ERC-4337, которая не предполагает никаких изменений на уровне консенсуса. Стандарт реплицирует мемпул транзакций на более высоком уровне. Смарт-контракты ERC-4337 были размещены в сети Ethereum в марте 2023 года.
В ERC-4337 вместо EOA используются смарт-контракты, названные кошельками. Кошелек смарт-контракта может контролироваться не только закрытым ключом, но и произвольным сложным механизмом, который закодирован в контракте.
Вместо транзакций пользователи отправляют UserOperations. Операция UserOperation содержит инструкции для выполнения, проверку подписей и другие данные. Как и в случае с транзакциями, пользователь указывает премию, чтобы Bundler определил приоритетность его операции.
Майнеры или бандлеры упаковывают операции в бандл-транзакции, которые затем включаются в сеть Ethereum.
Реализация AA: HashEx
Помимо прочих данных, UserOperation содержит код для создания кошелька смарт-контракта. Если у пользователя нет кошелька, он будет создан для него.
Если пользователь хочет оплатить транзакцию с помощью токена ERC20 или даже не хочет оплачивать транзакцию вообще, он указывает адрес контракта paymaster в UserOperation. Плательщик - это сторонний сервис, который будет оплачивать транзакцию в обмен на токены ERC20.
Хотя абстракция учетных записей создана для повышения безопасности пользователей, существуют некоторые риски, особенно на ранних этапах внедрения. Экосистема Ethereum печально известна ошибками в смарт-контрактах, которые привели к краже миллиардов долларов злоумышленниками. Вот некоторые риски АА и то, как их можно избежать/снизить.
Как и любая новая технология, абстракция счета рискует тем, что ее первая реализация будет содержать ошибки. Смарт-контракты ERC-4337 были проверены ведущей компанией по безопасности блокчейна OpenZeppelin.
Смягчение последствий: Решение заключается в использовании формальной верификации - процесса, который включает в себя использование математических методов для доказательства корректности смарт-контрактов. Процесс формальной проверки контрактов ERC4337 продолжается, но еще не завершен.
Не каждый смарт-контракт совместим с кошельками абстракции счета. Например, смарт-контракты, которые используют поле tx.origin для проверки кошелька, отправившего транзакцию, получат неожиданное значение. Еще одна несовместимость возникает со смарт-контрактами, использующими подписи EOA: они не поддерживаются кошельками AA.
В таких контрактах некоторые важные функции могут работать некорректно. В худшем случае средства пользователей могут быть заблокированы.
Устранение последствий: Чтобы снизить риски, пользователь, использующий кошелек абстракции учетной записи, должен проверить, поддерживает ли протокол, с которым он взаимодействует, эту технологию.
Стандарт разработан таким образом, что кошелек смарт-контракта может быть создан в рамках первой пользовательской операции с помощью фабрики смарт-контрактов. Однако существует риск, что смарт-контракт, реализованный в кошельке, будет содержать ошибки. Крайне важно использовать только те фабрики по производству кошельков, которые прошли тщательный аудит и тестирование ведущими компаниями по обеспечению безопасности блокчейна.
Устранение проблемы: Используйте только проверенные сервисы для создания кошельков и убедитесь, что код кошелька проверяется как минимум одной надежной компанией, занимающейся безопасностью блокчейна.
Если пользователь или проект использует paymasters, он полагается на третью сторону для оплаты транзакций. Могут быть ошибки в реализации paymaster, и вредоносный paymaster может украсть средства пользователей.
Следует отметить, что выбранный сервис paymaster также может пострадать от злоумышленников, которые могут найти способ обманом заставить paymaster оплатить их транзакции.
Устранение проблемы: Кошельки используют только paymaster'ы от надежных провайдеров и гарантируют, что код paymaster'ов был проверен перед их использованием.
Абстракция аккаунтов в блокчейне Ethereum - это относительно новая концепция. Таким образом, лучшие практики и рамки разработчиков для его использования все еще находятся в процессе становления. Существует очень мало примеров использования абстракции счетов, на которых разработчики могли бы поучиться.
Смягчение: Лучшая практика со временем будет развиваться после распространения стандарта. Для разработчиков очень важно делиться опытом использования новой технологии, особенно на ранних этапах ее внедрения.
ERC-4337 все еще находится в черновом режиме, хотя контракты уже развернуты в Mainnet. Существует вероятность того, что стандарт изменится. Следует отметить, что эти изменения должны затронуть более мелкие детали и не повлиять на уже развернутые смарт-контракты.
Устранение последствий: Разработчикам следует следить за тем, как развивается стандарт, и обновлять код своих проектов в соответствии с изменениями стандарта, если они произойдут.
Хотя ERC-4337 разработана таким образом, чтобы каждый мог создать бандлер, по крайней мере, на начальном этапе, экосистема абстракции счетов достаточно централизована, поскольку существует мало готовых к производству реализаций бандлеров.
Устранение проблемы: Чтобы избежать риска того, что ошибка в реализации Bundler повлияет на сеть абстракций аккаунта, следует использовать как минимум несколько реализаций Bundler. В настоящее время в разработке находится множество реализаций Bundler, и вскоре многие из них будут готовы к производству.
Абстракция аккаунтов - это потенциально отличная технология, которая может обеспечить большее распространение Ethereum. В то же время, это одна из разработок, которая может сделать блокчейн более безопасным. Тем не менее, как и в случае с любым новым дополнением к технологии блокчейн на ранних стадиях ее развития, пользователям следует быть особенно бдительными. Обзор и исследование AA - лучший выбор для всех, кто хочет освоить эту технологию.