TON Overflow на русском

552 Темы 1.0k Сообщения

Русское зеркало answers.ton.org

  • Мультисендер на TON - это какое-нибудь похожее приложение?

    0 Голоса
    5 Сообщения
    32 Просмотры

    Попробуйте Oneclicksender https://www.oneclicksender.com/

  • Как я могу отправить ton из кошелька C# на другой кошелек??

    0 Голоса
    3 Сообщения
    15 Просмотры

    я тестирую этот код, но код возвращает эту ошибку: Получена ошибка: {"ok":false,"error":"LITE_SERVER_UNKNOWN: не удается применить внешнее сообщение к текущему состоянию: Внешнее сообщение не было принято\Не удается запустить сообщение в учетной записи: входящее внешнее сообщение отклонено транзакцией 567F1D4BCB17CE7440806854F3DB31A986229B46C73EFE0835F80B9E4CAC5258 :\nexitcode=9, шаги=8, gas_used=0\Журнал nVM (усеченный):\n...выполнить SETCP 0\nexecute DICTPUSHCONST 19 (xC_,1)\nexecute DICTIGETJMPZ\nexecute PUSHPOW2 9\nexecute LDSLICEX\nexecute DUP\nexecute LDU 32\код исключения обработки 9: переполнение ячейки\обработчик исключений по умолчанию, завершение работы виртуальной машины с кодом выхода 9\n","код":500} я не знаю, что произошло.

    это мой код

    try { TonClient tonclient = new(new TonClientParameters { Endpoint = "https://toncenter.com/api/v2/jsonRPC", ApiKey = "...", }); var destination = new Address("UQBWfx1LyxfOdECAaFTz2zGphiKbRsc- _gg1-AueTKxSWPZ9");

    var mnemonic = new Mnemonic(); WalletV4 walletV4 = new WalletV4(new WalletV4Options() { PublicKey = mnemonic.Keys.PublicKey! }); // Create a transfer message for the wallet ExternalInMessage message = walletV4.CreateTransferMessage(new[] { new WalletTransfer { Message = new ExternalInMessage(new() { Info = new ExtInMsgInfo(new() { Dest = destination, ImportFee = new Coins("0.013"), Src = walletV4.Address }), Body = new Message(destination, new Coins("0.5")).Payload, StateInit = new StateInit(new StateInitOptions()), }), Mode = 1 } }, 0).Sign(mnemonic.Keys.PrivateKey, true); await tonclient.SendBoc(message.Cell!);

    } перехват (исключение e) { Приставка.WriteLine(e); throw; }

  • Нет баланса

    0 Голоса
    4 Сообщения
    6 Просмотры

    EQDafdXRryUlB_yDwWJSlKvfhXCnJIxqVie0v625blW_XiHS старый тип адреса как мог про..баться адрес ???? ВТФ?? сидка в блокноте.. что за ДИЧЬ

  • 0 Голоса
    5 Сообщения
    25 Просмотры

    У меня есть закрытый ключ кошелька, как я могу перевести nft с safepal на другой кошелек? (Мнемоническая фраза, которая у меня есть, состоит из 12 слов, и я не могу импортировать ее в кошельки, такие как tonkeeper)

  • LITE_SERVER_UNKNOWN: не удается загрузить блок ... с указанной транзакцией

    0 Голоса
    1 Сообщения
    5 Просмотры

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

    Оригинал вопроса

  • рабочие цепочки

    0 Голоса
    1 Сообщения
    3 Просмотры

    Является ли тестовая сеть ice network рабочей цепочкой тестовой сети TON или полностью независимой копией сети TON. Как мне отличить эти две вещи?

    Исследователь ЛЬДА находится по адресу https://explorer.testnet.ice.io/

    Я также нашел этот URL masterchaininfo https://http-api.testnet.ice.io/getMasterchainInfo

    Оригинал вопроса

  • Ошибка: Не удалось выполнить метод get. Получен код выхода: -13

    0 Голоса
    1 Сообщения
    2 Просмотры

    Здравствуйте, уважаемые разработчики TON

    Я получаю сообщение об ошибке при запуске скрипта getter .ts. Имя метода getter в смарт-контракте (он развернут с помощью getter) совпадает с моим вызовом оболочки.

    https://drive.google.com/file/d/1XgxbQho-51QVi8nF6n3k9h9qAlAMrhm9/view?usp=share_link – получатель в функциональном смарт-контракте https://drive.google.com/file/d/19TDWkkwjkPQkEN8u3nWewCC3vW-iL09G/view?usp=share_link – Скрипт getWalletData .ts

    https://drive.google.com/file/d/19TDWkkwjkPQkEN8u3nWewCC3vW-iL09G/view?usp=share_link – jetton wallet wrapper .ts https://drive.google.com/file/d/1W3twTuxVSyGRVBrP_KMyZclFrY8Ax2sK/view?usp=share_link _ я получаю сообщение об ошибке

    Заранее благодарю вас!

    Оригинал вопроса

  • налог с продаж на stonfi или dedust

    0 Голоса
    1 Сообщения
    13 Просмотры

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

    Оригинал вопроса

  • tsTON на кошелек TON

    0 Голоса
    1 Сообщения
    5 Просмотры
  • Пожалуйста, найдите мой Тонкоин

    0 Голоса
    2 Сообщения
    8 Просмотры

    Если вы только что отправили ton на адрес gate.io, вам следует обратиться в службу поддержки gate io. Они должны помочь

  • Dedust sdk заменяет jetton на ton

    0 Голоса
    1 Сообщения
    13 Просмотры

    https://docs.dedust.io/docs/swaps

    Здравствуйте, это работает, когда я меняю ton на jetton. Но не jetton -> ton.

    В документах "VaultJetton.createSwapPayload({ poolAddress })", откуда берется VaultJetton?

    Это из-за этого?

    const tokenVault = tonClient.open(await factory.getJettonVault(Address.parse(tokenAddress)));

    но в данном случае у него нет функции createSwapPayload

    Спасибо

    Оригинал вопроса

  • Как сгенерировать адрес из начальной фразы в Python?

    0 Голоса
    1 Сообщения
    1 Просмотры

    Как сгенерировать адрес из исходной фразы в Python? Как сгенерировать адрес из исходной фразы на python?

    Оригинал вопроса

  • Я не могу отправить свои токены в chain ton на другой кошелек.

    0 Голоса
    2 Сообщения
    6 Просмотры

    устал от этой сети

  • Как добавить ton raffes в кошелек safepal

    0 Голоса
    1 Сообщения
    7 Просмотры

    Я хочу добавить токен ton raffes в safepal, но кошелек safepal не поддерживает пользовательскую сеть ton. Как вручную добавить сеть ton в кошелек safepal

    Оригинал вопроса

  • Переход с Trust Wallet на другие кошельки Ton

    0 Голоса
    2 Сообщения
    22 Просмотры

    @Answers, сеть тон и сеть erc-20 не могут быть совмещены. Тебе нужно использовать несколько приложений, чтобы хранить биткоины и тоны(к примеру).

  • на некоторые вопросы нужна помощь в ответе

    0 Голоса
    1 Сообщения
    3 Просмотры

    Основано ли подтверждение депозита на номере подтверждения или пакете

    Оригинал вопроса

  • на некоторые вопросы нужна помощь в ответе

    0 Голоса
    1 Сообщения
    2 Просмотры

    Привет, сообщество TON, у меня есть несколько вопросов, на которые мне нужна ваша помощь, чтобы ответить

    Существуют ли какие-либо специальные советы по пополнению счета, такие как lunc, списать 1 Lunc со счета при первом пополнении, 2. К какому типу цепочек относится ton chain, evm? Или другие типы? 3. Основано ли подтверждение пополнения счета на номере подтверждения или пакете?

    Оригинал вопроса

  • 0 Голоса
    3 Сообщения
    125 Просмотры

    Вероятно, вам следует добавить параметр "archival=true" в ваш запрос транзакций.

  • Серийная/массовая чеканка NFT

    0 Голоса
    1 Сообщения
    4 Просмотры

    Привет, сообщество TON,

    Я создаю игру на основе TON, которая использует некоторые NFT. В моем коде в основном используется код из этого туториала и библиотеки ton/ton-core/ton-crypto:

    Мой код развертывания NFT:

    public async deploy( wallet: OpenedWallet, collectionAddress: Address, params: mintParams ): Promise<number> { const seqno = await wallet.contract.getSeqno(); await wallet.contract.sendTransfer({ seqno, secretKey: wallet.keyPair.secretKey, messages: [ internal({ value: "0.05", to: collectionAddress, body: this.createMintBody(params), }), ], sendMode: SendMode.IGNORE_ERRORS + SendMode.PAY_GAS_SEPARATELY, }); return seqno; }

    И после того, как я снова буду ждать:

    export async function waitSeqno(seqno: number, wallet: OpenedWallet): Promise<number> { for (let attempt = 0; attempt < 20; attempt++) { await sleep(2000); const seqnoAfter = await wallet.contract.getSeqno(); if (seqnoAfter == seqno + 1) { return Promise.resolve(seqno) } } return Promise.reject(`Seqno ${seqno} timeout`) } export function sleep(ms: number): Promise<void> { return new Promise((resolve) => setTimeout(resolve, ms)); }

    Затем я получаю подтверждение с помощью seqno, я запрашиваю адрес элемента NFT по индексу NFT:

    static async getAddressByIndex( collectionAddress: Address, itemIndex: number, tonCenterApiKey: string ): Promise<Address> { const client = new TonClient({ endpoint: "https://toncenter.com/api/v2/jsonRPC", apiKey: tonCenterApiKey, }); const response = await client.runMethod( collectionAddress, "get_nft_address_by_index", [{ type: "int", value: BigInt(itemIndex) }] ); return response.stack.readAddress(); }

    Весь процесс занимает до 30 секунд на 1 NFT. Мне интересно, есть ли лучший вариант для чеканки, например, 10 NFT, или лучший способ - чеканить один за другим и ждать подтверждения? В этом случае у меня есть некоторые опасения по поводу количества NFT, которых я могу достичь в течение 1 часа. Прямо сейчас я должен отчеканить все элементы последовательно, потому что для команды отчеканки требуется параметр индекса nft, и перед отчеканкой следующего элемента я должен получить подтверждение того, что предыдущий отчеканен правильно.

    Оригинал вопроса

  • 0 Голоса
    1 Сообщения
    6 Просмотры

    Я пытался повторно использовать кошелек, удаленный с помощью флага DESTROY_ACCOUNT_IF_ZERO (32). Способ, которым я осуществляю перевод:

    Представьте, что у нас есть 2 кошелька: A и B.

    Мы переводим N1 тонну из "A" в "B". Например, с помощью веб-кошелька, скрипта, не имеет значения. 2. B неинициализирован - его еще нет в блокчейне. Имея это в виду, мы хотели бы отправить все деньги из B обратно в A. Для этого мы собираемся использовать прилагаемый скрипт. 3. Теперь мы идем дальше и переносим N2 ТОННЫ из A в B ** снова **. Не имеет значения, сколько.

    Ожидаемое поведение: мы получаем транзакции: A->B (N1), B->A (все), A->B (N2); в конечном итоге в кошельке B содержится N2 тонн.

    Фактическое поведение: мы получаем транзакции A->B (N1), B->A (все), A->B (N2), B->A (все); в кошельке B в итоге 0 тонн.

    Сценарий для передачи B->A (all), который вызывает такое поведение:

    import TonWeb from 'tonweb'; import tonwebMnemonic from 'tonweb-mnemonic'; const apiKey = "" || undefined; // WALLET B const mnemonic = "..."; const walletVersion = "v4R2"; // WALLET A const toAddress = "..."; const SendMode = { CARRY_ALL_REMAINING_BALANCE: 128, CARRY_ALL_REMAINING_INCOMING_VALUE: 64, DESTROY_ACCOUNT_IF_ZERO: 32, PAY_GAS_SEPARATELY: 1, IGNORE_ERRORS: 2, NONE: 0 } const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); (async () => { const provider = new TonWeb.HttpProvider('https://toncenter.com/api/v2/jsonRPC', {apiKey}); const WalletClass = TonWeb.Wallets.all[walletVersion]; const mnemonicArray = mnemonic.split(" "); let { publicKey, secretKey } = await tonwebMnemonic.mnemonicToKeyPair(mnemonicArray); publicKey = Buffer.from(publicKey); secretKey = Buffer.from(secretKey); console.log(`PUBLIC KEY: ${publicKey.toString('hex')}`); const wallet = new WalletClass(provider, { publicKey }); const seqno = await wallet.methods.seqno().call() || 0; console.log(`SEQNO: ${seqno}`); await sleep(2000); const transferParams = { secretKey, toAddress, amount: 0, seqno, sendMode: SendMode.CARRY_ALL_REMAINING_BALANCE | SendMode.IGNORE_ERRORS | SendMode.DESTROY_ACCOUNT_IF_ZERO, payload: "test bug" }; console.log(JSON.stringify({...transferParams, secretKey: transferParams.secretKey.toString('hex')}, null, 2)); const response = await wallet.methods.transfer(transferParams).send(); console.log(`transfer sent to blockchain: ${JSON.stringify(response, null, 2)}`); })();

    Странная вещь: если вы отправите A->B (N) снова, он автоматически создаст новую передачу B->A (all) снова и снова. Иногда она останавливается на 2 повторениях, иногда на 4.

    Я использую недоступный адрес: UQAPqRlewultl8xHCKGsrenb4PZaQ0QDfPYoK1fwVUODdZRd.

    Я также попробовал отправить TON с кошелька "C (C->B). И деньги ДЕЙСТВИТЕЛЬНО остались на B`. НО как только я снова сделал перевод "A->B", все деньги, включая тонны, отправленные с "C", автоматически перешли на "A"!

    Пример проявления этой ошибки (это ошибка??) находится здесь:

    https://tonviewer.com/EQAySjlsHUY2EEedO5GTenzFvAnR5E-4ptwfeox6OZYnNvGF

    Это кошелек B. Скрипт отправил только первое сообщение с текстом "тестовая ошибка". Остальные сообщения отправлялись автоматически при любом входящем переводе с A.

    В этом взаимодействии:

    A is UQAPqRlewultl8xHCKGsrenb4PZaQ0QDfPYoK1fwVUODdZRd * B is EQAySjlsHUY2EEedO5GTenzFvAnR5E-4ptwfeox6OZYnNvGF * C is UQBwpXsIVrij8UQ2OpPK2EyeVBrlN6mnOkmThb3k6K-UHZyL

    Я хочу понять, почему это происходит. Это задумано разработчиками блокчейна TON? Это не ошибка? Как обойти это и повторно использовать удаленные кошельки?

    Оригинал вопроса