ton
September 19, 2022

Лучший framework для TON

Так получилось, что нет единого стандарта от разработчиков как правильно писать на FunC и TON.

Сообщество написало два фреймворка:

  1. https://github.com/disintar/toncli
  2. https://github.com/ton-defi-org/tonstarter-contracts

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

Основная проблемы первого фреймворка:

  1. Написан на Python, а не JS
  2. Тесты для FunC, пишут на FunC
    1. Это какой-то вид извращения

Преимущества второго:

  1. TS\JS является стандартом для блокчейн фреймворков
  2. Максимально ориента́ция на дизайн HardHat.
    1. HardHat это уже стандарт, его знают десятки тысяч людей
  3. Тест на JS chai, mocha, в стиле spec
    1. Миллионы специалистов знают как читать и писать такие тесты
    2. Даже люди из других языков знают что это такое, без обучения
    3. На JS тестах можно легко описать любой сложный кейс.

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

5 лет назад я бы конечно выбрал toncli, ведь я считал что у меня есть много свободного времени, для того чтобы ковыряться в том, в чем ковыряться не нужно. И я любил переусложня́ть то, что не нужно. Я прекрасно понимаю авторов проекта, у самого кладбище велосипедов. Но сам я в это не полезу, спасибо :)

Установка:

git clone [email protected]:ton-defi-org/tonstarter-contracts.git sample
npm i

# Нужны бинарники fift, func и библиотек в ./bin
mkdir bin
wget https://github.com/ton-defi-org/ton-binaries/releases/download/ubuntu-16/fift -P ./bin
chmod +x ./bin/fift
wget https://github.com/ton-defi-org/ton-binaries/releases/download/ubuntu-16/func -P ./bin
chmod +x ./bin/func
wget https://github.com/ton-defi-org/ton-binaries/releases/download/fiftlib/fiftlib.zip -P ./bin
unzip ./bin/fiftlib.zip -d ./bin/fiftlib

Для того чтобы убедиться, что все в порядке:

npm run build
npm run test
Правильная работа