@Ridalit

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

Пробовал перебирать все версии в WalletContractV*R* и менял адрес кошелька через tonkeeper pro на компьютере, на телефоне почему то нет этой функции. Но код выдает EQAokVCrVrR2SK-jxcmgamiKGZ4dR_MWce-iPmHDK_pJ1e2B за место UQD4OVhmDE2UzV-A99XLvGDaGLxB1ty3qMJtp8_SHYNG3LPY для V4. В чем тут дело?

import {mnemonicToWalletKey} from "ton-crypto"
import {TonClient, WalletContractV3R1} from "ton";
import {getHttpEndpoint} from "@orbs-network/ton-access";
async function main(){
    const mnemonic = "***"
    const key = await mnemonicToWalletKey(mnemonic.split(","));
    const wallet = WalletContractV3R1.create({publicKey: key.publicKey, workchain: 0})

    const endpoint = await getHttpEndpoint({network: "mainnet"})
    const client = new TonClient({endpoint})
    console.log(wallet.address)

    if(!await client.isContractDeployed(wallet.address)){
        return console.log("wallet is not D")
    }
    console.log("All ok - ", wallet.address)
}
main()


661fde8eb6b60225847937.png
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
Код в целом выглядит правильно для создания кошелька и получения его адреса в 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();


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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
30 апр. 2024, в 22:44
500 руб./в час
30 апр. 2024, в 21:45
20000 руб./за проект
30 апр. 2024, в 21:36
1500 руб./в час