Составляйте и создавайте смарт-контракты на TON
Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.
Вот список библиотек и репозиториев для создания Вашего смарт-контракта.
TLDR:
- В большинстве случаев достаточно использовать Blueprint SDK.
- Если Вам нужен более низкоуровневый подход, Вы можете использовать ton-compiler или func-js.
Blueprint
Обзор
Среда разработки для блокчейна TON, предназначенная для написания, тестирования и развертывания смарт-контрактов. Подробнее читайте в Git репозитории Blueprint.
Установка
Выполните следующую команду в терминале, чтобы создать новый проект, и следуйте инструкциям на экране:
npm create ton@latest
Особенности
- Оптимизированный рабочий процесс для создания, тестирования и разв ертывания смарт-контрактов
- Очень простое развертывание в mainnet/testnet с помощью Вашего любимого кошелька (например, Tonkeeper)
- Удивительно быстрое тестирование нескольких смарт-контрактов в изолированном блокчейне, работающем в процессе
Технологический стек
- Компиляция FunC с помощью https://github.com/ton-community/func-js (без CLI)
- Тестирование смарт-контрактов с помощью https://github.com/ton-community/sandbox
- Развертывание смарт-контрактов с помощью TON Connect 2, Tonhub wallet или диплинк
ton://
Требования
- Node.js последней версии, например, v18, проверьте версию с помощью
node -v
- IDE с поддержкой TypeScript и FunC, например Visual Studio Code с плагином FunC
Как использовать?
- Посмотрите презентацию DoraHacks с демонстрацией работы с blueprint.
- Прочитайте подробное объяснение в репозитории Blueprint.
ton-compiler
Обзор
Упакованный компилятор FunC для смарт-контрактов TON:
- GitHub: ton-community/ton-compiler
- NPM: ton-compiler
Установка
- npm
- Yarn
- pnpm
npm install ton-compiler
yarn add ton-compiler
pnpm add ton-compiler
Особенности
- Несколько версий компилятора FunC
- Не нужно устанавливать и компилировать TON
- Программные и CLI-интерфейсы
- Готовность к использованию в модульном тестировании
Как использовать
Этот пакет добавляет бинарные файлы ton-compiler
в проект.
Компиляция FunC - это многоступенчатый процесс. Один из них - компиляция Func в код Fift, который затем компилируется в двоичное представление. Компилятор Fift уже содержит Asm.fif.
FunC stdlib входит в комплект поставки, но может быть отключен во время выполнения.
Использование консоли
# Compile to binary form (for contract creation)
ton-compiler --input ./wallet.fc --output ./wallet.cell
# Compile to fift (useful for debugging)
ton-compiler --input ./wallet.fc --output-fift ./wallet.fif
# Compile to binary form and fift
ton-compiler --input ./wallet.fc --output ./wallet.cell --output-fift ./wallet.fif
# Disable stdlib
ton-compiler --no-stdlib --input ./wallet.fc --output ./wallet.cell --output-fift ./wallet.fif
# Pick version
ton-compiler --version "legacy" --input ./wallet.fc --output ./wallet.cell --output-fift ./wallet.fif
Программное использование
import { compileContract } from "ton-compiler";
let result = await compileContract({ code: 'source code', stdlib: true, version: 'latest' });
if (result.ok) {
console.log(result.fift); // Compiled Fift assembler
console.log(result.cell); // Compiled cell Buffer
} else {
console.warn(result.logs); // Output logs
}
func-js
Обзор
Кроссплатформенные привязки для компилятора TON FunC.
Он более низкоуровневый, чем ton-compiler, поэтому используйте его только в том случае, если ton-compiler Вам не подходит.
- GitHub: ton-community/func-js
- NPM: @ton-community/func-js
Установка
- npm
- Yarn
- pnpm
npm install @ton-community/func-js
yarn add @ton-community/func-js
pnpm add @ton-community/func-js
Особенности
- Нет необходимости компилировать или загружать двоичные файлы FunC
- Работает как в Node.js, так и в WEB (требуется поддержка WASM)
- Компилируется прямо в BOC с кодом Cell
- Сборка возвращается для отладки
- Не зависит от файловой системы
Как использовать
Внутри этот пакет использует компилятор FunC и интерпретатор Fift, объединенные в одну lib, скомпилированную в WASM.
Простая схема:
(your code) -> WASM(FunC -> Fift -> BOC)
Исходники внутреннего lib можно найти здесь.
Пример использования
import {compileFunc, compilerVersion} from '@ton-community/func-js';
import {Cell} from 'ton';
async function main() {
// You can get compiler version
let version = await compilerVersion();
let result = await compileFunc({
// Entry points of your project
entryPoints: ['main.fc'],
// Sources
sources: {
"stdlib.fc": "<stdlibCode>",
"main.fc": "<contractCode>",
// Rest of the files which are included in main.fc if some
}
});
if (result.status === 'error') {
console.error(result.message)
return;
}
// result.codeBoc contains base64 encoded BOC with code cell
let codeCell = Cell.fromBoc(Buffer.from(result.codeBoc, "base64"))[0];
// result.fiftCode contains assembly version of your code (for debug purposes)
console.log(result.fiftCode)
}
Обратите внимание, что все содержимое исходных файлов FunC, используемое в Вашем проекте, должно быть передано в sources
, включая:
- точки входа
- stdlib.fc (если Вы его используете)
- все файлы, включенные в точки входа
Проверено сообществом TON
- ton-community/ton-compiler - готовый к использованию компилятор FunC для смарт-контрактов TON.
- ton-community/func-js - кроссплатформенные привязки для компилятора TON FunC.