La Fondation DFINITY s'engage à restaurer les racines libres et ouvertes d'Internet avec le lancement d'Internet Computer, le premier réseau blockchain au monde à vitesse Web avec une puissance de calcul illimitée, conçu pour améliorer l'expérience des développeurs et offrir plus de choix. se concentrer.

Les ordinateurs Internet hébergent des conteneurs de logiciels, une évolution évolutive des contrats intelligents traditionnels qui regroupent le byte code WebAssembly avec des pages de mémoire dans lesquelles le code s'exécute.

Cela permet aux développeurs de créer des applications, des systèmes et des services Internet interopérables révolutionnaires, sécurisés et fiables, de tirer parti des capacités de la blockchain telles que la tokenisation et de déployer des logiciels directement sur Internet plutôt que sur une infrastructure propriétaire.

Pour soutenir la croissance de la portée des logiciels redéfinis sur une plate-forme ouverte, où différents programmes peuvent être directement intégrés les uns aux autres et où les services peuvent être facilement composés et étendus, notre équipe linguistique a développé le langage de description d'interface Candid (IDL).

L'interface permet à ceux qui collaborent sur les écosystèmes informatiques Internet de connecter leur code de manière totalement transparente, même lorsqu'il est écrit dans différentes langues, et nous sommes ravis de la décrire plus en détail aujourd'hui.

Qu’est-ce que Candide ?

Candid est un IDL conçu spécifiquement pour les ordinateurs Internet qui fournit un langage commun pour les interfaces d'application afin de faciliter la communication entre les services écrits dans différents langages de programmation.

L'un des principaux avantages de Candid est qu'il est indépendant du langage, permettant l'interopérabilité entre les services et les frontaux écrits dans différents langages de programmation tels que Motoko, Rust et JavaScript, entre autres. Il permet aux développeurs de créer en toute sécurité et de manière transparente des services qui dépendent les uns des autres sans avoir à se soucier des mises à niveau d'interface vers des services externes.

Avec Candid, nous essayons de…

  • Fournir une description de l'interface et des données : les développeurs utilisant Candid sont capables de décrire l'interface publique du service, généralement sous la forme d'un programme déployé en tant que conteneur. En tant que développeur, vous faites référence aux services externes exécutés sur des ordinateurs via Internet sous le nom d'appels de fonction asynchrones.

  • Prend en principe en charge l'évolution des interfaces : Candid prend en charge l'évolution des interfaces de service en spécifiant précisément les modifications qui peuvent être apportées sans casser les clients existants. Cela signifie, par exemple, que vous pouvez ajouter en toute sécurité de nouveaux paramètres facultatifs à un service sans aucune perte de compatibilité. avec les clients existants.

  • Prend en charge les fonctions informatiques Internet : Candid est particulièrement adapté au développement d’applications informatiques Internet.

Candid s'inspire dans une certaine mesure de langages comme IDL et de langages de définition de données (DDL) tels que Protobuf, Thrift et JSON, mais Candid offre une combinaison unique de fonctionnalités que l'on ne retrouve pas dans ces autres technologies :

  • Candid est un langage de description d'interface complet, pas seulement un langage de description de données.

  • Les implémentations Candid peuvent mapper les valeurs Candid directement aux types et valeurs du langage hôte.

  • Candid est essentiellement un langage de haut niveau qui permet aux paramètres de message de contenir des références à d'autres services et méthodes.

  • Candid prend en charge de manière intégrée certaines fonctionnalités informatiques spécifiques à Internet, telles que les annotations de requêtes.

  • Candid définit des règles sur la manière de mettre à niveau les services et leurs interfaces de manière judicieuse et complète, y compris une utilisation de haut niveau.

Comment utiliser Candide ?

L'objectif principal de Candid est de connecter des programmes écrits dans un langage hôte (tel que Motoko, Rust ou JavaScript) avec des ordinateurs sur Internet. Dans la plupart des cas, vous n'avez pas besoin de traiter les données du programme comme des valeurs franches.

Au lieu de cela, vous pouvez utiliser un langage hôte comme JavaScript avec des valeurs JavaScript familières, puis compter sur Candid pour transférer de manière transparente ces valeurs dans un conteneur écrit en Rust ou Motoko. Le conteneur reçoit ces valeurs et les traite comme des valeurs brutes Rust ou Motoko.

Dans certains cas, il est utile d'afficher la valeur Candid directement sous une forme lisible par l'homme - par exemple, lors de la connexion en ligne de commande, du débogage ou de l'interaction avec un service. Dans ces cas, vous pouvez utiliser une représentation textuelle pour la valeur Candid.

Candid est un système fortement typé, avec un ensemble de types qui couvrent canoniquement la plupart des utilisations (pour une liste, consultez notre page SDK).

La raison d'être de cet ensemble de types est qu'ils décrivent de manière adéquate la structure des données afin que les informations puissent être codées, transférées et décodées, mais ils ne tentent pas de décrire les contraintes sémantiques au-delà de cette portée.

Que vous écriviez du code en Motoko, Rust, JavaScript ou un autre langage, Candid prend en charge cet ensemble de types pour permettre un mappage naturel des types de données basé sur des choix judicieux et canoniques pour chaque langage hôte.

Les services peuvent être décrits à l'aide du type Candid via un fichier de description de service Candid (fichier .did), qui peut être écrit manuellement ou généré à partir de l'implémentation du service.

Par exemple, si vous écrivez un conteneur dans Motoko, le compilateur génère automatiquement une description Candid lors de la compilation du programme.

Dans d'autres langages, comme Rust, vous devrez rédiger manuellement la description de l'interface Candid. À l'aide de types, nous avons développé des outils pour générer automatiquement des interfaces utilisateur et effectuer des tests aléatoires basés sur des fichiers de description de services.

Candid est également utile pour les mises à niveau de services, où les services évoluent au fil du temps et acquièrent de nouvelles méthodes, tandis que les méthodes existantes renvoient plus de données ou attendent des paramètres supplémentaires. En règle générale, les auteurs de services souhaitent procéder ainsi sans perturber les clients existants.

Candid aide les services à évoluer en toute sécurité en définissant des règles de sous-typage précises (formalisées en Coq !) qui indiquent quand un nouveau type de service pourra encore communiquer avec toutes les autres parties en utilisant la description d'interface précédente.

Vous souhaitez en savoir plus ? Voici quelques documents liés à Candid pour vous aider à démarrer…

Tutoriels et ressources de Candid

  • Vidéo explicative de Candid : vous pouvez regarder l'article commençant par un didacticiel vidéo sur la façon d'utiliser Candid.

  • Documentation et tutoriels de Candid : vous pouvez accéder à la documentation sur Candid sur notre site Web SDK : https://sdk.dfinity.org/docs/candid-guide/candid-intro.html

  • Candid Crate : Candid Crate est une bibliothèque de sérialisation/désérialisation qui peut être utilisée pour créer des services ou des clients Candid dans Rust : https://crates.io/crates/candid

  • Bibliothèque de proxy informatique Internet pour JavaScript : ce proxy inclut la prise en charge de Candid.

  • Bibliothèques Candid prises en charge par la communauté : des bibliothèques existent actuellement pour Haskell, Elm, AssemblyScript et Kotlin.

  • Interface utilisateur franche : ce conteneur génère une interface utilisateur frontale pour tout conteneur exécuté sur un ordinateur Internet, permettant aux développeurs d'interagir avec le conteneur sur le Web (au lieu du terminal) et fournissant des capacités de débogage.

Contenu IC qui vous intéresse

Progrès technologique | Informations sur le projet |

Collectez et suivez IC Binance Channel

Répondez aux questions à tout moment