
Асинхронна обробка — це підхід до проєктування систем, за якого завдання не блокують одне одного і не зобов’язані виконуватися в суворій послідовності. Одне завдання можна запустити і дозволити йому виконуватися у фоновому режимі, тоді як інші операції тривають незалежно. Простий приклад з реального життя — запуск пральної машини та приготування їжі: обидва процеси виконуються паралельно, не очікуючи завершення один одного.
У Web3-системах асинхронна поведінка є типовою. Більшість операцій у блокчейні не виконуються миттєво. Після того як користувач надсилає транзакцію в ланцюг, мережа спочатку розповсюджує її, включає в блок і підтверджує консенсусом. Міжланцюгові взаємодії передбачають обмін повідомленнями між незалежними мережами. Доступ до позаланцюгових даних вимагає оновлення від ораклів, які надходять згідно з розкладом, а не в момент виконання. Розуміння цих затримок є важливим для визначення моменту зворотного зв’язку для користувача й подальших етапів робочого процесу.
Блокчейни — це розподілені системи, які потребують мережевого консенсусу для фіналізації даних. Така архітектура гарантує безпеку і децентралізацію, але водночас призводить до затримок. Транзакція проходить шлях від трансляції до підтвердженого статусу лише після потрапляння до мемпулу, включення в блок і отримання додаткових підтверджень.
Загальновідомі мережеві метрики свідчать, що середній інтервал між блоками у Bitcoin становить близько 10 хвилин, а в Ethereum блоки створюються приблизно кожні 12 секунд. Необхідна кількість підтверджень залежить від застосунку, але зазвичай становить від 1 до 12 блоків. Вищі пороги підтверджень підвищують фінальність транзакції й стійкість до реорганізацій ланцюга, але збільшують час очікування.
Позаланцюгові залежності ще більше посилюють асинхронну поведінку. Оракули, які постачають зовнішні дані в блокчейн, працюють за інтервалами оновлення й графіком подачі даних. Це означає, що смартконтракти не можуть отримати дані з реального світу миттєво під час виконання, що додає ще один рівень асинхронності для децентралізованих застосунків.
Усередині смартконтракту виконання відбувається синхронно. Усі інструкції в межах однієї транзакції виконуються послідовно в одному блоці, а зміни стану застосовуються одразу після успішного виконання. Смартконтракт не може призупинити виконання транзакції, щоб дочекатися зовнішньої відповіді.
Асинхронна поведінка виникає під час взаємодії контрактів із зовнішніми системами:
Наприклад, у протоколі кредитування ціни активів не отримуються в реальному часі під час депозиту. Замість цього оракул періодично публікує оновлення цін. Застосунки відстежують ці оновлення для виконання перевірок ризиків, ліквідацій або оцінки застави.
Синхронна обробка вимагає завершення кожного етапу перед переходом до наступного. Типовий приклад — очікування в черзі на перевірку безпеки, де просування можливе лише після завершення попереднього кроку. Асинхронна обробка дозволяє просування без очікування, як у випадку з резервуванням місця в черзі й поверненням пізніше, коли вас викличуть.
| Аспект | Синхронна | Асинхронна |
|---|---|---|
| Потік виконання | Кожен крок блокує наступний | Кроки виконуються незалежно |
| Користувацький досвід | Очікування є явним і безперервним | Оновлення статусу відбуваються у фоновому режимі |
| Використання в блокчейні | Підписання й надсилання транзакції | Підтвердження, міжланцюгові перекази, індексація |
У продуктовому дизайні синхронні процеси доцільні для дій, що мають відбуватися одна за одною, наприклад підписання транзакції й розрахунок комісії. Асинхронні процеси краще підходять для підтвердження, фіналізації й міжланцюгових операцій, де час очікування змінний і важливі сповіщення для користувача.
Міжланцюгові системи й Layer 2-архітектури підсилюють асинхронну поведінку. Layer 2-рішення обробляють транзакції поза основним ланцюгом і періодично фіксують результати на основному ланцюзі, що створює додаткові періоди очікування.
Optimistic rollup зазвичай вимагають періоду оскарження перед фіналізацією виведення на основному ланцюзі, який часто триває кілька днів. Zero knowledge rollup потребують генерації доказів і пакетного надсилання, а час виведення може становити від кількох хвилин до кількох годин залежно від реалізації. Міжланцюгові мости мають передавати повідомлення між незалежними ланцюгами, тому зарахування активів не є миттєвим.
Користувачі, які переміщують кошти між ланцюгами або з Layer 2 у Layer 1, повинні очікувати чітко визначених асинхронних вікон очікування. Добре спроєктовані застосунки відображають орієнтовну тривалість, індикатори прогресу й зрозумілі оновлення статусу на всіх етапах цих процесів.
Надійні асинхронні робочі процеси залежать від координації між смартконтрактами, інфраструктурними сервісами й користувацькими інтерфейсами.
Крок 1. Надішліть транзакцію й зафіксуйте хеш транзакції, який унікально ідентифікує операцію в ланцюзі.
Крок 2. Відстежуйте події контракту або зміни стану за допомогою підписок на вузли чи індексаційних сервісів для визначення результатів виконання.
Крок 3. Відстежуйте підтвердження блоків і оцінюйте залишковий час на основі середнього інтервалу між блоками й необхідної кількості підтверджень.
Крок 4. Обробляйте затримки, повтори й збої. Якщо транзакція залишається в очікуванні через низьку комісію, користувачам може бути запропоновано її замінити. Якщо міжланцюгові повідомлення затримуються, надайте можливості ескалації або підтримки.
Крок 5. Забезпечте прозорий зворотний зв’язок для користувача. Чітко позначайте стани, такі як надіслано, очікує підтвердження, виконано, і повідомляйте реалістичні часові прогнози.
Депозити й виведення коштів добре ілюструють ці принципи. На сторінках депозитів Gate кошти зараховуються після досягнення необхідної кількості підтверджень блоку. Запити на виведення відображають статус очікування до завершення підтвердження в ланцюзі та внутрішньої перевірки ризиків.
Асинхронні системи створюють невизначеність, яку потрібно активно контролювати.
Для операцій із коштами завжди перевіряйте адреси отримувача, ніколи не розкривайте свій приватний ключ або мнемонічну фразу, і залишайтеся пильними щодо фішингових атак і шахрайських сповіщень.
Асинхронна обробка лежить в основі майже всієї діяльності в блокчейні: підтвердження транзакцій, оновлення ораклів, міжланцюгові повідомлення, виведення з Layer 2. Чітке розділення між синхронним виконанням смартконтрактів і асинхронними зовнішніми процесами є ключовим для надійності та довіри користувачів. Прогрес у вигляді швидших блоків, спільних секвенсерів і вдосконалених мостів спрямований на скорочення затримок, але для досягнення консенсусу й гарантій безпеки завжди потрібен час. Проєктування з урахуванням асинхронності залишається базовою вимогою для стійких Web3-систем.
Ні. Асинхронна обробка не вимагає кількох потоків. Це означає, що виконання триває без очікування завершення операції. Однопотокові цикли подій можуть підтримувати асинхронні робочі процеси так само ефективно, як і багатопотокові системи.
Асинхронний означає такий, що не відбувається одночасно або не є синхронізованим. У комп’ютерних системах це означає, що виконання продовжується під час очікування завершення інших операцій.
Транзакції мають бути розповсюджені, включені до блоків і підтверджені консенсусом. Виконання цих кроків синхронно призвело б до «заморожування» інтерфейсу користувача на тривалий час. Асинхронне підтвердження дозволяє користувачам одразу отримати ідентифікатор транзакції, а фіналізація відбувається у фоновому режимі.
Так. Статус «очікує» означає, що транзакцію надіслано, але ще не підтверджено. Програмне забезпечення гаманця асинхронно відстежує зміни стану блокчейна й оновлює статус після підтвердження.


