Vyper, Solidity και Scrypto: Πώς συγκρίνονται οι γλώσσες έξυπνων συμβολαίων

Μια ματιά σε τρεις διαφορετικές γλώσσες προγραμματισμού για δίκτυα blockchain και πώς συγκρίνονται.

Το δίκτυο Ethereum έφερε έξυπνα συμβόλαια στον χώρο του blockchain, δημιουργώντας ιδέες όπως αποκεντρωμένη χρηματοδότηση (DeFi) δυνατό. 

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

Καθώς ο κλάδος του blockchain συνεχίζει να αναπτύσσεται και αναδύονται νέα δίκτυα blockchain, επιπρόσθετες γλώσσες προγραμματισμού εισάγονται στο διάστημα, ιδίως Vyper και Scrypto.

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

Τι είναι η Στερεότητα;

Η Solidity είναι μια αντικειμενοστραφή και υψηλού επιπέδου γλώσσα προγραμματισμού για τη δημιουργία έξυπνων συμβολαίων στο blockchain Ethereum και σε άλλα δίκτυα blockchain όπως το BNB Smart Chain και το Avalanche. Η γλώσσα αναπτύχθηκε το 2014 και μοιράζεται ομοιότητες με γλώσσες προγραμματισμού όπως η JavaScript, η C++ και η Python.

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

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

Το Solidity χρησιμοποιεί επίσης έναν μεταγλωττιστή για να μετατρέψει τον αναγνώσιμο από τον άνθρωπο κώδικα υψηλού επιπέδου σε αναγνώσιμο από μηχανή κώδικα που εκτελείται στην εικονική μηχανή Ethereum (EVM).

Τι είναι το Vyper;

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

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

Τι είναι το Scrypto;

Η Scrypto είναι μια γλώσσα έξυπνων συμβολαίων προσανατολισμένη στα περιουσιακά στοιχεία. Η γλώσσα αναπτύχθηκε από την Radix, βασίζεται στο Rust και διατηρεί τα περισσότερα από τα χαρακτηριστικά του Rust ενώ προσθέτει συγκεκριμένες λειτουργίες και σύνταξη για το Radix Engine v2. Δεδομένου ότι το Scrypto είναι προσανατολισμένο στα περιουσιακά στοιχεία, μπορεί να αλληλεπιδράσει με στοιχεία όπως τα διακριτικά, τα οποία είναι ένας τύπος πόρου στη γλώσσα. 

Σε γλώσσες κωδικοποίησης όπως η Solidity, τα κουπόνια ERC-20 υπάρχουν ως έξυπνα συμβόλαια στο EVM. Τα περιουσιακά στοιχεία στο Scrypto είναι πόροι που υπάρχουν μέσα σε κοντέινερ και θησαυροφυλάκια. Με απλά λόγια, είναι σαν να έχεις έναν κουβά (το δοχείο) και να τον γεμίζεις με κέρματα (το περιουσιακό στοιχείο) που μπορούν να αποθηκευτούν σε έναν κουμπαρά (το θησαυροφυλάκιο).

Πρόσφατος: Η ζήτηση για ταλέντο στα κρυπτονομίσματα εξαρτάται λιγότερο από την αγορά καθώς η βιομηχανία ωριμάζει

Το Scrypto εστιάζει επίσης στο να είναι φιλικό προς τους προγραμματιστές, επιτρέποντάς τους να γράφουν μόνο τον απαραίτητο κώδικα ενώ αλληλεπιδρούν με τα κοντέινερ και τους πόρους για να ενεργοποιήσουν τη λειτουργικότητα σε ένα DApp. Η ασφάλεια είναι μια άλλη αρχή με τους προγραμματιστές να μπορούν να δίνουν συγκεκριμένες οδηγίες σε ένα DApp αντί να δίνουν γενικές άδειες.

Πώς συγκρίνονται οι γλώσσες έξυπνων συμβολαίων

Το Solidity διαθέτει ένα ευρύ φάσμα διαδικτυακών πόρων εκμάθησης και πολλή υποστήριξη της κοινότητας λόγω της χρήσης του σε μεγάλα δίκτυα blockchain όπως το Ethereum. Το Solidity διαθέτει επίσης ένα ευρύ φάσμα χαρακτηριστικών που λαμβάνονται από τον αντικειμενοστραφή προγραμματισμό (OOP), καθιστώντας το αρθρωτό και πιο εύκολο στην αντιμετώπιση προβλημάτων όταν υπάρχει πρόβλημα. Για παράδειγμα, εάν ένα αντικείμενο από μια συγκεκριμένη κλάση επρόκειτο να παρουσιάσει δυσλειτουργία, θα μπορούσε να εντοπιστεί στην αρχή της κλάσης. 

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

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

Για παράδειγμα, το Solidity χρησιμοποιεί τροποποιητές που υποδεικνύουν ότι έχουν πραγματοποιηθεί έλεγχοι πριν και μετά την εκτέλεση μιας διεργασίας. Ωστόσο, το Vyper δεν χρησιμοποιεί τροποποιητές, καθώς οι προγραμματιστές πιστεύουν ότι διευκολύνει τη σύνταξη παραπλανητικού κώδικα. Ενθαρρύνει επίσης τα άτομα να αναπτύξουν κώδικα που αναπηδά σε όλο το αρχείο, μειώνοντας την ακουστότητα. Δεδομένου ότι δεν υπάρχουν τροποποιητές στο Vyper, είναι αδύνατο να προσθέσετε αλλαγές κατάστασης στον κώδικα.

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

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

Ο Adam Simmons, επικεφαλής στρατηγικής στην RDX Works - οι προγραμματιστές πίσω από το Radix - είπε στην Cointelegraph, «Το να έχουν τα σωστά εργαλεία για τη δουλειά κάνει μεγάλη διαφορά - και αυτή τη στιγμή, οι προγραμματιστές blockchain δεν έχουν τα σωστά εργαλεία. Αυτό δεν είναι μόνο να κάνουμε τις γλώσσες πιο απλές, αλλά να κάνουμε εργαλεία προγραμματιστών που είναι διαισθητικά και ασφαλή», συνεχίζοντας:

«Στο αποκορύφωμά του, το DeFi αυξήθηκε σε πάνω από 200 δισεκατομμύρια δολάρια TVL σε μόλις δύο χρόνια - τόσο ξεκάθαρα, υπάρχουν πολύ υψηλά επίπεδα ζήτησης. Ωστόσο, παρά την 200πλάσια αύξηση του κεφαλαίου, ο αριθμός των προγραμματιστών αυξήθηκε μόνο κατά 2 φορές, σε ένα σύνολο περίπου 19,000 (από περίπου 30 εκατομμύρια προγραμματιστές παγκοσμίως).

Παρά το υψηλό επίπεδο ανάπτυξης που παρατηρείται στον αποκεντρωμένο χρηματοοικονομικό χώρο, ο αριθμός των προγραμματιστών δεν αυξήθηκε ώστε να ανταποκρίνεται στη ζήτηση. Ο Simmons πιστεύει ότι οι προγραμματιστές μπορεί να βρήκαν το Solidity πολύ δύσκολο για αυτούς να μεταβούν στην ανάπτυξη blockchain:

«Οι προγραμματιστές διστάζουν να περάσουν με πλήρη απασχόληση στο Web3 λόγω της απότομης καμπύλης εκμάθησης του Solidity και των υψηλών επιπέδων κινδύνου γύρω από την ασφάλεια. Παρά τους εξαιρετικά ταλαντούχους προγραμματιστές και τα εκατομμύρια δολάρια που δαπανήθηκαν για ελέγχους ασφαλείας, το DeFi εξακολουθεί να αιμορραγεί χρήματα από hacks και exploits. Αυτό από μόνο του είναι αρκετό για να αποτρέψει τους προγραμματιστές από το να εισέλθουν στον χώρο».

«Η κατοχή των κατάλληλων γλωσσών και εργαλείων θα επιτρέψει στους προγραμματιστές να αναπτύξουν ολόκληρη τη βιομηχανία πολύ πιο γρήγορα. Όπως οι μηχανές παιχνιδιών έδωσαν στους προγραμματιστές τα εργαλεία για να φέρουν επανάσταση στην παραγωγή βιντεοπαιχνιδιών στη δεκαετία του '90, οι σωστές γλώσσες και εργαλεία Web3 θα επιτρέψουν στους προγραμματιστές να επιταχύνουν την ανάπτυξη του Web3», πρόσθεσε ο Simmons.

Το Scrypto εστιάζει επίσης στην ασφάλεια, την απλότητα και τη φιλικότητα προς τον χρήστη. Οι συναλλαγές Scrypto επικεντρώνονται σε περιουσιακά στοιχεία. Καθορίζουν τον τρόπο με τον οποίο ο χρήστης θέλει να διανέμονται οι πόροι του συστήματος. Μπορούν επίσης να υποδεικνύουν πώς θα πρέπει να χειρίζονται οι επιστρεφόμενοι πόροι από τον χρήστη ή άλλο στοιχείο σε μια συναλλαγή πολλαπλών συστατικών.

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

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

Στο παραπάνω παράδειγμα, ο χρήστης μεταφέρει έναν κάδο που περιέχει τους πόρους (τα διακριτικά) στη μέθοδο κατάθεσης του δεύτερου χρήστη αντί να κάνει μια κλήση σε ένα έξυπνο συμβόλαιο διακριτικών. Η αλληλεπίδραση με τα DApps λειτουργεί με παρόμοιο τρόπο, με τους χρήστες να αποσύρουν διακριτικά από τους λογαριασμούς τους και να τα διαβιβάζουν στο σχετικό στοιχείο με το οποίο επιθυμούν να αλληλεπιδράσουν. Συνοπτικά, το Scrypto ακολουθεί μια προσέγγιση βασισμένη σε περιουσιακά στοιχεία, με τους χρήστες να αποθηκεύουν και να διαβιβάζουν τα πραγματικά περιουσιακά στοιχεία. Η προσέγγιση που βασίζεται σε περιουσιακά στοιχεία διευκολύνει επίσης τους προγραμματιστές να κωδικοποιούν DApps, καθώς είναι πιο εύκολη η αλληλεπίδραση με διακριτικά (πόρους), ομάδες κουπονιών (θησαυροφυλάκια) και χρήστες (στοιχεία).

Για ένα άλλο παράδειγμα, εάν ένα DApp ανταλλαγής (όπως το Uniswap) κωδικοποιήθηκε με Scrypto, οι προγραμματιστές θα χρειαζόταν μόνο να κωδικοποιήσουν τη μέθοδο συναλλαγών για την ανταλλαγή. Αρχικά, το DEX θα πρέπει να αναγνωρίσει το εισερχόμενο κοντέινερ του Token A του χρήστη και μετά να υπολογίσει τη συναλλαγματική ισοτιμία. Στη συνέχεια, τα εισερχόμενα διακριτικά θα κατατεθούν και το DEX θα στείλει το σωστό ποσό του Token B πίσω στον χρήστη.

Ποια γλώσσα προγραμματισμού πρέπει να επιλέξουν οι προγραμματιστές blockchain;

Οι προγραμματιστές μπορούν να χρησιμοποιήσουν παραδοσιακές γλώσσες προγραμματισμού (C++, Python, JavaScript) για ανάπτυξη blockchain καθώς και ειδικά κατασκευασμένες λύσεις όπως Solidity, Vyper και Scrypto. Πολλαπλές γλώσσες προγραμματισμού μπορεί να είναι επωφελείς για τον χώρο του blockchain, καθώς παρέχει στους προγραμματιστές μια σειρά από εργαλεία για να εργαστούν. 

Για παράδειγμα, οι προγραμματιστές που είναι εξοικειωμένοι με C++, JavaScript και Python μπορεί να βρουν το Solidity ελκυστικό. Οι προγραμματιστές που είναι εξοικειωμένοι με την Python μπορεί να έλκονται προς το Vyper, ενώ οι προγραμματιστές που είναι εξοικειωμένοι με το Rust μπορούν να επιλέξουν να χρησιμοποιήσουν τη γλώσσα Scrypto.

Πρόσφατος: Τα social tokens θα είναι η μηχανή του Web3, από τις βάσεις θαυμαστών έως τα κίνητρα

Ο Simmons συμφωνεί, λέγοντας στην Cointelegraph, «Με περισσότερες γλώσσες να έρχονται στο Web3, πιθανότατα θα δούμε μια χρονική περίοδο όπου θα υπάρχουν αρκετές ανταγωνιστικές προσεγγίσεις. Καθώς αυτές οι γλώσσες ταιριάζουν στην αγορά προϊόντων με τους προγραμματιστές και, το πιο σημαντικό, δίνουν τη δυνατότητα σε αυτούς τους προγραμματιστές να δημιουργήσουν ισχυρές, χρήσιμες και ασφαλείς εφαρμογές DA, πιθανότατα θα δούμε τη βιομηχανία να έλκεται προς αυτές που προσφέρουν τα καλύτερα αποτελέσματα».

Το Solidity θα είναι φυσικά η επιλογή για προγραμματιστές που θέλουν να εργαστούν σε Ethereum και παρόμοια δίκτυα blockchain. Ταυτόχρονα, το Vyper και το Scrypto θα μπορούσαν να προσελκύσουν προγραμματιστές που προτιμούν την απλότητα και την πρόσθετη ασφάλεια. Το Scrypto μπορεί επίσης να είναι προτιμότερο για προγραμματιστές λόγω της αυξημένης απλότητάς του και της προσανατολισμένης στα περιουσιακά στοιχεία προσέγγισής του.

Πηγή: https://cointelegraph.com/news/vyper-solidity-and-scrypto-how-the-smart-contract-languages-compare