
Aleo zebrało solidny zespół kompilatorów, aby stworzyć bardzo ambitny język kompilatora schematów. Głównym celem tej pracy jest umożliwienie programistom jak najłatwiejszego wykorzystania dowodów z wiedzą zerową w swoich aplikacjach — jest to osiągane poprzez zminimalizowanie wymagań dotyczących wiedzy kryptograficznej. Więc jak dokładnie Leo to osiąga i co musisz wiedzieć, aby zacząć go używać? Dowiedzmy Się.
Kluczowe pomysły
Przede wszystkim przypomnijmy sobie pokrótce, czym jest dowód z wiedzą zerową. To jest trochę danych, które dowodzą, że wykonaliśmy obliczenia poprawnie; na przykład, że użyliśmy klucza prywatnego do wysłania do kogoś NFT lub że mamy jakiś atrybut, który pozwala nam aktualizować stan aplikacji. Pozwala nam również zachować prywatność niektórych danych, jeśli tak zdecydujemy; na przykład nie musimy ujawniać klucza prywatnego, którego użyliśmy do wysłania NFT. Dane dowodowe są również znacznie mniejsze niż wszystkie obliczenia, więc będą wymagały znacznie mniej miejsca do przechowywania (w łańcuchu) i będą szybsze do przesłania.
To bardzo abstrakcyjny pomysł, więc być może będzie bardziej trafny, jeśli odniesiemy go do problemów skalowalności, które obserwujemy w tej chwili w branży. Przyjrzyj się wyzwaniom, z jakimi borykają się różne sieci, jeśli chodzi o uzyskiwanie wystarczającej liczby transakcji na sekundę, oraz wymaganiom rozwiązań skalujących, aby poszerzyć wrażenia z gier online. Narzędzia, takie jak podział stanu, okazały się przydatne, ale musimy dodać więcej, aby wesprzeć rozwój tych przypadków użycia (i przyszłych przypadków użycia, o których jeszcze nawet nie wiemy).Ponadto ZKP pozwala nam również ukryć dane, których nie chcemy ujawniać; oczywiście nie jest to możliwe w przypadku innych rozwiązań skalujących.
Teraz jak robisz ZKP? Cóż, zrobiliśmy to dla nas za pomocą systemu dowodowego i czegoś, co nazywa się schematem ZK — to właściwie schemat, który musimy zbudować, i to właśnie zrobi dla ciebie Leo! Biblioteki przekształcające obwody ZK w dowody już istnieją, do tej pory ludzie korzystali z tych bibliotek bezpośrednio.
Pomyśl o urządzeniu, którego teraz używasz, ma wewnątrz obwody, które wykonują wszystkie te obliczenia, prawda? Czy te obwody nie są po prostu bramkami NAND, przez które przechodzą zera i jedynki? Obwody ZK są bardzo podobne, z tą różnicą, że zamiast elementów NAND są zbudowane z elementów dodawania i mnożenia, a zamiast zer i jedynek mamy liczby od zera do p , gdzie p jest fenomenalnie dużą liczbą pierwszą. Czy zaczynasz zdawać sobie sprawę, że w obwodach ZK możemy wykonać tyle samo obliczeń, co w rzeczywistych obwodach?
Teraz dochodzimy do sedna problemu, powodem, dla którego Aleo tak dużo inwestuje w budowę kompilatora układów Leo jest to, że zamiana pomysłów aplikacji wysokiego poziomu na układy ZK jest fenomenalnie powolna, ponieważ trzeba ręcznie składać wszystkie elementy dodawania i mnożenia do reprezentowania, jakie obliczenia powinny reprezentować twoją aplikację. Chodzi mi o to, ile czasu zajęłoby Ci napisanie normalnych aplikacji, gdybyś musiał podłączyć bramki NAND do budowania obliczeń… Nie brzmi to zbyt zabawnie, prawda?
Cóż, to jest obecny stan tworzenia schematu ZK. Zasadniczo musisz pracować na poziomie schematu, ponieważ nie ma jeszcze wystarczającej infrastruktury do automatyzacji powtarzalnych części niskiego poziomu. A w rzeczywistości jest jeszcze gorzej. Nie dość, że nie mamy jeszcze tych narzędzi do automatyzacji, to jeszcze potrzeba dużej wiedzy kryptograficznej, aby nawet zacząć budować obwody ZK. Aby pokonać tę barierę wejścia, w większości przypadków ludzie potrzebują kilku miesięcy bezpośredniego szkolenia. Nie brzmi dobrze dla rozwoju produktu.
Leo
Leo to oparty na Ruście, statycznie typowany język programowania przeznaczony do pisania prywatnych aplikacji. Jest przeznaczony dla programistów, którzy potrafią intuicyjnie zbudować blockchain Aleo, stanowiąc podstawę prywatnego zdecentralizowanego ekosystemu. Jest to pierwszy znany język programowania, który wprowadza platformę testową, rejestr pakietów, narzędzie do rozpoznawania importu, zdalny kompilator i generator twierdzeń dla aplikacji o wiedzy zerowej ogólnego przeznaczenia.
Leo został zaprojektowany tak, aby wyeliminować jak najwięcej wymagań dotyczących wiedzy kryptograficznej. Co więcej, ma przypominać Javascript i Typescript, dzięki czemu armia programistów JS/TS (około 12 milionów z nich, liczba programistów kryptograficznych jest znikoma) będzie miała bardzo prostą krzywą uczenia się.

Przejdźmy do przodu i powiedzmy, że napisałeś program Leo, taki jak sortowanie bąbelkowe na powyższym obrazku — co właściwie robi Leo, kiedy uruchamiasz program?
Pobiera Twój kod, tworzy schemat walidacji, który reprezentuje obliczenia, które chcesz uruchomić, wypełnia przewody wejściowe żądanymi wartościami, uruchamia schemat, generuje klucze walidacji/walidacji, a następnie łączy wszystkie istotne dane w ZKP. Na przykład możesz uruchomić go na wejściu na poniższym obrazku.

Ale powiedzieliśmy, że nie potrzebujesz specjalnej wiedzy z kryptografii, aby używać Leo, więc o co chodzi z tworzeniem dowodów? Podsumowując, Leo wyprowadza dowód, że wykonałeś obliczenia poprawnie, co oznacza, że jeśli uruchomisz powyższy schemat na jakiejś tablicy i przedstawisz tablicę wyjściową wraz z dowodem, każdy obserwator może potwierdzić, że tablica została rzeczywiście posortowana, sprawdzając dowody, nie tablica.
To może wydawać się niewiele, jeśli tablica ma tylko 10 elementów, ale kiedy zaczynamy pracować ze strukturami danych, które mają miliony elementów i bardziej złożone obliczenia, kontrola dowodu (który zawsze ma ten sam rozmiar!) zaczyna przekazywać znacznie więcej wartość. Ale to nie jest artykuł o tym, jak korzystać z ZKP, ten artykuł ma pomóc programistom w nauce Leo, aby mogli sami tworzyć wartościowe aplikacje.
Leo robi również więcej niż tylko tworzy dla Ciebie diagram i generuje z niego dowód. Jest wypełniona funkcjonalnością, która pomaga maksymalnie skrócić czas tworzenia. Struktura testowa, rejestr pakietów i procedura importowania współpracują ze sobą, aby zaoszczędzić programistom dużo czasu, zapewniając, że funkcje zewnętrzne można łatwo importować, a kod faktycznie robi to, czego się od niego oczekuje.
Kiedy budujesz ekosystem, którego głównym celem jest tworzenie skalowalnych aplikacji prywatnych, jednym z najlepszych sposobów napędzania rozwoju jest usunięcie jak największej liczby barier w rozwoju aplikacji. To właśnie pomaga osiągnąć Leo. Jeśli chcesz dowiedzieć się więcej, zajrzyj na plac zabaw lub dokumentację dewelopera.
Przydatne linki: Strona internetowa — https://www.aleo.org/ Aleo Twitter — https://twitter.com/AleoHQ Discord — https://discord.gg/aleohq YouTube — https://www.youtube.com/c/AleoHQ GitHub — https://github.com/AleoHQ Kalendarz społeczności — https://www.aleo.org/community/calendar Blog z ogłoszeniami — https://www.aleo.org/blog Blog społeczności — https://medium.com/@AleoHQ Eksplorator bloków Aleo — https://www.aleo.network/ Dokumentacja programisty — https://developer.aleo.org/ Translated — mmyevyn#7148
