Создание TON NFT с помощью tonweb.js

Создание NFT в TON занимает довольно много времени, поэтому появилась идея создать скрипт на JS, который бы регистрировал их сам (использовал бы заранее переданное название, описание и ссылку на картинку). В интернете не нашел полноценного туториала, поэтому пытался что-то слепить с помощью ChatGPT. Вызов этого кода получает приватный и публичный ключ, адрес кошелька, нфт адрес, выводит в консоль. Но вот на моменте деплоя выводит ошибку:

Error deploying NFT: LITE_SERVER_UNKNOWN: cannot apply external message to current state : Failed to unpack account state

Если получится, подскажите, пожалуйста, как решить проблему, либо же ткните носом в адекватный туториал по этой задаче. Спасибо заранее!

Код:

<script src="https://unpkg.com/[email protected]/dist/tonweb.js"></script>

<script>
    (async () => {
        const TonWeb = window.TonWeb;
        const nacl = TonWeb.utils.nacl;

        // Тестовая seed фраза (только для примера, не используйте в реальных кошельках)
        const seedPhrase = 'word word word word word word word word ...';

        // Конвертация seed фразы в seed байты
        function sha256(message) {
            const msgBuffer = new TextEncoder().encode(message);
            return crypto.subtle.digest('SHA-256', msgBuffer).then(hashBuffer => {
                return new Uint8Array(hashBuffer);
            });
        }

        // Генерация пары ключей из seed байтов
        const seedBytes = await sha256(seedPhrase);
        const keyPair = nacl.sign.keyPair.fromSeed(seedBytes.slice(0, 32));
        const privateKey = keyPair.secretKey;
        const publicKey = keyPair.publicKey;

        console.log('Private Key:', Array.from(privateKey).map(b => b.toString(16).padStart(2, '0')).join(''));
        console.log('Public Key:', Array.from(publicKey).map(b => b.toString(16).padStart(2, '0')).join(''));

        // Инициализация TonWeb
        const tonweb = new TonWeb(new TonWeb.HttpProvider("https://toncenter.com/api/v2/jsonRPC"));

        // Создание экземпляра кошелька
        const WalletClass = tonweb.wallet.all.v3R2;
        const wallet = new WalletClass(tonweb.provider, {
            publicKey,
            wc: 0
        });

        // Адрес кошелька
        const walletAddress = await wallet.getAddress();
        console.log('Wallet Address:', walletAddress.toString(true, true, true));

        // Создание данных NFT
        const dataCell = new TonWeb.boc.Cell();
        dataCell.bits.writeUint(1, 8); // Версия
        dataCell.bits.writeString('Name'); // Имя NFT
        dataCell.bits.writeString('Description'); // Описание NFT
        dataCell.bits.writeString('https://digiseller.com/preview/571739/p1_3928716_0318d8b7.jpg'); // URL изображения
        
        
        
        // Создание NFT
        const NftItem = TonWeb.token.nft.NftItem;
        const nftItem = new NftItem(tonweb.provider, {
            ownerAddress: walletAddress,
            data: dataCell
        });

        // Функция для развертывания NFT контракта
        async function deployNft() {
            try {
                const nftAddress = await nftItem.getAddress();
                console.log('NFT Address:', nftAddress.toString(true, true, true));

                const seqno = await wallet.methods.seqno().call();
                const transfer = await wallet.methods.transfer({
                    secretKey: privateKey,
                    toAddress: nftAddress.toString(true, true, true),
                    amount: TonWeb.utils.toNano("0.05"), // 0.05 TON для развертывания
                    seqno,
                    payload: null,
                    sendMode: 3,
                }).send();

                console.log('NFT Deployed:', transfer);
            } catch (error) {
                console.error('Error deploying NFT:', error);
            }
        }

        // Вызов функции для развертывания NFT контракта
        await deployNft();
    })();
</script>

Ответы (0 шт):