Интеграция кошелька с Trezor

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Интеграция кошелька с Trezor
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1056
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Интеграция кошелька с 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 (без iframe) — используется в Trezor Suite напрямую. Но для web-интеграции @trezor/connect-web — стандартный выбор.

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

Инициализация:

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() и показывать предупреждение об обновлении.

Отличия от Ledger в реализации

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

Базовая интеграция с Trezor (адрес + подпись транзакций + EIP-712) — 1-2 недели с учётом тестирования на Model T и Model One и обработки всех edge cases.