TON Overflow на русском

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

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

  • Понимание назначения функции "force_chain" в Ston.fi Основной контракт

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

    В общем, если мы будем следовать коду в common/utils.func (https://github.com/ston-fi/dex-core/blob/main/contracts/common/utils.func), мы получим следующий код:

    () force_chain(int workchain, slice address, int error_code) impure inline { (int wc) = get_workchain(address); throw_unless(error_code, wc == workchain); }

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

    Для получения дополнительной информации вы можете проверить:

    https://docs.ton.org/learn/glossary#workchain https://docs.ton.org/learn/overviews/ton-blockchain#workchain-blockchain-with-your-own-rules
  • [Решено] Горит ли NFT на TON?

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

    Решено

    По сути, вы не можете сжечь NFT.

    Невозможно полностью стереть NFT из блокчейна. Это верно как для Ethereum, так и для TON, поскольку данные, хранящиеся в блокчейне, не могут быть удалены. Единственный доступный вариант - перевести NFT на адрес "черной дыры" или на конкретный неактивный контракт, который, по сути, блокирует NFT на неопределенный срок.

    Можете ознакомиться с моей реализацией NFT на Tact lang: https://github.com/howardpen9/nft-standard-template

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

    Решено

    Чтобы найти информацию о штрафах, налагаемых на валидаторы, и продолжительности раундов в блокчейне TON, вы можете обратиться к параметру конфигурации под номером 40.

    В Testnet вы можете получить доступ к этому параметру по следующей ссылке:

    https://test-explorer.toncoin.org/config?workchain=-1&shard=8000000000000000&seqno=10476790&roothash=6D2228626EC81D680F9CD0AAC0CDC78B8D0B63A88AAB95395576E46E65F4B5F9&filehash=C4F8F113C7B4F09BBA11D8EBB08E89E11E02172A11D6B5CA74339FFE548D98A5#configparam40

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

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

    Для получения самой актуальной информации о штрафах валидаторов и продолжительности раунда рекомендуется ознакомиться с форумами сообщества TON, технической документацией и официальным репозиторием проекта TON на GitHub. Таким образом, вы можете оставаться в курсе любых изменений или обновлений, связанных с этими аспектами блокчейна TON.

    Для получения более подробной информации о конфигурации валидатора вы можете проверить: https://docs.ton.org/develop/howto/network-configs

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

    Привет, Эммануэль, может быть, ты сможешь обратиться за помощью сюда. Как уже упоминалось, возможно, вам понадобится узел архива, так как это может быть сложным для сериализации item_id и NFT Item Address, хотя

    https://docs.ton.org/develop/dapps/asset-processing/nfts#unordered-коллекция

  • [Решено] Как рассчитать плату за чеканку NFT в пересчете на тонну?

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

    Решено

    Хороший вопрос! В ТОННАХ стоимость газа при чеканке NFT одинакова, независимо от того, является ли это первая или последняя чеканка в серии. Это отличается от Solidity в мире EVM, где стоимость может варьироваться в зависимости от конкретной реализации.

    Что касается расчета стоимости, то это будет зависеть от конкретных деталей вашего развертывания, таких как цена на газ и сложность кода вашего смарт-контракта. Вы можете воспользоваться калькулятором расхода газа в тоннах (https://ton.live/gas) чтобы оценить стоимость газа для вашего развертывания.

  • Существует ли эквивалент инструкции "NOP" в Fift?

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

    ищите подходящие инструкции здесь - https://docs.ton.org/learn/tvm-инструкции/instructions

  • Как проверить, что означает конкретный код выхода из TVM?

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

    В официальной документации есть список стандартного кода выхода TVM: https://docs.ton.org/learn/tvm-instructions/tvm-exit-code

    Вот он:

    0 - Стандартный код завершения успешного выполнения. 1 - Альтернативный код завершения успешного выполнения. 2 - Нижний поток стека. Последний операционный код потреблял больше элементов, чем есть в стеках. 1 3 - Переполнение стека. В стеке было сохранено больше значений, чем разрешено этой версией TVM. 4 - Целочисленное переполнение. Целое число не вписывается в -2256 ≤ x < 2256 или произошло деление на ноль. 5 - Целое число вне ожидаемого диапазона. 6 - Неверный код операции. Инструкция неизвестна в текущей версии TVM. 7 - Введите ошибку проверки. Аргумент примитива имеет неправильный тип значения. 1 8 - Переполнение ячейки. Запись в builder невозможна, так как после операции осталось бы более 1023 бит или 4 ссылки. 9 - Ячейковый нижний поток. Чтение из примитива slice пыталось прочитать больше битов или ссылок, чем есть на самом деле. 10 - Ошибка в словаре. Ошибка при работе со словарем (хэш-картами). 11 - Чаще всего вызывается попыткой вызвать get-метод, идентификатор которого не был найден в коде (отсутствует модификатор method_id или неверное имя get-метода, указанное при попытке его вызова). В документах TVM это описано как "Неизвестная ошибка, может быть вызвана пользовательскими программами". 12 - Брошен TVM в ситуациях, которые считаются невозможными. 13 - Ошибка с нехваткой газа. Выбрасывается TVM, когда оставшийся газ становится отрицательным. 32 - Список действий недействителен. Устанавливается на этапе действия, если регистр c5 после выполнения содержит неразрешимый объект. 32 (то же, что и предыдущий) - Идентификатор метода не найден. Возвращается TonLib при попытке выполнить несуществующий метод get. 34 - Действие недействительно или не поддерживается. Устанавливается на этапе действия, если текущее действие не может быть применено. 37 - Недостаточно ТОННЫ. Сообщение отправляет слишком много TON (или не хватает TON после вычета сборов). 38 - Недостаточно дополнительных валют. -14 - Это означает ошибку нехватки газа, такую же, как 13. Отрицательный, потому что его нельзя подделать

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

  • Почему о Tact гораздо меньше информации, чем о FunC?

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

    unC существует с самого начала TON, а Tact 1.0 был выпущен в марте 2023 года (менее двух месяцев назад), так что на данный момент он просто очень новый, и естественно, что руководств пока немного.

    Говоря об ограничениях: в настоящее время Tact все еще проходит проверки и аудиты безопасности, поэтому, если вы разрабатываете что-то, на что тратится много денег, на данный момент, возможно, лучше использовать FunC (или использовать Tact, а затем провести аудит кода функции, который компилируется Tact).

    Но для целей обучения вы уже можете свободно использовать Tact. Одна из его целей - снизить входной барьер для новичков в TON, поэтому вам, возможно, будет проще использовать его, чем FunC (хотя это зависит от вашего предыдущего опыта).

    И если вам нужен учебный материал, я предлагаю посетить веб-сайт tact-by- example.org .

  • Что могло вызвать код выхода TVM 5 в моем случае?

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

    У меня ошибка с кодом выхода 5.

    В списке кодов выхода TVM в документации указано, что это означает "Целое число вне ожидаемого диапазона".:

    https://docs.ton.org/learn/tvm-instructions/tvm-exit-codes

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

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

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

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

    Декомпиляция кода включает в себя преобразование "низкоуровневого" представления программы, такого как "байт-код" или "сборка", обратно в исходный код более высокого уровня, который легче читается человеком. Хотя теоретически возможно перепроектировать код Fift обратно в FunC, существует несколько связанных с этим проблем:

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

    Двусмысленность: Код Fift может не иметь уникального представления функции. Декомпиляция кода Fift может привести к появлению нескольких допустимых версий функционального кода, что затруднит определение исходного кода.

    Оптимизация: Оптимизация компилятора может еще больше усложнить процесс декомпиляции, поскольку она может изменить структуру и поток кода.

    Ручная работа: Декомпиляция кода Fift обратно в FunC может потребовать значительных усилий вручную, поскольку для этой конкретной цели может не существовать инструмента. Процесс, скорее всего, будет включать в себя понимание кода Fift, реверс-инжиниринг логики, а затем воссоздание функционального кода с нуля.

    Учитывая эти проблемы, декомпиляция кода Fift обратно в FunC, как правило, непрактична или неэффективна. Вместо этого рекомендуется по возможности поддерживать исходный код FunC и работать с ним.

  • Как отслеживать входящие транзакции?

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

    Вы можете ознакомиться с ресурсами, доступными по адресу https://github.com/gobicycle/bicycle и https://docs.ton.org/develop/dapps/asset-processing/ чтобы узнать больше об этом.

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

  • [Решено] Возможно ли реализовать анонимное голосование на TON?

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

    Решено

    Это отличный вопрос. Проще говоря, мы не можем.

    Я предполагаю, что вы имеете в виду ton.vote, смарт-контракт, который мы можем проверить на основе документации сети Orb здесь: https://github.com/orbs-network/dao-vote.

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

  • [Решено] Можно ли импортировать функцию из другого файла в FunC?

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

    Решено

    Да, вы можете это сделать.

    Помимо использования инструкции include, вы также можете добавить файлы в "project.yml" в разделе "Исходный код".

    Однако убедитесь, что функции не перекрываются, так как в FunC нет перегрузки функций

    Вы можете просто поместить файл в ту же папку и использовать команду #include "imports/stdlib.fc";.

    Для получения дополнительных примеров, пожалуйста, обратитесь к разделу "Примеры смарт-контрактов" в документации TON по адресу https://docs.ton.org/develop/smart-contracts/#smart-контракт-примеры.

  • Как изменить код контракта, не меняя его адреса?

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

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

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

    click to show

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

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

    Я пытаюсь разрабатывать на Windows 10. Я установил toncli в соответствии с руководством. Он успешно находит Func, но не может найти исполняемый файл Fift, хотя кажется, что он находится там, где он ищет:

    Насколько я понимаю, я не единственный, у кого есть эта проблема, но я не могу найти решение. Что это может быть?

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

    click to show

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

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

    Существует основной TON monorepo, который включает криптографию: https://github.com/ton-blockchain/ton

    Есть также TON Connect. Насколько я понимаю, вместо этого TON monorepo он использует библиотеку NaCl для шифрования.

    Правильно ли я понимаю, что в блокчейне TON существуют разные подходы к криптографии? Это почему?

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

    click to show

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

  • Какие API существуют для TON?

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

    Я знаю, что есть проект TonAPI, который предоставляет REST API для блокчейна TON. Это единственный проект или есть и другие подобные проекты?

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

    click to show

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

  • Бассейн с китами

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

    У меня есть баланс в бассейне с китами. Ты можешь это вынуть?

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

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

    Прежде всего, сообщения в TVM (сеть TON) не позволяют нам получать доступ к данным о состоянии других контрактов таким же образом, как мы это делаем в Solidity (EVM).

    Это связано с тем, что данные для контракта могут динамически изменяться в асинхронной цепочке. Единственный способ получить доступ к данным из смарт-контракта - это отправлять сообщения, что означает просить контракт отправить данные через себя."

    Более подробная информация здесь:

    https://blog.ton.org/how-to-shard-your-ton-smart-contract-and-why-studying-the-anatomy-of-tons-jettons
  • Есть ли какая-нибудь информация о.тонна поддоменов?

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

    Существуют домены TON, такие как user.ton, и для них существует система TON DNS. Но как насчет поддоменов? Может ли владелец домена типа user.ton создавать поддомены типа anna.user.ton? Можно ли привязать кошелек или сайт к поддомену? Есть ли документация или другая информация по этому поводу?

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

    click to show

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