Статья 12 из 123 мин чтения

Компактный и нативный: C++ без среды выполнения JavaScript, от рабочей станции до Raspberry Pi

Кошелёк — это программа безопасности. Он должен быть достаточно маленьким, чтобы его можно было проверить, достаточно быстрым, чтобы о нём забыть, и без движущихся частей, которые ему не принадлежат.

Чип C++ над монитором, ноутбуком и одноплатным компьютером
Один нативный бинарник на каждую платформу.
Содержание

C++ и Qt

AirNox Wallet написан на C++ с использованием фреймворка Qt. Криптография, код для работы с сетями, сборщики транзакций и проверка запросов — всё это живёт в одном нативном ядре, скомпилированном под каждую платформу. Интерфейс тоже нативный. Нет ни встроенного браузера, который рисует кошелёк, ни скриптового движка, который им управляет.

У этого три ощутимых следствия. Кошелёк запускается мгновенно. В простое он ведёт себя тихо и потребляет так мало, что машина остаётся свободной для других задач. И под ним нет среды выполнения, которая сама обновляется, подгружает пакеты или выполняет код, скачанный неизвестно откуда.

Чего внутри нет

Нет среды выполнения JavaScript. Значительная часть взломов кошельков идёт через экосистемы пакетов и внедрение скриптов. Кошелёк без скриптового движка для них не мишень.

Нет web view. Интерфейс рисует фреймворк, а не браузерный компонент. Нет страницы, в которую можно что-то внедрить.

Нет телеметрии, аналитики и трекеров. Кошелёк общается с нодами блокчейнов и с провайдерами свопов и мостов, которые вы сами выбрали. С нами он не общается. Ничто не «звонит домой», и учётную запись создавать не нужно.

Четыре плитки платформ — Windows, Linux, macOS и Raspberry Pi — и три перечёркнутых пункта: среда выполнения JavaScript, web view, телеметрия
Где работает и без чего обходится.

Платформы

Десктопное приложение работает на Windows, Linux и macOS — в виде нативной сборки для каждой системы. Тот же код работает на железе класса Raspberry Pi, поэтому AirNox подходит для встраиваемых решений: терминала обменного пункта, киоска самообслуживания, станции подписи в бэк-офисе. Небольшая плата с экраном, USB NFC-ридер и кошелёк — это законченное рабочее место, готовое к работе через воздушный зазор (air gap), а ключи хранятся на телефоне, который прикладывают к ридеру.

Одно ядро подписи

У приложения на телефоне и у десктопа общее ядро. Код, который выводит ключи, собирает транзакцию и декодирует её для экрана, на обоих устройствах один и тот же, просто скомпилирован под каждое. Для каждой сети нужно проверять одну реализацию, а не две, которые обязаны совпадать, и исправление на одной стороне — исправление на обеих.

Почему это важно

Компактность и нативность — не вопрос вкуса. Каждая зависимость — место, где чужая ошибка становится вашей. Каждая среда выполнения — поверхность атаки. Каждый сетевой запрос, без которого можно обойтись, — утечка чего-то. Кошелёк, который представляет собой одну нативную программу и общается только с теми нодами, на которые вы его направили, — это кошелёк, поведение которого можно понять. Этой планки мы придерживаемся во всём продукте — от устройства подписи (signer) на телефоне до окна на вашем столе.

Вся серия

  1. Считайте, что компьютер скомпрометирован
  2. Mass Adoption Security: подписывает телефон, который у вас уже есть
  3. Три пути через зазор: QR-коды, Bluetooth LE и NFC
  4. Невидимый в эфире: устройство подписи, которое не найти сканером
  5. Никакого доверия транспорту
  6. Что показывает телефон: анализ транзакций на устройстве подписи
  7. Телефон ведёт собственный журнал
  8. Хранилище на вашем компьютере: Argon2id и профиль, устойчивый к подбору пароля
  9. dApp без кошелька в браузере
  10. MCP-сервер с правилами: ИИ-агенты в рамках лимитов
  11. Один защищённый кошелёк для всего
  12. Компактный и нативный: C++ без среды выполнения JavaScript, от рабочей станции до Raspberry Pi

Запишитесь в лист ожидания

Оставьте почту, и мы пришлём новости о релизе. Больше ничего.