La Fundación DFINITY se compromete a restaurar las raíces libres y abiertas de Internet con el lanzamiento de Internet Computer, la primera red blockchain de velocidad web del mundo con potencia informática ilimitada diseñada para mejorar la experiencia del desarrollador y brindar más opciones. Este ha sido nuestro enfocar.
Las computadoras de Internet albergan contenedores de software, una evolución escalable de los contratos inteligentes tradicionales que agrupan el código de bytes de WebAssembly con páginas de memoria en las que se ejecuta el código.
Esto permite a los desarrolladores crear aplicaciones, sistemas y servicios de Internet seguros y confiables interoperables revolucionarios, aprovechar las capacidades de blockchain como la tokenización e implementar software directamente en Internet en lugar de en una infraestructura patentada.
Para respaldar el crecimiento en el alcance del software redefinido en una plataforma abierta, donde diferentes programas se pueden integrar directamente entre sí y los servicios se pueden componer y ampliar fácilmente, nuestro equipo de idiomas desarrolló el lenguaje de descripción de interfaz sincero (IDL).
La interfaz permite a quienes colaboran en ecosistemas informáticos de Internet conectar su código de manera completamente fluida, incluso cuando está escrito en diferentes idiomas, y nos complace describirlo con más detalle hoy.
¿Qué es sincero?
Candid es un IDL diseñado específicamente para computadoras de Internet que proporciona un lenguaje común para interfaces de aplicaciones para facilitar la comunicación entre servicios escritos en diferentes lenguajes de programación.
Una de las principales ventajas de Candid es que es independiente del lenguaje, lo que permite la interoperabilidad entre servicios y front-end escritos en diferentes lenguajes de programación como Motoko, Rust y JavaScript, entre otros. Permite a los desarrolladores crear de forma segura y fluida servicios que dependen unos de otros sin tener que preocuparse por las actualizaciones de la interfaz de servicios externos.
Con Candid, intentamos...
Proporcionar interfaz y descripción de datos: los desarrolladores que utilizan Candid pueden describir la interfaz pública del servicio, generalmente en forma de un programa implementado como contenedor. Como desarrollador, usted se refiere a los servicios externos que se ejecutan en computadoras a través de Internet como llamadas a funciones asincrónicas.
En principio, admite la evolución de las interfaces: Candid admite la evolución de las interfaces de servicio especificando con precisión los cambios que se pueden realizar sin dañar a los clientes existentes. Esto significa, por ejemplo, que puede agregar de forma segura nuevos parámetros opcionales a un servicio sin pérdida de compatibilidad. con los clientes existentes.
Admite funciones informáticas de Internet: Candid es especialmente adecuado para desarrollar aplicaciones informáticas de Internet.
Candid se inspira hasta cierto punto en lenguajes como IDL y lenguajes de definición de datos (DDL) como Protobuf, Thrift y JSON, pero Candid ofrece una combinación única de características que no se encuentran en estas otras tecnologías:
Candid es un lenguaje de descripción de interfaz completo, no solo un lenguaje de descripción de datos.
Las implementaciones sinceras pueden asignar valores candid directamente a tipos y valores del idioma anfitrión.
Candid es esencialmente un lenguaje de alto nivel que permite que los parámetros del mensaje contengan referencias a otros servicios y métodos.
Candid tiene soporte integrado para funciones informáticas específicas de Internet, como anotaciones de consultas.
Candid define reglas sobre cómo actualizar los servicios y sus interfaces de una manera sensata e integral, incluido el uso de alto nivel.
¿Cómo utilizar Sincero?
El objetivo principal de Candid es conectar programas escritos en algún lenguaje anfitrión (como Motoko, Rust o JavaScript) con computadoras en Internet. En la mayoría de los casos, no es necesario tratar los datos del programa como valores sinceros.
En su lugar, puede utilizar un lenguaje anfitrión como JavaScript con valores de JavaScript familiares y luego confiar en Candid para transferir de forma transparente esos valores a un contenedor escrito en Rust o Motoko. El contenedor recibe estos valores y los trata como valores sin procesar de Rust o Motoko.
En algunos casos, resulta útil ver el valor Candid directamente en un formato legible por humanos, por ejemplo, al iniciar sesión en la línea de comando, depurar o interactuar con un servicio. En estos casos, puede utilizar una representación de texto para el valor sincero.
Candid es un sistema fuertemente tipado, con un conjunto canónico de tipos que cubren la mayoría de los usos (para obtener una lista, consulte nuestra página de SDK).
La razón detrás de este conjunto de tipos es que describen adecuadamente la estructura de los datos para que la información pueda codificarse, transferirse y decodificarse, pero no intentan describir restricciones semánticas más allá de este alcance.
Ya sea que esté escribiendo código en Motoko, Rust, JavaScript u otro idioma, Candid admite este conjunto de tipos para permitir el mapeo natural de tipos de datos basado en opciones canónicas y sensatas para cada idioma anfitrión.
Los servicios se pueden describir utilizando el tipo Candid a través de un archivo de descripción de servicio Candid (archivo .did), que puede escribirse manualmente o generarse a partir de la implementación del servicio.
Por ejemplo, si escribe un contenedor en Motoko, el compilador genera automáticamente una descripción sincera cuando compila el programa.
En otros lenguajes, como Rust, tendrías que escribir manualmente la especificación de la interfaz Candid. Con la ayuda de tipos, desarrollamos herramientas para generar automáticamente la interfaz de usuario y realizar pruebas aleatorias basadas en archivos de descripción de servicios.
Candid también es útil para actualizaciones de servicios, los servicios evolucionan con el tiempo y adquieren nuevos métodos, mientras que los métodos existentes devuelven más datos o esperan parámetros adicionales. A menudo, los autores de servicios quieren hacer esto sin interrumpir a los clientes existentes.
Candid ayuda a que los servicios evolucionen de forma segura al definir reglas de subtipificación precisas (¡formalizadas en Coq!) que indican cuándo un nuevo tipo de servicio aún podrá comunicarse con todas las demás partes utilizando la descripción de interfaz anterior.
¿Interesado en aprender más? Aquí hay algunos materiales relacionados con Candid para que pueda comenzar...
Tutoriales y recursos de Candid
Vídeo explicativo de Candid: puedes ver el artículo que comienza con un vídeo tutorial sobre cómo utilizar Candid.
Documentación y tutoriales de Candid: Puede acceder a la documentación sobre Candid en nuestro sitio web SDK: https://sdk.dfinity.org/docs/candid-guide/candid-intro.html
Candid Crate: Candid Crate es una biblioteca de serialización/deserialización que se puede utilizar para crear servicios o clientes Candid en Rust: https://crates.io/crates/candid
Biblioteca de proxy de computadora de Internet para JavaScript: este proxy incluye soporte para Candid.
Bibliotecas Candid respaldadas por la comunidad: actualmente existen bibliotecas para Haskell, Elm, AssemblyScript y Kotlin.
Interfaz de usuario sincera: este contenedor genera una interfaz de usuario de interfaz de usuario para cualquier contenedor que se ejecute en una computadora con Internet, lo que permite a los desarrolladores interactuar con el contenedor en la web (en lugar de la terminal) y proporciona capacidades de depuración.

Contenido IC que te interesa
Progreso tecnológico | Información del proyecto | Eventos globales
Recopila y sigue el canal IC Binance
Responde preguntas en cualquier momento

