Обзор Blueprint
Резюме: На предыдущих этапах мы установили и настроили все инструменты, необходимые для разработки смарт-контрактов в TON, и создали наш первый шаблон проекта.
Прежде чем приступить к разработке смарт-контракта, давайте кратко опишем структуру проекта и объясним, как использовать Blueprint
.
Структура проекта
Если вы не выбрали названия, предложенные в предыдущих шагах, то названия файлов с исходным кодом и некоторые сущности в коде могут отличаться.
- FunC
- Tolk
Example/
├── contracts/ # Директория с кодом смарт-контрактов
│ ├── imports/ # Импортируемые библиотеки для контрактов
│ │ └── stdlib.fc # Стандартная библиотека для FunC
│ └── hello_world.fc # Файл главного контракта
├── scripts/ # Скрипты для развёртывания и взаимодействия в блокчейне
│ ├── deployHelloWorld.ts # Скрипт для развёртывания контракта
│ └── incrementHelloWorld.ts # Скрипт для взаимодействия с контрактом
├── tests/ # Директория с тестами для локального тестирования контрактов
│ └── HelloWorld.spec.ts # Спецификации тестов для контракта
└── wrappers/ # Обёртки на TypeScript для взаимодействия с контрактами
├── HelloWorld.ts # Класс-обёртка для смарт-контракта
└── HelloWorld.compile.ts # Скрипт для компиляции контракта
Example/
├── contracts/ # Директория с кодом смарт-контрактов
│ └── hello_world.tolk # Файл основного контракта
├── scripts/ # Скрипты для развёртывания и взаимодействия в блокчейне
│ ├── deployHelloWorld.ts # Скрипт для развёртывания контракта
│ └── incrementHelloWorld.ts # Скрипт для взаимодействия с контрактом
├── tests/ # Директория с тестами для локального тестирования контрактов
│ └── HelloWorld.spec.ts # Спецификации тестов для контракта
└── wrappers/ # Обёртки на TypeScript для взаимодействия с контрактами
├── HelloWorld.ts # Класс-обёртка для смарт-контракта
└── HelloWorld.compile.ts # Скрипт для компиляции контракта
/contracts
Эта директория содержит исходный код ваших смарт-контрактов, написанных на одном из доступных языков программирования для этой задачи.
/scripts
Папка scripts
содержит файлы на языке TypeScript
, которые помогут вам разворачивать ваши смарт-контракты в блокчейне и взаимодействовать с ними, используя ранее реализованные обёртки.
/tests
Этот каталог содержит тестовые файлы для ваших смарт-контрактов. Тестирование контрактов непосредственно в сети TON не является наилучшим вариантом, так как развёртывание требует некоторого количества времени и может приводить к потере средств. Эта тестовая площадка позволяет выполнять несколько смарт-контрактов и даже отправлять сообщения между ними в "локальной сети". Тесты крайне важны, чтобы убедиться, чтобы ваши смарт-контракты действуют ожидаемым образом, до развёртывания их в сеть.
/wrappers
Чтобы взаимодействовать с ваши м смарт-контрактом извне блокчейна, вам нужно сериализовать и десериализовать отправленные ему сообщения. Классы категории обёртки
разрабатывают для того, чтобы «зеркалировать» реализацию вашего смарт-контракта, делая его функциональность простой в использовании.
Поток разработки
Почти любая разработка смарт-контракта состоит из пяти простых шагов:
- Отредактируйте код контракта в папке
/contracts
и соберите его, запустив скрипт сборки:
npx blueprint build
-
Обновите обёртку смарт-контракта в папке
/wrappers
, чтобы она соответствовала изменениям в контракте. -
Обновите тесты в папке
/tests
, чтобы убедиться в правильности новой функциональности, и запустите тестовый скрипт:
npx blueprint test
-
Повторите шаги 1-3, пока не достигнете желаемого результата.
-
Обновите сценарий развёртывания в п апке
/scripts
и запустите его с помощью этой команды:
npx blueprint run
Все примеры в этом руководстве следуют последовательн ости этих 1-3 шагов с соответствующими образцами кода. Шаг 5, процесс развёртывания, описан в последнем разделе руководства: Развёртывание в сети.
Кроме того, вы всегда можете сгенерировать такую же структуру для другого смарт-контракта (если, например, вы хотите создать несколько контрактов, взаимодействующих друг с другом), используя следующую команду:
npx blueprint create PascalCase # Don't forget to name the contract in PascalCase
Следующий шаг
Теперь всё готово: пришло время начать писать смарт-контракты. Мы начнём с базовых задач: хранения данных и get-методов.
Хранение данных и get-методы