TON SDKs

From TON Wiki (Ru)

TON SDKs (TON Software Development Kits) — наборы для разработки программного обеспечения TON, представляют собой программные библиотеки, предназначенные для удобства разработки приложений и взаимодействия со смарт-контрактами в сети TON.

Описание

TON SDK предоставляют разработчикам комплексный набор ресурсов, включая API, примеры кода, документацию и механизмы тестирования. Эти инструменты упрощают процесс разработки на блокчейне, позволяя разработчикам создавать приложения на TON.

SDK в различных языках

Node.js

Для разработчиков Node.js пакет node-tonlib предоставляет оболочку для библиотеки tonlibjson, которая позволяет взаимодействовать с TON напрямую из ваших приложений Node.js.

node-tonlib — это дополнение на C++, которое служит оболочкой Node.js для tonlibjson, JSON-интерфейса библиотеки TON Client. Данное дополнение обеспечивает простой способ интеграции функционала TON в ваши проекты Node.js, позволяя выполнять различные операции, такие как создание и управление кошельками, отправка и получение транзакций, взаимодействие со смарт-контрактами и запросы к блокчейну TON.

TON JS Client

Библиотека TON JS Client, созданная Whales Corp. и поддерживаемая Дэном Волковым, предоставляет кросс-платформенный клиент для взаимодействия с TON с использованием JavaScript или TypeScript. Она предлагает высокоуровневый, интуитивно понятный API для основных операций блокчейна.

Ключевые функции:

Создание кошельков

Упрощает создание кошелька с помощью функций mnemonicNew() и mnemonicToPrivateKey(). Они предназначены для хранения-передачи монет TON и взаимодействия со смарт-контрактами.

Взаимодействие с контрактами кошельков

Позволяет легко создавать контракты кошельков с помощью WalletContractV4.create().

Абстрагирует низкоуровневые детали контракта, фокусируясь на логике приложения.

Запрос баланса

Позволяет использовать функцию contract.getBalance() для простых запросов баланса. Отображает баланс пользователя на основании имеющихся средств.

Обработка транзакций

Позволяет создавать и отправлять транзакции — contract.createTransfer().

Гибкая настройка транзакций

Позволяет осуществлять различные типы транзакций, включая внутренние сообщения с указанными значениями и адресами получателей. Обеспечивает возможность выполнения различных операций — от простых переводов до сложных контрактных взаимодействий.

Кросс-платформенная поддержка

Предназначена для использования в различных средах JavaScript.

Минимальная дополнительная настройка для браузерных приложений с помощью полифилла браузера (require("buffer")).

Настройка сети

Поддерживает взаимодействие как с основными, так и с тестовыми сетями, указывая конечную точку HTTP API. Очень важна для разработки, тестирования и развёртывания в рабочей среде.

tonutils

Это современный набор инструментов на TypeScript, предназначенный для упрощения взаимодействия с сетевыми протоколами TON. Его модульная архитектура включает компоненты, такие как tonutils/adnl, tonutils/dht, tonutils/keyring, tonutils/config и tonutils/tl.

Он фокусируется на расширенных сетевых функциях TON и взаимодействии с такими сервисами TON как: TON Proxy, TON Sites и TON Storage при поддержке баунти.

TON Web

TonWeb — это мощный SDK на JavaScript, используемый для взаимодействия с TON. Он предоставляет широкий набор инструментов и утилит, которые позволяют разработчикам создавать различные приложения на основе TON, от простых кошельков до сложных децентрализованных приложений (DApps).

Установка

TonWeb можно легко интегрировать как в веб-среду, так и в среду Node.js.

Основные характеристики

Представленные примеры демонстрируют возможности TonWeb:

Создание кошелька и управление

Использование tonweb.wallet.create() для создания кошельков TON, которые запрашивают открытый ключ, сгенерированный или полученный из мнемонической фразы.

Обработка адресов

Получение адресов кошельков с помощью wallet.getAddress(). TonWeb поддерживает различные форматы адресов, включая адреса non-bounceable.

Развёртывание кошельков

Развёртывание кошельков в блокчейне TON с помощью wallet.deploy(secretKey).send().

Создание транзакций и оценка комиссий

Создание и отправка транзакции с помощью wallet.methods.transfer(), указывая получателя, сумму (в nanoTON), номер последовательности, полезную нагрузку и режим отправки. Есть возможность оценить комиссию за транзакцию перед отправкой с помощью .estimateFee().

Python

TON Tools

Библиотека tontools — это объектно-ориентированная библиотека, предоставляющая удобный набор инструментов для взаимодействия с блокчейном, управления кошельками, развёртывания смарт-контрактов и взаимодействия с различными функциями TON.

К основным tontools относятся:

Гибкость выбора поставщика: tontools поддерживает несколько провайдеров: TonCenterClient (TonCenter API)LsClient (Lite-серверы)DtonClient (GraphQL API)TonApiClient (API индексирования). Разработчики при выборе руководствуются потребностями: производительность, ограничения скорости, индексирование.

Управление кошельком: лёгкое создание, развёртывание и управление кошельками (обычными или с мнемоническими фразами). Проверка по адресу, развёртывание и передача TON монет.

Взаимодействие со смарт-контрактами: предоставляет классы для взаимодействия с: NFT (NftItem, NftCollection, NftItemSale), жетонами (Jetton, JettonWallet) и пользовательскими контрактами (класс Contract).

Обработка транзакций: упрощает процессы транзакций TON: Отправка и получение монет TON. Передача жетонов. Запрос истории транзакций.

Запросы к блокчейну: методы запроса к блокчейну TON: Получение данных о блоках и транзакциях. Получение состояний контрактов. Подписка на события блокчейна.

Object-Oriented Design: использует подход OOD для создания интуитивно понятного кода.

Работа с ошибками и безопасность: включает такие функции, как обработка невозвратных адресов.

Сообщество и ресурсы: исходный код поддерживается сообществом TON.

pytoniq

Он предназначен для прямого взаимодействия с сетью TON, предлагая такие функции, как:

  • Реализация Native LiteClient
  • Поддержка ADNL
  • Клиент распределенной хеш-таблицы (DHT)
  • Сканирование блоков и обработка транзакций
  • Взаимодействие со смарт-контрактами

Это делает pytoniq подходящим для широкого спектра приложений на базе TON, от простых кошельков до сложных децентрализованных приложений (DApps).

Установка

Чтобы начать работать с pytoniq, вы можете установить его через pip, установщик пакетов Python: pip install pytoniq.

Ключевые компоненты и функции

LiteClient от pytoniq позволяет напрямую взаимодействовать с lite-серверами TON. Основные возможности:

1.LiteClient

  • Настраиваемые уровни контроля (от 0 до 2) для проверки данных.
  • Получение информации из мастерчейна.
  • Сканирование блоков и транзакций.
  • Вызов смарт-контракта.

2. LiteBalancer

LiteBalancer расширяет возможности LiteClient, осуществляя интеллектуальную маршрутизацию запросов на «оптимальный» lite-сервер на основе отзывчивости и величины блока. Он также поддерживает повторные запросы по таймауту и может специально обращаться к архивным серверам для получения запросов за прошлые периоды.

3. Block Store

Для операций с нулевым доверием (zero-trust), pytoniq использует локальное хранилище блоков (папка .blockstore) для проверки данных, получаемых с серверов lite, что обеспечивает целостность данных без ущерба для децентрализации.

4. ADNL и DHT

pytoniq предоставляет нативную поддержку ADNL (Abstract Datagram Network Layer) и DHT (Distributed Hash Table), обеспечивая одноранговую связь и децентрализованное хранение данных.

tonpy

tonpy — высокопроизводительный пакет Python, предназначенный для взаимодействия с TON. Он уникально сочетает в себе эффективность C++ с простотой использования Python.

C++ Core: Важные для производительности процессы реализованы на C++.

Python Wrapper: Удобный API на Python, построенный на предварительно скомпилированных двоичных файлах C++.

Ключевые особенности

Структуры данных TON: Эффективная обработка адресов, ячеек, идентификаторов блоков.

Управление кошельком: Создание и управление кошельками.

Обработка транзакций: Создание, подпись и отправка транзакций; оценка комиссий.

Смарт-контракты: Развёртывание и вызов контрактов TON (FunC, TVM).

Network Protocols: Реализация ADNL, DHT, RLDP.

Golang(Go)

tonutils-go

Это мощная библиотека Golang, предназначенная для бесшовного взаимодействия с блокчейном TON. Она отличается эффективной реализацией основных сетевых протоколов TON, и ориентирована на высокопроизводительные, параллельные операции.

Операции с кошельком

Инициализация кошелька

Создание нового кошелька с помощью seed-фразы или использование существующего. Контракт кошелька развёртывается и инициализируется с первым сообщением.

Базовое использование

  • Seed Words: Использование seed-фразы для инициализации кошелька.
  • Get Balance: Проверка баланса кошелька.
  • Transfer: Перевод средств, если баланс достаточен, включая сообщение с переводом.

Взаимодействие с контрактом

GET Methods

  • Получение информации о блоке, выполнение метода контракта и анализ результата.
  • Создание и отправка сообщений на адрес контракта. Обработка контракта и вычитание комиссии.
  • Развёртывание контрактов с помощью кошелька путем предоставления кода контракта, инициализации данных и тела сообщения.

Операции с NFT

  • Управление NFT с чеканкой, переводом и получением информации.
  • Получение данных о NFT, включая сведения о коллекции и владельце.
  • Доступ к информации о коллекции, такой как URL содержимого и владелец.
  • Получение URL-адресов содержимого NFT.

Также можно выполнять операции Jetton и операции DNS.

C#

TonSdk.NET

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

Пакеты

  • TonSdk.Core состоит из различных пакетов для разных целей.
  • TonSdk.Client предназначен для взаимодействия с TonCenter.
  • TonSdk.Contracts обеспечивает слой абстракций и работу смарт-контрактов.
  • TonSdk.Connect используется для интеграции с Ton Connect 2.0.
  • TonSdk.Adnl предназначен для реализации сетевого уровня в TON.

Все эти пакеты доступны на NuGet.

Другие языки SDK

TonKotlin

В TonKotlin представлены различные модули для управления сетевыми операциями, взаимодействия с блокчейном и виртуальными машинами, придерживаясь принципов, изложенных в документе TON.

Ключевые модули и их функциональные возможности:

TON-Kotlin — это кроссплатформенный SDK, предназначенный для разработчиков, которые могут взаимодействовать с The Open Network (TON) с помощью Kotlin. Он предлагает различные модули для управления сетевыми операциями, взаимодействиями с блокчейном и операциями с виртуальными машинами, придерживаясь принципов, изложенных в документе TON.

  • ton-adnl Реализует протокол Abstract Datagram Networking Layer Protocol.
  • ton-api Содержит структуры из схемы TL.
  • ton-bitstring Управляет битными строками, используемыми (TVM).
  • ton-block Содержит структуры из схемы TL-B.
  • ton-boc Сериализует и десериализует ячейки в виде коллекции (bag-of-cells).
  • ton-cell Предоставляет данные в ячейках, фундаментальных единицах в блокчейне TON и VM.
  • ton-crypto Предоставляет интерфейсы для криптографических алгоритмов и методов преобразования данных, используемых в TON.

Tonlib-java

Tonlib-java — это обертка для TonLib на основе JVM, позволяющая использовать её с Java, Scala, Kotlin и другими языками JVM.

Обзор TonLib

TonLib — это клиентская библиотека на C++, которая обеспечивает безопасное и эффективное взаимодействие с The Open Network (TON). Она включает в себя основные функции для обеспечения безопасной связи сети.

Ключевые характеристики Tonlib-java:

  • Интеграция JNI: Java взаимодействует с TonLib через Java Native Interface (JNI), позволяя напрямую обращаться к нативному коду C++.
  • Реализация Клиента: Основные функциональные возможности инкапсулированы в классе Client.java.
  • Классификация сообщений:  Коммуникация осуществляется при помощи сгенерированных типизированных классов сообщений, указанных в TonApi.java.
  • Security: TonLib проверяет Merkle proofs для данных, полученных от liteservers, обеспечивая целостность и аутентичность данных. Это позволяет безопасное взаимодействие с публичными liteservers.

ayrat555/ton

  • Язык: Elixir
  • Тип: Offchain-only

C++ Tonlib

  • Язык: C++
  • Тип: Tonlib binary

Java Tonlib

  • Язык: Java
  • Тип: Tonlib binary

labraburn/SwiftyTON

  • Язык: Swift
  • Тип: Tonlib binary

tonlib-xcframework

  • Язык: Swift
  • Тип: Tonlib binary

Источники

  1. TON SDKs документация
  2. tongo SDK in Golang language
  3. TON библиотека на Rust
  4. SDK в C#
  5. Offchain SDK в Python
  6. kotlin SDK
  7. java SDK
  8. C++ SDK
  9. Swift SDK