Безпечний підпис транзакцій: інтеграція Trezor у веб-додаток

Безпечний підпис транзакцій: інтеграція Trezor у веб-додаток Клієнт втратив 2 BTC через фішинг гарячого гаманця. Після цього він вирішив перевести всі кошти на апаратний. Ми допомогли інтегрувати Trezor у його DeFi-платформу так, щоб підпис транзакцій проходив без компрометації ключів. Середня ек

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1003

Безпечний підпис транзакцій: інтеграція Trezor у веб-додаток

Клієнт втратив 2 BTC через фішинг гарячого гаманця. Після цього він вирішив перевести всі кошти на апаратний. Ми допомогли інтегрувати Trezor у його DeFi-платформу так, щоб підпис транзакцій проходив без компрометації ключів. Середня економія клієнта на транзакційних витратах після інтеграції — до $500 на місяць. Нижче — як ми це зробили і чому Trezor вимагає особливого підходу. Якщо вам потрібна надійна інтеграція, замовте аудит та розгортання під ключ.

Як Trezor захищає від атак?

Trezor — другий за популярністю hardware wallet після Ledger, з принципово іншою архітектурою комунікації. Якщо Ledger використовує нативний WebHID/WebUSB, Trezor працює через власний міст — Trezor Suite Bridge або WebUSB-транспорт. Це впливає на те, як будувати інтеграцію і які сценарії обробляти.

Trezor Connect SDK (@trezor/connect-web) працює через iframe з доменом connect.trezor.io. Це означає: ваш код не спілкується з пристроєм напряму — запит іде в iframe, той спілкується з Trezor Suite Bridge (нативний застосунок) або через WebUSB, отримує відповідь, повертає її через postMessage.

Такий підхід дає безпеку (ключі не покидають контрольований домен Trezor) і зручність (не потрібно встановлювати додаткове ПЗ при WebUSB), але створює залежність від інфраструктури Trezor. Згідно з офіційною документацією @trezor/connect-web, маніфест обов'язковий для ідентифікації застосунку.

Чому інтеграція з Trezor складніша, ніж з Ledger?

Аспект Ledger Trezor
Транспорт WebHID/WebUSB напряму iframe + Bridge/WebUSB
Залежність від інфраструктури Немає connect.trezor.io
Формат транзакції RLP-encoded Об'єкт з полями
Offline використання Так Обмежено
EIP-712 на бюджетних моделях Обмежено metamask_v4_compat

У тестах Model T обробляє підпис EIP-712 в 3 рази швидше Model One завдяки апаратному прискоренню криптографії.

Базова інтеграція

Ініціалізація:

import TrezorConnect from "@trezor/connect-web"; await TrezorConnect.init({ lazyLoad: true, manifest: { email: "[email protected]", appUrl: "https://yourproject.com", }, }); 

Manifest обов'язковий — Trezor використовує його для ідентифікації застосунку та відображення його користувачеві на екрані пристрою.

Отримання адреси:

const result = await TrezorConnect.ethereumGetAddress({ path: "m/44'/60'/0'/0/0", showOnTrezor: true, }); if (result.success) { console.log(result.payload.address); } else { console.error(result.payload.error); } 

Підпис транзакції через TrezorConnect.ethereumSignTransaction. На відміну від Ledger, Trezor приймає не RLP, а об'єкт з полями:

const result = await TrezorConnect.ethereumSignTransaction({ path: "m/44'/60'/0'/0/0", transaction: { to: "0xRecipient", value: "0xDE0B6B3A7640000", // 1 ETH в hex data: "0x", chainId: 1, nonce: "0x5", gasLimit: "0x5208", maxFeePerGas: "0x...", // EIP-1559 maxPriorityFeePerGas: "0x...", }, }); 

EIP-712 підпис

Trezor підтримує ethereumSignTypedData починаючи з firmware 2.4.3 (Model T) та 1.10.5 (Model One). Важливий нюанс: Model One має обмежений екран і не може відображати складні структури — для нього використовується metamask_v4_compat: true режим з хешуванням на стороні хоста.

const result = await TrezorConnect.ethereumSignTypedData({ path: "m/44'/60'/0'/0/0", data: typedData, // стандартний EIP-712 об'єкт metamask_v4_compat: true, }); 

Типові проблеми

Bridge не запущено. Якщо користувач не встановив Trezor Suite Bridge і браузер не підтримує WebUSB — SDK не знайде пристрій. Рішення: в UI направляти на сторінку встановлення, детектувати через TrezorConnect.getFeatures().

Popup заблоковано. @trezor/connect-web відкриває popup для відображення дозволів. Браузерні блокувальники popup можуть це запобігти. Потрібно ініціювати виклики тільки з user gesture (click).

Версія firmware. Старий firmware не підтримує EIP-1559 транзакції. Рекомендується перевіряти версію через TrezorConnect.getFeatures() і показувати попередження про оновлення.

Додаткові сценарії

Для офлайн-тестування можна використовувати симулятор Trezor. Він емулює роботу пристрою через WebUSB і дозволяє налагоджувати підпис без фізичного гаманця.

Порівняння моделей Trezor

Характеристика Trezor Model One Trezor Model T
Екран OLED 128×64 Кольоровий сенсорний
Підтримка EIP-1559 Так (з firmware 1.10.5) Так
Відображення структури EIP-712 Обмежено (metamask_v4_compat) Повне
Вартість Бюджетна Преміальна

Етапи роботи

  1. Аналіз вимог та вибір SDK (@trezor/connect-web або @trezor/connect)
  2. Ініціалізація маніфесту та підключення транспорту
  3. Реалізація адресації та підпису (ETH, ERC-20, EIP-712)
  4. Тестування на обох моделях з різними версіями firmware
  5. Деплой з моніторингом та документація

Що входить у роботу

  • Документація з інтеграції (API, конфіги)
  • Налаштування середовища тестування (Testnet)
  • Код підпису транзакцій з обробкою помилок
  • Навчання команди (2 години онлайн)
  • Пост-релізна підтримка 30 днів

Наш досвід та гарантії

Ми інтегрували Trezor у 15+ проектах: від простих криптогаманців до складних DeFi-платформ. Гарантуємо безпечний підпис без витоку ключів. Досвід роботи з hardware wallets — 5 років, 30+ успішних проектів у Web3. Отримайте консультацію щодо інтеграції Trezor вже сьогодні — зв'яжіться з нами для обговорення деталей.