TON SDKs

From TON Wiki (Uk)

TON SDKs (TON Software Development Kits) є програмними бібліотеками, що призначені для зручності розробки застосунків і взаємодії зі смарт-контрактами в мережі 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, включаючи інформацією про колекцію та власника.
  • Доступ до інформації про колекцію, такої як URI вмісту і власник.
  • Отримання 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 Documentation
  2. tongo SDK in Golang language
  3. TON library in Rust
  4. SDK in C#
  5. Offchain SDK in Python
  6. kotlin SDK
  7. java SDK
  8. C++ SDK
  9. Swift SDK