Οδηγός προγραμματιστή για το zkGalaxy

Οδηγός προγραμματιστή για το zkGalaxy

Εισαγωγή

Οδηγός προγραμματιστών για το zkGalaxy PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.
Οι αντισταθμίσεις της Vitalik για τα zkEVM μεταξύ απόδοσης και συμβατότητας

Αυτό είναι ένα εξαιρετικά χρήσιμο ευρετικό για τη διαφοροποίηση των προσεγγίσεων για την υποστήριξη ενός zkEVM. Ωστόσο, τα zkEVM είναι ένα υποσύνολο όλων των πιθανών τρόπων δημιουργίας εφαρμογών μηδενικής γνώσης. Για έναν προγραμματιστή που θέλει να αξιοποιήσει τις μοναδικές ιδιότητες του υπολογισμού zk, δηλαδή συνοπτικότητα, μηδενική γνώση και ορθότητα, ένα zkEVM μπορεί να μην είναι η καλύτερη επιλογή. Διαθέτοντας ολόκληρο το σύνολο των εργαλείων προγραμματιστών, ελπίζω να παρέχω έναν οδηγό που βοηθά στη διαδικασία λήψης αποφάσεων γύρω από τη σωστή στοίβα zk για την εφαρμογή σας.

Τα τελευταία δύο χρόνια, σημειώθηκε τεράστια πρόοδος στα εργαλεία zk. Πλησιάζουν σε ένα σημείο όπου οι απλοί προγραμματιστές λογισμικού μπορούν να αξιοποιήσουν τις ισχυρές ιδιότητες του zk χωρίς να έχουν βαθιά κατανόηση των εκφοβιστικών υποκείμενων μαθηματικών και μηχανικής. Από την άλλη πλευρά, έχει υπάρξει ένας πολλαπλασιασμός εργαλείων για δυναμικούς χρήστες που δίνει στους ειδικούς zk εξαιρετικά καλό έλεγχο στη στοίβα zk.

Η δύναμη της αφηρημένης πολυπλοκότητας

Το σύγχρονο λογισμικό βασίζεται σε αμέτρητα επίπεδα αφαίρεσης για να μεγιστοποιήσει την παραγωγικότητα των ειδικών. Υπάρχουν πολλά πλεονεκτήματα της αφαίρεσης στη μηχανική που είναι κάπως διαισθητικά – ένας προγραμματιστής ιστού δεν χρειάζεται να κατανοήσει πώς λειτουργούν τα λειτουργικά συστήματα σε βάθος. 

Το κλειδί για τη δημιουργία καλών, επαναχρησιμοποιήσιμων επιπέδων αφαίρεσης είναι να ενθυλακώσετε την πολυπλοκότητα ενός επιπέδου και στη συνέχεια να παρέχετε απλές, αλλά εκφραστικές διεπαφές για επίπεδα υψηλότερα στη στοίβα προς χρήση. Εάν γίνει σωστά, αυτό δίνει τη δυνατότητα σε προγραμματιστές με διαφορετικούς τομείς εξειδίκευσης και γνώσης να δημιουργήσουν χρήσιμα εργαλεία σε όλη τη στοίβα.

Δεν αποτελεί έκπληξη, αυτές οι ίδιες αρχές ισχύουν για τα συστήματα zk και αυτά τα επίπεδα αφαίρεσης γίνονται αρκετά ώριμα ώστε ένας αρχάριος zk να αρχίσει να τα χρησιμοποιεί και να δημιουργεί εφαρμογές σήμερα.

Η στοίβα τεχνολογίας zk
Η στοίβα zk με μερικά παραδείγματα εργαλείων/τεχνολογιών σε κάθε επίπεδο

Ανάπτυξη zk χαμηλού επιπέδου

Arkworks-rs

Arkworks-rs είναι ένα οικοσύστημα βιβλιοθηκών Rust που παρέχει αποτελεσματικές και ασφαλείς υλοποιήσεις των υποσυστατικών μιας εφαρμογής zkSNARK. Το Arkworks παρέχει τις απαραίτητες διεπαφές στους προγραμματιστές για να προσαρμόσουν τη στοίβα λογισμικού για μια εφαρμογή zk χωρίς να χρειάζεται να εφαρμόσουν ξανά κοινά σημεία με άλλες υπάρχουσες βιβλιοθήκες.

Πριν από το Arkworks, ο μόνος τρόπος για να δημιουργήσετε μια νέα εφαρμογή zk ήταν να δημιουργήσετε τα πάντα από την αρχή. Τα βασικά πλεονεκτήματα του Arkworks-rs έναντι των προσαρμοσμένων, κάθετα ενσωματωμένων εργαλείων είναι το επίπεδο ευελιξίας, η μείωση της διπλής μηχανικής και η μείωση της προσπάθειας ελέγχου. Οι λογικές γραμμές διεπαφής της Arkworks μεταξύ των εξαρτημάτων επιτρέπουν έναν ρυθμό αναβάθμισης που μπορεί να διατηρήσει τη στοίβα σχετική εν μέσω του εκρηκτικού ρυθμού καινοτομίας στις τεχνολογίες zk, χωρίς να αναγκάσει τις ομάδες να ξαναφτιάξουν τα πάντα από την αρχή.

Για ποιόν είναι?

Το Arkworks είναι για έργα που χρειάζονται καλό έλεγχο σε ολόκληρη τη στοίβα λογισμικού zk, αλλά δεν θέλουν να δημιουργήσουν όλα τα περιττά κομμάτια από την αρχή. Εάν σκέφτεστε μια προσαρμοσμένη έκδοση ενός κυκλώματος DSL επειδή, για παράδειγμα, δημιουργείτε πρωτότυπο ενός νέου συστήματος απόδειξης αλλά δεν είστε σίγουροι για το σχήμα δέσμευσης ή την αντίστοιχη ελλειπτική καμπύλη, το arkworks θα σας επιτρέψει να εναλλάσσετε γρήγορα διάφορες επιλογές με κοινόχρηστες διεπαφές, μάλλον παρά να ξεκινήσετε από το μηδέν.

ΥΠΕΡ

  • Ευελιξία μέσω σπονδυλωτών
  • Λιγότερο διπλότυπο κώδικα
    • Χαμηλότερο κόστος μηχανικής
    • Μειωμένη επιφάνεια ελέγχου/σφαλμάτων
  • Αναβαθμίστε οποιοδήποτε στοιχείο χωρίς σημαντική ανακατασκευή
  • Εύκολο να πειραματιστείτε με νέα πρωτόγονα σε ένα ταχέως εξελισσόμενο περιβάλλον zk

ΚΑΤΑ

  • Απαιτεί βαθιά κατανόηση της πλήρους στοίβας λογισμικού
    • Ο υπερβολικός έλεγχος μπορεί να οδηγήσει σε όπλα ποδιών, εάν δεν κατανοηθεί σωστά
  • Ο λεπτομερής έλεγχος απαιτεί εξειδίκευση σε όλα τα επίπεδα της στοίβας
    • Το Arkworks παρέχει ορισμένες λογικές προεπιλογές.

zk Ειδικές Γλώσσες Τομέα (DSL)

Προκειμένου να δημιουργηθεί μια απόδειξη σχετικά με κάποιους υπολογισμούς, πρώτα αυτός ο υπολογισμός πρέπει να εκφραστεί με μια μορφή που να μπορεί να κατανοήσει ένα σύστημα zkSNARK. Αρκετές γλώσσες συγκεκριμένου τομέα έχουν δημιουργήσει γλώσσες προγραμματισμού που επιτρέπουν στους προγραμματιστές εφαρμογών να εκφράσουν τον υπολογισμό τους με τέτοιο τρόπο. Αυτά περιλαμβάνουν Aztec Noir, του Starknet ΚάιροCircomΖωΚράτης, και του Aleo Λέων μεταξύ άλλων. Το υποκείμενο σύστημα απόδειξης και οι μαθηματικές λεπτομέρειες γενικά δεν εκτίθενται στον προγραμματιστή της εφαρμογής.

Η εμπειρία προγραμματιστή

Οι προγραμματιστές zkApp πρέπει να γίνουν ικανοί να γράφουν τα προγράμματά τους σε γλώσσες που αφορούν συγκεκριμένους τομείς. Μερικές από αυτές τις γλώσσες μοιάζουν πολύ με γνωστές γλώσσες προγραμματισμού, ενώ άλλες μπορεί να είναι αρκετά δύσκολο να τις μάθεις. Ας αναλύσουμε μερικά από αυτά:

Κάιρο – Το Starkware DSL είναι απαραίτητο για τη δημιουργία εφαρμογών στο Starknet. Μεταγλωττίζεται σε γλώσσα συναρμολόγησης για το Κάιρο που μπορεί να ερμηνευτεί από το zkVM του Κάιρου.

ΖωΚράτης — Το ZoKrates είναι μια εργαλειοθήκη για κοινές ανάγκες του SNARK, συμπεριλαμβανομένης μιας γλώσσας υψηλού επιπέδου για την εγγραφή κυκλωμάτων. Το ZoKrates έχει επίσης κάποια ευελιξία γύρω από τις καμπύλες, το σχήμα απόδειξης και το backend, επιτρέποντας στους προγραμματιστές να εναλλάσσονται με απλό όρισμα CLI.

Circom — Η Circom είναι μια ειδικά σχεδιασμένη γλώσσα για την κατασκευή κυκλωμάτων. Επί του παρόντος, είναι η de-facto γλώσσα για τα κυκλώματα στην παραγωγή. Η γλώσσα δεν είναι ιδιαίτερα εργονομική. Η ίδια η γλώσσα σας κάνει να συνειδητοποιήσετε πολύ καλά το γεγονός ότι γράφετε κυκλώματα.

Λέων — Το Leo αναπτύχθηκε ως η γλώσσα για το blockchain Aleo. Το Leo έχει κάποια σύνταξη τύπου Rust και είναι ειδικά κατασκευασμένο για μεταβάσεις κατάστασης μέσα σε μια αλυσίδα μπλοκ.

Noir – Σύνταξη εμπνευσμένη από τη σκουριά. Αρχιτεκτονήθηκε γύρω από το IR και όχι την ίδια τη γλώσσα, πράγμα που σημαίνει ότι μπορεί να έχει ένα αυθαίρετο frontend. 

Οδηγός προγραμματιστών για το zkGalaxy PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.
Η στοίβα συλλογής Aztec Noir, συγκεκριμένα, έχει αρθρωτή αρχιτεκτονική

Για ποιόν είναι?

Κάθε προγραμματιστής εφαρμογών που θέλει να εκμεταλλευτεί τις μοναδικές ιδιότητες του zk στην εφαρμογή του. Ορισμένες από αυτές τις γλώσσες έχουν δοκιμαστεί σε μάχη με δισεκατομμύρια δολάρια να κινούνται σε αυτές μέσω αλυσίδων όπως το ZCash και το Starknet. Ενώ ορισμένα από τα έργα που θα συζητήσουμε δεν είναι αρκετά έτοιμα για χρήση στην παραγωγή, η σύνταξη των κυκλωμάτων σας σε μία από αυτές τις γλώσσες είναι αυτή τη στιγμή η καλύτερη στρατηγική, εκτός και αν χρειάζεστε τα καλύτερα στοιχεία ελέγχου που παρέχει ένα κιτ εργαλείων όπως το Arkworks.

ΥΠΕΡ

  • Οι χρήστες δεν χρειάζεται να κατανοούν τις υποκείμενες λεπτομέρειες zk
  • Διατίθεται σήμερα με κάποια εμπειρία παραγωγής
  • Επαληθεύσιμο στην αλυσίδα
  • Οικοσύστημα αγνωστικιστές

ΚΑΤΑ

  • Οι χρήστες πρέπει να μάθουν ένα νέο DSL
  • Εργαλεία και υποστήριξη για καθεμία από αυτές τις γλώσσες
  • Λίγος έως καθόλου έλεγχος στην υποκείμενη στοίβα απόδειξης (προς το παρόν)

Ο πρωταρχικός στόχος ενός zkEVM είναι να λάβει μια μετάβαση κατάστασης Ethereum και να αποδείξει την εγκυρότητά της χρησιμοποιώντας μια συνοπτική απόδειξη ορθότητας μηδενικής γνώσης. Όπως αναφέρθηκε στην ανάρτηση του Vitalik, υπάρχουν διάφοροι τρόποι για να το κάνετε αυτό με ανεπαίσθητες διαφορές και αντίστοιχες ανταλλαγές. 

Η κύρια τεχνική διαφορά μεταξύ όλων αυτών είναι ακριβώς όπου στη στοίβα γλώσσας ο υπολογισμός μετατρέπεται σε μια μορφή (αριθμητισμός) που μπορεί να χρησιμοποιηθεί σε ένα σύστημα απόδειξης. Σε ορισμένα zkEVM, αυτό συμβαίνει στις γλώσσες υψηλού επιπέδου (Solidity, Vyper, Yul), ενώ άλλες προσεγγίσεις προσπαθούν να αποδείξουν το EVM μέχρι το επίπεδο του κωδικού λειτουργίας. Οι ανταλλαγές μεταξύ αυτών των προσεγγίσεων καλύφθηκαν σε βάθος στην ανάρτηση του Vitalik, αλλά θα το συνοψίσω σε μια φράση: Όσο χαμηλότερη είναι η μετατροπή/αριθμητισμός στη στοίβα, τόσο μεγαλύτερη είναι η ποινή απόδοσης.

Γιατί είναι ακριβό να αποδειχθούν τα opcodes EVM σε zk;

Η κύρια πρόκληση με τη δημιουργία αποδείξεων για μια εικονική μηχανή είναι ότι το μέγεθος του κυκλώματος αυξάνεται αναλογικά με το μέγεθος ΟΛΩΝ των πιθανών εντολών για κάθε εκτελούμενη εντολή. Αυτό συμβαίνει επειδή το κύκλωμα δεν γνωρίζει ποιες οδηγίες θα εκτελεστούν σε κάθε πρόγραμμα, επομένως πρέπει να τις υποστηρίζει όλες.

Οδηγός προγραμματιστών για το zkGalaxy PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.
Στα καθολικά κυκλώματα, κάθε εκτελούμενη εντολή έχει ένα κόστος ανάλογο με το άθροισμα όλων των υποστηριζόμενων εντολών.

Αυτό στην πράξη σημαίνει ότι πληρώνετε (σε κόστος απόδοσης) για την πιο ακριβή δυνατή εντολή, ακόμη και όταν εκτελείτε μόνο την απλούστερη εντολή. Αυτό οδηγεί σε μια άμεση αντιστάθμιση μεταξύ της γενίκευσης και της απόδοσης – καθώς προσθέτετε περισσότερες οδηγίες για τη γενίκευση, πληρώνετε για αυτό το κάθε οδηγίες αποδεικνύεις!

Αυτό είναι ένα θεμελιώδες πρόβλημα με τα καθολικά κυκλώματα, αλλά με νέες εξελίξεις στις τεχνολογίες όπως το IVC (αυξητικός επαληθεύσιμος υπολογισμός), αυτός ο περιορισμός μπορεί να βελτιωθεί με το σπάσιμο του υπολογισμού σε μικρότερα κομμάτια που το καθένα έχει εξειδικευμένα, μικρότερα υποκυκλώματα.

Οι σημερινές υλοποιήσεις zkEVM χρησιμοποιούν διαφορετικές στρατηγικές για να μετριάσουν τον αντίκτυπο αυτού του ζητήματος… Για παράδειγμα, το zkSync αφαιρεί τις πιο ακριβές λειτουργίες (κυρίως κρυπτογραφικές προμεταγλωττίσεις όπως κατακερματισμοί και ECDSA) από το κύριο κύκλωμα απόδειξης εκτέλεσης σε ξεχωριστά κυκλώματα που συγκεντρώνονται μαζί στο τέλος μέσω snark recursion. Η zkSync ακολούθησε αυτήν την προσέγγιση αφού συνειδητοποίησε ότι το μεγαλύτερο μέρος του κόστους τους προερχόταν από μερικές πολύπλοκες οδηγίες.

Οδηγός προγραμματιστών για το zkGalaxy PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.
Το κόστος συναλλαγής κυριαρχείται από τις λίγες ακριβές πράξεις.

Στην ουσία, ο λόγος που η απόδειξη ενός συνόλου εντολών πιο ισοδύναμου EVM είναι πιο ακριβή είναι ότι το EVM δεν σχεδιάστηκε για υπολογισμούς zk. Η εγκατάλειψη του EVM νωρίτερα στη στοίβα επιτρέπει στα zkEVM να εκτελούνται σε σύνολα εντολών που είναι πιο βελτιστοποιημένα για zk, και επομένως φθηνότερα για απόδειξη.

Για ποιόν είναι?

Οι ιδανικοί πελάτες για ένα zkEVM είναι εφαρμογές έξυπνων συμβολαίων που χρειάζονται τάξεις μεγέθους φθηνότερες συναλλαγές από αυτές που είναι διαθέσιμες στο L1 Ethereum. Αυτοί οι προγραμματιστές δεν έχουν απαραίτητα την τεχνογνωσία ή το εύρος ζώνης για να γράφουν εφαρμογές zk από την αρχή. Ως εκ τούτου, προτιμούν να γράφουν τις εφαρμογές τους σε γλώσσες υψηλότερου επιπέδου που γνωρίζουν, όπως το Solidity. 

Γιατί τόσες πολλές ομάδες το χτίζουν αυτό;

Κλιμάκωση Ethereum είναι αυτή τη στιγμή η πιο απαιτητική εφαρμογή της τεχνολογίας zk.

Το zkEVM είναι μια λύση κλιμάκωσης Ethereum που μετριάζει χωρίς τριβές το πρόβλημα συμφόρησης που περιορίζει τους προγραμματιστές L1 dApp.

Η εμπειρία προγραμματιστή

Ο στόχος ενός zkEVM είναι να υποστηρίξει μια εμπειρία προγραμματιστή που είναι όσο το δυνατόν πιο κοντά στην τρέχουσα ανάπτυξη του Ethereum. Η υποστήριξη Full Solidity σημαίνει ότι οι ομάδες δεν χρειάζεται να δημιουργούν και να διατηρούν πολλαπλές βάσεις κώδικα. Αυτό είναι κάπως ανέφικτο να γίνει τέλεια επειδή τα zkEVM πρέπει να ανταλλάξουν κάποια συμβατότητα για να μπορούν να δημιουργήσουν αποδείξεις λογικού μεγέθους σε εύλογο χρονικό διάστημα.

Γρήγορη μελέτη περίπτωσης: zkSync vs Scroll

Η κύρια διαφορά μεταξύ zkSync και Scroll είναι το πού/πότε στη στοίβα εκτελούν αριθμητικοποίηση – δηλαδή, όπου μετατρέπονται από κανονικές κατασκευές EVM σε μια φιλική προς το SNARK αναπαράσταση. Για το zkSync, αυτό συμβαίνει όταν μετατρέπουν τον bytecode YUL στο δικό τους προσαρμοσμένο σύνολο εντολών zk. Για το Scroll, αυτό συμβαίνει στο τέλος, όταν δημιουργείται το πραγματικό ίχνος εκτέλεσης με πραγματικούς κωδικούς EVM.

Έτσι, για το zkSync, όλα είναι ίδια με την αλληλεπίδραση με το EVM μέχρι να δημιουργηθεί ο bytecode zk. Για την κύλιση, όλα είναι ίδια μέχρι να εκτελεστεί ο πραγματικός bytecode. Αυτή είναι μια λεπτή διαφορά, η οποία ανταλλάσσει την απόδοση με υποστήριξη. Για παράδειγμα, το zkSync δεν θα υποστηρίζει εργαλεία bytecode EVM όπως ένα πρόγραμμα εντοπισμού σφαλμάτων εκτός κουτιού, επειδή είναι ένας εντελώς διαφορετικός bytecode. Ενώ το Scroll θα έχει μεγαλύτερη δυσκολία να αποκτήσει καλή απόδοση από ένα σύνολο εντολών, το οποίο δεν σχεδιάστηκε για zk. Υπάρχουν πλεονεκτήματα και μειονεκτήματα και στις δύο στρατηγικές και, τελικά, υπάρχουν πολλοί εξωγενείς παράγοντες που θα επηρεάσουν τη σχετική επιτυχία τους.

zkLLVM Circuit Compiler

💡 Παρά την ονομασία του, το LLVM δεν είναι VM (εικονική μηχανή). Το LLVM είναι το όνομα ενός συνόλου εργαλείων μεταγλώττισης που είναι αγκυρωμένα από μια ενδιάμεση αναπαράσταση (IR) που είναι αγνωστική γλώσσα.

=μηδέν; Ίδρυμα (σχετικά με το όνομα, είναι α Ανέκδοτο με ένεση SQL αν αναρωτιέστε) δημιουργεί έναν μεταγλωττιστή που μπορεί να μετατρέψει οποιαδήποτε γλώσσα frontend LLVM σε μια ενδιάμεση αναπαράσταση που μπορεί να αποδειχθεί σε ένα SNARK. Το zkLLVM έχει σχεδιαστεί ως επέκταση στην υπάρχουσα υποδομή LLVM, μια βιομηχανική αλυσίδα εργαλείων που υποστηρίζει πολλές γλώσσες υψηλού επιπέδου όπως Rust, C, C++ κ.λπ.

Πώς λειτουργεί

Οδηγός προγραμματιστών για το zkGalaxy PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.
Πρόχειρο σκίτσο της αρχιτεκτονικής zkLLVM

Ένας χρήστης που θέλει να αποδείξει κάποιους υπολογισμούς θα εφαρμόσει απλώς αυτόν τον υπολογισμό στη C++. Το zkLLVM παίρνει αυτόν τον πηγαίο κώδικα υψηλού επιπέδου που υποστηρίζεται από τον τροποποιημένο μεταγλωττιστή του clang (επί του παρόντος C++) και δημιουργεί κάποια ενδιάμεση αναπαράσταση του κυκλώματος. Σε αυτό το σημείο, το κύκλωμα είναι έτοιμο να αποδειχθεί, αλλά ο χρήστης μπορεί να θέλει να αποδείξει το κύκλωμα με βάση ορισμένες δυναμικές εισόδους. Για τον χειρισμό δυναμικών εισόδων, το zkLLVM διαθέτει ένα πρόσθετο στοιχείο που αναφέρεται ως εκχωρητής, το οποίο δημιουργεί έναν πίνακα εκχώρησης με όλες τις εισόδους και τους μάρτυρες πλήρως προεπεξεργασμένες και έτοιμους να αποδειχθούν παράλληλα με το κύκλωμα.

Αυτά τα 2 στοιχεία είναι όλα όσα χρειάζονται για να δημιουργήσετε μια απόδειξη. Ένας χρήστης μπορεί θεωρητικά να δημιουργήσει μόνος του μια απόδειξη, αλλά δεδομένου ότι πρόκειται για μια κάπως εξειδικευμένη υπολογιστική εργασία, μπορεί να θέλει να πληρώσει κάποιον άλλο, που έχει το υλικό, για να το κάνει για αυτόν. Για αυτόν τον μηχανισμό ανακάλυψης αντισυμβαλλομένου, =μηδέν; Το Foundation έχει επίσης δημιουργήσει μια «αγορά απόδειξης» όπου οι πάροχοι διαγωνίζονται για να αποδείξουν τον υπολογισμό για τους χρήστες που θα τους πληρώσουν για να το κάνουν. Αυτή η δυναμική της ελεύθερης αγοράς θα οδηγήσει σε δοκιμαστές που βελτιστοποιούν τις πιο πολύτιμες εργασίες απόδειξης.

ανταλλαγές

Δεδομένου ότι κάθε υπολογιστική εργασία που πρέπει να αποδειχθεί είναι μοναδική και δημιουργεί ένα διαφορετικό κύκλωμα, υπάρχει ένας άπειρος αριθμός κυκλωμάτων που θα πρέπει να είναι σε θέση να χειριστούν οι διαχειριστές. Αυτή η αναγκαστική γενίκευση καθιστά δύσκολη τη βελτιστοποίηση μεμονωμένων κυκλωμάτων. Η εισαγωγή μιας αγοράς απόδειξης επιτρέπει την εξειδίκευση στα κυκλώματα που η αγορά θεωρεί πολύτιμα. Χωρίς αυτήν την αγορά, θα ήταν δύσκολο να πειστεί ένας δοκιμαστής να βελτιστοποιήσει αυτό το κύκλωμα λόγω αυτού του φυσικού προβλήματος ψυχρής εκκίνησης.

Ο άλλος συμβιβασμός είναι η κλασική αφαίρεση εναντίον ελέγχου. Οι χρήστες που είναι πρόθυμοι να χρησιμοποιήσουν αυτήν την εύχρηστη διεπαφή παραιτούνται από τον έλεγχο των υποκείμενων πρωτόγονων κρυπτογραφικών. Για πολλούς χρήστες, αυτός είναι ένας πολύ έγκυρος συμβιβασμός, καθώς είναι συχνά καλύτερο να αφήνετε τους ειδικούς της κρυπτογραφίας να λαμβάνουν αυτές τις αποφάσεις για εσάς.

ΥΠΕΡ

  • Οι χρήστες μπορούν να γράφουν κώδικα σε γνωστές γλώσσες υψηλού επιπέδου
  • Όλα τα εσωτερικά zk αφαιρούνται από τους χρήστες
  • Δεν βασίζεται σε ένα συγκεκριμένο κύκλωμα «VM» που προσθέτει επιπλέον έξοδα

ΚΑΤΑ

  • Κάθε πρόγραμμα έχει διαφορετικό κύκλωμα. Δύσκολη η βελτιστοποίηση. (η αγορά απόδειξης το λύνει εν μέρει)
  • Μη τετριμμένο για εναλλαγή/αναβάθμιση εσωτερικών βιβλιοθηκών zk (απαιτείται διακλάδωση)

Ένα zkVM περιγράφει το υπερσύνολο όλων των εικονικών μηχανών zk, ενώ ένα zkEVM είναι ένας συγκεκριμένος τύπος zkVM, που αξίζει να συζητηθεί ως ξεχωριστό θέμα λόγω της επικράτησης του σήμερα. Υπάρχουν μερικά άλλα έργα που εργάζονται για τη δημιουργία πιο γενικευμένων zkVM που βασίζονται σε ISA εκτός από τα ειδικά προσαρμοσμένα κρυπτογραφικά VM.

Αντί να αποδείξει το EVM, το σύστημα θα μπορούσε να αποδείξει μια διαφορετική αρχιτεκτονική συνόλου εντολών (ISA), όπως το RISC-V ή το WASM σε ένα νέο VM. Δύο έργα που εργάζονται σε αυτά τα γενικευμένα zkVM είναι το RISC Zero και το zkWASM. Ας βουτήξουμε λίγο στο RISC Zero εδώ για να δείξουμε πώς λειτουργεί αυτή η στρατηγική και μερικά από τα πλεονεκτήματα/μειονεκτήματά της. 

Οδηγός προγραμματιστών για το zkGalaxy PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.
Αρχιτεκτονική υψηλού επιπέδου παραγωγής Risc Zero proof

Το RISC Zero είναι σε θέση να αποδείξει κάθε υπολογισμό που εκτελείται σε μια αρχιτεκτονική RISC-V. Το RISC-V είναι ένα πρότυπο αρχιτεκτονικής συνόλων εντολών ανοιχτού κώδικα (ISA) που κερδίζει όλο και μεγαλύτερη δημοτικότητα. Η φιλοσοφία RISC (υπολογιστής μειωμένου συνόλου εντολών) είναι η κατασκευή ενός εξαιρετικά απλού συνόλου εντολών με ελάχιστη πολυπλοκότητα. Αυτό σημαίνει ότι οι προγραμματιστές στα υψηλότερα επίπεδα της στοίβας καταλήγουν να αναλαμβάνουν μεγαλύτερο φόρτο στην υλοποίηση εντολών χρησιμοποιώντας αυτήν την αρχιτεκτονική ενώ κάνουν την υλοποίηση υλικού πιο απλή.

Αυτή η φιλοσοφία ισχύει και για τη γενική υπολογιστική, τα τσιπ ARM ​​αξιοποιούν σετ οδηγιών τύπου RISC και έχουν αρχίσει να κυριαρχούν στην αγορά των τσιπ για κινητά. Αποδεικνύεται ότι τα πιο απλά σετ οδηγιών έχουν επίσης μεγαλύτερη ενεργειακή απόδοση και απόδοση περιοχής μήτρας.

Αυτή η αναλογία ισχύει αρκετά καλά για την αποτελεσματικότητα της δημιουργίας αποδείξεων zk. Όπως αναφέρθηκε προηγουμένως, όταν αποδεικνύεται ένα ίχνος εκτέλεσης σε zk, πληρώνετε για το άθροισμα του κόστους όλων των εντολών για κάθε στοιχείο στο ίχνος, επομένως είναι καλύτερες οι απλούστερες και λιγότερες συνολικές εντολές.

Πώς λειτουργεί

Από την οπτική γωνία ενός προγραμματιστή, η χρήση του RISC Zero για το χειρισμό των αποδείξεων zk μοιάζει πολύ με τη χρήση συναρτήσεων AWS Lambda για τη διαχείριση της αρχιτεκτονικής διακομιστή υποστήριξης. Οι προγραμματιστές αλληλεπιδρούν με το RISC Zero ή το AWS Lambda γράφοντας απλώς κώδικα και η υπηρεσία χειρίζεται όλη την πολυπλοκότητα του backend.

Για το RISC Zero, οι προγραμματιστές γράφουν Rust ή C++ (τελικά οτιδήποτε στοχεύει το RISC-V). Στη συνέχεια, το σύστημα παίρνει το αρχείο ELF που δημιουργήθηκε κατά τη μεταγλώττιση και το χρησιμοποιεί ως κωδικό εισόδου για το κύκλωμα VM. Οι προγραμματιστές απλώς καλούν την prove που επιστρέφει μια απόδειξη (η οποία περιέχει την απόδειξη zk του ίχνους εκτέλεσης) το αντικείμενο που οποιοσδήποτε μπορεί να αποκαλέσει «επαλήθευση» από οπουδήποτε. Από την πλευρά του προγραμματιστή, δεν χρειάζεται να κατανοήσουμε πώς λειτουργεί το zk, το υποκείμενο σύστημα χειρίζεται όλη αυτή την πολυπλοκότητα.

Οδηγός προγραμματιστών για το zkGalaxy PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.
Πρακτική στο Risc Zero;

ΥΠΕΡ

  • Εύχρηστος. Ανοίγει την πόρτα σε οποιονδήποτε προγραμματιστή για τη δημιουργία εφαρμογών zk
  • Μονοκύκλωμα στο οποίο μπορούν να ειδικευτούν οι τεχνικοί
    • Επίσης λιγότερη επιφάνεια για επίθεση και μικρότερη για έλεγχο
  • Συμβατό με οποιοδήποτε blockchain, απλά δημοσιεύετε τις αποδείξεις

ΚΑΤΑ

  • Αναλαμβάνει πολλά έξοδα (σε μέγεθος απόδειξης και ταχύτητα παραγωγής) για την υποστήριξη μιας τέτοιας γενικής διεπαφής
  • Απαιτεί σημαντική βελτίωση στις τεχνικές δημιουργίας αποδεικτικών στοιχείων προκειμένου να επιτευχθεί ευρεία υποστήριξη για τις υπάρχουσες βιβλιοθήκες

Προκατασκευασμένα επαναχρησιμοποιήσιμα κυκλώματα

Για ορισμένα βασικά και επαναχρησιμοποιήσιμα κυκλώματα που είναι ιδιαίτερα χρήσιμα σε εφαρμογές blockchain ή αλλού, οι ομάδες μπορεί να έχουν ήδη δημιουργήσει και βελτιστοποιήσει αυτά τα κυκλώματα για εσάς. Μπορείτε απλώς να παρέχετε τα στοιχεία για τη συγκεκριμένη περίπτωση χρήσης σας. Μια απόδειξη συμπερίληψης Merkle, για παράδειγμα, είναι κάτι που χρειάζεται συνήθως σε εφαρμογές κρυπτογράφησης (λίστες airdrop, Tornado Cash, κ.λπ.). Ως προγραμματιστής εφαρμογών, μπορείτε πάντα να επαναχρησιμοποιήσετε αυτά τα συμβόλαια που έχουν δοκιμαστεί στη μάχη και απλώς να τροποποιήσετε τα επίπεδα από πάνω για να δημιουργήσετε μια μοναδική εφαρμογή.

Για παράδειγμα, τα κυκλώματα του Tornado Cash μπορούν να επαναχρησιμοποιηθούν για α ιδιωτική εφαρμογή airdrop ή ένα ιδιωτική αίτηση ψηφοφορίας. Η Manta και η Semaphore κατασκευάζουν μια ολόκληρη εργαλειοθήκη από κοινά gadgets κυκλώματος όπως αυτό που μπορούν να χρησιμοποιηθούν σε συμβόλαια Solidity με ελάχιστη ή καθόλου κατανόηση των υποκείμενων μαθηματικών zk moon.

The Guide — Επιλογή της στοίβας σας

Όπως συζητήθηκε εκτενώς, υπάρχουν πολλές διαφορετικές επιλογές για την ανάπτυξη μιας εφαρμογής zk, όλες με το δικό τους μοναδικό σύνολο αντισταθμίσεων. Αυτό το γράφημα θα σας βοηθήσει να συνοψίσετε αυτόν τον πίνακα αποφάσεων, ώστε με βάση το επίπεδο εξειδίκευσής σας στο zk και τις ανάγκες απόδοσης, να μπορείτε να επιλέξετε το καλύτερο εργαλείο για τη δουλειά. Αυτή δεν είναι μια ολοκληρωμένη λίστα, σκοπεύω να την προσθέσω στο μέλλον καθώς αντιλαμβάνομαι περισσότερα εργαλεία που έρχονται στο χώρο.

Οδηγός προγραμματιστών για το zkGalaxy PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.
Ο οδηγός προγραμματιστή εφαρμογών για το zkGalaxy

zk App Dev Cheatsheet

1. Βιβλιοθήκες χαμηλού επιπέδου Snark

Πότε πρέπει να χρησιμοποιήσετε: 

  • Χρειάζεστε καλό έλεγχο σε ολόκληρη τη στοίβα prover
  • Θέλετε να αποφύγετε την ανακατασκευή κοινών εξαρτημάτων
  • Θέλετε να πειραματιστείτε με διαφορετικούς συνδυασμούς αποδεικτικών σχημάτων, καμπυλών και άλλων χαμηλού επιπέδου πρωτόγονα

Πότε δεν πρέπει να χρησιμοποιείται:

  • Είστε αρχάριος που αναζητά διεπαφές απόδειξης υψηλού επιπέδου

Επιλογές: 


3. zk Compilers

Πότε πρέπει να χρησιμοποιήσετε: 

  • Απρόθυμος να αναλάβει τα γενικά έξοδα ενός καθολικού κυκλώματος
  • Θέλετε να γράφετε κυκλώματα σε γνωστές γλώσσες 
  • Χρειάζεστε εξαιρετικά προσαρμοσμένο κύκλωμα

Πότε δεν πρέπει να χρησιμοποιείται: 

  • Θέλετε να ελέγξετε τα υποκείμενα κρυπτογραφικά πρωτόγονα
  • Χρειάζεστε ένα κύκλωμα που έχει ήδη βελτιστοποιηθεί σε μεγάλο βαθμό

Επιλογές:


5. zkVM

Πότε πρέπει να χρησιμοποιήσετε: 

  • Θέλετε να γράψετε κώδικα σε γλώσσα υψηλού επιπέδου 
  • Πρέπει να αποδειχθεί η ορθότητα αυτής της εκτέλεσης 
  • Πρέπει να αποκρύψετε ορισμένες από τις εισόδους σε αυτήν την εκτέλεση από έναν επαληθευτή
  • Έχετε ελάχιστη έως καθόλου εξειδίκευση στο zk

Πότε δεν πρέπει να χρησιμοποιείται:

  • Σε περιβάλλοντα εξαιρετικά χαμηλής καθυστέρησης (είναι ακόμα αργή)
  • Έχετε ένα τεράστιο πρόγραμμα (προς το παρόν)

Επιλογές:

2. zk DSL

Πότε πρέπει να χρησιμοποιήσετε: 

  • Αισθάνεστε άνετα να μάθετε μια νέα γλώσσα
  • Θέλετε να χρησιμοποιήσετε μερικές γλώσσες δοκιμασμένες στη μάχη
  • Χρειάζεστε ελάχιστο μέγεθος κυκλώματος, πρόθυμοι να παραιτηθούν από αφαιρέσεις

Πότε δεν πρέπει να χρησιμοποιείται: 

  • Χρειάζεται καλός έλεγχος στο δοκιμαστικό back-end (προς το παρόν, θα μπορούσε να ανταλλάξει backend για ορισμένα DSL)

Επιλογές:


4. zkEVM

Πότε πρέπει να χρησιμοποιήσετε: 

  • Έχετε μια dApp που λειτουργεί ήδη στο EVM
  • Χρειάζεστε φθηνότερες συναλλαγές για τους χρήστες σας 
  • Θέλετε να ελαχιστοποιήσετε την προσπάθεια ανάπτυξης σε μια νέα αλυσίδα
  • Ενδιαφέρεστε μόνο για την ιδιότητα συνοπτικότητας του zk (συμπίεση)

Πότε δεν πρέπει να χρησιμοποιείται: 

  • Χρειάζεστε τέλεια ισοδυναμία EVM
  • Χρειάζεστε την ιδιότητα απορρήτου του zk 
  • Έχετε μια περίπτωση χρήσης που δεν είναι blockchain 

Επιλογές: 


6. Προκατασκευασμένα επαναχρησιμοποιήσιμα κυκλώματα

Πότε πρέπει να χρησιμοποιήσετε: 

  • Έχετε μια εφαρμογή έξυπνης σύμβασης που βασίζεται σε κοινά δομικά στοιχεία zk, όπως η συμπερίληψη Merkle
  • Έχετε ελάχιστη έως καθόλου εξειδίκευση στα υποκείμενα ζητήματα zk

Όταν δεν χρησιμοποιείται:

  • Έχετε πολύ εξειδικευμένες ανάγκες
  • Η περίπτωση χρήσης σας δεν υποστηρίζεται από τα προκατασκευασμένα κυκλώματα 

Επιλογές: 

Συμπέρασμα

Η zk βρίσκεται στην αιχμή πολλών τεχνολογιών και η οικοδόμησή της απαιτεί βαθιά κατανόηση των μαθηματικών, της κρυπτογραφίας, της επιστήμης των υπολογιστών και της μηχανικής υλικού. Ωστόσο, με όλο και περισσότερα επίπεδα αφαίρεσης διαθέσιμα κάθε μέρα, οι προγραμματιστές εφαρμογών μπορούν να αξιοποιήσουν τη δύναμη του zk χωρίς διδακτορικό. Καθώς οι περιορισμοί των χρόνων απόδειξης αίρονται αργά με την πάροδο του χρόνου μέσω βελτιστοποιήσεων σε όλα τα επίπεδα της στοίβας, πιθανότατα θα δούμε ακόμη πιο απλά εργαλεία για τον μέσο προγραμματιστή.

Ελπίζω να σας έπεισα, τον περίεργο προγραμματιστή λογισμικού, ότι μπορείτε να αρχίσετε να χρησιμοποιείτε το zk στις εφαρμογές σας σήμερα. Happy Hacking 🙂

Οδηγός προγραμματιστών για το zkGalaxy PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.
τι περιμένεις anon, πήγαινε να φτιάξεις μερικές εφαρμογές zk

Γνωστοποιήσεις: Η Blockchain Capital είναι επενδυτής σε πολλά από τα πρωτόκολλα που αναφέρθηκαν παραπάνω.

Οι απόψεις που εκφράζονται σε κάθε ανάρτηση ιστολογίου μπορεί να είναι προσωπικές απόψεις κάθε συγγραφέα και δεν αντικατοπτρίζουν απαραίτητα τις απόψεις της Blockchain Capital και των θυγατρικών της. Ούτε η Blockchain Capital ούτε ο συγγραφέας εγγυάται την ακρίβεια, την επάρκεια ή την πληρότητα των πληροφοριών που παρέχονται σε κάθε ανάρτηση ιστολογίου. Καμία εκπροσώπηση ή εγγύηση, ρητή ή σιωπηρή, δεν παρέχεται ή παρέχεται από ή εκ μέρους της Blockchain Capital, του συγγραφέα ή οποιουδήποτε άλλου προσώπου ως προς την ακρίβεια και πληρότητα ή δικαιοσύνη των πληροφοριών που περιέχονται σε οποιαδήποτε ανάρτηση ιστολογίου και καμία ευθύνη ή υποχρέωση δεν γίνεται αποδεκτή για οποιαδήποτε τέτοια πληροφορία. Τίποτα που περιέχεται σε κάθε ανάρτηση ιστολογίου δεν αποτελεί επενδυτική, ρυθμιστική, νομική, συμμόρφωση ή φορολογική ή άλλη συμβουλή ούτε πρέπει να βασιστείτε στη λήψη μιας επενδυτικής απόφασης. Οι αναρτήσεις ιστολογίου δεν θα πρέπει να θεωρούνται ως τρέχουσες ή προηγούμενες συστάσεις ή προσκλήσεις για μια προσφορά για αγορά ή πώληση κινητών αξιών ή για υιοθέτηση οποιασδήποτε επενδυτικής στρατηγικής. Οι αναρτήσεις ιστολογίου μπορεί να περιέχουν προβολές ή άλλες μελλοντικές δηλώσεις, οι οποίες βασίζονται σε πεποιθήσεις, υποθέσεις και προσδοκίες που μπορεί να αλλάξουν ως αποτέλεσμα πολλών πιθανών γεγονότων ή παραγόντων. Εάν συμβεί μια αλλαγή, τα πραγματικά αποτελέσματα ενδέχεται να διαφέρουν ουσιαστικά από αυτά που εκφράζονται στις δηλώσεις για το μέλλον. Όλες οι μελλοντικές δηλώσεις μιλούν μόνο από την ημερομηνία που γίνονται αυτές οι δηλώσεις και ούτε η Blockchain Capital ούτε κάθε συγγραφέας αναλαμβάνει κανένα καθήκον να ενημερώσει αυτές τις δηλώσεις εκτός από τις περιπτώσεις που απαιτείται από τη νομοθεσία. Στο βαθμό που τυχόν έγγραφα, παρουσιάσεις ή άλλο υλικό που παράγονται, δημοσιεύονται ή διανέμονται με άλλο τρόπο από την Blockchain Capital αναφέρονται σε οποιαδήποτε ανάρτηση ιστολογίου, τέτοιο υλικό θα πρέπει να διαβάζεται με ιδιαίτερη προσοχή σε τυχόν αποποίηση ευθύνης που παρέχονται σε αυτήν.

Σφραγίδα ώρας:

Περισσότερα από Blockchain Capital

Ο γενικός μας σύμβουλος, Joshua Rivera καταθέτει ενώπιον της Υποεπιτροπής της Επιτροπής Χρηματοοικονομικών Υπηρεσιών της Βουλής για τα Ψηφιακά Περιουσιακά Στοιχεία, τη Χρηματοοικονομική Τεχνολογία και την Ένταξη

Κόμβος πηγής: 1830143
Σφραγίδα ώρας: 26 Απριλίου 2023