
Как Tangem интегрирует сеть и токен в кошелек


Каждый день мы получаем сотни запросов от пользователей на интеграцию новых токенов и сетей от популярных и малоизвестных проектов Web3 в Tangem Wallet. Однако добавление новой блокчейн-сети или токена в кошелек Tangem происходит в соответствии с систематическим процессом, требующим сотрудничества между нашими блокчейн-аналитиками и нашими трудолюбивыми разработчиками.
В этой статье мы опишем весь этот процесс — от анализа и разработки до тестирования и исправления ошибок. Надеемся, вы поймете, почему появление вашей любимой криптовалюты в вашем Tangem Wallet может занять так много времени.
Прием запросов пользователей на интеграцию токенов/сетей
Пользователи отправляют запросы на интеграцию новых токенов через наш публичный чат в Telegram, X(Twitter) и Discord.
Хотя этот механизм запросов кажется вполне удобным, он создает для команды поддержки определенные проблемы, поскольку перенос запросов на токены с нескольких платформ в один файл отнимает довольно много ресурсов.
Становится всё больше случаев, когда члены сообщества проекта буквально атакуют наши социальные каналы запросами. Поэтому мы хотим прояснить, что Tangem оставляет за собой право решать, какие сети или токены интегрировать в свой кошелек.
Однако мы ведем этот внутренний файл, в котором ранжируем токены по популярности исходя из количества запросов от пользователей.
Затем мы рассматриваем технические характеристики топового блокчейна и его экосистемы, включая следующие:
- подробная информация об архитектуре, механизме консенсуса, скорости транзакций, размере блока и любых уникальных особенностях блокчейна;
- документация о возможностях смарт-контрактов, языках скриптов и поддерживаемых стандартах токенов;
- протоколы интеграции и API для подключения к внешним сервисам;
- совместимость с популярными сторонними инструментами, кошельками или другими соответствующими сервисами.
Мы также оцениваем объем необходимой интеграции:
- четко определенные цели и задачи интеграции;
- конкретные функциональные возможности или сервисы, которые необходимо интегрировать;
- любые требования к настройке или конкретные параметры для процесса интеграции.
Часть I. Анализ блокчейн-сети
Перед интеграцией токена или сети, находящихся на вершине нашего списка, мы тщательно анализируем нижеперечисленные факторы.
Является ли запрашиваемая пользователями сеть клоном уже существующей сети?
Клонированная блокчейн-сеть — это дубликат или реплика существующего блокчейна.
Клонирование — это создание нового блокчейна, который имеет ту же кодовую базу, правила и структуру, что и существующий блокчейн. Клонированные блокчейны могут использоваться для создания альтернативных версий существующих проектов.
Например, иногда команда разработчиков клонирует успешный блокчейн, чтобы создать новую криптовалюту с определенными модификациями или улучшениями. Это могут быть, например, изменения в алгоритме консенсуса, времени блока, токеномике или других параметрах.
Если запрашиваемая сеть — клон, то её интеграция оказывается для нас значительно проще и процесс будет более гладким. Если же сеть не является клоном, мы переходим к следующему шагу анализа.
Каков алгоритм подписи?
Алгоритм подписи — это набор правил и процедур для создания и проверки цифровых подписей. Цифровые подписи обеспечивают подлинность, целостность и неопровержимость транзакций. Приведем краткий обзор работы для типичного алгоритма подписи.
- Генерация ключей. Процесс начинается с генерации пары приватного и публичного криптографических ключей. Приватный ключ держится в секрете и известен только субъекту, создающему подпись, в то время как публичный ключ передается другим.
- Подписание. Чтобы создать цифровую подпись, субъект использует свой приватный ключ для выполнения математической операции над хешем (строкой фиксированного размера, полученной из подписанного сообщения).
- Проверка. Любой, кто имеет доступ к публичному ключу, может проверить цифровую подпись и выполнить аналогичную математическую операцию над хешем полученного сообщения. Если вычисленный результат совпадает с подписью, это означает, что транзакция была подписана владельцем приватного ключа, то есть ее подлинность подтверждена.
- Хеширование. Хеш-функция принимает на вход сообщение и выдает строку символов фиксированного размера, которая и является хешем. Хеш служит уникальным представлением исходного сообщения.
- Параметры алгоритма. Алгоритм подписи определяет конкретные математические алгоритмы и параметры, используемые для генерации ключей, подписания и проверки.
Стандартные алгоритмы включают в себя RSA (Rivest-Shamir-Adleman), DSA (Digital Signature Algorithm), ECDSA (Elliptic Curve Digital Signature Algorithm) и EdDSA (Edwards-curve Digital Signature Algorithm).
Криптографический алгоритм подписи, используемый в транзакциях блокчейна, зависит от конкретного блокчейна. Если карты Tangem не поддерживают алгоритм подписи запрошенной сети, мы не можем интегрировать эту сеть.
Каковы API узлов/сервисов сети?
Узлы и API (Application Programming Interfaces) играют важнейшую роль в поддержании сети, проверке транзакций и обеспечении взаимодействия внешних приложений с блокчейн-сетью.
Наличие публичных узлов или сервисных API от разработчиков — особенно распространенных в сетях EVM — является хорошим признаком. Зачастую это позволяет пользователям подключаться к децентрализованным кошелькам. Кроме того, процесс становится проще, когда наши премиум-провайдеры узлов, такие как GetBlock, уже предлагают эти узлы/API.
Однако если нам нужно подписаться на новый сервис или создать собственные узлы, интеграция становится более сложной. Чтобы обеспечить надежность транзакций, мы привлекаем как минимум двух разных провайдеров узлов для каждой сети. Это позволяет избежать возможных проблем, связанных с зависимостью от одного источника.
Сочетание узлов и API обеспечивает правильную работу сети и ее доступность. Узлы поддерживают целостность распределенного реестра, в то время как API помогают разработчикам создавать приложения, использующие возможности блокчейна.
Имеется ли для сети необходимая документация?
Крупные блокчейн-сети и токены публикуют подробную документацию, чтобы помочь разработчикам, пользователям и операторам узлов точнее понимать их и взаимодействовать с ними. Документация предоставляет достаточную информацию об API, механизме консенсуса, смарт-контрактах, настройке узлов, рекомендациях по безопасности, а также об обновлении и миграции.
От качества документации зависит, насколько легко или сложно нашей команде разработчиков будет интегрировать данную сеть. К сожалению, технология блокчейн относительно нова, и технических специалистов, которые способны хорошо подготовить документацию, хватает для не каждого проекта Web3.
Распространенная проблема проектной документации — обычно созданной для пользователей и разработчиков смарт-контрактов — детали генерации хеша для подписи или взаимодействия с API либо недостаточно объяснены, либо вообще опущены. В результате разработчикам Tangem приходится тратить время на изучение кода данной сети.
Есть ли подходящие SDK и библиотеки?
SDK (Software Development Kit) — это набор инструментов для разработки программного обеспечения, который позволяет разработчикам создавать приложения для конкретного программного пакета, аппаратной платформы, компьютерной системы или операционной системы.
SDK включает в себя библиотеки, документацию, образцы кода, а иногда и дополнительные инструменты, такие как отладчики или эмуляторы.
Приложение Tangem является нативным приложением — разработанным только для одной конкретной операционной системы (например, iOS или Android) — поэтому SDK у большинства разработчиков часто не годятся для программистов, работающих с холодным хранением.
Даже JavaScript SDK, созданные для мультиплатформенных приложений, часто не подходят для холодного кошелька, так как наличие подписи требует ввести в это поле приватный ключ. Как вы знаете, приватный ключ генерируется и хранится в чипе Tangem Wallet и никогда не покидает его.
Однако если такой SDK написан на подходящем языке программирования, мы всегда можем усовершенствовать его, взяв оттуда фрагменты кода или используя отдельные функции кодирования, например вычисление/проверку адреса. В последнем случае подходящие библиотеки тоже могут помочь, но такая работа все равно занимает много времени.
Библиотека — это набор заранее написанного кода, подпрограмм, процедур и функций, которые могут использовать другие программы.
Есть ли у блокчейн-сети какие-либо уникальные особенности?
Некоторые сети могут иметь нестандартные атрибуты — наличие резервов или необходимость указывать MEMO при отправке средств — что потребует изменения UI/UX приложения Tangem перед завершением интеграции.
Иногда сеть может иметь очень сложные механизмы взимания комиссий, и тогда Tangem должен наладить четкие линии связи для наших команд разработки и поддержки.
Кроме того, мы привлекаем дизайнерскую команду для доработки пользовательского интерфейса в соответствии с нашим стилем оформления. Все эти процедуры занимают довольно много времени и отнимают много сил у наших специалистов.
Часть II. Интеграция блокчейн-сети
После анализа и одобрения запрашиваемой сети или токена наша команда разработчиков начинает собственно работать над интеграцией. Что же она делает?
1. Поиск подходящего API
Найдя подходящий API, проверяем, можем ли мы получить данные, необходимые для создания транзакции. Это, например, создание структуры данных, которая инкапсулирует детали транзакции, добавление цифровых подписей для аутентификации и соблюдение конкретного формата и правил, продиктованных протоколом блокчейна.
2. Кодирование адреса из публичного ключа
Кодирование адреса из публичного ключа означает преобразование публичного ключа в более удобочитаемый и управляемый формат, известный как адрес.
В Bitcoin адрес представлен в кодировке Base58; в Ethereum — в шестнадцатеричном формате. Шаги и алгоритмы кодирования адресов могут различаться от блокчейна к блокчейну — каждая сеть может иметь свои стандарты кодирования адресов.
3. Получение необходимых данных из API и отправка транзакции
В дополнение к получению транзакций, которые уже были исследованы, мы также интегрируем запрос на отправку транзакции. Нам необходимо получить баланс, а также специфичные для блокчейна данные: UTXO, nonce, хеш свежего блока и информацию о том, создан ли аккаунт получателя. Для успехатранзакции нашей системе необходимо получить важные данные, в особенности ключевые параметры, указанные ниже.
- Баланс. Количество криптовалюты или средств, доступных на счету пользователя. Проверка баланса гарантирует, что у пользователя достаточно средств для инициирования транзакции.
- UTXO (Unspent Transaction Output). Криптовалюта, оставшаяся от предыдущих транзакций, которую пользователь может потратить в новой транзакции.
- Nonce. Уникальный номер, присваиваемый каждой транзакции. Он помогает осуществлять транзакции в хронологическом порядке и предотвращает атаки повторного воспроизведения.
- Хеш свежего блока. Хеш самого последнего блока в блокчейне создает связь между общей историей блокчейна и текущей транзакцией, делая ее устойчивой к подделке.
- Статус аккаунта получателя. Проверяя, создан ли аккаунт получателя, мы убеждаемся, что средства направляются на действительный и активный аккаунт. Это защищает средства от отправки на несуществующие или неактивные аккаунты.
4. Сборка транзакции
Сборка транзакции — это объединение необходимых компонентов информации для создания полной транзакции, которая может быть выполнена в блокчейне. Этот процесс включает в себя сбор и организацию данных, таких как детали транзакции, сведения о получателе, комиссии и любые другие релевантные параметры. Сборка транзакции варьируется в зависимости от блокчейна, но давайте опишем общую схему:
- собираем неподписанную транзакцию из данных, полученных из API, и данных, введенных пользователем (адрес получателя, сумма, комиссии и т. д.);
- вычисляем хеш/хеши для подписи этой транзакции и отправляем ее на карту Tangem;
- подписи возвращаются с карты, и мы добавляем их к транзакции. Кодируем транзакцию с подписями для отправки через API.
Пополнение счета в тестовой сети и отправка транзакций
Мы пополняем счет в тестовой сети и пытаемся отправить транзакцию. Первоначальные попытки часто заканчиваются неудачей, и начинается интригующая эпопея, когда транзакция отклоняется с указанием «неправильного алгоритма подписи» без уточнения конкретных деталей.
Чтобы устранить эту проблему, мы сравниваем неудачную транзакцию с промежуточными результатами в функциональных решениях, иногда прибегая к побайтовому анализу.
После успешной отправки транзакции мы завершаем расчет комиссий. Стоит отметить, что фиксированную комиссию мы часто устанавливаем во время первоначальных попыток.
Заключительный этап включает в себя решение различных функций и необычных случаев. Сюда входит обработка дополнительных параметров транзакции, изучение нестандартных сценариев, таких, например, как отправка на пустой счет (что может потребовать отдельной структуры транзакции, часто связанной с предварительной операцией создания счета), работа с резервами и т. д.
После этого дизайнерская команда добавляет визуальное отображение сети или токена в бэкенд приложения.
Часть III. Тестирование и запуск обновления приложения, содержащего новую сеть
Длительный процесс интеграции завершается тестированием нового обновления приложения, чтобы убедиться, что все последние разработки работают как часы. Приведем краткий обзор фазы тестирования.
Модульное тестирование
Мы проводим тщательное модульное тестирование, чтобы убедиться, что отдельные компоненты приложения Tangem, особенно те, которые связаны с новой интеграцией блокчейна, по отдельности функционируют правильно.
Интеграционное тестирование
Мы проверяем, насколько хорошо кошелек взаимодействует с блокчейном, верно ли подписывает транзакции и обрабатывает данные, специфичные для интегрированной сети. Мы убеждаемся, что обновление приложения Tangem, содержащее новую интегрированную блокчейн-сеть, функционирует должным образом на платформах Android и iOS. Наконец, мы проводим тестирование обновления на безопасность, чтобы выявить и устранить любые уязвимости, связанные с интеграцией.
Пользовательское тестирование (UAT)
Когда обновление приложения уже содержит основные функции новой сети, мы проводим UAT с заранее отобранной группой пользователей или тестовой командой, чтобы собрать отзывы о юзабельности dApp и выявить любые проблемы, которые мы могли упустить на более ранних этапах тестирования.
Исправление ошибок и развертывание в магазинах приложений
Мы устраняем и исправляем все ошибки и проблемы, учитываем отзывы, полученные во время тестирования. Затем наши команды разработки, маркетинга и поддержки готовятся к официальному запуску. Мы развертываем обновленное приложение Tangem в соответствующих магазинах приложений (Google Play Store для Android и Apple App Store для iOS), откуда вы его можете загрузить и начать использовать.
Мониторинг и поддержка
После запуска мы внимательно следим за работой обновленного приложения, полные решимости справиться с любыми возникающими проблемами. Наша команда поддержки всегда готова оказать пользователям поддержку и ответить на их вопросы, связанные с новой интеграцией.
Заключение
Мы рады поделиться с вами подробностями интеграции сетей и токенов в наш кошелек, причем особое внимание мы уделяем безопасности ваших активов и удобству проведения транзакций.
Tangem Wallet теперь поддерживает более 30 блокчейн-сетей и свыше тысячи монет и токенов. Это число продолжает увеличиваться каждый месяц параллельно росту наших команд разработки и поддержки. Мы вложили много сил в нашу стратегию интеграции, не только учли технические детали, но и уделили особое внимание доступности сетей и токенов.
Также мы работаем над стейкингом и улучшением работы кроссчейн-свопа (cross-chain swap) через наш агрегатор — Tangem Express.
Наша дорожная карта на 2024 год включает в себя несколько блокчейн-сетей и токенов, которые мы планируем интегрировать в первом квартале следующего года. Если интересующего вас токена/сети нет на этой карте, вы можете присоединиться к нашим каналам в социальных сетях и отправить запрос.
Спасибо, что выбрали Tangem Wallet для управления вашими криптоактивами и их хранения. Оставайтесь в безопасности.