TGViewer
Понакодили Понакодили @nacodili · 118 subscribers
Post #7 609
Сегодня я узнал, что в func нельзя написать много условий подряд, компилятор из @ton-community/func-js упадет с ошибкой:
Maximum call stack size exceeded
RangeError: Maximum call stack size exceeded


Зачем вообще такое писать

NFT устроены так, что внутри у них есть число — индекс. Он уникальный в рамках коллекции. Обычно индексы начинаются с нуля и идут по возрастанию: 0, 1, 2, 3 и так далее. Но только не в коллекциях gomining.

У них первый индекс в коллекции — 348903. Сомнительно, но ок: у ребят сквозная нумерация индексов на всех блокчейнах. Но это только начало. Далее примерно тысяча индексов идет последовательно с шагом в единицу до 350002, после чего идёт пропуск на 9 номеров — следующий индекс 350012. И таких пропусков — 863 штуки.

Всё было бы нормально, если бы такую коллекцию нужно было просто заминтить. Тогда никаких проблем нет — можно подставлять нужные индексы в нужные NFT, как это сделано, например, в коллекциях TON DNS или Telegram Usernames.

Но коллекции gomining должны были продаваться с ланчпада. Ланчпад — это лендинг с одной кнопкой «Купить NFT». Кнопка списывает у пользователя TON и минтит NFT на кошелёк. Весь процесс покупки и минтинга происходит полностью ончейн, вся логика зашита в смарт-контрактах.

В этой логике было очень удобно считать от нуля до максимального количества NFT и использовать этот счётчик как индекс NFT. Такой подход хорошо работал несколько лет для «обычных» коллекций, но на gomining всё сломалось.

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

В итоге я сделал так:
https://tonviewer.com/EQCN7SkHxlSkRwXopX5iReUDuhCDaGyBevt6Bp3D2jZQU0gb?section=code
  • 🤯 5
  • 👍 2
  • 🤡 2
  • 😁 1
More from @nacodili
  1. Sep 17, 2026Это, наверное, самый безобидный баг, но мерзкий. Проявляется он так: dApp вызывает кошелек…
  2. Sep 17, 2026Последние 4 года я занимаюсь проектами на TON. Я участвовал в разработке Getgems, Lost Dog…
  3. Sep 16, 2026Post #11
  4. Aug 26, 2026Как я починил fragment Просто пополнил баланс нфт на 0.005 GRAM. После этого нфт хватило д…
  5. Aug 23, 2026Недавно прочитал новость про неслучайные сид-фразы: https://t.me/ctodaily/2117 И решил поп…
  6. May 8, 2026TON не любит нищих TON сделан таким образом, чтобы вы не задавались вопросом: «Ой, а хвати…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →