A Fundação DFINITY está comprometida em restaurar as raízes livres e abertas da Internet com o lançamento do Internet Computer, a primeira rede blockchain de velocidade web do mundo com poder de computação ilimitado, projetada para aprimorar a experiência do desenvolvedor e fornecer mais opções. foco.

Os computadores da Internet hospedam contêineres de software, uma evolução escalonável dos contratos inteligentes tradicionais que agrupam o código de bytes do WebAssembly com páginas de memória nas quais o código é executado.

Isso permite que os desenvolvedores criem aplicativos interoperáveis ​​revolucionários, sistemas e serviços de Internet seguros e confiáveis, aproveitem os recursos de blockchain, como tokenização, e implantem software diretamente na Internet, em vez de em infraestrutura proprietária.

Para apoiar o crescimento do escopo de software redefinido em uma plataforma aberta, onde diferentes programas podem ser diretamente integrados entre si e os serviços podem ser facilmente compostos e estendidos, nossa equipe de idiomas desenvolveu a Candid Interface Description Language (IDL).

A interface permite que aqueles que colaboram em ecossistemas de computadores na Internet conectem seus códigos de forma totalmente integrada, mesmo quando escritos em linguagens diferentes, e estamos entusiasmados em descrevê-lo com mais detalhes hoje.

O que é sincero?

Candid é um IDL projetado especificamente para computadores Internet que fornece uma linguagem comum para interfaces de aplicativos para facilitar a comunicação entre serviços escritos em diferentes linguagens de programação.

Uma das principais vantagens do Candid é ser independente de linguagem, permitindo a interoperabilidade entre serviços e front-ends escritos em diferentes linguagens de programação como Motoko, Rust e JavaScript, entre outras. Ele permite que os desenvolvedores criem serviços que dependem uns dos outros de maneira segura e contínua, sem precisar se preocupar com atualizações de interface para serviços externos.

Com Candid, tentamos…

  • Fornecer descrição da interface e dos dados: os desenvolvedores que usam o Candid são capazes de descrever a interface pública do serviço, geralmente na forma de um programa implantado como um contêiner. Como desenvolvedor, você se refere aos serviços externos executados em computadores pela Internet como chamadas de função assíncronas.

  • Em princípio, suporta a evolução das interfaces: Candid suporta a evolução das interfaces de serviço especificando com precisão as alterações que podem ser feitas sem quebrar os clientes existentes. Isso significa, por exemplo, que você pode adicionar com segurança novos parâmetros opcionais a um serviço sem perda de compatibilidade. com clientes existentes.

  • Suporta funções de computador para Internet: Candid é particularmente adequado para desenvolver aplicativos de computador para Internet.

Candid é inspirado até certo ponto em linguagens como IDL e linguagens de definição de dados (DDL), como Protobuf, Thrift e JSON, mas Candid oferece uma combinação única de recursos não encontrados nessas outras tecnologias:

  • Candid é uma linguagem de descrição de interface completa, não apenas uma linguagem de descrição de dados.

  • As implementações Candid podem mapear valores Candid diretamente para hospedar tipos e valores de linguagem.

  • Candid é essencialmente uma linguagem de alto nível que permite que parâmetros de mensagens contenham referências a outros serviços e métodos.

  • Candid possui suporte integrado para recursos específicos de computadores com Internet, como anotações de consulta.

  • Candid define regras sobre como atualizar serviços e suas interfaces de forma sensata e abrangente, incluindo uso de alto nível.

Como usar o Sincero?

O principal objetivo do Candid é conectar programas escritos em alguma linguagem host (como Motoko, Rust ou JavaScript) a computadores na Internet. Na maioria dos casos, você não precisa lidar com dados do programa como valores Candid.

Em vez disso, você pode usar uma linguagem host como JavaScript com valores JavaScript familiares e, em seguida, contar com o Candid para transferir esses valores de forma transparente para um contêiner escrito em Rust ou Motoko. O contêiner recebe esses valores e os trata como valores brutos de Rust ou Motoko.

Em alguns casos, é útil visualizar o valor Candid diretamente em formato legível por humanos - por exemplo, ao fazer login na linha de comando, depurar ou interagir com um serviço. Nestes casos, você pode usar uma representação de texto para o valor Sincero.

Candid é um sistema fortemente tipado, com um conjunto de tipos que cobrem canonicamente a maioria dos usos (para obter uma lista, consulte nossa página SDK).

A lógica por trás deste conjunto de tipos é que eles descrevem adequadamente a estrutura dos dados para que a informação possa ser codificada, transferida e decodificada, mas não tentam descrever restrições semânticas além deste escopo.

Esteja você escrevendo código em Motoko, Rust, JavaScript ou outra linguagem, o Candid oferece suporte a esse conjunto de tipos para permitir o mapeamento natural de tipos de dados com base em escolhas canônicas e sensatas para cada linguagem host.

Os serviços podem ser descritos usando o tipo Candid através de um arquivo de descrição de serviço Candid (arquivo .did), que pode ser escrito manualmente ou gerado a partir da implementação do serviço.

Por exemplo, se você escrever um contêiner no Motoko, o compilador gerará automaticamente uma descrição Candid ao compilar o programa.

Em outras linguagens, como Rust, você terá que escrever manualmente a descrição da interface Candid. Com a ajuda de tipos, desenvolvemos ferramentas para gerar UI automaticamente e realizar testes aleatórios com base em arquivos de descrição de serviço.

O Candid também é útil para atualizações de serviços, onde os serviços evoluem ao longo do tempo e adquirem novos métodos, enquanto os métodos existentes retornam mais dados ou esperam parâmetros adicionais. Normalmente, os autores de serviços desejam fazer isso sem perturbar os clientes existentes.

O Candid ajuda os serviços a evoluir com segurança, definindo regras precisas de subtipagem (formalizadas em Coq!) que indicam quando um novo tipo de serviço ainda será capaz de se comunicar com todas as outras partes usando a descrição de interface anterior.

Interessado em aprender mais? Aqui estão alguns materiais relacionados ao Candid para você começar…

Tutoriais e recursos do Candid

  • Vídeo explicativo do Candid: Você pode assistir ao artigo começando com um tutorial em vídeo sobre como usar o Candid.

  • Documentação e tutoriais do Candid: Você pode acessar a documentação sobre o Candid em nosso site SDK: https://sdk.dfinity.org/docs/candid-guide/candid-intro.html

  • Candid Crate: Candid Crate é uma biblioteca de serialização/desserialização que pode ser usada para criar serviços ou clientes Candid em Rust: https://crates.io/crates/candid

  • Biblioteca de proxy de computador da Internet para JavaScript: este proxy inclui suporte para Candid.

  • Bibliotecas Candid apoiadas pela comunidade: Atualmente existem bibliotecas para Haskell, Elm, AssemblyScript e Kotlin.

  • Candid UI: Este contêiner gera uma UI front-end para qualquer contêiner em execução em um computador na Internet, permitindo que os desenvolvedores interajam com o contêiner na web (em vez do terminal) e fornecendo recursos de depuração.

Conteúdo IC que lhe interessa

Progresso Tecnológico | Informações do Projeto |

Colete e siga o canal IC Binance

Responda perguntas a qualquer momento