Работа со смарт-контрактами кошелька
👋 Введение
Прежде чем приступать к разработке смарт-контрактов, важно изучить как работают кошельки и транзакции на TON. Это поможет разработчикам понять принцип взаимодействия между кошельками, сообщениями и смарт-контрактами для выполнения конкретных задач разработки.
Перед чтением руководства рекомендуется ознакомиться со статьей Типы контрактов кошелька.
Мы научимся создавать операции без использования предварительно настроенных функций, это полезно для лучшего понимания процесса разработки. Дополнительные ссылки на материалы для изучения находятся в конце каждого раздела.
💡 Перед началом работы
Изучение данного руководства потребует базовых знаний JavaScript и TypeScript или Golang. На балансе кошелька должно быть как минимум 3 TON (это может быть биржевой счет, некастодиальный кошелек или бот Кошелек от Telegram). Также необходимо иметь представление об адресах в TON, ячейке, блокчейне блокчейнов.
Работа с TON Testnet часто приводит к ошибкам при развертывании, сложностям с отслеживанием транзакций и нестабильной работе сети. Большую часть разработки лучше реализовать в TON Mainnet, чтобы избежать проблем, которые могут возникнуть при попытках уменьшить количество транзакций, и понизить сборы, соответственно.
💿 Исходный код
Все примеры кода, используемые в руководстве, можно найти в репозитории GitHub.
✍️ Что нужно для начала работы
- Установленный NodeJS
- Специальные библиотеки TON: @ton/ton 13.5.1+, @ton/core 0.49.2+ и @ton/crypto 3.2.0+
ОПЦИОНАЛЬНО: Ес ли вы предпочитаете использовать Go, а не JS, то для разработки на TON необходимо установить GoLand IDE и библиотеку tonutils-go. Эта библиотека будет использоваться в данном руководстве для версии Go.
- JavaScript
- Golang
npm i --save @ton/ton @ton/core @ton/crypto
go get github.com/xssnick/tonutils-go
go get github.com/xssnick/tonutils-go/adnl
go get github.com/xssnick/tonutils-go/address
⚙ Настройте свое окружение
Для создания проекта TypeScript выполните следующие шаги:
- Создайте пустую папку (мы назовем ее WalletsTutorial).
- Откройте папку проекта с помощью CLI.
- Используйте следующие команды для настройки проекта:
npm init -y
npm install typescript @types/node ts-node nodemon --save-dev
npx tsc --init --rootDir src --outDir build \ --esModuleInterop --target es2020 --resolveJsonModule --lib es6 \ --module commonjs --allowJs true --noImplicitAny false --allowSyntheticDefaultImports true --strict false
Процесс ts-node
запускает выполнение кода TypeScript без предварительной компиляции, а nodemon
используется для автоматического перезапуска приложения node при обнаружении изменений файлов в директории.
"files": [
"\\",
"\\"
]
- Затем создайте конфигурацию
nodemon.json
в корне проекта со следующим содержанием:
{
"watch": ["src"],
"ext": ".ts,.js",
"ignore": [],
"exec": "npx ts-node ./src/index.ts"
}
- Добавьте этот скрипт в
package.json
вместо "test", который добавляется при создании проекта:
"start:dev": "npx nodemon"