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

Задача конкурса простая: участники должны создать один или несколько смарт-контрактов, предложить улучшения для FunC или виртуальной машины TON, а также найти проблемы и предложить исправления для TON Testnet. Призовой фонд за выполнение этих трёх заданий составит порядка $200 000-400 000. Конкурс будет завершён 15 октября в 23:00 по центральноевропейскому времени. Подробности доступны на официальном канале Telegram Contests.

Подробности

Цель нового конкурса состоит в том, чтобы реализовать хотя бы один из смарт-контрактов, перечисленных в профайле конкурса, для цепочки блоков TON с использованием инструментов, предоставленных в дистрибутиве цепочки. Некоторые примеры смарт-контрактов находятся в подкаталоге «crypto/smartcont» в дереве исходного кода. В большинстве случаев исходный код смарт-контракта FunC находится в файле с суффиксом .fc.

Другой файл с этим же именем с суффиксом .fif автоматически генерируется из исходного файла, вызывая двоичный файл `func` с соответствующими параметрами командной строки. Автоматически сгенерированный файл содержит инструкции по сборке виртуальной машины, которые при интерпретации ассемблером Fift генерируют код смарт-контракта в двоичном виде. Участники конкурса могут писать код смарт-контракта прямо в ассемблере Fift; однако таким образом могут быть разумно реализованы и протестированы лишь самые простые смарт-контракты, поэтому команда братьев Дуровых ожидает, что участники отдадут предпочтение компилятору FunC.

Помимо написания кода смарт-контракта участникам потребуется реализовать некоторые сценарии, которые позволяют пользователю создавать, правильно настраивать и контролировать новые экземпляры смарт-контракта. Сейчас отсутствует документация по FunC, однако доступно описание Fift. Список всех инструкций TVM можно найти в «Приложении A» к документации TVM. Для использования какой-либо инструкции из источника смарт-контракта необходимо проверить, определена ли подходящая встроенная функция в «`crypto/smartcont/stdlib.fc» или «`crypto/func/builtins.cpp`». В случае отсутствия участники могут добавить собственный «встроенный ассемблер» в начало кода смарт-контракта.

Подписывайтесь на «Код Дурова» в Telegram и во «ВКонтакте», чтобы всегда быть в курсе интересных новостей!