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

Как можно сделать адрес кошелька, который генерируется с использованием WalletContractV*R*, совместимым с адресом кошелька V4 для TonChain, при изменении адреса кошелька через tonkeeper pro на компьютере, но отсутствии этой функции на телефоне?
  • 17 апреля 2024 г. 14:50
Ответы на вопрос 2
Возможно, функция mnemonicToWalletKey из библиотеки TON работает неправильно из-за неправильного формата мнемонической фразы или других параметров. Рекомендуется проверить корректность введенных данных или обратиться к документации библиотеки для получения подробной информации о правильном использовании функции.

Чтобы сделать адрес кошелька, сгенерированный с использованием WalletContractV*R*, совместимым с адресом кошелька V4 для TonChain, можно воспользоваться следующими шагами:
1. Создайте новый адрес кошелька через tonkeeper pro на компьютере.
2. Запишите приватный ключ или мнемоническую фразу, связанную с этим адресом.
3. Используйте этот приватный ключ или мнемоническую фразу для импорта адреса на телефоне при помощи другого кошелька или программы, поддерживающей TonChain. Например, можно использовать Ton Surf или Free TON Crystal Wallet для импорта адреса.

Если на телефоне отсутствует функция TonKeeper Pro, то можно воспользоваться альтернативными кошельками или программами для импорта адреса. Важно убедиться, что выбранная программа поддерживает совместимость с WalletContractV*R* и TonChain для корректного импорта и использования адреса кошелька.
Код в целом выглядит правильно для создания кошелька и получения его адреса в TON. Но есть несколько моментов, которые можно проверить: 

1) Мнемоническая фраза: Проверьте, что мнемоническая фраза правильно разделена и передана в функцию mnemonicToWalletKey. Убедитесь, что мнемоническая фраза состоит из правильного количества слов и корректно обработана (например, не содержит лишних пробелов или символов).

2) Версия контракта кошелька: В вашем коде используется WalletContractV3R1. Убедитесь, что это соответствует версии кошелька, которую вы ожидаете использовать. Если вы хотите использовать WalletContractV4, вам нужно изменить эту часть кода.

3) Проверка на деплоирование контракта: Ваш код проверяет, деплоирован ли контракт на блокчейне. Это хорошая практика, но стоит убедиться, что API клиента TON корректно обрабатывает этот запрос.

4) Логирование и отладка: Добавьте больше логов, чтобы увидеть промежуточные значения, такие как сгенерированный публичный ключ и итоговый адрес кошелька. Это поможет выявить потенциальные ошибки в данных или их обработке.

Вот модифицированный пример кода, включая некоторые дополнительные логи для отладки:

import { mnemonicToWalletKey } from "ton-crypto";
import { TonClient, WalletContractV3R1 } from "ton";
import { getHttpEndpoint } from "@orbs-network/ton-access";

async function main() {
    const mnemonic = "your,mnemonic,phrase,here";  // Укажите вашу мнемоническую фразу
    const key = await mnemonicToWalletKey(mnemonic.split(","));
    console.log("Public Key:", key.publicKey);  // Логирование публичного ключа

    const wallet = WalletContractV3R1.create({ publicKey: key.publicKey, workchain: 0 });
    console.log("Wallet Address:", wallet.address);  // Логирование адреса кошелька

    const endpoint = await getHttpEndpoint({ network: "mainnet" });
    const client = new TonClient({ endpoint });

    if (!await client.isContractDeployed(wallet.address)) {
        console.log("Wallet is not deployed.");
        return;
    }

    console.log("All OK -", wallet.address);
}

main();


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