Путь деривации в Tangem Wallet

What is a Cold Wallet?

При импорте seed-фразы из стороннего кошелька, поддерживающего мультиаккаунты, т. е. кошелька, создающего новые адреса для монеты после каждой транзакции, вы увидите только баланс первого адреса, который может быть равен 0.

Чтобы решить эту проблему, необходимо создать пользовательский токен с таким же путем деривации, как у кошелька, из которого импортируется seed-фраза.
 

Что такое путь деривации?

Термин «путь деривации» относится к генерации определенного адреса или публичного ключа из мнемонической мастер-фразы (мастер-seed) или корневого ключа. При выполнении доступа к кошельку вычисляется путь деривации, последовательность чисел и слэшей (/), которая определяют иерархию ключей.

Путь деривации создает древовидную структуру, каждый уровень которой представляет собой новую пару ключей. Путь определяет конкретную ветвь, которую нужно пройти для получения требуемой пары ключей.

Это позволяет сгенерировать несколько адресов и ключей из одной мнемонической мастер-фразы, что упрощает управление и организацию адресов для различных целей или аккаунтов.

Например, путь деривации «m/44'/0'/0» будет генерировать определенный адрес, начиная с мастер-seed (m), затем он выведет пару ключей на уровне 44' (защищенный ключ), далее на уровне 0' (еще один защищенный ключ) и, наконец, на уровне 0 (незащищенный ключ).

Типичная структура пути деривации выглядит следующим образом:

m/purpose'/coin_type'/account'/change/address_index
  • m: представляет мастер-ключ (или корневой ключ).
  • Purpose: это поле, добавленное через BIP43, указывает стандарт пути деривации. 

Оно может включать 0 или 44, относящиеся к стандартным BIP44 P2PKH / '1' legacy-адресам; 45, относящиеся к предлагаемым BIP45 P2SH — кошелькам с мультиподписью; 47, относящиеся к черновым BIP47 повторно используемым платежным кодам; 48, относящиеся к аппаратным кошелькам c мультиподписью (без BIP или стандартного предложения); 49, относящиеся к BIP49 P2WPKH-nested-in-P2SH / '3' SegWit-адресам; или 84, относящиеся к BIP84 P2WPKH / 'bc1' Native SegWit — адресам.

Tangem Wallet поддерживает только Legacy BIP44 (P2PKH) и SegWit BIP84 (P2WPKH).

  • Coin type. Это поле указывает, какая криптовалюта используется в мультивалютном кошельке. Всем монетам, включая тестовый Bitcoin, присваивается постоянный номер. Например, путь деривации для аккаунта Hedera (HBAR) будет m/44'/3030'. BIP45 будет обозначать этот уровень как “Cosigner Index”.
     
  • Account. Это поле в мультиаккаунтовом кошельке указывает на идентификатор или коллекцию адресов, что позволяет пользователям разделять средства для разных целей (например, сбережения, пожертвования). Обратите внимание, что BIP45 не будет включать это поле. BIP47 будет обозначать этот уровень как “Identity”, хотя он эквивалентен “Account”.
     
  • Change. Это поле, если присутствует константа 0, указывает на «внешнюю цепочку», или обычные адреса; если присутствует константа 1 это указывает на «внутреннюю цепочку», или адреса для сдачи. Примечание: BIP47 будет обозначать этот уровень для ключей уведомлений и эфемерных платежных кодов.
     
  • Address Index. Это поле указывает на конкретный номер адреса в аккаунте в последовательности.

“Account” и “Address Index” начинаются с нуля (0). Это связано с тем, что они используют нумерацию, начинающуюся с нуля, подобно «нулевым этажам» европейских зданий, тогда как в США и России, скажем, нумерация идет с первого этажа.

Например, у вас есть BIP44-совместимый биткойн-кошелек, и вы хотите найти второй адрес для сдачи в вашем третьем аккаунте. Путь деривации второго адреса для сдачи в третьем аккаунте будет выглядеть так: m/44'/0'/2'/1/1.

Вот отформатированная таблица для путей деривации Bitcoin на основе предоставленной информации:

Формат

Путь деривации

Начинается с

Примечание

Legacy (P2WSH)

m/44'/0'/0'/0/*

‘1’

Совместим со всеми биткойн-кошельками и биржами.

Nested Segwit (P2SH-P2WSH)

m/49'/0'/0'/0/*

‘3’

Улучшенная безопасность и более низкие комиссии по сравнению с Legacy-адресами.

Native Segwit (P2WSH)

m/84'/0'/0'/0/*

‘bc1’

Самый эффективный и безопасный формат адресов биткойн, обеспечивающий экономию средств и усиленную безопасность.

Taproot (P2TR)

m/86'/0'/0'/*

‘bc1p’

Использование подписей Шнорра, которые обеспечивают высокую безопасность, сниженные комиссии и более гибкие транзакции с несколькими ключами.

 

Каким блокчейнам требуется указанный путь деривации?

Некоторые блокчейны генерируют новый адрес для каждой входящей транзакции, используя протокол UTXO (Unspent Transaction Output). UTXO — это сумма криптовалюты, оставшаяся после транзакции. Модель UTXO позволяет пользователям отслеживать владение всеми частями криптовалюты. Чтобы найти путь деривации, вам нужно будет найти xPub-ключ  для блокчейна, чтобы автоматически импортировать все транзакции.

Примеры блокчейнов, использующих модель UTXO:

  • Bitcoin,
  • Bitcoin Cash,
  • BitcoinGold,
  • Dash,
  • DigiByte,
  • Dogecoin,
  • Dash,
  • Kaspa,
  • Litecoin.

Ваш xPub-ключ будет различным для каждого блокчейна, поэтому вам придется экспортировать его отдельно для любого актива, который вы хотите экспортировать.

Как импортировать кошелек с путем деривации

Итак, вы импортировали свой кошелек с помощью seed-фразы, но некоторые токены не перенеслись, или перенеслись с нулевым балансом. Проблема может заключаться в том, что эти адреса токенов имеют такой путь деривации, который не поддерживается в Tangem Wallet. Вот что нужно сделать — на примере Bitcoin.

1. Определение пути деривации из исходного кошелька

В большинстве криптовалютных кошельков путь деривации для адресов токенов содержится в файлах XPUB. Вы можете найти файл XPUB в настройках вашего кошелька, а также поискать документацию либо руководство, предоставленные разработчиком или производителем кошелька. Там может содержаться раздел о путях деривации либо управлении ключами.

Вот примеры того, как найти ваш xPub-ключ в зависимости от вашего кошелька.

Trezor

Trezor Suite derivation path.webp
  • Подключите ваш кошелек Trezor и откройте настольное приложение Trezor Suite или веб-приложение.
  • Выберите нужный аккаунт из меню боковой панели.
  • Найдите вкладку Details и скопируйте ключ деривации m/84'/0'/0.

Ledger

xpub ledgeer.png
  • Откройте аккаунт, для которого вы хотите получить xPub-ключ.
  • Нажмите на иконку гаечного ключа.
  • В окне Edit Account разверните раздел Advanced Logs.
  • Найдите и скопируйте свежий Address Path, который выглядит так: "44'/0'/0'/0'/1.

Kaspa Wallet

  • KDX/Kaspanet Web Wallet использует путь деривации  m/44'/972'/0' с seed-фразами, состоящими из 12 слов.
  • Кошельки Core Golang CLI и Kaspium используют путь деривации  m/44'/111111'/0' с seed-фразами, состоящими из 24 слов. Примечание: 972 и 111111 — разные типы монет.

Кошельки KDX несовместимы с BIP-32, и ваши токены не будут автоматически отображаться в Tangem Wallet, поскольку путь деривации KDX считается устаревшим. Вы можете заставить эти токены появиться, следуя инструкции, приведенной ниже.

Как определить путь деривации, используя xPub-ключ

Чтобы определить путь деривации с помощью вашего xPub-ключа (Extended Public Key), вы можете использовать блокчейн-обозреватель.

Приводим пошаговое руководство.

  1. Перейдите на https://bitcoinexplorer.org/.
  2. Введите ваш xPub-ключ в поле Search.
  3. Скопируйте показанный BIP32 PATH.


2. Создание пользовательских токенов в Tangem Wallet

Теперь вам нужно создать пользовательский токен с путем деривации из исходного кошелька. Рассказываем, как это сделать.

  1. Откройте приложение и войдите в ваш кошелек.

    Как добавить пользовательский токен в приложение Tangem_9.jpg

     

  2. Нажмите на три точки в правом верхнем углу.
     

    Как добавить пользовательский токен в приложение Tangem_8.jpg

     

  3. Выберите нужный кошелек.

    Как добавить пользовательский токен в приложение Tangem_7.jpg

     

  4. Перейдите в раздел «Управление токенами».

    Как добавить пользовательский токен в приложение Tangem_6.jpg


     

  5. Нажмите на иконку «+» в правом верхнем углу списка токенов.

    списoк токенов

     

  6. Выберите сеть, например Bitcoin.
     

    Выберите сеть

     

  7. Нажмите «Путь деривации» и выберите «Своя деривация»
     

    Своя деривация
  8. Введите путь деривации из вашего исходного кошелька, например m/84'/0'/0/1 При вводе пути деривации важно начинать с m/, иначе Tangem Wallet не сможет проверить токен. Нажмите «OK».

    пути деривации

     

  9. Нажмите на кнопку «Добавить токен».
     

    Нажмите на кнопку «Добавить токен».

     

  10. Введите ваш код доступа или биометрический идентификатор и отсканируйте вашу карту Tangem, чтобы авторизовать эти изменения.
     
  11. Производный токен появится на домашней странице приложения Tangem с правильным балансом.
     

    Производный токен