Fundația DFINITY se angajează să restabilească rădăcinile libere și deschise ale Internetului prin lansarea Internet Computer, prima rețea blockchain cu viteză web din lume, cu putere de calcul nelimitată, concepută pentru a îmbunătăți experiența dezvoltatorului și pentru a oferi mai multe opțiuni. se concentreze.

Calculatoarele de pe internet găzduiesc containere de software, o evoluție scalabilă a contractelor inteligente tradiționale care îmbină codul de octeți WebAssembly cu paginile de memorie în care rulează codul.

Acest lucru le permite dezvoltatorilor să construiască aplicații revoluționare interoperabile, sisteme și servicii de internet sigure și de încredere, să profite de capabilitățile blockchain, cum ar fi tokenizarea și să implementeze software direct pe internet, mai degrabă decât pe infrastructura proprietară.

Pentru a sprijini creșterea domeniului de aplicare a software-ului redefinit pe o platformă deschisă, în care diferite programe pot fi integrate direct între ele, iar serviciile pot fi ușor compuse și extinse, echipa noastră de limbi străine a dezvoltat limbajul Candid Interface Description Language (IDL).

Interfața le permite celor care colaborează pe ecosistemele computerizate de pe Internet să își conecteze codul complet, chiar și atunci când este scris în diferite limbi, iar astăzi suntem încântați să îl descriem mai detaliat.

Ce este Candid?

Candid este un IDL conceput special pentru computerele de pe Internet care oferă un limbaj comun pentru interfețele aplicațiilor pentru a facilita comunicarea între serviciile scrise în diferite limbaje de programare.

Unul dintre principalele avantaje ale Candid este că este independent de limbaj, permițând interoperabilitatea între servicii și front-end-uri scrise în diferite limbaje de programare, cum ar fi Motoko, Rust și JavaScript, printre altele. Permite dezvoltatorilor să construiască în siguranță și fără probleme servicii care depind unul de celălalt, fără a fi nevoiți să-și facă griji cu privire la actualizările de interfață la serviciile externe.

Cu Candid, încercăm să...

  • Furnizați interfața și descrierea datelor: dezvoltatorii care folosesc Candid sunt capabili să descrie interfața publică a serviciului, de obicei sub forma unui program implementat ca container. În calitate de dezvoltator, vă referiți la serviciile externe care rulează pe computere prin Internet ca apeluri de funcții asincrone.

  • În principiu, susține evoluția interfețelor: Candid acceptă evoluția interfețelor de serviciu prin specificarea precisă a modificărilor care pot fi făcute fără a întrerupe clienții existenți. Aceasta înseamnă, de exemplu, că puteți adăuga în siguranță noi parametri opționali la un serviciu fără pierderi de compatibilitate cu clienții existenți.

  • Suportă funcții de computer pe Internet: Candid este potrivit în special pentru dezvoltarea aplicațiilor computerizate pe Internet.

Candid este inspirat într-o oarecare măsură din limbaje precum IDL și limbaje de definire a datelor (DDL) precum Protobuf, Thrift și JSON, dar Candid oferă o combinație unică de caracteristici care nu se găsesc în aceste alte tehnologii:

  • Candid este un limbaj complet de descriere a interfeței, nu doar un limbaj de descriere a datelor.

  • Implementările sincere pot mapa valorile Candid direct la tipurile și valorile limbii gazdă.

  • Candid este în esență un limbaj de nivel înalt care permite parametrilor mesajului să conțină referințe la alte servicii și metode.

  • Candid are suport încorporat pentru caracteristici specifice computerului de pe internet, cum ar fi adnotări de interogare.

  • Candid definește reguli cu privire la modul de actualizare a serviciilor și a interfețelor acestora într-un mod sensibil și cuprinzător, inclusiv utilizarea la nivel înalt.

Cum se folosește Candid?

Scopul principal al Candid este de a conecta programe scrise într-o limbă gazdă (cum ar fi Motoko, Rust sau JavaScript) cu computere de pe Internet. În cele mai multe cazuri, nu trebuie să tratați datele programului ca valori Candid.

În schimb, puteți utiliza un limbaj gazdă, cum ar fi JavaScript, cu valori JavaScript familiare, apoi vă bazați pe Candid pentru a transfera în mod transparent acele valori într-un container scris în Rust sau Motoko. Containerul primește aceste valori și le tratează ca valori brute Rust sau Motoko.

În unele cazuri, este util să vizualizați valoarea Candid direct într-o formă care poate fi citită de om - de exemplu, atunci când vă conectați pe linia de comandă, depanați sau interacționați cu un serviciu. În aceste cazuri, puteți utiliza o reprezentare text pentru valoarea Candid.

Candid este un sistem puternic tipizat, cu un set de tipuri care acoperă canonic majoritatea utilizărilor (pentru o listă, consultați pagina noastră SDK).

Motivul din spatele acestui set de tipuri este că ele descriu în mod adecvat structura datelor, astfel încât informațiile să poată fi codificate, transferate și decodificate, dar nu încearcă să descrie constrângerile semantice dincolo de acest domeniu.

Indiferent dacă scrieți cod în Motoko, Rust, JavaScript sau în altă limbă, Candid acceptă acest set de tipuri pentru a permite maparea naturală a tipurilor de date pe baza unor alegeri sensibile și canonice pentru fiecare limbă gazdă.

Serviciile pot fi descrise folosind tipul Candid printr-un fișier de descriere a serviciului Candid (fișier .did), care poate fi scris manual sau generat din implementarea serviciului.

De exemplu, dacă scrieți un container în Motoko, compilatorul generează automat o descriere Candid atunci când compilează programul.

În alte limbi, cum ar fi Rust, va trebui să scrieți manual descrierea interfeței Candid. Cu ajutorul tipurilor, am dezvoltat instrumente pentru a genera automat UI și a efectua teste aleatorii pe baza fișierelor de descriere a serviciilor.

Candid este, de asemenea, util pentru upgrade-uri de servicii, unde serviciile evoluează în timp și dobândesc noi metode, în timp ce metodele existente returnează mai multe date sau se așteaptă la parametri suplimentari. De obicei, autorii de servicii doresc să facă acest lucru fără a perturba clienții existenți.

Candid ajută serviciile să evolueze în siguranță prin definirea unor reguli precise de subtipare (formalizate în Coq!) care indică când un nou tip de serviciu va putea să comunice în continuare cu toate celelalte părți utilizând descrierea anterioară a interfeței .

Ești interesat să afli mai multe? Iată câteva materiale legate de Candid pentru a vă ajuta să începeți...

Tutorialele și resursele lui Candid

  • Videoclipul explicativ al lui Candid: Puteți viziona articolul începând cu un tutorial video despre cum să utilizați Candid.

  • Documentația și tutorialele lui Candid: Puteți accesa documentația despre Candid pe site-ul nostru SDK: https://sdk.dfinity.org/docs/candid-guide/candid-intro.html

  • Candid Crate: Candid Crate este o bibliotecă de serializare/deserializare care poate fi folosită pentru a crea servicii sau clienți Candid în Rust: https://crates.io/crates/candid

  • Biblioteca Internet Computer Proxy pentru JavaScript: acest proxy include suport pentru Candid.

  • Biblioteci sincere susținute de comunitate: în prezent există biblioteci pentru Haskell, Elm, AssemblyScript și Kotlin.

  • Interfață de utilizare sinceră: acest container generează o interfață de utilizare front-end pentru orice container care rulează pe un computer de internet, permițând dezvoltatorilor să interacționeze cu containerul pe web (în loc de terminal) și oferind capabilități de depanare.

Conținutul IC la care îți pasă

Progresul tehnologiei |. Evenimente globale

Colectați și urmăriți canalul IC Binance

Răspunde la întrebări oricând