EIP-3074 позволяет EOAs делегировать контроль определенным контрактам, тем самым получая богатые возможности выполнения, аналогичные контрактам. До EIP-3074 EOA мог выполнять только одну операцию за транзакцию, такую как утверждение токена ERC20 или совершение свопа на Uniswap. После EIP-3074 EOA может завершить несколько операций в одной транзакции, обеспечивая ранее невообразимые сценарии использования. По сути, EIP-3074 значительно улучшает пользовательский опыт и изменяет привычные методы авторизации, улучшая безопасность.
Более того, с EIP-3074 ЭОА больше не нужно отправлять транзакции на цепочке сами по себе, тем самым устраняя необходимость сначала приобретать ETH для оплаты комиссий за транзакции.
Контракты, которые могут получить контроль над EOA, называются контрактами Invoker. Не любой контракт может получить контроль; EOA должен подписать своим закрытым ключом, указав, какой контракт Invoker и какие операции он разрешает Invoker выполнять.
Процесс обычно включает в себя:
Элис подписывает своим частным ключом EOA, указывая контракт Invoker и авторизованные операции.
Алиса отправляет подписанное содержимое и подпись Релееру.
Реле отправляет транзакцию в цепь на контракт Invoker.
Invoker проверяет подпись и, после проверки, выполняет операции как EOA Алисы, такие как утверждение USDC, обмен активами на Uniswap и использование некоторого количества USDC для оплаты Релееру в качестве комиссии.
Примечание: Релейщик является необязательным; Алиса может самостоятельно отправить подписанное содержимое и подпись on-chain.
Инвокер выполняет операции, как если бы у него было ограниченное управление EOA Элис. Однако nonce EOA не увеличивается после выполнения, что означает, что одна и та же подпись может потенциально быть повторно использована до тех пор, пока nonce EOA остается неизменным. Поэтому Инвокер должен реализовать свой механизм nonce для предотвращения атак повторного воспроизведения.
Узнать больше
Для подробного введения в работу EIP-3074 обратитесь к:https://medium.com/taipei-ethereum-meetup/eip3074-%E7%B0%A1%E4%BB%8B-2a880b918234
Batchcall позволяет пользователям объединять несколько транзакций в одну, экономя процесс множественных подписей авторизации и некоторые газовые издержки. Обратите внимание, что для этого требуется поддержка функциональности Batchcall DApps, такой как в настоящее время продвигаемый EIP-5792. Без такой поддержки DApps будут предлагать отдельную транзакцию для каждой операции, рассматривая пользователя как обычного EOA.
Для получения дополнительной информации о EIP-5792 обратитесь по адресу: EIP-5792.
Ключ сеанса
Пользователи могут делегировать операции третьей стороне при определенных условиях, используя ключ сеанса. В приведенном ниже примере ключ делегата представляет собой уполномоченную третью сторону, в то время как политика доступа определяет операционные ограничения, такие как ограничение действий на Uniswap, ограничение трансфертов до 1 ETH в день или установку срока истечения авторизации. Эти условия разрабатываются и проверяются в рамках контракта Invoker. После успешной проверки третья сторона может выполнять операции как EOA пользователя.
Например, Telegram Bot может быть предоставлен определенные разрешения на выполнение операций от имени кошелька пользователя.
Родной ETH разрешения
Если условия выполнены (т.е. подпись разрешения является действительной), операции могут быть выполнены как авторизующий EOA, что позволяет использовать функциональность разрешения на местном ETH.
Лимитный ордер
Пользователи могут устанавливать условия лимитных ордеров, которые, как только будут выполнены, позволят выполнить операции от имени EOA пользователя. Сюда входит утверждение соответствующих цифровых активов для DEX и обмен активами на DEX. По сравнению с функциональностью лимитных ордеров, предоставленной самими DEX, пользователям не нужно предварительно утверждать активы для DEX.
Например, когда Алиса завершает лимитный ордер, подтверждение выполняется одновременно, исключая необходимость предварительного утверждения.
Проектируя условия более общим образом, можно создать контракт Намерения: как только указанные условия будут выполнены, любой сможет выполнить намерение от имени пользовательского EOA.
Социальное восстановление
Если пользователь потеряет свой частный ключ EOA, он может использовать ранее подписанную авторизацию EIP-3074, вместе с подписями от авторизованных сторон (например, муж и доверенный агент), чтобы передать все активы с EOA. Это восстанавливает (передаваемые) активы, а не управление учётной записью. После потери частного ключа EOA, EOA больше нельзя использовать.
EIP-3074 имеет потенциал улучшить или даже заменить текущие методы утверждения/разрешения. DApps в настоящее время функционируют с предположением, что пользователи являются EOAs: пользователи должны предварительно утвердить достаточно большое количество активов в контракте DApp, чтобы избежать постоянного нахождения в сети и повторного утверждения транзакций. Это значительно улучшает опыт пользователя.
Например, условные приложения, такие как лимитные ордера или DCA, требуют от пользователей предварительного утверждения большого количества активов, чтобы DApp мог выполнять операции при выполнении условий, потенциально несколько раз.
Однако для этого пользователи должны доверять DApp или избегать утверждения фальшивых DApp, и они должны иметь возможность удалять утверждения в реальном времени.
Недавние модели разрешений, такие как EIP-2612 или неоригинальный Permit2, нацелены на улучшение пользовательского опыта и безопасности модели утверждения. Пользователям не нужно утверждать большие суммы активов для каждого контракта DApp; вместо этого они могут авторизовать DApps на вывод определенной суммы активов в течение определенного времени, подписавшись один раз. Это значительно снижает поверхность атак и улучшает пользовательский опыт.
△ Пользователям достаточно подписать офчейн, и они могут указать сумму активов и срок действия, обеспечивая лучший пользовательский опыт и безопасность по сравнению с approve.
Однако на практике не только утверждают, что режим разрешения все еще часто используется как метод мошенничества. Жертвы ошибочно подписывают разрешения, полагая, что это для использования DApp, но на самом деле предоставляют разрешение злоумышленникам.
△ Когда пользователи подписывают разрешение, они могут видеть только тех, кого они авторизуют, но не знают, какие операции будут выполнены в связи с этим.
Примечание:Текущий дизайн разрешения несовместим с DApps, требующими повторяющихся операций, такими как DCA или другие приложения для периодических платежей. Это потому, что у разрешения есть механизм защиты от повторной передачи, поэтому после завершения транзакции одно и то же разрешение нельзя использовать снова. По сути, пользователям необходимо предварительно подписывать разрешения для каждой будущей повторяющейся операции.
Узнать больше:
Для более полного понимания случаев, когда режим разрешения был использован в качестве метода мошенничества, скопируйте следующие ссылки в свой браузер для получения дополнительной информации:
Однако EIP-3074 дает шанс на изменение: когда разработчики DApp понимают, что EOA может выполнять различные сложные операции через Invoker, дизайн взаимодействия DApp больше не потребуется жертвовать безопасностью в пользу лучшего пользовательского опыта, такого как "пользователи заранее утверждают большое количество активов" или "пользователи подписывают разрешающее сообщение для авторизации выводов".
Вместо этого пользователи свяжут операцию DApp с действием подтверждения, выполняя их атомарно через Invoker: либо оба действия подтверждения и операция DApp успешны вместе, либо проваливаются вместе. Нет возможности, что действие подтверждения выполнится одно, поэтому пользователи могут быть уверены, что это действие подтверждения предназначено исключительно для текущей операции.
Более того, пользователи авторизуются с помощью подписей вне цепи, поэтому опыт пользователя такой же, как с разрешением! Это означает, что DApps больше не понадобится режим разрешения! В будущем кошельки могут напрямую блокировать или более строго проверять запросы на разрешение подписи, не беспокоясь о том, чтобы предотвратить доступ пользователей к определенным DApps (а скорее быть эксплуатируемыми мошенниками).
△ Пользователи больше не будут только авторизовывать определенный адрес, но и указывать, какие действия можно совершить, и они даже смогут видеть результаты имитации выполнения.
Примечание:Это не означает, что мошенничество можно полностью предотвратить! Пользователей все еще могут обмануть на мошеннические веб-сайты, и мошеннические веб-сайты все еще могут создавать операции на утверждение или передачу для подписи пользователей. Однако на данный момент пользователи могут хотя бы видеть, какие операции утверждает подпись. Кошельки могут даже моделировать и отображать результаты выполнения, показывая пользователям четко, кто потеряет деньги, а кто заработает. По сравнению с разрешениями, где пользователи не могут знать операции или результаты выполнения, у пользователей теперь больше информации, чтобы решить, уполномочивать ли. Хотя это не идеальное решение, это все равно значительное улучшение по сравнению с текущей ситуацией.
В настоящее время в конструкции EIP-3074 включено значение счетчика EOA в содержание подписи. Следовательно, как только EOA отправляет транзакцию на цепочке, изменяющую значение счетчика, все существующие авторизации EIP-3074 становятся недействительными.
Если пользователь авторизует других лиц на операции с его EOA от его имени, например, через упомянутые выше методы Сессионного ключа или Социального восстановления, номер EOA должен оставаться неизменным. В противном случае все авторизации должны быть переподписаны и переданы доверенному лицу, что значительно влияет как на опыт пользователя, так и на надежность механизма.
Если пользователь авторизует себя на выполнение операции, то нет необходимости избегать изменения EOA nonce. Подписи EIP-3074, как и транзакции, должны быть выполнены в определенный период. Однако кошельки должны управлять транзакциями EIP-3074 для EOA: если есть подпись EIP-3074, ожидающая попадания в блокчейн, все транзакции EOA должны подождать.
Примечание:Сам контракт Invoker должен поддерживать отдельный механизм nonce, поэтому каждая подпись должна быть обновлена независимо от изменений в EOA nonce.
Session Key и Social Recovery, скорее всего, будут широко приняты только после того, как EIP-3074 изменит правила и исключит EOA nonce из содержания подписи. Поэтому кошельки должны сосредоточиться на сценарии, где "пользователи авторизуют себя на операцию" и рассматривать подписи EIP-3074 так же, как транзакции, избегая беспокойства о том, что транзакции EOA изменяют nonce.
Однако, если пользователи хотят сами отправить свою подпись EIP-3074 в сеть, есть два недостатка:
Пользователям необходимо подписать дважды: один раз для подписи EIP-3074 и один раз для подписи транзакции на цепи.
Поскольку он-чейн транзакция увеличит счетчик EOA перед выполнением, счетчик EOA подписи EIP-3074 должен быть предварительно увеличен, чтобы соответствовать изменению счетчика, вызванному он-чейн транзакцией.
△ Поскольку увеличение счетчика EOA транзакций на цепи, проверка подписи EIP-3074 завершится неудачно, если счетчики не совпадают.
△ Пользователям необходимо предварительно увеличить счетчик EOA в подписи EIP-3074 для успешной проверки.
Понимая эти тонкости, провайдеры кошельков могут лучше управлять обработкой EOA nonce, обеспечивая более плавный и безопасный пользовательский опыт с авторизациями EIP-3074.
EIP-3074 позволяет EOAs делегировать контроль определенным контрактам, тем самым получая богатые возможности выполнения, аналогичные контрактам. До EIP-3074 EOA мог выполнять только одну операцию за транзакцию, такую как утверждение токена ERC20 или совершение свопа на Uniswap. После EIP-3074 EOA может завершить несколько операций в одной транзакции, обеспечивая ранее невообразимые сценарии использования. По сути, EIP-3074 значительно улучшает пользовательский опыт и изменяет привычные методы авторизации, улучшая безопасность.
Более того, с EIP-3074 ЭОА больше не нужно отправлять транзакции на цепочке сами по себе, тем самым устраняя необходимость сначала приобретать ETH для оплаты комиссий за транзакции.
Контракты, которые могут получить контроль над EOA, называются контрактами Invoker. Не любой контракт может получить контроль; EOA должен подписать своим закрытым ключом, указав, какой контракт Invoker и какие операции он разрешает Invoker выполнять.
Процесс обычно включает в себя:
Элис подписывает своим частным ключом EOA, указывая контракт Invoker и авторизованные операции.
Алиса отправляет подписанное содержимое и подпись Релееру.
Реле отправляет транзакцию в цепь на контракт Invoker.
Invoker проверяет подпись и, после проверки, выполняет операции как EOA Алисы, такие как утверждение USDC, обмен активами на Uniswap и использование некоторого количества USDC для оплаты Релееру в качестве комиссии.
Примечание: Релейщик является необязательным; Алиса может самостоятельно отправить подписанное содержимое и подпись on-chain.
Инвокер выполняет операции, как если бы у него было ограниченное управление EOA Элис. Однако nonce EOA не увеличивается после выполнения, что означает, что одна и та же подпись может потенциально быть повторно использована до тех пор, пока nonce EOA остается неизменным. Поэтому Инвокер должен реализовать свой механизм nonce для предотвращения атак повторного воспроизведения.
Узнать больше
Для подробного введения в работу EIP-3074 обратитесь к:https://medium.com/taipei-ethereum-meetup/eip3074-%E7%B0%A1%E4%BB%8B-2a880b918234
Batchcall позволяет пользователям объединять несколько транзакций в одну, экономя процесс множественных подписей авторизации и некоторые газовые издержки. Обратите внимание, что для этого требуется поддержка функциональности Batchcall DApps, такой как в настоящее время продвигаемый EIP-5792. Без такой поддержки DApps будут предлагать отдельную транзакцию для каждой операции, рассматривая пользователя как обычного EOA.
Для получения дополнительной информации о EIP-5792 обратитесь по адресу: EIP-5792.
Ключ сеанса
Пользователи могут делегировать операции третьей стороне при определенных условиях, используя ключ сеанса. В приведенном ниже примере ключ делегата представляет собой уполномоченную третью сторону, в то время как политика доступа определяет операционные ограничения, такие как ограничение действий на Uniswap, ограничение трансфертов до 1 ETH в день или установку срока истечения авторизации. Эти условия разрабатываются и проверяются в рамках контракта Invoker. После успешной проверки третья сторона может выполнять операции как EOA пользователя.
Например, Telegram Bot может быть предоставлен определенные разрешения на выполнение операций от имени кошелька пользователя.
Родной ETH разрешения
Если условия выполнены (т.е. подпись разрешения является действительной), операции могут быть выполнены как авторизующий EOA, что позволяет использовать функциональность разрешения на местном ETH.
Лимитный ордер
Пользователи могут устанавливать условия лимитных ордеров, которые, как только будут выполнены, позволят выполнить операции от имени EOA пользователя. Сюда входит утверждение соответствующих цифровых активов для DEX и обмен активами на DEX. По сравнению с функциональностью лимитных ордеров, предоставленной самими DEX, пользователям не нужно предварительно утверждать активы для DEX.
Например, когда Алиса завершает лимитный ордер, подтверждение выполняется одновременно, исключая необходимость предварительного утверждения.
Проектируя условия более общим образом, можно создать контракт Намерения: как только указанные условия будут выполнены, любой сможет выполнить намерение от имени пользовательского EOA.
Социальное восстановление
Если пользователь потеряет свой частный ключ EOA, он может использовать ранее подписанную авторизацию EIP-3074, вместе с подписями от авторизованных сторон (например, муж и доверенный агент), чтобы передать все активы с EOA. Это восстанавливает (передаваемые) активы, а не управление учётной записью. После потери частного ключа EOA, EOA больше нельзя использовать.
EIP-3074 имеет потенциал улучшить или даже заменить текущие методы утверждения/разрешения. DApps в настоящее время функционируют с предположением, что пользователи являются EOAs: пользователи должны предварительно утвердить достаточно большое количество активов в контракте DApp, чтобы избежать постоянного нахождения в сети и повторного утверждения транзакций. Это значительно улучшает опыт пользователя.
Например, условные приложения, такие как лимитные ордера или DCA, требуют от пользователей предварительного утверждения большого количества активов, чтобы DApp мог выполнять операции при выполнении условий, потенциально несколько раз.
Однако для этого пользователи должны доверять DApp или избегать утверждения фальшивых DApp, и они должны иметь возможность удалять утверждения в реальном времени.
Недавние модели разрешений, такие как EIP-2612 или неоригинальный Permit2, нацелены на улучшение пользовательского опыта и безопасности модели утверждения. Пользователям не нужно утверждать большие суммы активов для каждого контракта DApp; вместо этого они могут авторизовать DApps на вывод определенной суммы активов в течение определенного времени, подписавшись один раз. Это значительно снижает поверхность атак и улучшает пользовательский опыт.
△ Пользователям достаточно подписать офчейн, и они могут указать сумму активов и срок действия, обеспечивая лучший пользовательский опыт и безопасность по сравнению с approve.
Однако на практике не только утверждают, что режим разрешения все еще часто используется как метод мошенничества. Жертвы ошибочно подписывают разрешения, полагая, что это для использования DApp, но на самом деле предоставляют разрешение злоумышленникам.
△ Когда пользователи подписывают разрешение, они могут видеть только тех, кого они авторизуют, но не знают, какие операции будут выполнены в связи с этим.
Примечание:Текущий дизайн разрешения несовместим с DApps, требующими повторяющихся операций, такими как DCA или другие приложения для периодических платежей. Это потому, что у разрешения есть механизм защиты от повторной передачи, поэтому после завершения транзакции одно и то же разрешение нельзя использовать снова. По сути, пользователям необходимо предварительно подписывать разрешения для каждой будущей повторяющейся операции.
Узнать больше:
Для более полного понимания случаев, когда режим разрешения был использован в качестве метода мошенничества, скопируйте следующие ссылки в свой браузер для получения дополнительной информации:
Однако EIP-3074 дает шанс на изменение: когда разработчики DApp понимают, что EOA может выполнять различные сложные операции через Invoker, дизайн взаимодействия DApp больше не потребуется жертвовать безопасностью в пользу лучшего пользовательского опыта, такого как "пользователи заранее утверждают большое количество активов" или "пользователи подписывают разрешающее сообщение для авторизации выводов".
Вместо этого пользователи свяжут операцию DApp с действием подтверждения, выполняя их атомарно через Invoker: либо оба действия подтверждения и операция DApp успешны вместе, либо проваливаются вместе. Нет возможности, что действие подтверждения выполнится одно, поэтому пользователи могут быть уверены, что это действие подтверждения предназначено исключительно для текущей операции.
Более того, пользователи авторизуются с помощью подписей вне цепи, поэтому опыт пользователя такой же, как с разрешением! Это означает, что DApps больше не понадобится режим разрешения! В будущем кошельки могут напрямую блокировать или более строго проверять запросы на разрешение подписи, не беспокоясь о том, чтобы предотвратить доступ пользователей к определенным DApps (а скорее быть эксплуатируемыми мошенниками).
△ Пользователи больше не будут только авторизовывать определенный адрес, но и указывать, какие действия можно совершить, и они даже смогут видеть результаты имитации выполнения.
Примечание:Это не означает, что мошенничество можно полностью предотвратить! Пользователей все еще могут обмануть на мошеннические веб-сайты, и мошеннические веб-сайты все еще могут создавать операции на утверждение или передачу для подписи пользователей. Однако на данный момент пользователи могут хотя бы видеть, какие операции утверждает подпись. Кошельки могут даже моделировать и отображать результаты выполнения, показывая пользователям четко, кто потеряет деньги, а кто заработает. По сравнению с разрешениями, где пользователи не могут знать операции или результаты выполнения, у пользователей теперь больше информации, чтобы решить, уполномочивать ли. Хотя это не идеальное решение, это все равно значительное улучшение по сравнению с текущей ситуацией.
В настоящее время в конструкции EIP-3074 включено значение счетчика EOA в содержание подписи. Следовательно, как только EOA отправляет транзакцию на цепочке, изменяющую значение счетчика, все существующие авторизации EIP-3074 становятся недействительными.
Если пользователь авторизует других лиц на операции с его EOA от его имени, например, через упомянутые выше методы Сессионного ключа или Социального восстановления, номер EOA должен оставаться неизменным. В противном случае все авторизации должны быть переподписаны и переданы доверенному лицу, что значительно влияет как на опыт пользователя, так и на надежность механизма.
Если пользователь авторизует себя на выполнение операции, то нет необходимости избегать изменения EOA nonce. Подписи EIP-3074, как и транзакции, должны быть выполнены в определенный период. Однако кошельки должны управлять транзакциями EIP-3074 для EOA: если есть подпись EIP-3074, ожидающая попадания в блокчейн, все транзакции EOA должны подождать.
Примечание:Сам контракт Invoker должен поддерживать отдельный механизм nonce, поэтому каждая подпись должна быть обновлена независимо от изменений в EOA nonce.
Session Key и Social Recovery, скорее всего, будут широко приняты только после того, как EIP-3074 изменит правила и исключит EOA nonce из содержания подписи. Поэтому кошельки должны сосредоточиться на сценарии, где "пользователи авторизуют себя на операцию" и рассматривать подписи EIP-3074 так же, как транзакции, избегая беспокойства о том, что транзакции EOA изменяют nonce.
Однако, если пользователи хотят сами отправить свою подпись EIP-3074 в сеть, есть два недостатка:
Пользователям необходимо подписать дважды: один раз для подписи EIP-3074 и один раз для подписи транзакции на цепи.
Поскольку он-чейн транзакция увеличит счетчик EOA перед выполнением, счетчик EOA подписи EIP-3074 должен быть предварительно увеличен, чтобы соответствовать изменению счетчика, вызванному он-чейн транзакцией.
△ Поскольку увеличение счетчика EOA транзакций на цепи, проверка подписи EIP-3074 завершится неудачно, если счетчики не совпадают.
△ Пользователям необходимо предварительно увеличить счетчик EOA в подписи EIP-3074 для успешной проверки.
Понимая эти тонкости, провайдеры кошельков могут лучше управлять обработкой EOA nonce, обеспечивая более плавный и безопасный пользовательский опыт с авторизациями EIP-3074.