TON Overflow на русском

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

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

  • Как отладить ошибку проверки типа?

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

    Я получаю ошибку проверки типа и не могу понять, какая строка моего кода ее вызывает. Как я могу узнать, есть ли какой-нибудь инструмент, который мог бы помочь с отслеживанием?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

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

  • Есть ли в FunC оптимизации для пропуска вычисления условия?

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

    Предположим, мы проверяем выполнение двух условий одновременно: if( (a == b) & (b == c) ).

    Если a не равно b, это делает первое условие ложным. И это означает, что все выражение является ложным независимо от второго условия. Таким образом, при выполнении этого кода, если мы обнаружим, что a != b, мы могли бы гипотетически пропустить вычисление второго условия и сэкономить некоторое компьютерное время (и плату за бензин).

    Некоторые языки программирования проверяют оба условия независимо от результата первой проверки, а некоторые имеют такую оптимизацию, которая позволяет им пропустить ненужную проверку. Как ведет себя FunC в таких ситуациях?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

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

  • Есть ли что-то вроде is_int в FunC?

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

    К сожалению, у нас нет такой встроенной функции.

    Однако вы можете создать свою собственную функцию для проверки того, является ли значение целым числом. Или вы можете воспользоваться ссылкой здесь, чтобы получить это.

    forall X -> int is_null(X x) asm "ISNULL"; forall X -> int is_int(X x) asm "<{ TRY:<{ 0 PUSHINT ADD DROP -1 PUSHINT }>CATCH<{ 2DROP 0 PUSHINT }> }>CONT 1 1 CALLXARGS"; forall X -> int is_cell(X x) asm "<{ TRY:<{ CTOS DROP -1 PUSHINT }>CATCH<{ 2DROP 0 PUSHINT }> }>CONT 1 1 CALLXARGS"; forall X -> int is_slice(X x) asm "<{ TRY:<{ SBITS DROP -1 PUSHINT }>CATCH<{ 2DROP 0 PUSHINT }> }>CONT 1 1 CALLXARGS"; forall X -> int is_tuple(X x) asm "ISTUPLE";

    Помните, что система типов FunC обычно делает ненужной проверку наличия определенного типа во время выполнения, поскольку ограничения типа уже "наложены на уровне компиляции".

    Например, если функция предназначена для приема только целых чисел в качестве входных данных, компилятор применит это требование, и при передаче нецелого числа будет выдана ошибка.

  • Что означает подчеркивание _ в конце шестнадцатеричной ячейки TON?

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

    У меня есть ячейка, которая в шестнадцатеричном представлении имеет символ подчеркивания в конце: x{6800.....690C_}. Что это значит?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

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

  • Что означает ~ в FunC?

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

    Ранее я видел символ тильды, используемый для обозначения побитового NOT в других языках программирования, поэтому размещение ~ перед некоторым X означает "не X". Но, похоже, в FunC это работает по-другому. Что именно он делает?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

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

  • Что использовать для разработки на TON с помощью Python?

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

    Есть два проекта, о которых я знаю:

    Pytonlib: https://github.com/psylopunk/pytonlib * Разлом: https://github.com/sky-ring/rift

    Я не являюсь их активным пользователем, поэтому не могу рекомендовать ни один из них, основываясь на моем личном опыте, но из того, что я вижу, на момент написания статьи Rift разрабатывается более активно.

  • Что означают необычные коды выхода, такие как "код выхода 75"?

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

    Известны коды выхода TVM в диапазоне от -14 до 38, они перечислены на соответствующей странице документации: https://docs.ton.org/learn/tvm-инструкции/tvm-кодывыхода

    Но что, если я получу "код выхода 75"? Есть ли какая-то ошибка? Где я могу проверить, что это за ошибка?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

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

  • Может ли срез содержать другой срез?

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

    В TON все является ячейкой, а срез - это ячейка, открытая для чтения. Но может ли срез содержать внутри себя другой срез?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

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

  • Можно ли установить произвольное время с помощью песочницы?

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

    Я верю, что поле сейчас поможет вам. Например:

    const buyResult = await buyer.send({ to: sale.address, value: price + toNano('1'), sendMode: SendMode.PAY_GAS_SEPARATELY, now: 1682370000 })
  • [Решено] Куда мне поместить пользовательские атрибуты в NFT?

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

    Решено

    Обратитесь к ПОДСКАЗКЕ-62 и опции get_nft_content, которая должна возвращать "полные" метаданные:

    https://github.com/ton-blockchain/TIPs/issues/62

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

    Решено

    Это правильный путь, вам действительно нужно установить флажок "0". И вы загружаетесь в "op` правильно. Но способ, которым вы работаете с комментарием, неверен.

    Символы закодированы в UTF-8, поэтому использование load_uint не будет работать должным образом, поскольку оно ожидает двоичную кодировку.

    Вместо этого вам придется разобрать его:

    () recv_internal(int balance, int msg_value, cell in_msg_full, slice in_msg_body) { int op = in_msg_body~load_uint(32); if (op == 0) { ;; load in the first 8 bits because of UTF-8 encoding int comment = in_msg_body~load_uint(8); ;; in UTF-8, 50 is the character for 2, because 50 = 0x32 var state = 0; if (comment == 50) { state = 2; } set_data(begin_cell().store_uint(op, 32).store_uint(comment, 8).store_int(state, 8).end_cell()); } }

    Обратитесь к UTF-8 здесь: https://www.utf8-chartable.de/

  • [Решено] Можно ли запустить валидатор на потребительском ПК?

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

    Решено

    Существует разница между технически возможным и реально возможным. До тех пор, пока вы выполняете все технические требования к валидатору, тогда да, технически вы можете запустить валидатор.

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

  • [Решено] Как вы меняете TON Keeper на TestNet?

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

    Решено

    Начиная с версии 3.0:

    Перейдите в меню "Настройки" 2. Быстро нажмите на значение "Версия" в нижней части настроек. 5 быстрых нажатий должны открыть меню разработчика. 3. Нажмите "Переключиться на Testnet" 4. Выберите "TESTNET"
  • Что использовать для разработки на TON в Kotlin?

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

    Проект Андрея называется "Kotlin/Мультиплатформенный SDK для открытой сети" и доступен на GitHub: https://github.com/andreypfau/ton-kotlin

    Это единственный проект для работы с TON с использованием Kotlin, о котором я слышал.

  • Возможно ли отправлять как тонкоины, так и джеттоны одновременно?

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

    Возможно ли отправить тонкоины и джеттоны в рамках одной транзакции? Если это так, то как именно это сделать?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

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

  • Как вызвать функцию FunC, используя method_id?

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

    В документации TON указано, что "каждая функция в программе TVM имеет внутренний целочисленный идентификатор, по которому она может быть вызвана". Но как именно я могу вызвать функцию после изменения кода, если я знаю ее идентификатор?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

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

  • Существуют ли сервисы для аналитики смарт-контрактов на TON?

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

    Хотя нет ничего более надежного, чем описанные вами инструменты, я верю, что есть пара инструментов, которые могут вам помочь.

    Первый - это ton-indexer, который пока не имеет официального графического интерфейса, но может использоваться для анализа и запроса данных блокчейна способом, недоступным обычной конечной точке.

    Следующий - это blueprint , который может выступать в качестве вашей тестовой среды для воспроизведения транзакций. Похоже на HardHat или Tenderly's Sandbox.

    DTon - это удобный вариант проводника для просмотра кода и других технических деталей учетных записей и транзакций.

    Хотя не все инструменты находятся в одном централизованном месте, и некоторые инструменты, такие как газовые профилировщики, могут не существовать, безусловно, существует множество полезных инструментов для ваших целей разработки!

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

    Я использую пример из учебника (https://ton-community.github.io/tutorials/01-wallet /) на основе библиотеки npm ton и решить проблему, когда у меня есть массив с кошельками и значениями для перевода, и я должен отправить на них средства достаточно быстро

    Я новичок в этой области, но, думаю, я не смогу совершить новую транзакцию, пока не изменится seqno. Мои транзакции совершаются с частотой примерно 1 транзакция за 10 секунд, но на tonscan.org Я видел кошельки с 10 транзакциями, отправляемыми в секунду. Могу ли я что-нибудь сделать, чтобы отправить все транзакции сразу или ускорить время выполнения?

    Заранее спасибо за любую подсказку! Приведенный ниже код

    var lines = fs.readFileSync('to_pay.txt', 'utf8').split(/\r?\n/); for (const item of lines) { var data = item.split(' ') const walletContract = client.open(wallet); const seqno = await walletContract.getSeqno(); console.log('seqno is '+ seqno) await walletContract.sendTransfer({ secretKey: key.secretKey, seqno: seqno, messages: [ internal({ to: data[0], value: data[1], body: "Transfer", bounce: false, }) ] });

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

  • Как должен выглядеть файл метаданных JSON для коллекции NFT?

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

    Я знаю, что для коллекции NFT на TON требуется файл метаданных в формате JSON. Есть ли какой-нибудь справочный файл, на который можно посмотреть?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

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

  • В чем разница между store_coins и store_grams?

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

    Примитивное именование store_coins кажется более современным (оно избавляет от устаревшей концепции "gram"). Но я не смог найти store_coins в официальной документации по ton.org . Итак, какой из них мне следует использовать?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

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