Кращий і безпечніший досвід використання
EIP-3074 дозволяє EOA (Outternally Owned Accounts) передавати контроль за певним контрактом, тим самим отримуючи такі ж багаті можливості виконання, як і контракт. До EIP-3074 EOA міг виконувати лише одну операцію за транзакцію, наприклад, затверджувати ERC20 або своп на Uniswap. Після EIP-3074 EOA може виконувати кілька операцій одночасно або навіть виконувати раніше немислимі завдання. Простіше кажучи, EIP-3074 значно покращує користувацький досвід, а звичний метод авторизації токенів буде змінено, підвищуючи безпеку без зміни користувацького досвіду.
Крім того, через EIP-3074 EOA не лонгуючий потрібно самостійно надсилати транзакції в ланцюжок, усуваючи проблему, пов'язану з необхідністю піднімати ETH для сплати комісій за транзакції.
який може отримати контроль над EOA, називається контрактом Invoker. Звичайно, не будь-який контракт може отримати контроль над 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 для затвердження.
Коли Аліса завершує ордер, вона одночасно виконує схвалення, усуваючи необхідність попереднього схвалення.
Якщо умова спроектована таким чином, щоб бути більш загальною, вона стане схожою на контракт про наміри: лонг умови будуть виконані, визначені користувачем, будь-хто може виконати намір від імені свого EOA.
Якщо лонг виконується умова Наміру, будь-хто може ініціювати виконання від імені EOA користувача
Коли користувач втрачає приватний ключ EOA, він (Аліса) може використовувати підписаний нею дозвіл EIP-3074 разом із підписами своєї уповноваженої особи (чоловіка та довірчого агента) для передачі всіх активів EOA. Насправді те, що повертається, є активами, які можна передавати, а не рахунок контролем. Після втрати закритого ключа EOA його не можна лонгуючий використовувати.
Коли користувач втрачає закритий ключ EOA, інші уповноважені особи можуть підписати та санкціонувати передачу активів EOA.
Покращення методів авторизації токенів та потенційна заміна схвалення/дозволу?
В даний час dApps розробляються з припущенням, що користувач є EOA: користувач повинен «попередньо схвалити» і «схвалити достатню суму грошей» для контракту dApp. Це означає, що користувачам не потрібно постійно залишатися в мережі, чекати, поки dApp запуститься, або постійно повторно схвалювати, що значно покращує взаємодію з користувачем. Для додатків, що запускаються умовами, таких як лімітні ордери або DCA, користувачі можуть не бути в мережі, коли виконуються умови, тому їм потрібно попередньо схвалити досить велику суму грошей для виконання контракту dApp, і це може бути повторюваним процесом.
Користувач повинен заздалегідь схвалити досить велику суму для dApp, щоб dApp міг оперувати своїми грошима.
Але також необхідно довіряти dApp або уникати схвалення підробленого dApp, а також мати можливість негайно видалити схвалення
Режими дозволів, які з'явилися пізніше, такі як нативний токен EIP-2612 або нерідний Permit2, призначені для покращення досвіду використання та безпеки режиму схвалення: користувачам не лонгуючий потрібно схвалювати велику суму грошей на кожен контракт dApp (і кожен токен має бути схвалений один раз). Замість цього користувачеві потрібно лише «підписати ім'я», щоб уповноважити контракт dApp «вивести зазначену суму» протягом «зазначеного часу». Це не тільки значно зменшує поверхню атаки, але й значно покращує користувацький досвід.
Користувачам потрібно лише підписати поза блокчейном, і вони можуть вказати суму та термін дії, що забезпечує кращу взаємодію з користувачем та безпеку, ніж схвалення.
Але насправді, режим дозволу не тільки схвалюють, але й часто використовують як метод шахрайської атаки (1,2,3): жертви помилково підписували те, що вони вважали дозволом на dApp, але насправді було надано зловмиснику.
Коли користувачі підписують дозвіл, вони бачать лише того, кого авторизувати, але не знають, які операції будуть пов'язані з ним для виконання.
Примітка: Поточний дизайн дозволу несумісний із децентралізованими додатками, що повторюють роботу, такими як DCA або інші регулярні платіжні програми. Це пов'язано з тим, що дозвіл має механізм захисту від повторного відтворення, тому після завершення передачі той самий дозвіл не може бути використаний знову, а це означає, що користувачі повинні заздалегідь підписувати дозвіл на кожну майбутню повторювану операцію.
Однак EIP-3074 приносить можливість для змін: коли розробники dApp знають, що EOA може виконувати різні складні операції через Invoker, дизайн взаємодії з dApp лонгуючий не повинен жертвувати безпекою в ордер для покращення користувацького досвіду, наприклад, «користувачі попередньо схвалюють велику суму грошей» і «користувачі підписують повідомлення про дозвіл, щоб авторизувати виведення коштів». Замість цього користувачі пов'язують операції dApp для затвердження та виконання атомарного виконання через Invoker: або операції approve і dApp успішно виконуються разом, або вони зазнають невдачі разом. Лише для схвалення немає можливості успіху, тому користувачі можуть бути впевнені, що це схвалення призначене для цієї операції. А користувачі використовують поза блокчейном авторизацію підпису, тому користувацький досвід такий самий, як і у permit! Це означає, що dApp не лонгуючий знадобиться режим дозволу! У майбутньому гаманці можуть безпосередньо забороняти або проводити суворіші перевірки запитів на підпис дозволів, не турбуючись про те, чи не призведе це до того, що користувачі не використовуватимуть деякі dApps (але, у свою чергу, будуть використані для шахрайства).
Користувачі не лонгуючий просто авторизувати певну адресу, а авторизувати певну адресу і що робити, і навіть бачити змодельований результат виконання.
Примітка: Це не означає, що шахрайство можна повністю заблокувати! Користувачі все ще можуть бути обмануті на шахрайські веб-сайти, і шахрайські веб-сайти все ще можуть організовувати операції схвалення або передачі для підпису користувачів, але в цей час користувачі можуть принаймні бачити, що цей підпис збирається робити, а гаманці можуть навіть імітувати результати виконання дисплея та представляти їх користувачам, щоб користувачі могли чітко знати, хто скільки грошей втратить і хто скільки грошей отримає. У порівнянні з дозволами, які не знають, яка операція або навіть результат виконання, користувачі мають більше інформації, щоб вирішити, чи авторизуватися. Хоча це не ідеальне лікування, воно все одно буде суттєвим покращенням нинішньої ситуації.
Поточний дизайн EIP-3074 включатиме значення nonce EOA у вміст підпису, тому, оскільки лонг EOA надсилає транзакцію в ланцюжок для виконання та змінює значення nonce, усі оригінальні авторизації EIP-3074 будуть визнані недійсними.
Якщо користувач уповноважує іншу особу на використання EOA, наприклад, за допомогою ключа сеансу або методу соціального відновлення, згаданих вище, необхідно запобігти зміні nonce EOA. В іншому випадку необхідно заново підписувати всі дозволи та передавати їх довіреній особі, що має значний вплив на користувацький досвід та надійність механізму.
Якщо користувач уповноважений працювати самостійно, немає необхідності спеціально перешкоджати зміні nonce EOA, оскільки підпис EIP-3074 все одно очікується до певного терміну, як і транзакція. Просто гаманцю потрібно управляти більшою кількістю транзакцій EIP-3074 EOA: якщо є EIP-3074 підписи, які чекають на завантаження в ланцюжок, то транзакції самого EOA доведеться почекати.
Примітка: Сам контракт Invoker буде (і повинен) підтримувати набір nonce механізмів, тому після використання підпису його все одно потрібно підписати знову, незалежно від того, чи зміниться nonce EOA.
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 (Outternally Owned Accounts) передавати контроль за певним контрактом, тим самим отримуючи такі ж багаті можливості виконання, як і контракт. До EIP-3074 EOA міг виконувати лише одну операцію за транзакцію, наприклад, затверджувати ERC20 або своп на Uniswap. Після EIP-3074 EOA може виконувати кілька операцій одночасно або навіть виконувати раніше немислимі завдання. Простіше кажучи, EIP-3074 значно покращує користувацький досвід, а звичний метод авторизації токенів буде змінено, підвищуючи безпеку без зміни користувацького досвіду.
Крім того, через EIP-3074 EOA не лонгуючий потрібно самостійно надсилати транзакції в ланцюжок, усуваючи проблему, пов'язану з необхідністю піднімати ETH для сплати комісій за транзакції.
який може отримати контроль над EOA, називається контрактом Invoker. Звичайно, не будь-який контракт може отримати контроль над 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 для затвердження.
Коли Аліса завершує ордер, вона одночасно виконує схвалення, усуваючи необхідність попереднього схвалення.
Якщо умова спроектована таким чином, щоб бути більш загальною, вона стане схожою на контракт про наміри: лонг умови будуть виконані, визначені користувачем, будь-хто може виконати намір від імені свого EOA.
Якщо лонг виконується умова Наміру, будь-хто може ініціювати виконання від імені EOA користувача
Коли користувач втрачає приватний ключ EOA, він (Аліса) може використовувати підписаний нею дозвіл EIP-3074 разом із підписами своєї уповноваженої особи (чоловіка та довірчого агента) для передачі всіх активів EOA. Насправді те, що повертається, є активами, які можна передавати, а не рахунок контролем. Після втрати закритого ключа EOA його не можна лонгуючий використовувати.
Коли користувач втрачає закритий ключ EOA, інші уповноважені особи можуть підписати та санкціонувати передачу активів EOA.
Покращення методів авторизації токенів та потенційна заміна схвалення/дозволу?
В даний час dApps розробляються з припущенням, що користувач є EOA: користувач повинен «попередньо схвалити» і «схвалити достатню суму грошей» для контракту dApp. Це означає, що користувачам не потрібно постійно залишатися в мережі, чекати, поки dApp запуститься, або постійно повторно схвалювати, що значно покращує взаємодію з користувачем. Для додатків, що запускаються умовами, таких як лімітні ордери або DCA, користувачі можуть не бути в мережі, коли виконуються умови, тому їм потрібно попередньо схвалити досить велику суму грошей для виконання контракту dApp, і це може бути повторюваним процесом.
Користувач повинен заздалегідь схвалити досить велику суму для dApp, щоб dApp міг оперувати своїми грошима.
Але також необхідно довіряти dApp або уникати схвалення підробленого dApp, а також мати можливість негайно видалити схвалення
Режими дозволів, які з'явилися пізніше, такі як нативний токен EIP-2612 або нерідний Permit2, призначені для покращення досвіду використання та безпеки режиму схвалення: користувачам не лонгуючий потрібно схвалювати велику суму грошей на кожен контракт dApp (і кожен токен має бути схвалений один раз). Замість цього користувачеві потрібно лише «підписати ім'я», щоб уповноважити контракт dApp «вивести зазначену суму» протягом «зазначеного часу». Це не тільки значно зменшує поверхню атаки, але й значно покращує користувацький досвід.
Користувачам потрібно лише підписати поза блокчейном, і вони можуть вказати суму та термін дії, що забезпечує кращу взаємодію з користувачем та безпеку, ніж схвалення.
Але насправді, режим дозволу не тільки схвалюють, але й часто використовують як метод шахрайської атаки (1,2,3): жертви помилково підписували те, що вони вважали дозволом на dApp, але насправді було надано зловмиснику.
Коли користувачі підписують дозвіл, вони бачать лише того, кого авторизувати, але не знають, які операції будуть пов'язані з ним для виконання.
Примітка: Поточний дизайн дозволу несумісний із децентралізованими додатками, що повторюють роботу, такими як DCA або інші регулярні платіжні програми. Це пов'язано з тим, що дозвіл має механізм захисту від повторного відтворення, тому після завершення передачі той самий дозвіл не може бути використаний знову, а це означає, що користувачі повинні заздалегідь підписувати дозвіл на кожну майбутню повторювану операцію.
Однак EIP-3074 приносить можливість для змін: коли розробники dApp знають, що EOA може виконувати різні складні операції через Invoker, дизайн взаємодії з dApp лонгуючий не повинен жертвувати безпекою в ордер для покращення користувацького досвіду, наприклад, «користувачі попередньо схвалюють велику суму грошей» і «користувачі підписують повідомлення про дозвіл, щоб авторизувати виведення коштів». Замість цього користувачі пов'язують операції dApp для затвердження та виконання атомарного виконання через Invoker: або операції approve і dApp успішно виконуються разом, або вони зазнають невдачі разом. Лише для схвалення немає можливості успіху, тому користувачі можуть бути впевнені, що це схвалення призначене для цієї операції. А користувачі використовують поза блокчейном авторизацію підпису, тому користувацький досвід такий самий, як і у permit! Це означає, що dApp не лонгуючий знадобиться режим дозволу! У майбутньому гаманці можуть безпосередньо забороняти або проводити суворіші перевірки запитів на підпис дозволів, не турбуючись про те, чи не призведе це до того, що користувачі не використовуватимуть деякі dApps (але, у свою чергу, будуть використані для шахрайства).
Користувачі не лонгуючий просто авторизувати певну адресу, а авторизувати певну адресу і що робити, і навіть бачити змодельований результат виконання.
Примітка: Це не означає, що шахрайство можна повністю заблокувати! Користувачі все ще можуть бути обмануті на шахрайські веб-сайти, і шахрайські веб-сайти все ще можуть організовувати операції схвалення або передачі для підпису користувачів, але в цей час користувачі можуть принаймні бачити, що цей підпис збирається робити, а гаманці можуть навіть імітувати результати виконання дисплея та представляти їх користувачам, щоб користувачі могли чітко знати, хто скільки грошей втратить і хто скільки грошей отримає. У порівнянні з дозволами, які не знають, яка операція або навіть результат виконання, користувачі мають більше інформації, щоб вирішити, чи авторизуватися. Хоча це не ідеальне лікування, воно все одно буде суттєвим покращенням нинішньої ситуації.
Поточний дизайн EIP-3074 включатиме значення nonce EOA у вміст підпису, тому, оскільки лонг EOA надсилає транзакцію в ланцюжок для виконання та змінює значення nonce, усі оригінальні авторизації EIP-3074 будуть визнані недійсними.
Якщо користувач уповноважує іншу особу на використання EOA, наприклад, за допомогою ключа сеансу або методу соціального відновлення, згаданих вище, необхідно запобігти зміні nonce EOA. В іншому випадку необхідно заново підписувати всі дозволи та передавати їх довіреній особі, що має значний вплив на користувацький досвід та надійність механізму.
Якщо користувач уповноважений працювати самостійно, немає необхідності спеціально перешкоджати зміні nonce EOA, оскільки підпис EIP-3074 все одно очікується до певного терміну, як і транзакція. Просто гаманцю потрібно управляти більшою кількістю транзакцій EIP-3074 EOA: якщо є EIP-3074 підписи, які чекають на завантаження в ланцюжок, то транзакції самого EOA доведеться почекати.
Примітка: Сам контракт Invoker буде (і повинен) підтримувати набір nonce механізмів, тому після використання підпису його все одно потрібно підписати знову, незалежно від того, чи зміниться nonce EOA.
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, перш ніж самостійно внести його в ланцюжок, перевірка може пройти гладко.