Як зробити DeFi безпечнішими: пояснюємо роботу примітиву Timelock в Tezos

Як зробити DeFi безпечнішими: пояснюємо роботу примітиву Timelock в Tezos

Безпека блокчейна будується на тому, що всі дані публічні та відкриті. І ось розробники Tezos планують впровадити примітив Timelock, за допомогою якого користувачі будуть приховувати транзакції до певного часу. Парадоксально, але це тільки підвищить безпеку мережі. Пояснюємо, як буде працювати Timelock і від чого він захистить користувачів.

Ми написали цей матеріал на основі статті команди Nomadic Labs.

Боти отримують прибуток із транзакцій користувачів

Для початку згадаємо механізм виконання транзакцій:

  1. Користувач транслює транзакцію в мережу.
  2. Транзакція потрапляє в мемпул — «передпокій» блокчейна.
  3. Бейкер заповнює блок транзакціями в порядку зменшення комісій.
  4. Бейкер додає блок в блокчейн, а мережа по черзі виконує транзакції.
  5. Якщо дві транзакції в блоці звертаються до одного смарт-контракту, то спочатку мережа виконає транзакцію з більшою комісією.

Недобросовісні бейкери можуть отримати з цього механізму вигоду. Припустимо, бейкер Аліса створила бота, який шукає в мемпулі виклики смарт-контрактів біржі Quipuswap. Він знаходить транзакцію Боба на покупку $10 000 kUSD за tez. Аліса створює транзакцію на покупку такої ж кількості kUSD, але з більшою комісією, і включає обидва звернення в блок.

Мережа спочатку виконує запит Аліси. Вона отримує $10 000 kUSD за ціною $1 за токен. Контракт Quipuswap перераховує баланс монет і встановлює новий обмінний курс — $1,01. Потім мережа виконує запит Боба. Контракт повторно перераховує токени і підвищує курс до $1,02. Після цього Аліса продає свої kUSD за новою ціною і витягує 2% прибутку.

У мережі Ethereum подібні боти регулярно атакують користувачів децентралізованих бірж. Вони навіть отримали власну назву — флешботи. Один з яскравих інцидентів стався у 2020 році: флешбот на очах у користувача витягнув $12 000 з контракту Uniswap.

Timelock на прикладі дитячої гри

Уявіть, що флешбот грає з користувачем в камінь, ножиці, папір. Який би жест не показала людина, бот встигне зреагувати та показати виграшний жест, тобто створити зустрічну транзакцію до моменту публікації блоку в блокчейн.

Простий спосіб нівелювати перевагу флешбота в швидкості реакції — зробити так, щоб бот до останнього не бачив жест користувача. У грі це можна реалізувати за допомогою таймера, коробки з трьома кнопками для кожного жесту всередині та екрану. Людина засовує руку в коробку і тисне потрібну кнопку. Бот бачить, що користувач зробив хід, але не може дізнатися, який саме. За правилами він повинен також зробити хід або відмовитися. Після закінчення часу на екрані з’являються жести гравців.

Timelock — аналог коробки з кнопками. Користувач транслює транзакцію в мемпул в зашифрованому вигляді. Флешбот не може її прочитати та зробити безпрограшний хід. Потім користувач публікує ключ дешифрування і відкриває зміст транзакції для виконання. Розкриття відбувається за мить до підписання блоку, щоб у бота не було часу створити транзакцію для отримання прибутку.

Нюанси реалізації Timelock

В описаному механізмі Timelock є вразливість: користувач може заспамити мережу Timelock-транзакціями та надати ключі дешифрування тільки до тих, які принесуть йому вигоду. Щоб такого не сталося, розробники планують реалізувати ручний підбір ключа і зобов’язати користувачів вносити страхові депозити.

При створенні Timelock-транзакції користувач вибирає час обов’язкового виконання транзакції. Від вибору залежить стійкість шифру: транзакцію з часом виконання в наступному блоці учасники мережі самостійно розшифрують за 30 секунд, а з часом виконання через 3000 блоків — за добу.

За кожну Timelock-транзакцію користувач вносить страховий депозит. При публікації ключа дешифрування мережа повертає йому частину депозиту і спалює залишок. Якщо користувач не віддав ключ, інші учасники можуть розшифрувати транзакцію самостійно, опублікувати ключ і забрати ту ж частину депозиту.

Так механізм депозитів зробить спам Timelock-транзакціями болючим для гаманця недобросовісних користувачів і вигідним для інших учасників мережі.

Підписуйтесь на соцмережі Tezos Ukraine, щоб нічого не пропустити:

  1. Telegram-канал.
  2. Facebook.
  3. Twitter українською та російською мовами.
  4. Twitter англійською мовою.
  5. YouTube-канал.
  6. Instagram.
  7. LinkedIn.
  8. hub на ForkLog.

наступний

Kukai 2.0: як розробники адаптували гаманець для роботи з NFT

Читайте схожі пости

Що спільного у Tezos та Стоунхенджа: розповідає СОО TriliTech Робін Макс

Що спільного у Tezos та Стоунхенджа: розповідає СОО TriliTech Робін Макс

Організації та бібліотеки для розробників на Tezos

Організації та бібліотеки для розробників на Tezos

Інтеграція інструментів і технологій для розробників в екосистему Tezos

Інтеграція інструментів і технологій для розробників в екосистему Tezos

Читайте блог і не пропускайте новини про TezosЧитати блог

Спільнота