Улучшенное и безопасное использование
EIP-3074 позволяет EOA (External Owned Accounts) передавать контроль указанному контракту, тем самым получая те же широкие возможности исполнения, что и контракт. До EIP-3074 EOA мог выполнять только одну операцию на транзакцию, например, утверждение ERC20 или обмен на Uniswap. После EIP-3074 EOA может выполнять несколько операций одновременно или даже выполнять ранее невообразимые задачи. Проще говоря, EIP-3074 значительно улучшает пользовательский опыт, а привычный метод авторизации токенов будет изменен, повышая безопасность без изменения пользовательского опыта.
Более того, благодаря EIP-3074 EOA лонгующий не нужно отправлять транзакции в цепочку самостоятельно, что избавляет от необходимости собирать ETH для оплаты комиссий за транзакции.
Контракт, который может получить контроль над EOA, называется контрактом инициатора. Конечно, не любой контракт может получить контроль над EOA: EOA должен подписать его закрытым ключом, а в содержании подписи будет четко указано, что это за контракт Invoker и какие операции Invoker разрешено выполнять.
Содержимое подписи EOA будет четко указывать, какой контракт Invoker (адрес инициатора) и авторизовать операции этого контракта Invoker (коммит)
Фактический процесс выполнения, вероятно, будет выглядеть следующим образом:
Примечание 1: Ретранслятор не требуется. Алиса также может принести в цепочку свой фирменный контент и печать.
После того, как Invoker проверит подпись и начнет выполнять операцию, она будет выполнена как Alice EOA, что похоже на получение (ограниченного) контроля над EOA.
Однако следует отметить, что nonce значение EOA не будет увеличено после выполнения, поэтому одна и та же подпись может быть использована повторно (так лонг nonce EOA остается неизменной), поэтому Invoker должен реализовать свой собственный механизм nonce, чтобы избежать повторного воспроизведения.
Если контракт Invoker не защищен от повторного воспроизведения, одна и та же авторизация может выполняться постоянно.
Для ознакомления с фактическим механизмом работы EIP-3074, пожалуйста, обратитесь к разделу: Введение в EIP3074
Позволяет пользователям объединять выполнение нескольких транзакций в одну, экономя на процессе нескольких авторизованных подписей и некоторых затратах на газ.
Примечание: Это потребует от dApp также поддержку функции Batchcall, такой как EIP-5792, которая в настоящее время продвигается сообществом. В противном случае dApp будет предлагать пользователю подписать подпись только один раз для каждой операции, если он рассматривает пользователя как обычного EOA.
Пользователи также могут разрешить третьему лицу действовать от их имени при определенных условиях. Ключ делегата на схеме ниже — это авторизованная третья сторона; политика доступа — это ограничение выполнения, например, ограничение только для работы с Uniswap, перевод максимум 1 ETH в день, срок действия авторизации и т. д. Эти условия разрабатываются и проверяются в рамках контракта Invoker. После лонг прохождения проверки третья сторона может выполнять операции в качестве EOA пользователя.
Telegram-боту могут быть предоставлены определенные разрешения на выполнение операций от имени EOA пользователя
По мере того, лонг условия выполняются (т. е. подпись разрешения является законной), передача ETH может быть выполнена в качестве EOA авторизатора, достигая эффекта собственного разрешения ETH.
Пользователь заполняет условия лимита ордер, и когда условия выполнены, он может быть выполнен как EOA пользователя, в том числе одобрять токены для DEX, отправляться в DEX для выкупа и т. д. По сравнению с Лимитный ордер, предоставляемыми самой DEX, пользователям не нужно заранее отправлять транзакции в DEX для одобрения.
Когда Алиса выполнит ордер, она одновременно выполнит утверждение, устраняя необходимость в предварительном утверждении.
Если условие задумано как более общее, оно станет похожим на контракт Intent: по мере лонг выполнение условий, указанных пользователем, любой может выполнить намерение от имени своего EOA.
Если лонг условие Intent выполнено, любой может инициировать выполнение от имени EOA пользователя
Когда пользователь теряет закрытый ключ EOA, он (Алиса) может использовать авторизацию EIP-3074, которую она подписала, вместе с подписями своего уполномоченного лица (мужа и доверительного агента) для передачи всех активов EOA. На самом деле взыскиваются (передаваемые) активы, а не контроль над счетами. После того, как закрытый ключ EOA утерян, EOA не может быть использован в лонгующий период.
Когда пользователь теряет закрытый ключ EOA, другие уполномоченные лица могут подписать и авторизовать передачу активов EOA.
Улучшение методов авторизации маркеров и потенциальная замена утверждения/разрешения?
В настоящее время dApps разрабатываются исходя из предположения, что пользователь является EOA: пользователь должен «предварительно одобрить» и «одобрить достаточную сумму денег» для контракта dApp. Это означает, что пользователям не нужно постоянно оставаться в сети, ждать, пока dApp выполнится, или постоянно повторно одобрять, что значительно улучшает пользовательский опыт. Для приложений, запускаемых условиями, таких как лимитные ордера или DCA, пользователи могут не быть в сети, когда условия выполнены, поэтому им необходимо предварительно одобрить достаточно большую сумму денег для выполнения контракта dApp, и это может быть повторяющимся процессом.
Пользователь должен заранее одобрить достаточно большую сумму для dApp, чтобы dApp мог работать со своими деньгами.
Но также необходимо доверять dApp или избегать одобрения поддельного dApp, и иметь возможность немедленно удалить одобрение
Режимы разрешений, появившиеся позже, такие как нативный токен EIP-2612 или ненативный Permit2, призваны улучшить опыт использования и безопасность режима одобрения: пользователям не нужно лонгующий одобрять большую сумму денег для каждого контракта dApp (и каждый токен должен быть одобрен один раз). Вместо этого пользователю нужно только «подписать имя», чтобы авторизовать контракт dApp на «вывод указанной суммы» в течение «указанного времени». Это не только значительно сокращает поверхность атаки, но и значительно улучшает пользовательский опыт.
Пользователям нужно только подписать вне блокчейна, и они могут указать сумму и срок действия, обеспечивая лучший пользовательский опыт и безопасность, чем утверждение.
Но на самом деле режим разрешения часто использовался в качестве метода мошеннической атаки (1,2,3): жертвы по ошибке подписывали то, что они считали разрешением на dApp, но на самом деле было передано злоумышленнику.
Когда пользователи подписывают разрешение, они могут видеть только тех, кого нужно авторизовать, но они не знают, какие операции будут связаны с ним для выполнения.
Примечание: Текущий дизайн разрешения несовместим с приложениями dApps с повторяющимися операциями, такими как DCA или другими приложениями для регулярных платежей. Это связано с тем, что разрешение имеет механизм защиты от повторного воспроизведения, поэтому после завершения передачи то же самое разрешение не может быть использовано снова, а это означает, что пользователи должны заранее подписывать разрешение для каждой будущей повторяющейся операции.
Тем не менее, EIP-3074 дает возможность для изменений: когда разработчики dApp знают, что EOA может выполнять различные сложные операции через Invoker, дизайн взаимодействия с dApp не лонгующий должен жертвовать безопасностью в ордер для улучшения пользовательского опыта, например, «пользователи предварительно одобряют большую сумму денег» и «пользователи подписывают сообщение о разрешении на вывод средств». Вместо этого пользователи связывают операции dApp для утверждения и выполнения атомарного выполнения через Invoker: либо операции approve и dApp успешно выполняются вместе, либо они завершаются сбоем вместе. Вероятность успешного утверждения сама по себе невозможна, поэтому пользователи могут быть уверены в том, что это утверждение предназначено для данной операции. Кроме того, пользователи используют авторизацию подписей вне блокчейна, поэтому пользовательский опыт такой же, как и при разрешении! Это означает, что dApp лонгующий не будет нуждаться в режиме разрешения! В будущем кошельки могут напрямую запрещать или проводить более строгие проверки запросов на подпись разрешений, не беспокоясь о том, что это приведет к тому, что пользователи не будут использовать некоторые децентрализованные приложения (но, в свою очередь, будут использоваться для мошенничества).
Пользователи не просто лонгуют определенный адрес, а авторизуют определенный адрес и что делать, и даже видят результат имитации выполнения.
Примечание: Это не означает, что мошенничество может быть полностью заблокировано! Пользователи по-прежнему могут быть обмануты мошенническими веб-сайтами, а мошеннические веб-сайты по-прежнему могут организовывать операции одобрения или передачи для подписи пользователей, но в это время пользователи могут, по крайней мере, видеть, что собирается делать эта подпись, а кошельки могут даже имитировать результаты выполнения дисплея и представлять их пользователям, чтобы пользователи могли четко знать, кто сколько денег потеряет, а кто сколько выиграет. По сравнению с разрешениями, которые не знают, какая операция или даже результат выполнения, у пользователей есть больше информации для принятия решения об авторизации. Несмотря на то, что это не идеальное лекарство, оно все же будет существенным улучшением нынешней ситуации.
Текущий дизайн EIP-3074 будет включать значение nonce EOA в содержимое подписи, так лонг, как EOA отправит транзакцию в цепочку для выполнения и изменит значение nonce, все первоначальные авторизации EIP-3074 будут недействительными.
Если пользователь разрешает кому-то другому управлять EOA, например, с помощью ключа сеанса или метода Social Recovery, упомянутого выше, изменение nonce EOA должно быть предотвращено. В противном случае необходимо заново подписывать все разрешения и передавать их доверенному лицу, что оказывает значительное влияние на пользовательский опыт и надежность механизма.
Если пользователь авторизован для самостоятельной работы, нет необходимости специально препятствовать изменению nonce EOA, поскольку подпись EIP-3074 по-прежнему должна быть выполнена до определенного срока, как и транзакция. Просто кошельку нужно управлять большим количеством транзакций EIP-3074 EOA: если есть подписи EIP-3074, ожидающие загрузки в цепочку, то транзакции самого EOA придется подождать.
Примечание: Сам контракт Invoker будет (и должен) поддерживать набор механизмов nonce, поэтому после использования подписи его все равно нужно будет подписать снова, независимо от того, изменится ли EOA nonce.
Session Key и Social Recovery, скорее всего, придется подождать, пока EIP-3074 не изменит правила, чтобы удалить nonce EOA из содержимого подписи, прежде чем они могут быть приняты в больших масштабах. Таким образом, кошельку нужно сосредоточиться только на варианте использования «авторизованных пользователем операций» и рассматривать подпись EIP-3074 как транзакцию. Нет необходимости беспокоиться о том, чтобы избежать отправки транзакций EOA или изменить nonce EOA.
Однако следует отметить, что если пользователь захочет привнести в цепочку свой собственный контент подписи EIP-3074, будет два недостатка:
Поскольку цепочка сначала добавит 1 к nonce EOA, проверка подписи EIP-3074 завершится ошибкой из-за несоответствия nonce EOA.
Если пользователи добавят 1 к nonce EOA в подписи EIP-3074 перед тем, как добавить его в цепочку, проверка может пройти гладко.
Пригласить больше голосов
Улучшенное и безопасное использование
EIP-3074 позволяет EOA (External Owned Accounts) передавать контроль указанному контракту, тем самым получая те же широкие возможности исполнения, что и контракт. До EIP-3074 EOA мог выполнять только одну операцию на транзакцию, например, утверждение ERC20 или обмен на Uniswap. После EIP-3074 EOA может выполнять несколько операций одновременно или даже выполнять ранее невообразимые задачи. Проще говоря, EIP-3074 значительно улучшает пользовательский опыт, а привычный метод авторизации токенов будет изменен, повышая безопасность без изменения пользовательского опыта.
Более того, благодаря EIP-3074 EOA лонгующий не нужно отправлять транзакции в цепочку самостоятельно, что избавляет от необходимости собирать ETH для оплаты комиссий за транзакции.
Контракт, который может получить контроль над EOA, называется контрактом инициатора. Конечно, не любой контракт может получить контроль над EOA: EOA должен подписать его закрытым ключом, а в содержании подписи будет четко указано, что это за контракт Invoker и какие операции Invoker разрешено выполнять.
Содержимое подписи EOA будет четко указывать, какой контракт Invoker (адрес инициатора) и авторизовать операции этого контракта Invoker (коммит)
Фактический процесс выполнения, вероятно, будет выглядеть следующим образом:
Примечание 1: Ретранслятор не требуется. Алиса также может принести в цепочку свой фирменный контент и печать.
После того, как Invoker проверит подпись и начнет выполнять операцию, она будет выполнена как Alice EOA, что похоже на получение (ограниченного) контроля над EOA.
Однако следует отметить, что nonce значение EOA не будет увеличено после выполнения, поэтому одна и та же подпись может быть использована повторно (так лонг nonce EOA остается неизменной), поэтому Invoker должен реализовать свой собственный механизм nonce, чтобы избежать повторного воспроизведения.
Если контракт Invoker не защищен от повторного воспроизведения, одна и та же авторизация может выполняться постоянно.
Для ознакомления с фактическим механизмом работы EIP-3074, пожалуйста, обратитесь к разделу: Введение в EIP3074
Позволяет пользователям объединять выполнение нескольких транзакций в одну, экономя на процессе нескольких авторизованных подписей и некоторых затратах на газ.
Примечание: Это потребует от dApp также поддержку функции Batchcall, такой как EIP-5792, которая в настоящее время продвигается сообществом. В противном случае dApp будет предлагать пользователю подписать подпись только один раз для каждой операции, если он рассматривает пользователя как обычного EOA.
Пользователи также могут разрешить третьему лицу действовать от их имени при определенных условиях. Ключ делегата на схеме ниже — это авторизованная третья сторона; политика доступа — это ограничение выполнения, например, ограничение только для работы с Uniswap, перевод максимум 1 ETH в день, срок действия авторизации и т. д. Эти условия разрабатываются и проверяются в рамках контракта Invoker. После лонг прохождения проверки третья сторона может выполнять операции в качестве EOA пользователя.
Telegram-боту могут быть предоставлены определенные разрешения на выполнение операций от имени EOA пользователя
По мере того, лонг условия выполняются (т. е. подпись разрешения является законной), передача ETH может быть выполнена в качестве EOA авторизатора, достигая эффекта собственного разрешения ETH.
Пользователь заполняет условия лимита ордер, и когда условия выполнены, он может быть выполнен как EOA пользователя, в том числе одобрять токены для DEX, отправляться в DEX для выкупа и т. д. По сравнению с Лимитный ордер, предоставляемыми самой DEX, пользователям не нужно заранее отправлять транзакции в DEX для одобрения.
Когда Алиса выполнит ордер, она одновременно выполнит утверждение, устраняя необходимость в предварительном утверждении.
Если условие задумано как более общее, оно станет похожим на контракт Intent: по мере лонг выполнение условий, указанных пользователем, любой может выполнить намерение от имени своего EOA.
Если лонг условие Intent выполнено, любой может инициировать выполнение от имени EOA пользователя
Когда пользователь теряет закрытый ключ EOA, он (Алиса) может использовать авторизацию EIP-3074, которую она подписала, вместе с подписями своего уполномоченного лица (мужа и доверительного агента) для передачи всех активов EOA. На самом деле взыскиваются (передаваемые) активы, а не контроль над счетами. После того, как закрытый ключ EOA утерян, EOA не может быть использован в лонгующий период.
Когда пользователь теряет закрытый ключ EOA, другие уполномоченные лица могут подписать и авторизовать передачу активов EOA.
Улучшение методов авторизации маркеров и потенциальная замена утверждения/разрешения?
В настоящее время dApps разрабатываются исходя из предположения, что пользователь является EOA: пользователь должен «предварительно одобрить» и «одобрить достаточную сумму денег» для контракта dApp. Это означает, что пользователям не нужно постоянно оставаться в сети, ждать, пока dApp выполнится, или постоянно повторно одобрять, что значительно улучшает пользовательский опыт. Для приложений, запускаемых условиями, таких как лимитные ордера или DCA, пользователи могут не быть в сети, когда условия выполнены, поэтому им необходимо предварительно одобрить достаточно большую сумму денег для выполнения контракта dApp, и это может быть повторяющимся процессом.
Пользователь должен заранее одобрить достаточно большую сумму для dApp, чтобы dApp мог работать со своими деньгами.
Но также необходимо доверять dApp или избегать одобрения поддельного dApp, и иметь возможность немедленно удалить одобрение
Режимы разрешений, появившиеся позже, такие как нативный токен EIP-2612 или ненативный Permit2, призваны улучшить опыт использования и безопасность режима одобрения: пользователям не нужно лонгующий одобрять большую сумму денег для каждого контракта dApp (и каждый токен должен быть одобрен один раз). Вместо этого пользователю нужно только «подписать имя», чтобы авторизовать контракт dApp на «вывод указанной суммы» в течение «указанного времени». Это не только значительно сокращает поверхность атаки, но и значительно улучшает пользовательский опыт.
Пользователям нужно только подписать вне блокчейна, и они могут указать сумму и срок действия, обеспечивая лучший пользовательский опыт и безопасность, чем утверждение.
Но на самом деле режим разрешения часто использовался в качестве метода мошеннической атаки (1,2,3): жертвы по ошибке подписывали то, что они считали разрешением на dApp, но на самом деле было передано злоумышленнику.
Когда пользователи подписывают разрешение, они могут видеть только тех, кого нужно авторизовать, но они не знают, какие операции будут связаны с ним для выполнения.
Примечание: Текущий дизайн разрешения несовместим с приложениями dApps с повторяющимися операциями, такими как DCA или другими приложениями для регулярных платежей. Это связано с тем, что разрешение имеет механизм защиты от повторного воспроизведения, поэтому после завершения передачи то же самое разрешение не может быть использовано снова, а это означает, что пользователи должны заранее подписывать разрешение для каждой будущей повторяющейся операции.
Тем не менее, EIP-3074 дает возможность для изменений: когда разработчики dApp знают, что EOA может выполнять различные сложные операции через Invoker, дизайн взаимодействия с dApp не лонгующий должен жертвовать безопасностью в ордер для улучшения пользовательского опыта, например, «пользователи предварительно одобряют большую сумму денег» и «пользователи подписывают сообщение о разрешении на вывод средств». Вместо этого пользователи связывают операции dApp для утверждения и выполнения атомарного выполнения через Invoker: либо операции approve и dApp успешно выполняются вместе, либо они завершаются сбоем вместе. Вероятность успешного утверждения сама по себе невозможна, поэтому пользователи могут быть уверены в том, что это утверждение предназначено для данной операции. Кроме того, пользователи используют авторизацию подписей вне блокчейна, поэтому пользовательский опыт такой же, как и при разрешении! Это означает, что dApp лонгующий не будет нуждаться в режиме разрешения! В будущем кошельки могут напрямую запрещать или проводить более строгие проверки запросов на подпись разрешений, не беспокоясь о том, что это приведет к тому, что пользователи не будут использовать некоторые децентрализованные приложения (но, в свою очередь, будут использоваться для мошенничества).
Пользователи не просто лонгуют определенный адрес, а авторизуют определенный адрес и что делать, и даже видят результат имитации выполнения.
Примечание: Это не означает, что мошенничество может быть полностью заблокировано! Пользователи по-прежнему могут быть обмануты мошенническими веб-сайтами, а мошеннические веб-сайты по-прежнему могут организовывать операции одобрения или передачи для подписи пользователей, но в это время пользователи могут, по крайней мере, видеть, что собирается делать эта подпись, а кошельки могут даже имитировать результаты выполнения дисплея и представлять их пользователям, чтобы пользователи могли четко знать, кто сколько денег потеряет, а кто сколько выиграет. По сравнению с разрешениями, которые не знают, какая операция или даже результат выполнения, у пользователей есть больше информации для принятия решения об авторизации. Несмотря на то, что это не идеальное лекарство, оно все же будет существенным улучшением нынешней ситуации.
Текущий дизайн EIP-3074 будет включать значение nonce EOA в содержимое подписи, так лонг, как EOA отправит транзакцию в цепочку для выполнения и изменит значение nonce, все первоначальные авторизации EIP-3074 будут недействительными.
Если пользователь разрешает кому-то другому управлять EOA, например, с помощью ключа сеанса или метода Social Recovery, упомянутого выше, изменение nonce EOA должно быть предотвращено. В противном случае необходимо заново подписывать все разрешения и передавать их доверенному лицу, что оказывает значительное влияние на пользовательский опыт и надежность механизма.
Если пользователь авторизован для самостоятельной работы, нет необходимости специально препятствовать изменению nonce EOA, поскольку подпись EIP-3074 по-прежнему должна быть выполнена до определенного срока, как и транзакция. Просто кошельку нужно управлять большим количеством транзакций EIP-3074 EOA: если есть подписи EIP-3074, ожидающие загрузки в цепочку, то транзакции самого EOA придется подождать.
Примечание: Сам контракт Invoker будет (и должен) поддерживать набор механизмов nonce, поэтому после использования подписи его все равно нужно будет подписать снова, независимо от того, изменится ли EOA nonce.
Session Key и Social Recovery, скорее всего, придется подождать, пока EIP-3074 не изменит правила, чтобы удалить nonce EOA из содержимого подписи, прежде чем они могут быть приняты в больших масштабах. Таким образом, кошельку нужно сосредоточиться только на варианте использования «авторизованных пользователем операций» и рассматривать подпись EIP-3074 как транзакцию. Нет необходимости беспокоиться о том, чтобы избежать отправки транзакций EOA или изменить nonce EOA.
Однако следует отметить, что если пользователь захочет привнести в цепочку свой собственный контент подписи EIP-3074, будет два недостатка:
Поскольку цепочка сначала добавит 1 к nonce EOA, проверка подписи EIP-3074 завершится ошибкой из-за несоответствия nonce EOA.
Если пользователи добавят 1 к nonce EOA в подписи EIP-3074 перед тем, как добавить его в цепочку, проверка может пройти гладко.