Εισαγωγή στα Έξυπνα Συμβόλαια

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

Κανονικό συμβόλαιο vs. έξυπνο συμβόλαιο

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

Εισαγωγή στα Έξυπνα Συμβόλαια

Πώς λειτουργούσε αυτό πριν από την εμφάνιση των έξυπνων συμβολαίων; Φανταστείτε μια ομάδα ανθρώπων που θέλουν να καθιερώσουν ορισμένους κανόνες και προϋποθέσεις για τη διανομή των αξιών, καθώς και έναν συγκεκριμένο μηχανισμό που θα εγγυάται την εφαρμογή αυτής της διανομής σύμφωνα με τους δεδομένους κανόνες και προϋποθέσεις. Έπειτα μαζεύονταν, συνέτασσαν ένα χαρτί στο οποίο έγραφαν τα στοιχεία ταυτοποίησής τους, τους όρους, τις τιμές που εμπλέκονταν, τους έβαζαν ημερομηνία και τις υπέγραφαν. Αυτή η σύμβαση επικυρώθηκε επίσης από ένα έμπιστο μέρος, όπως συμβολαιογράφο. Επιπλέον, αυτοί οι άνθρωποι πήγαν σε διαφορετικές κατευθύνσεις με το έντυπο αντίγραφο μιας τέτοιας σύμβασης και άρχισαν να εκτελούν ορισμένες ενέργειες που μπορεί να μην αντιστοιχούν στην ίδια τη σύμβαση, δηλαδή έκαναν ένα πράγμα, αλλά στα χαρτιά πιστοποιήθηκε ότι έπρεπε να κάνουν κάτι τελείως διαφορετικό. Και πώς να βγείτε από αυτή την κατάσταση; Στην πραγματικότητα, ένα από τα μέλη της ομάδας πρέπει να λάβει αυτό το χαρτί, να λάβει κάποια στοιχεία, να τα πάει στο δικαστήριο και να επιτύχει τη συμμόρφωση μεταξύ της σύμβασης και των πραγματικών ενεργειών. Πολύ συχνά, είναι δύσκολο να επιτευχθεί δίκαιη εφαρμογή αυτής της σύμβασης, γεγονός που οδηγεί σε δυσάρεστες συνέπειες.

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

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

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

Ορισμός έξυπνου συμβολαίου

Γενικά, η ίδια η ορολογία επινοήθηκε από τον ερευνητή Nick Szabo και χρησιμοποιήθηκε για πρώτη φορά το 1994, και τεκμηριώθηκε το 1997 σε ένα άρθρο που περιγράφει την ίδια την ιδέα των έξυπνων συμβολαίων.

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

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

Ένα απλό παράδειγμα - Υπηρεσία μεσεγγύησης

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

Εισαγωγή στα Έξυπνα Συμβόλαια

Μπορεί επίσης να εφαρμοστεί χρησιμοποιώντας Bitcoin, αν και αυτή τη στιγμή το Bitcoin δύσκολα μπορεί να ονομαστεί μια ολοκληρωμένη πλατφόρμα για έξυπνα συμβόλαια. Έτσι, έχουμε κάποιον αγοραστή και έχουμε ένα ηλεκτρονικό κατάστημα. Ένας πελάτης θέλει να αγοράσει μια οθόνη από αυτό το κατάστημα. Στην απλούστερη περίπτωση, ο αγοραστής ολοκληρώνει και στέλνει μια πληρωμή, και το ηλεκτρονικό κατάστημα την αποδέχεται, την επιβεβαιώνει και στη συνέχεια αποστέλλει τα εμπορεύματα. Ωστόσο, σε αυτήν την κατάσταση υπάρχει ανάγκη για μεγάλη εμπιστοσύνη - ο αγοραστής πρέπει να εμπιστευτεί το ηλεκτρονικό κατάστημα για ολόκληρο το κόστος της οθόνης. Δεδομένου ότι ένα ηλεκτρονικό κατάστημα μπορεί να έχει χαμηλή φήμη στα μάτια του αγοραστή, υπάρχει κίνδυνος για κάποιο λόγο, μετά την αποδοχή της πληρωμής, το κατάστημα να αρνηθεί την εξυπηρέτηση και να μην στείλει τα αγαθά στον αγοραστή. Επομένως, ο αγοραστής θέτει το ερώτημα (και, κατά συνέπεια, το ηλεκτρονικό κατάστημα θέτει αυτήν την ερώτηση) τι μπορεί να εφαρμοστεί σε αυτήν την περίπτωση προκειμένου να ελαχιστοποιηθούν τέτοιοι κίνδυνοι και να γίνουν πιο αξιόπιστες τέτοιες συναλλαγές.

Στην περίπτωση του Bitcoin, είναι δυνατό να επιτραπεί στον αγοραστή και στον πωλητή να επιλέξουν ανεξάρτητα έναν διαμεσολαβητή. Υπάρχουν πολλοί άνθρωποι που ασχολούνται με την επίλυση αμφιλεγόμενων ζητημάτων. Και οι συμμετέχοντες μας μπορούν να επιλέξουν από μια γενική λίστα μεσολαβητών αυτόν που θα εμπιστευτούν. Μαζί δημιουργούν μια διεύθυνση πολλαπλών υπογραφών 2 από 3 όπου υπάρχουν τρία κλειδιά και απαιτούνται δύο υπογραφές με οποιαδήποτε δύο κλειδιά για να ξοδέψουν νομίσματα από αυτήν τη διεύθυνση. Το ένα κλειδί θα ανήκει στον αγοραστή, το δεύτερο στο ηλεκτρονικό κατάστημα και το τρίτο στον διαμεσολαβητή. Και σε μια τέτοια διεύθυνση πολλαπλών υπογραφών, ο αγοραστής θα στείλει το ποσό που είναι απαραίτητο για να πληρώσει για την οθόνη. Τώρα, όταν ο πωλητής δει ότι τα χρήματα είναι μπλοκαρισμένα για κάποιο χρονικό διάστημα σε μια διεύθυνση πολλαπλών υπογραφών που εξαρτάται από αυτόν, μπορεί να στείλει με ασφάλεια την οθόνη μέσω ταχυδρομείου.

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

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

Ο διαμεσολαβητής ενδιαφέρεται να ικανοποιήσει ταυτόχρονα τόσο την αγανάκτηση του αγοραστή όσο και τα συμφέροντα του ηλεκτρονικού καταστήματος (θα γίνει σαφές γιατί αργότερα). Αποτελεί μια συναλλαγή κατά την οποία κέρματα από μια διεύθυνση πολλαπλών υπογραφών θα δαπανηθούν σε κάποια αναλογία μεταξύ του αγοραστή, του ηλεκτρονικού καταστήματος και του διαμεσολαβητή, αφού παίρνει μια μερίδα για τον εαυτό του ως ανταμοιβή για την εργασία του. Ας πούμε ότι το 90% του συνολικού ποσού πηγαίνει στον πωλητή, το 5% στον διαμεσολαβητή και το 5% αποζημίωση στον αγοραστή. Ο διαμεσολαβητής υπογράφει αυτή τη συναλλαγή με το κλειδί του, αλλά δεν μπορεί ακόμη να εφαρμοστεί, γιατί απαιτεί δύο υπογραφές, αλλά μόνο μία αξίζει τον κόπο. Στέλνει μια τέτοια συναλλαγή τόσο στον αγοραστή όσο και στον πωλητή. Εάν τουλάχιστον ένας από αυτούς είναι ικανοποιημένος με αυτήν την επιλογή αναδιανομής κερμάτων, τότε η συναλλαγή θα προϋπογραφεί και θα διανεμηθεί στο δίκτυο. Για την επικύρωσή του, αρκεί ένα από τα μέρη της συναλλαγής να συμφωνήσει με την επιλογή του διαμεσολαβητή.

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

Παράδειγμα με κοιτώνα και ψυγείο

Ας δούμε ένα πιο περίπλοκο παράδειγμα που εμφανίζει πιο ρητά τις δυνατότητες ενός έξυπνου συμβολαίου.

Εισαγωγή στα Έξυπνα Συμβόλαια

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

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

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

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

Ταξινόμηση έξυπνων συμβολαίων

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

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

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

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

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

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

Έξυπνα συμβόλαια κατά χρόνο εκτέλεσης

Εισαγωγή στα Έξυπνα Συμβόλαια

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

Ως παράδειγμα, μπορούμε να πάρουμε παρόχους κινητής επικοινωνίας (διαφορετικούς παρόχους κινητής τηλεφωνίας). Ας υποθέσουμε ότι ένας συγκεκριμένος χειριστής διατηρεί ένα κεντρικό αρχείο κίνησης στους διακομιστές του, το οποίο μπορεί να μεταδοθεί σε διαφορετικές μορφές, για παράδειγμα: με τη μορφή φωνητικών κλήσεων, μετάδοσης SMS, κίνησης στο Διαδίκτυο μέσω κινητού τηλεφώνου και σύμφωνα με διαφορετικά πρότυπα, και επίσης διατηρεί αρχεία κεφαλαίων στα υπόλοιπα των χρηστών. Αντίστοιχα, ο πάροχος κινητών επικοινωνιών μπορεί να συνάψει συμβάσεις για τη λογιστική για τις παρεχόμενες υπηρεσίες και την πληρωμή τους με διαφορετικούς όρους. Σε αυτήν την περίπτωση, είναι εύκολο να ορίσετε συνθήκες όπως "στείλτε ένα SMS με τον τάδε κωδικό σε αυτόν και τον άλλον αριθμό και θα λάβετε τις ίδιες συνθήκες για τη διανομή της κυκλοφορίας".

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

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

Έξυπνα συμβόλαια με τη μέθοδο καθορισμού και εκπλήρωσης όρων

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

Υπάρχουν επίσης αυθαίρετα έξυπνα συμβόλαια, αλλά όχι ολοκληρωμένα Turing. Αυτό περιλαμβάνει Bitcoin και Litecoin με το δικό τους σενάριο. Αυτό σημαίνει ότι μπορείτε να χρησιμοποιήσετε μόνο ορισμένες λειτουργίες με οποιαδήποτε σειρά, αλλά δεν μπορείτε πλέον να γράφετε βρόχους και τους δικούς σας αλγόριθμους.

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

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

Έξυπνα συμβόλαια με μέθοδο έναρξης

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

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

Λογαριασμοί Ethereum

Τύποι λογαριασμού Ethereum

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

Ο λογαριασμός χρήστη ελέγχεται μόνο από το προσωπικό κλειδί της ηλεκτρονικής υπογραφής. Ο κάτοχος του λογαριασμού δημιουργεί το δικό του ζεύγος κλειδιών για ηλεκτρονική υπογραφή χρησιμοποιώντας τον αλγόριθμο ECDSA (Elliptic Curve Digital Signature Algorithm). Μόνο οι συναλλαγές που υπογράφονται με αυτό το κλειδί μπορούν να αλλάξουν την κατάσταση αυτού του λογαριασμού.

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

Πώς δημιουργούνται οι λογαριασμοί στο Ethereum

Στην περίπτωση λογαριασμού χρήστη, ο κάτοχος δημιουργεί ανεξάρτητα ένα ζεύγος κλειδιών χρησιμοποιώντας το ECDSA. Είναι σημαντικό να σημειωθεί ότι το Ethereum χρησιμοποιεί ακριβώς τον ίδιο αλγόριθμο και ακριβώς την ίδια ελλειπτική καμπύλη για ηλεκτρονικές υπογραφές με το Bitcoin, αλλά η διεύθυνση υπολογίζεται με ελαφρώς διαφορετικό τρόπο. Εδώ, το αποτέλεσμα του διπλού κατακερματισμού δεν χρησιμοποιείται πλέον, όπως στο Bitcoin, αλλά παρέχεται μόνος κατακερματισμός με τη συνάρτηση Keccak σε μήκος 256 bit. Τα λιγότερο σημαντικά bit αποκόπτονται από την προκύπτουσα τιμή, δηλαδή τα λιγότερο σημαντικά 160 bit της τιμής κατακερματισμού εξόδου. Ως αποτέλεσμα, λαμβάνουμε μια διεύθυνση στο Ethereum. Στην πραγματικότητα, καταλαμβάνει 20 byte.

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

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

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

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

Δομή συναλλαγών Ethereum

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

Εισαγωγή στα Έξυπνα Συμβόλαια

Μια συναλλαγή Ethereum αποτελείται από πολλά πεδία. Το πρώτο από αυτά, nonce, είναι ένας ορισμένος σειριακός αριθμός της συναλλαγής σε σχέση με τον ίδιο τον λογαριασμό που τη διανέμει και είναι ο δημιουργός της. Αυτό είναι απαραίτητο για τη διάκριση των διπλών συναλλαγών, δηλαδή για να αποκλειστεί η περίπτωση που η ίδια συναλλαγή γίνεται δύο φορές αποδεκτή. Χρησιμοποιώντας ένα αναγνωριστικό, κάθε συναλλαγή έχει μια μοναδική τιμή κατακερματισμού.

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

Στο Bitcoin, τα τέλη καταβάλλονται απευθείας από το βασικό νόμισμα—το ίδιο το Bitcoin. Αυτό είναι δυνατό χάρη σε έναν απλό μηχανισμό για τον υπολογισμό τους: πληρώνουμε αυστηρά για τον όγκο των δεδομένων που περιέχονται στη συναλλαγή. Στο Ethereum η κατάσταση είναι πιο περίπλοκη, γιατί είναι πολύ δύσκολο να βασιστείς στον όγκο των δεδομένων συναλλαγών. Εδώ, η συναλλαγή μπορεί επίσης να περιέχει κώδικα προγράμματος που θα εκτελεστεί στην εικονική μηχανή και κάθε λειτουργία της εικονικής μηχανής μπορεί να έχει διαφορετική πολυπλοκότητα. Υπάρχουν επίσης λειτουργίες που εκχωρούν μνήμη για μεταβλητές. Θα έχουν τη δική τους πολυπλοκότητα, από την οποία θα εξαρτηθεί η πληρωμή για κάθε επέμβαση.

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

Υπάρχει ένα ακόμη χαρακτηριστικό μιας συναλλαγής στο Ethereum: ο bytecode που περιέχει για εκτέλεση σε μια εικονική μηχανή θα εκτελείται έως ότου ολοκληρωθεί με κάποιο αποτέλεσμα (επιτυχία ή αποτυχία) ή έως ότου εξαντληθεί ένα ορισμένο ποσό νομισμάτων που διατίθεται για την πληρωμή της προμήθειας . Για να αποφευχθεί μια κατάσταση όπου, σε περίπτωση κάποιου σφάλματος, όλα τα νομίσματα από τον λογαριασμό του αποστολέα δαπανήθηκαν με προμήθεια (για παράδειγμα, κάποιο είδος αιώνιου κύκλου που ξεκίνησε σε μια εικονική μηχανή), υπάρχει το ακόλουθο πεδίο - εκκίνηση αερίου (συχνά ονομάζεται όριο αερίου) - καθορίζει τη μέγιστη ποσότητα κερμάτων που είναι διατεθειμένος να ξοδέψει ο αποστολέας για να ολοκληρώσει μια συγκεκριμένη συναλλαγή.

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

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

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

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

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

contract Bank {
    address owner;
    mapping(address => uint) balances;
    
    function Bank() {
        owner = msg.sender;
    }

    function deposit() public payable {
        balances[msg.sender] += msg.value;
    }

    function withdraw(uint amount) public {
        if (balances[msg.sender] >= amount) {
            balances[msg.sender] -= amount;
            msg.sender.transfer(amount);
        }
    }

    function getMyBalance() public view returns(uint) {
        return balances[msg.sender];
    }

    function kill() public {
        if (msg.sender == owner)
            selfdestruct(owner);
    }
}

Παραπάνω είναι ένας απλοποιημένος πηγαίος κώδικας που μπορεί να κρατήσει τα νομίσματα των χρηστών και να τα επιστρέψει κατόπιν ζήτησης.

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

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

Ακολουθεί η μέθοδος Bank - έχει το ίδιο όνομα με το συμβόλαιο. Κατά συνέπεια, αυτός είναι ο κατασκευαστής του. Εδώ στη μεταβλητή ιδιοκτήτη εκχωρείται η διεύθυνση του ατόμου που τοποθέτησε αυτό το έξυπνο συμβόλαιο στο δίκτυο. Αυτό είναι το μόνο πράγμα που συμβαίνει σε αυτόν τον κατασκευαστή. Δηλαδή, το msg σε αυτή την περίπτωση είναι ακριβώς τα δεδομένα που μεταφέρθηκαν στην εικονική μηχανή μαζί με τη συναλλαγή που περιέχει ολόκληρο τον κωδικό αυτής της σύμβασης. Συνεπώς, ο msg.sender είναι ο συντάκτης αυτής της συναλλαγής που φιλοξενεί αυτόν τον κωδικό. Θα είναι ο ιδιοκτήτης του έξυπνου συμβολαίου.

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

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

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

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

Πώς λειτουργεί ένας πλήρης κόμβος στο δίκτυο Ethereum;

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

Εισαγωγή στα Έξυπνα Συμβόλαια

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

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

Η τρίτη ενότητα ονομάζεται EVM (εικονική μηχανή Ethereum) - αυτή είναι μια εικονική μηχανή που λαμβάνει bytecode από συναλλαγές Ethereum. Αυτή η ενότητα λαμβάνει την τρέχουσα κατάσταση ενός συγκεκριμένου λογαριασμού και κάνει αλλαγές στην κατάστασή του με βάση τον λαμβανόμενο bytecode. Η έκδοση εικονικής μηχανής σε κάθε κόμβο δικτύου πρέπει να είναι η ίδια. Οι υπολογισμοί που γίνονται σε κάθε κόμβο Ethereum είναι ακριβώς οι ίδιοι, αλλά γίνονται με ασύγχρονο τρόπο: κάποιος ελέγχει και αποδέχεται αυτήν τη συναλλαγή νωρίτερα, δηλαδή εκτελεί όλο τον κώδικα που περιέχεται σε αυτήν και κάποιος αργότερα. Αντίστοιχα, όταν δημιουργείται μια συναλλαγή, διανέμεται στο δίκτυο, οι κόμβοι την αποδέχονται και κατά τη στιγμή της επαλήθευσης, με τον ίδιο τρόπο που εκτελείται το Bitcoin Script στο Bitcoin, εκτελείται εδώ ο bytecode της εικονικής μηχανής.

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

Μύθοι και περιορισμοί των έξυπνων συμβολαίων

Όσον αφορά τους περιορισμούς που υπάρχουν για πλατφόρμες έξυπνων συμβολαίων παρόμοιες με το Ethereum, μπορούν να αναφερθούν τα ακόλουθα:

  • εκτέλεση κώδικα?
  • εκχώρηση μνήμης.
  • δεδομένα blockchain·
  • αποστολή πληρωμών?
  • δημιουργία νέας σύμβασης?
  • καλέστε άλλες συμβάσεις.

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

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

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

Μειονεκτήματα του Ethereum

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

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

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

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

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

Έτσι, το θεματικό μέρος του άρθρου ολοκληρώθηκε, ας περάσουμε σε ερωτήσεις που προκύπτουν αρκετά συχνά.

Συχνές ερωτήσεις

— Εάν όλα τα μέρη σε ένα υπάρχον έξυπνο συμβόλαιο θέλουν να αλλάξουν τους όρους, μπορούν να ακυρώσουν αυτό το έξυπνο συμβόλαιο χρησιμοποιώντας το multisig και στη συνέχεια να δημιουργήσουν ένα νέο έξυπνο συμβόλαιο με ενημερωμένους όρους εκτέλεσής του;

Η απάντηση εδώ θα είναι διπλή. Γιατί; Διότι αφενός το έξυπνο συμβόλαιο ορίζεται μία φορά και δεν συνεπάγεται πλέον καμία αλλαγή και αφετέρου μπορεί να έχει προγραμμένη λογική που προβλέπει ολική ή μερική αλλαγή κάποιων συνθηκών. Δηλαδή, εάν θέλετε να αλλάξετε κάτι στο έξυπνο συμβόλαιό σας, τότε πρέπει να ορίσετε τις προϋποθέσεις υπό τις οποίες μπορείτε να ενημερώσετε αυτούς τους όρους. Συνεπώς, μόνο με τέτοιο συνετό τρόπο μπορεί να οργανωθεί η ανανέωση της σύμβασης. Αλλά και εδώ μπορεί να αντιμετωπίσετε προβλήματα: να κάνετε κάποιο λάθος και να αποκτήσετε μια αντίστοιχη ευπάθεια. Επομένως, τέτοια πράγματα πρέπει να είναι πολύ λεπτομερή και προσεκτικά σχεδιασμένα και δοκιμασμένα.

— Τι γίνεται εάν ο διαμεσολαβητής συνάψει συμφωνία με ένα από τα συμμετέχοντα μέρη: μεσεγγύηση ή έξυπνη σύμβαση; Απαιτείται διαμεσολαβητής σε ένα έξυπνο συμβόλαιο;

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

— Είναι δυνατόν με μία συναλλαγή Ethereum να μεταφέρετε πολλά διαφορετικά διακριτικά από τη διεύθυνσή σας σε διαφορετικές διευθύνσεις-στόχους, για παράδειγμα, να ανταλλάξετε διευθύνσεις όπου διαπραγματεύονται αυτά τα διακριτικά;

Αυτή είναι μια καλή ερώτηση και αφορά το μοντέλο συναλλαγής Ethereum και πώς διαφέρει από το μοντέλο Bitcoin. Και η διαφορά είναι ριζική. Εάν στο μοντέλο συναλλαγής Ethereum μεταφέρετε απλώς νομίσματα, τότε μεταφέρονται μόνο από τη μια διεύθυνση στην άλλη, χωρίς αλλαγή, μόνο το συγκεκριμένο ποσό που καθορίσατε. Με άλλα λόγια, δεν πρόκειται για ένα μοντέλο αδιάθετων εκροών (UTXO), αλλά για ένα μοντέλο λογαριασμών και αντίστοιχων υπολοίπων. Είναι θεωρητικά δυνατό να στείλετε πολλά διαφορετικά διακριτικά σε μία συναλλαγή ταυτόχρονα εάν γράψετε ένα πονηρό έξυπνο συμβόλαιο, αλλά θα πρέπει να κάνετε πολλές συναλλαγές, να δημιουργήσετε ένα συμβόλαιο, να μεταφέρετε μάρκες και νομίσματα σε αυτό και στη συνέχεια να καλέσετε την κατάλληλη μέθοδο . Αυτό απαιτεί προσπάθεια και χρόνο, επομένως στην πράξη δεν λειτουργεί έτσι και όλες οι πληρωμές στο Ethereum γίνονται σε ξεχωριστές συναλλαγές.

— Ένας από τους μύθους σχετικά με την πλατφόρμα Ethereum είναι ότι είναι αδύνατο να περιγραφούν συνθήκες που θα εξαρτηθούν από τα δεδομένα ενός εξωτερικού πόρου Διαδικτύου, οπότε τι να κάνουμε τότε;

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

Μία από τις διαλέξεις του διαδικτυακού μαθήματος για το Blockchain είναι αφιερωμένη σε αυτό το θέμα - "Εισαγωγή στα Έξυπνα Συμβόλαια".

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο