> ## Documentation Index
> Fetch the complete documentation index at: https://whalescorp.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Управление кошельком (создание, импорт, сид-фраза)

# Что такое кошелек в Tonhub

Кошелек в приложении - это сочетание трех взаимосвязанных элементов:

* **Секретные криптографические ключи** — уникальная пара математически связанных ключей, private и public, которые генерируются из вашей seed phrase. Private key используется для цифровой подписи всех исходящих транзакций и никогда не покидает устройство. Public key позволяет другим участникам сети проверять подлинность ваших транзакций.
* **Адрес в блокчейнах TON и Solana** — это ваш уникальный идентификатор в сети, выглядящий как строка символов, например `EQD...`. Он работает как номер банковского счета: другие пользователи отправляют монеты на этот адрес, а вы используете его для получения средств. Адрес математически выводится из public key.
* **Локальные данные на телефоне** — информация, которая хранится только на вашем устройстве: настройки приложения, язык, display currency, уровень безопасности, кэшированная история всех транзакций, contacts и сохраненные addresses для удобных переводов. Эти данные не влияют на сам кошелек, но делают работу с ним удобнее.

<Info>
  Главное: ваши средства хранятся в блокчейне, а не в приложении. Приложение - это лишь способ управлять этими средствами с помощью вашей secret phrase, то есть seed или recovery phrase.
</Info>

# Создание нового кошелька

С технической точки зрения создание wallet означает генерацию [cryptographic keys](https://en.wikipedia.org/wiki/Cryptographic_key) и адреса, а не открытие банковского счета.

## Алгоритм создания

1. **Entropy Generation** — приложение на устройстве создает криптографически стойкое [случайное число](https://en.wikipedia.org/wiki/Random_number_generation) достаточной длины. Это число становится основой для всех последующих криптографических операций, и его практически невозможно подобрать brute force или угадать.
2. **Mnemonic Phrase Formation** — на основе сгенерированной entropy на устройстве создается [seed phrase](https://en.wikipedia.org/wiki/Mnemonic_phrase) из 24 слов. Эта фраза позволяет полностью восстановить исходный секретный ключ.
3. **Cryptographic Key Generation** — из исходного секрета вычисляются:
   1. **Private Key** — секретный ключ, который дает право подписывать транзакции и управлять средствами.
   2. **Public Key** — открытый ключ, используемый для проверки [digital signatures](https://en.wikipedia.org/wiki/Digital_signature). В [Solana](https://solana.com) адрес кошелька равен public key, просто записанному в удобном формате [Base58](https://en.wikipedia.org/wiki/Base58).
4. **Wallet Address Calculation, для TON** — на основе public key генерируется уникальный wallet address с применением [cryptographic hash function](https://en.wikipedia.org/wiki/Cryptographic_hash_function).

## Активация кошелька

Активный wallet - это кошелек, который уже работает в блокчейне. У него есть balance или transaction history, и он может отправлять переводы, если на нем достаточно [TON](https://ton.org) для оплаты fees.\
В [TON network](https://ton.org) каждый wallet является [smart contract](https://en.wikipedia.org/wiki/Smart_contract). Чтобы wallet стал активным, необходимо:

* Развернуть контракт в сети
* Корректно его настроить
* Иметь достаточно TON для оплаты fees

Поэтому иногда возникает ситуация: деньги уже пришли на address, balance виден, но отправить transfer пока нельзя. Такое бывает, когда не хватает TON на fee или контракт еще не был initialized.\
Для обычного пользовательского address в [Solana](https://solana.com) "active" означает:

* У адреса есть transaction history в блокчейне,
* На balance есть [SOL](https://solana.com/sol) для оплаты fees при отправке transfers.

# Токен-аккаунты и хранение токенов

В [TON](https://ton.org) основная монета и tokens хранятся в одном контракте, что дает к ним прямой доступ. Архитектура [Solana](https://solana.com) устроена иначе.\
В сети Solana каждый [SPL token](https://spl.solana.com) хранится в отдельном специализированном account, а не на общем wallet address. Для каждой пары "wallet + token" создается стандартный account — [Associated Token Account (ATA)](https://spl.solana.com/associated-token-account), в котором и хранится balance конкретного token.\
**Создание token-account**\
При первом взаимодействии с новым token, например при получении [USDC](https://www.centre.io/usdc), у вашего address может еще не быть соответствующего ATA. Перед выполнением операции система должна создать такой account в блокчейне, а для этого нужна отдельная транзакция с fee в SOL.\
**Автоматизация в Tonhub**\
Tonhub автоматически создает нужные token-accounts при первых операциях с token. Пользователю не нужно делать что-то вручную — в деталях транзакции появляется строка `Create ATA`, которая показывает техническое создание account в сети.

# Где в Tonhub хранится приватный ключ

Private key хранится исключительно на устройстве пользователя в зашифрованном виде. Ни private key, ни seed phrase не передаются на серверы Tonhub и по умолчанию не сохраняются в cloud storage.\
Keys и wallet data в приложении хранятся только в зашифрованном состоянии:

* Шифрование выполняется внутренним ключом приложения, который помещается в secure storage операционной системы:
  * iOS — [Keychain](https://developer.apple.com/documentation/security/keychain_services) (via Secure Store)
  * Android — [Android Keystore](https://developer.android.com/training/articles/keystore)
* Доступ привязан к PIN code, biometric authentication и конкретному устройству

## Доступ к зашифрованному ключу

1. Требует разблокировки устройства: PIN code, password, [Face ID](https://support.apple.com/en-us/HT208109), [Touch ID](https://support.apple.com/en-us/HT201371) и других методов аутентификации.
2. На некоторых устройствах активируется опция "only on this device", которая исключает возможность переноса данных из storage на другое устройство.

## Почему такой подход безопасен

1. Нет централизованной точки уязвимости. У Tonhub нет доступа к private key пользователя, и компания не может потерять его на своем сервере, потому что ключ туда вообще не передается.
2. Есть защита на уровне операционной системы и железа. [Keychain](https://developer.apple.com/documentation/security/keychain_services) и [Keystore](https://developer.android.com/training/articles/keystore) построены на следующих принципах:
   1. Изоляция от других приложений — сторонние приложения не могут получить доступ к секретным данным.
   2. Привязка к конкретному устройству и способу разблокировки.
   3. Даже если файлы приложения будут скомпрометированы, получить private key практически невозможно:
      1. Данные находятся в зашифрованном виде.
      2. Для расшифровки нужен ключ из secure storage, доступ к которому невозможен без физического доступа к устройству и его разблокировки.

Главным риском все равно остается человеческий фактор: если seed phrase скомпрометирована, например записана на листке, сфотографирована или где-то сохранена, криптографическая защита на устройстве уже не поможет.

# Импорт существующего кошелька

## Импорт TON-кошелька

1. Из секрета по алгоритму и параметрам [TON](https://ton.org), зафиксированным в приложении, формируется ключ [ed25519](https://en.wikipedia.org/wiki/EdDSA#Ed25519).
2. Из этого ключа рассчитывается адрес wallet smart contract, учитывая wallet type, version, workchain и другие параметры. Этот address будет использоваться для входящих и исходящих TON и tokens.
3. Далее идет verification и synchronization с TON network. Выполняется запрос в блокчейн по address:
   1. Есть ли уже balance и transactions
   2. Активирован ли wallet, то есть контракт, и может ли он отправлять
   3. Если по этому адресу уже были операции, подтягивается history

## Импорт Solana-кошелька

1. После ввода того же или отдельного секрета по схеме [Solana](https://solana.com) формируется ключ [ed25519](https://en.wikipedia.org/wiki/EdDSA#Ed25519).
2. Из public key формируется строка address.
3. Затем идет запрос в Solana network. Приложение обращается к [RPC node](https://docs.solana.com/developing/clients/jsonrpc-api), то есть серверу, который подключен к блокчейну и отвечает на запросы приложения:
   1. Основной balance в SOL
   2. Associated token accounts, то есть SPL tokens
   3. Transaction history

# Можно ли использовать seed phrase из Tonhub в других приложениях

[Derivation path](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) - это алгоритм, по которому wallet генерирует конкретный private key и address из одной seed phrase.

* [TON](https://ton.org) wallet и token balance будут отображаться корректно, если целевое приложение поддерживает TON network, потому что wallet format и derivation path в большинстве приложений соответствуют стандартам Tonhub.
* [Solana](https://solana.com) balance отобразится только если приложение использует те же правила генерации Solana keys из seed phrase. Совместимость не гарантирована, потому что разные wallets могут использовать разные derivation paths.

# Создание нескольких кошельков

Tonhub поддерживает создание неограниченного количества wallets. Пользователь всегда может импортировать или создать новый wallet. При создании или импорте через `WalletSecurePasscodeComponent` новый address просто добавляется в конец списка `state.addresses` без ограничений по количеству. Нельзя добавить только дубликат уже существующего address.

# Как хранить seed phrase

**Главное правило:** [Seed phrase](https://en.wikipedia.org/wiki/Mnemonic_phrase) - это единственный ключ к вашим деньгам. Тот, кто владеет фразой, владеет и wallet. Нет фразы - нет доступа.

## Как хранить безопасно

**Записывайте на бумагу:**

* Полностью, без сокращений
* Четко, разборчиво, с нумерацией слов или строк
* Не фотографируйте лист

**Сделайте несколько copies:**

* 2–3 copies в разных безопасных местах, например дома, в сейфе, в банковской ячейке
* Copies должны быть физически разделены, чтобы пожар или кража в одном месте не уничтожили все сразу

**Храните там, где:**

* у посторонних нет свободного доступа
* нет высокой вероятности потери или случайного выбрасывания, например не на столе и не в "ежедневном" блокноте
* вы сами гарантированно вспомните это место даже через годы

## Как проверить, что фраза записана правильно

**После записи:**

* Дважды заново введите фразу с листа в приложение или wallet, в режиме recovery, **как тест**:
  * На отдельном устройстве или в безопасной среде
  * Убедитесь, что wallet открывается именно по вашей записанной копии

**Сравните:**

* Количество слов
* Порядок
* Корректность написания, особенно похожих слов

**Хорошая практика:**

* Подпишите лист, но не самой фразой, а, например: `Tonhub, main wallet, date`

## Что делать при подозрении на утечку

1. Считайте текущую phrase скомпрометированной
2. In Tonhub:
   1. Создайте новый wallet с новой seed phrase
   2. Корректно запишите ее и проверьте
3. Переведите все средства из "подозрительного" wallet в новый:
   1. [TON](https://ton.org), tokens и активы [Solana](https://solana.com), если они есть
4. После перевода:
   1. полностью прекратите использование старой seed phrase
   2. уничтожьте все ее copies, и бумажные, и цифровые

## Что делать, если seed phrase утеряна

**Честный ответ:**\
**Если:**

* Tonhub с этим wallet больше нет на устройстве
* и у вас не осталось ни одной copy seed phrase, бумага потеряна, фото удалены, слова не помнятся

**Тогда:**

* восстановить доступ к средствам невозможно:
  * ни через Tonhub support
  * ни через developers
  * ни через blockchain

Блокчейн не знает, "кто вы". Он знает только математический ключ. Без seed phrase этот ключ восстановить нельзя.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.