TON SDKs

From TON Wiki (Es)

TON SDKs (TON Software Development Kits) son kits para el desarrollo de software TON, representan bibliotecas de software diseñadas para facilitar el desarrollo de las aplicaciones e interactuar con los contratos inteligentes en la red TON.

Descripción

Los SDK de TON brindan a los desarrolladores un conjunto completo de recursos que incluyen API, ejemplos del código, documentación y mecanismos de prueba. Estas herramientas simplifican el proceso del desarrollo en la blockchain y les permiten a los desarrolladores crear las aplicaciones en TON.

SDK en varios lenguajes

Node.js

Para los desarrolladores de Node.js, el paquete node-tonlib proporciona un contenedor para la biblioteca tonlibjson que permite interactuar con TON directamente desde sus aplicaciones Node.js.

node-tonlib es un complemento de C++ que sirve como contenedor de Node.js para tonlibjson y la interfaz JSON de la biblioteca TON Client. Este complemento proporciona una manera fácil de integrar la funcionalidad de TON en sus proyectos Node.js, permitiendo realizar diversas operaciones, tales como crear y administrar billeteras, enviar y recibir transacciones, interactuar con contratos inteligentes y consultar la cadena de bloques TON.

TON JS Client

La biblioteca TON JS Client fue creada por Whales Corp. y se mantiene por Dan Volkov. Proporciona un cliente multiplataforma para interactuar con TON usando JavaScript o TypeScript. Ofrece una API intuitiva de alto nivel para las operaciones centrales de blockchain.

Características clave:

Creación de billeteras

Simplifica la creación de billeteras usando las funciones mnemonicNew() y mnemonicToPrivateKey(). Están diseñadas para almacenar y transferir monedas TON e interactuar con los contratos inteligentes.

Interacción con los contratos de las billeteras

Permite crear fácilmente los contratos de las billeteras usando WalletContractV4.create().

Abstrae los detalles de bajo nivel del contrato, centrándose en la lógica de la aplicación.

Solicitud de estado de cuenta

Permite utilizar la función contract.getBalance() para solicitudes de estado de cuenta simples. Muestra el saldo del usuario según los fondos disponibles.

Procesamiento de transacciones

Permite crear y enviar las transacciones - contract.createTransfer().

Configuración de transacciones flexible

Permite realizar varios tipos de transacciones, incluidos mensajes internos con valores específicos y direcciones de destinatario. Brinda la posibilidad de realizar diversas operaciones, desde las traducciones simples hasta las interacciones contractuales complejas.

Soporte multiplataforma

Se utiliza en varios entornos JavaScript.

Requiere configuración adicional mínima para las aplicaciones de navegador que utilizan un polyfill de navegador (require("buffer")).

Configuración de la red

Admite la interacción con las redes principales y de prueba especificando un punto final de API HTTP. Es muy importante para el desarrollo, la prueba y la implementación en un entorno de producción.

tonutils

Este es un conjunto moderno de herramientas de TypeScript diseñado para simplificar la interacción con los protocolos de red TON. Su arquitectura modular incluye tales componentes como tonutils/adnl, tonutils/dht, tonutils/keyring, tonutils/config и tonutils/tl.

Se centra en las funciones de red avanzadas de TON y en la interacción con tales servicios de TON como TON Proxy, TON Sites y TON Storage con soporte de recompensas.

TON Web

TonWeb es un potente SDK de JavaScript que se utiliza para interactuar con TON. Proporciona una amplia gama de herramientas y utilidades que permiten a los desarrolladores crear una variedad de aplicaciones basadas en TON, desde las billeteras simples hasta las aplicaciones descentralizadas complejas (DApps).

Instalación

TonWeb puede ser integrado fácilmente tanto en entornos web como en el Node.js.

Características principales

Los ejemplos presentados demuestran las capacidades de TonWeb:

Creación y gestión de billeteras.

Se usa tonweb.wallet.create() para crear las billeteras TON que requieren una clave pública generada o derivada de una frase mnemotécnica.

Procesamiento de direcciones

Se reciben las direcciones de billetera usando wallet.getAddress(). TonWeb admite varios formatos de direcciones, incluidas direcciones non-bounceable

Implementación de billeteras

Las billeteras en la cadena de bloques TON se implementan usando wallet.deploy(secretKey).send().

Creación de transacciones y estimación de comisiones

Las  transacciones se crean y se envían con el uso de  wallet.methods.transfer(), especificando el destinatario, el monto (en nanoTON), el número de secuencia, la carga útil y el modo de envío. Es posible estimar la comisión de la transacción antes de enviarla con el uso de .estimateFee().

Python

TON Tools

La biblioteca tontools es una biblioteca orientada a objetos que proporciona un conjunto conveniente de herramientas para interactuar con la blockchain, administrar las billeteras, implementar los contratos inteligentes e interactuar con varias funciones TON.

Los tontools principales incluyen:

Flexibilidad en la selección del proveedor: tontools admite varios proveedores: TonCenterClient (API TonCenter)LsClient (servidores Lite)DtonClient (API GraphQL)TonApiClient (API de indexación). Los desarrolladores se guían por los parámetros siguientes: rendimiento, límites de velocidad, indexación.

Gestión de billeteras: creación, implementación y administración fácil de las billeteras (normales o con frases mnemotécnicas). Verificación de la dirección, implementación y transferencia de monedas TON.

Interacción con contratos inteligentes: proporciona clases para interactuar con: NFT (NftItem, NftCollection, NftItemSale), fichas (Jetton, JettonWallet) y contratos personalizados (clase Contract).

Procesamiento de transacciones: simplifica los procesos de transacciones de TON: envío y recepción de monedas TON. Transferencia de fichas. Solicitud del historial de las transacciones.

Solicitudes a la blockchain: métodos de solicitud a la blockchain TON: Obtención de datos sobre bloques y transacciones. Obtención de los estados de los contratos. Suscribción a los eventos de la blockchain.

Object-Oriented Design: utiliza el enfoque OOD para crear un código intuitivo.

Manejo de errores y seguridad: incluye tales funciones como manejo de direcciones no retornantes.

Comunidad y recursos: el código fuente se mantiene por la comunidad TON.

pytoniq

Está creado para interactuar directamente con la red TON, ofreciendo tales características como:

  • Implementación de Native LiteClient
  • Soporte ADNL
  • Cliente de tabla hash distribuida (DHT)
  • Escaneo de bloques y procesamiento de transacciones
  • Interacción con contratos inteligentes

Esto hace que pytoniq sea adecuado para una amplia gama de aplicaciones basadas en TON, desde las billeteras simples hasta las aplicaciones descentralizadas complejas (DApps).

Instalación

Para comenzar con pytoniq, puede instalarlo mediante pip, el instalador del paquete de Python: pip install pytoniq.

Componentes y características clave

LiteClient de pytoniq permite interactuar directamente con los servidores lite deTON . Capacidades principales:

  1. LiteClient
  • Niveles de control configurables (de 0 a 2) para verificación de datos.
  • Recepción de información de la masterchain.
  • Escaneo de bloques y transacciones.
  • Llamada al contrato inteligente.

2. LiteBalancer

LiteBalancer amplía las capacidades de LiteClient y enruta las solicitudes de manera inteligente al servidor Lite "óptimo" basándose en la capacidad de respuesta y el tamaño del bloque. También admite solicitudes repetidas de tiempo de espera y puede acceder específicamente a los servidores de archivo para obtener solicitudes de períodos anteriores.

3. Block Store

Para las operaciones de confianza cero (zero-trust), pytoniq utiliza almacenamiento de bloques local (carpeta .blockstore) para validar los datos recibidos de servidores lite, lo que garantiza la integridad de los datos sin sacrificar la descentralización.

4. ADNL и DHT

pytoniq proporciona el soporte nativo para ADNL (Abstract Datagram Network Layer) y DHT (Distributed Hash Table), lo que garantiza la comunicación punto a punto y el almacenamiento de datos descentralizado.

tonpy

tonpy es un paquete Python de alto rendimiento creado para interactuar con TON. Combina de forma única la eficiencia de C++ con la facilidad del uso de Python.

C++ Core: Los procesos críticos para el rendimiento se implementan en C++.

Python Wrapper: es una API de Python fácil de usar construida sobre los archivos binarios de C++ precompilados.

Características clave

Estructuras de datos TON: procesamiento eficiente de direcciones, celdas e identificadores

Gestión de billeteras: Creación y administración de billeteras.

Procesamiento de transacciones: creación, firma y envío de transacciones; evaluación de comisiones.

Contratos inteligentes: Implementación y llamada de contratos TON (FunC, TVM).

Network Protocols: Implementación de ADNL, DHT, RLDP.

Golang(Go)

tonutils-go

Es una poderosa biblioteca de Golang creada para interactuar fácilmente con la cadena de bloques TON. Se distingue por su implementación eficiente de los principales protocolos de red TON y se centra en las operaciones paralelas de alto rendimiento.

Operaciones con billeteras

Inicialización de billeteras

Creación de una billetera nueva con una frase de semilla o uso de la billetera existente. El contrato de billetera se implementa e inicializa con el primer mensaje.

Uso básico

  • Seed Words: hay que utilizar la frase semilla para inicializar la billetera.
  • Get Balance: Comprobación del saldo de la billetera.
  • Transfer: Transferencia de fondos si el saldo lo permite, incluido el mensaje de transferencia.

Interacción con el contrato.

GET Methods

  • Obtención de la información sobre el bloque, ejecución del método de contrato y análisis del resultado.
  • Creación y envío de mensajes a la dirección del contrato. Procesamiento del contrato y deducción de comisiones.
  • Implementación de contratos con ayuda de la billetera proporcionando el código del contrato y inicializando los datos y el cuerpo del mensaje.

Operaciones con NFT

  • Gestión de NFT con acuñación, transferencia y recepción de información.
  • Recepción de datos sobre NFT, incluida información sobre la recopilación y el propietario.
  • Acceso a tal información sobre la colección, como la URL del contenido y el propietario.
  • Recepción de URL del contenido de NFT.

También se puede realizar las operaciones Jetton y DNS.

C#

TonSdk.NET

Este es un conjunto completo de bibliotecas. Cada paquete del conjunto tiene un propósito específico, ayudando a los desarrolladores a conectarse a los contratos inteligentes y utilizar las funciones de red avanzadas.

Paquetes

  • TonSdk.Core se compone de diferentes paquetes para diferentes propósitos.
  • TonSdk.Client está diseñado para interactuar con TonCenter.
  • TonSdk.Contracts proporciona la capa de abstracción y el funcionamiento de los contratos inteligentes.
  • TonSdk.Connect se utiliza para la integración con Ton Connect 2.0.
  • TonSdk.Adnl está diseñado para implementar la capa de red en TON.

Todos estos paquetes están disponibles en NuGet

Otros lenguajes del SDK

TonKotlin

TonKotlin proporciona varios módulos para gestionar las operaciones de la red, interactuando con blockchain y máquinas virtuales, siguiendo los principios descritos en el documento TON.

Módulos clave y su funcionalidad:

TON-Kotlin es un SDK multiplataforma creado para que los desarrolladores interactúen con The Open Network (TON) utilizando Kotlin. Ofrece varios módulos para gestionar operaciones de red, realizar interacciones de blockchain y operaciones de máquinas virtuales, siguiendo los principios descritos en el documento TON.

  • ton-adnl Implementa el protocolo Abstract Datagram Networking Layer Protocol.
  • ton-api Contiene estructuras del esquema TL.
  • ton-bitstring Controla las cadenas de bits que se utilizan por (TVM).
  • ton-block Contiene estructuras del esquema TL-B.
  • ton-boc Serializa y deserializa celdas como una colección (bag-of-cells).
  • ton-cell Proporciona datos en celdas, unidades fundamentales en la cadena de bloques TON y VM.
  • ton-crypto Proporciona interfaces para los algoritmos criptográficos y los métodos de conversión de datos utilizados en TON.

Tonlib-java

Tonlib-java es un contenedor basado en JVM para TonLib, que permite su uso con Java, Scala, Kotlin y otros lenguajes JVM.

Información sobre TonLib

TonLib es una biblioteca cliente de C++ que proporciona una interacción segura y eficiente con The Open Network (TON). Incluye características básicas para garantizar la comunicación segura de la red.

Características clave de Tonlib-java:

  • Integración JNI: Java interactúa con TonLib a través deJava Native Interface (JNI), lo que permite acceder directamente al código C++ nativo.
  • Implementación del cliente: la funcionalidad principal está encapsulada en la clase Client.java.
  • Clasificación de mensajes: la comunicación se lleva a cabo con ayuda de clases de mensajes generados especificados en TonApi.java.
  • Security: TonLib verifica Merkle proofs para los datos recibidos de liteservers, garantizando la integridad y autenticidad de los datos. Esto permite una interacción segura con los liteservers.

ayrat555/ton

  • Lenguaje: Elixir
  • Tipo: Offchain-only

C++ Tonlib

  • Lenguaje: C++
  • Tipo: Tonlib binary

Java Tonlib

  • Lenguaje: Java
  • Tipo: Tonlib binary

labraburn/SwiftyTON

  • Lenguaje: Swift
  • Tipo: Tonlib binary

tonlib-xcframework

  • Lenguaje: Swift
  • Tipo: Tonlib binary

Fuentes

  1. TON SDKs documentación
  2. tongo SDK in Golang language
  3. TON biblioteca en Rust
  4. SDK en C#
  5. Offchain SDK en Python
  6. kotlin SDK
  7. java SDK
  8. C++ SDK
  9. Swift SDK