Αναβάθμιση έξυπνων συμβολαίων
Τελευταία επεξεργασία: @0xmike7(opens in a new tab), 15 Αυγούστου 2023
Τα έξυπνα συμβόλαια στο Ethereum είναι αυτοεκτελούμενα προγράμματα που εκτελούνται στο εικονικό μηχάνημα του Ethereum (EVM). Αυτά τα προγράμματα είναι αμετάβλητα από τον σχεδιασμό τους, γεγονός που εμποδίζει οποιαδήποτε ενημέρωση στην επιχειρηματική λογική μετά την ανάπτυξη του συμβολαίου.
Ενώ η αμεταβλητότητα είναι απαραίτητη για να μην απαιτείται η παροχή εμπιστοσύνης, για την αποκέντρωση και την ασφάλεια των έξυπνων συμβολαίων, μπορεί να αποτελέσει μειονέκτημα σε ορισμένες περιπτώσεις. Για παράδειγμα, ο αμετάβλητος κώδικας μπορεί να καταστήσει αδύνατη τη διόρθωση ευάλωτων συμβολαίων από τους προγραμματιστές.
Ωστόσο, η αυξημένη έρευνα για τη βελτίωση των έξυπνων συμβολαίων οδήγησε στην εισαγωγή πολλών μοτίβων προτύπων. Αυτά τα μοτίβα αναβάθμισης επιτρέπουν στους προγραμματιστές να αναβαθμίσουν τα έξυπνα συμβόλαια (διατηρώντας παράλληλα την αμεταβλητότητα) τοποθετώντας επιχειρηματική λογική σε διαφορετικά συμβόλαια.
Προαπαιτούμενα
Θα πρέπει να έχετε καλή κατανόηση των έξυπνων συμβολαίων, της ανατομίας έξυπνων συμβολαίων και του εικονικού μηχανήματος του Ethereum (EVM). Αυτός ο οδηγός θεωρεί επίσης ότι οι αναγνώστες έχουν γνώσεις προγραμματισμού έξυπνων συμβολαίων.
Τι είναι η αναβάθμιση έξυπνου συμβολαίου;
Μια αναβάθμιση έξυπνου συμβολαίου περιλαμβάνει αλλαγή της επιχειρηματικής λογικής ενός έξυπνου συμβολαίου, διατηρώντας παράλληλα την κατάσταση του συμβολαίου. Είναι σημαντικό να διευκρινιστεί ότι η δυνατότητα αναβάθμισης και η μεταβλητότητα δεν συμπίπτουν, ειδικά στο πλαίσιο των έξυπνων συμβολαίων.
Ακόμη δεν μπορείτε να αλλάξετε ένα πρόγραμμα που έχει αναπτυχθεί σε μια διεύθυνση στο δίκτυο Ethereum. Αλλά μπορείτε να αλλάξετε τον κώδικα που εκτελείται όταν οι χρήστες αλληλεπιδρούν με ένα έξυπνο συμβόλαιο.
Αυτό μπορεί να γίνει με τις ακόλουθες μεθόδους:
Δημιουργώντας πολλαπλές εκδόσεις ενός έξυπνου συμβολαίου και μετεγκαθιστώντας την κατάσταση (δηλαδή τα δεδομένα) από το παλιό συμβόλαιο σε ένα νέο παράδειγμα του συμβολαίου.
Δημιουργία ξεχωριστών συμβολαίων για την αποθήκευση επιχειρηματικής λογικής και κατάστασης.
Χρήση μοτίβων διακομιστή μεσολάβησης για την ανάθεση κλήσεων συναρτήσεων από μια σύμβαση αμετάβλητου διακομιστή μεσολάβησης σε ένα τροποποιήσιμο συμβόλαιο λογικής.
Δημιουργία ενός αμετάβλητου κύριου συμβολαίου που συνδέεται και βασίζεται σε ευέλικτα δορυφορικά συμβόλαια για την εκτέλεση συγκεκριμένων συναρτήσεων.
Χρησιμοποιώντας το μοτίβο διαμαντιού για την ανάθεση κλήσεων συναρτήσεων από συμβόλαιο μεσολάβησης σε συμβόλαια λογικής.
Μηχανισμός αναβάθμισης #1: Μετεγκατάσταση συμβολαίου
Η μετεγκατάσταση συμβολαίου βασίζεται στη δημιουργία εκδόσεων — την ιδέα της δημιουργίας και διαχείρισης μοναδικών καταστάσεων του ίδιου λογισμικού. Η μετεγκατάσταση συμβολαίων περιλαμβάνει την ανάπτυξη νέου παραδείγματος ενός υπάρχοντος έξυπνου συμβολαίου και τη μεταφορά αποθήκευσης και υπολοίπων στο νέο συμβόλαιο.
Το συμβόλαιο που αναπτύχθηκε πρόσφατα θα έχει έναν κενό χώρο αποθήκευσης, επιτρέποντάς σας να ανακτήσετε δεδομένα από το παλιό συμβόλαιο και να τα εγγράψετε στη νέα υλοποίηση. Στη συνέχεια, θα πρέπει να ενημερώσετε όλα τα συμβόλαια που αλληλεπιδρούσαν με το παλιό συμβόλαιο, ώστε να αντικατοπτρίζουν τη νέα διεύθυνση.
Το τελευταίο βήμα στη μετεγκατάσταση συμβολαίου είναι να πειστούν οι χρήστες να στραφούν στη χρήση του νέου συμβολαίου. Η νέα έκδοση του συμβολαίου θα διατηρεί τα υπόλοιπα των χρηστών και τις διευθύνσεις, γεγονός που διατηρεί την αμεταβλητότητα. Εάν πρόκειται για συμβόλαιο που βασίζεται σε κρυπτοπαραστατικά, θα χρειαστεί επίσης να επικοινωνήσετε με τα ανταλλακτήρια για να απορρίψετε το παλιό συμβόλαιο και να χρησιμοποιήσετε το νέο.
Η μετεγκατάσταση συμβολαίων είναι ένα σχετικά απλό και ασφαλές μέτρο για την αναβάθμιση έξυπνων συμβολαίων χωρίς να διακόπτονται οι αλληλεπιδράσεις των χρηστών. Ωστόσο, η χειροκίνητη μετεγκατάσταση της αποθήκευσης και των υπολοίπων των χρηστών στη νέα σύμβαση είναι χρονοβόρα και μπορεί να επιφέρει υψηλό κόστος gas.
Περισσότερα για τη μετεγκατάσταση συμβολαίων.(opens in a new tab)
Μηχανισμός αναβάθμισης #2: Διαχωρισμός δεδομένων
Μια άλλη μέθοδος για την αναβάθμιση των έξυπνων συμβολαίων είναι ο διαχωρισμός της επιχειρηματικής λογικής και της αποθήκευσης δεδομένων σε ξεχωριστά συμβόλαια. Αυτό σημαίνει ότι οι χρήστες αλληλεπιδρούν με το συμβόλαιο λογικής, ενώ τα δεδομένα αποθηκεύονται στο συμβόλαιο αποθήκευσης.
Το συμβόλαιο λογικής περιέχει τον κώδικα που εκτελείται όταν οι χρήστες αλληλεπιδρούν με την εφαρμογή. Διατηρεί επίσης τη διεύθυνση του συμβολαίου αποθήκευσης και αλληλεπιδρά μαζί της για τη λήψη και τη ρύθμιση δεδομένων.
Την ίδια στιγμή, το συμβόλαιο αποθήκευσης διατηρεί την κατάσταση που σχετίζεται με το έξυπνο συμβόλαιο, όπως τα υπόλοιπα των χρηστών και οι διευθύνσεις. Σημειώστε ότι το συμβόλαιο αποθήκευσης ανήκει στο συμβόλαιο λογικής και έχει διαμορφωθεί με τη διεύθυνση του τελευταίου κατά την ανάπτυξη. Αυτό εμποδίζει τα μη εξουσιοδοτημένα συμβόλαια να καλέσουν το συμβόλαιο αποθήκευσης ή να ενημερώσουν τα δεδομένα του.
Από προεπιλογή, το συμβόλαιο αποθήκευσης είναι αμετάβλητο — αλλά μπορείτε να αντικαταστήσετε το συμβόλαιο λογικής στην οποία υποδεικνύει με μια νέα υλοποίηση. Αυτό θα αλλάξει τον κώδικα που εκτελείται στο EVM, διατηρώντας παράλληλα ανέπαφα την αποθήκευση και τα υπόλοιπα.
Η χρήση αυτής της μεθόδου αναβάθμισης απαιτεί ενημέρωση της διεύθυνσης του συμβολαίου λογικής στο συμβόλαιο αποθήκευσης. Πρέπει επίσης να διαμορφώσετε το νέο συμβόλαιο λογικής με τη διεύθυνση του συμβολαίου αποθήκευσης για λόγους που εξηγήθηκαν προηγουμένως.
Το μοτίβο διαχωρισμού δεδομένων είναι αναμφισβήτητα ευκολότερο στην εφαρμογή σε σύγκριση με τη μετεγκατάσταση συμβολαίων. Ωστόσο, θα πρέπει να διαχειριστείτε πολλαπλά συμβόλαια και να εφαρμόσετε πολύπλοκα συστήματα εξουσιοδότησης για την προστασία των έξυπνων συμβολαίων από κακόβουλες αναβαθμίσεις.
Μηχανισμός αναβάθμισης #3: Μοτίβα μεσολάβησης
Το μοτίβο μεσολάβησης χρησιμοποιεί επίσης διαχωρισμό δεδομένων για να διατηρεί την επιχειρηματική λογική και τα δεδομένα σε ξεχωριστά συμβόλαια. Ωστόσο, σε ένα μοτίβο μεσολάβησης, το συμβόλαιο αποθήκευσης (που ονομάζεται πληρεξούσιο) καλεί το συμβόλαιο λογικής κατά την εκτέλεση του κώδικα. Αυτό είναι το αντίστροφο της μεθόδου διαχωρισμού δεδομένων, όπου το συμβόλαιο λογικής καλεί το συμβόλαιο αποθήκευσης.
Σε ένα μοτίβο μεσολάβησης συμβαίνει το εξής:
Οι χρήστες αλληλεπιδρούν με το συμβόλαιο μεσολάβησης, το οποίο αποθηκεύει δεδομένα, αλλά δεν διατηρεί την επιχειρηματική λογική.
Το συμβόλαιο μεσολάβησης αποθηκεύει τη διεύθυνση του συμβολαίου λογικής και εκχωρεί όλες τις κλήσεις λειτουργίας στο συμβόλαιο λογικής (το οποίο διατηρεί την επιχειρηματική λογική) χρησιμοποιώντας τη συνάρτηση
delegatecall
.Αφού προωθηθεί η κλήση στο συμβόλαιο λογικής, τα επιστρεφόμενα δεδομένα από το συμβόλαιο λογικής ανακτώνται και επιστρέφονται στον χρήστη.
Η χρήση των μοτίβων μεσολάβησης απαιτεί κατανόηση της λειτουργίας delegatecall. Βασικά, το delegatecall
είναι ένας κωδικός ενεργοποίησης που επιτρέπει σε ένα συμβόλαιο να καλέσει ένα άλλο συμβόλαιο, ενώ η πραγματική εκτέλεση του κώδικα πραγματοποιείται στο πλαίσιο του συμβολαίου κλήσης. Μια συνέπεια της χρήσης delegatecall
σε μοτίβα διακομιστή μεσολάβησης είναι ότι το συμβόλαιο διακομιστή μεσολάβησης διαβάζει και γράφει στην αποθήκευσή του και εκτελεί λογική που είναι αποθηκευμένη στο συμβόλαιο λογικής σαν να καλεί μια εσωτερική λειτουργία.
Από το έγγραφο Τεκμηρίωση του Solidity(opens in a new tab):
Υπάρχει μια ειδική παραλλαγή μιας κλήσης μηνύματος, που ονομάζεται delegatecall η οποία είναι πανομοιότυπη με μια κλήση μηνύματος, εκτός από το γεγονός ότι ο κώδικας στη διεύθυνση προορισμού εκτελείται στο πλαίσιο (δηλ. στη διεύθυνση) του συμβολαίου κλήσης και τα
msg.sender
καιmsg.value
δεν αλλάζουν τις τιμές τους. Αυτό σημαίνει ότι ένα συμβόλαιο μπορεί να φορτώσει δυναμικά τον κώδικα από διαφορετική διεύθυνση κατά την εκτέλεση. Ο χώρος μνήμης, η τρέχουσα διεύθυνση και το υπόλοιπο εξακολουθούν να αναφέρονται στο συμβόλαιο κλήσης, μόνο ο κωδικός λαμβάνεται από την καλούμενη διεύθυνση.
Το συμβόλαιο μεσολάβησης ξέρει να καλεί delegatecall
κάθε φορά που ένας χρήστης καλεί μια συνάρτηση, επειδή έχει ενσωματωμένη μια συνάρτηση fallback
. Στον προγραμματισμό με Solidity, η συνάρτηση fallback(opens in a new tab) εκτελείται όταν μια κλήση συνάρτησης δεν ταιριάζει με συναρτήσεις που καθορίζονται σε ένα συμβόλαιο.
Για να λειτουργήσει το μοτίβο μεσολάβησης απαιτείται η σύνταξη μιας προσαρμοσμένης συνάρτησης fallback που καθορίζει τον τρόπο με τον οποίο το συμβόλαιο μεσολάβησης θα πρέπει να χειρίζεται τις κλήσεις λειτουργίας που δεν υποστηρίζει. Σε αυτήν την περίπτωση, η συνάρτηση fallback του πληρεξουσίου είναι προγραμματισμένη να εκκινεί μια κλήση αντιπροσώπου και να επαναδρομολογεί το αίτημα του χρήστη στην τρέχουσα εφαρμογή συμβολαίου λογικής.
Το συμβόλαιο μεσολάβησης είναι αμετάβλητο από προεπιλογή, αλλά μπορούν να δημιουργηθούν νέα συμβόλαια λογικής με ενημερωμένη επιχειρηματική λογική. Η εκτέλεση της αναβάθμισης είναι στη συνέχεια θέμα αλλαγής της διεύθυνσης του συμβολαίου λογικής που αναφέρεται στο συμβόλαιο μεσολάβησης.
Υποδεικνύοντας τη σύμβαση μεσολάβησης σε μια νέο συμβόλαιο λογικής, αλλάζει ο κώδικας που εκτελείται όταν οι χρήστες καλούν τη συνάρτηση συμβολαίου μεσολάβησης. Αυτό μας επιτρέπει να αναβαθμίσουμε τη λογική ενός συμβολαίου χωρίς να ζητάμε από τους χρήστες να αλληλεπιδρούν με ένα νέο συμβόλαιο.
Τα μοτίβα μεσολάβησης είναι μια δημοφιλής μέθοδος για την αναβάθμιση έξυπνων συμβολαίων, επειδή εξαλείφουν τις δυσκολίες που σχετίζονται με τη μετεγκατάσταση συμβολαίων. Ωστόσο, τα μοτίβα μεσολάβησης είναι πιο περίπλοκα στη χρήση και μπορούν να εισαγάγουν κρίσιμα ελαττώματα, όπως συγκρούσεις επιλογέα συνάρτησης(opens in a new tab), εάν δεν χρησιμοποιηθούν σωστά.
Περισσότερα για τα μοτίβα μεσολάβησης(opens in a new tab).
Μηχανισμός αναβάθμισης #4: Μοτίβο στρατηγικής
Αυτή η τεχνική επηρεάζεται από το μοτίβο στρατηγικής(opens in a new tab), το οποίο ενθαρρύνει τη δημιουργία προγραμμάτων λογισμικού που διασυνδέονται με άλλα προγράμματα για την υλοποίηση συγκεκριμένων χαρακτηριστικών. Η εφαρμογή του μοτίβου στρατηγικής στην ανάπτυξη του Ethereum θα σήμαινε τη δημιουργία ενός έξυπνου συμβολαίου που καλεί λειτουργίες από άλλα συμβόλαια.
Το κύριο συμβόλαιο σε αυτήν την περίπτωση περιέχει την βασική επιχειρηματική λογική, αλλά διασυνδέεται με άλλα έξυπνα συμβόλαια («δορυφορικά συμβόλαια») για την εκτέλεση ορισμένων λειτουργιών. Αυτό το κύριο συμβόλαιο αποθηκεύει επίσης τη διεύθυνση για κάθε δορυφορικό συμβόλαιο και μπορεί να εναλλάσσεται μεταξύ διαφορετικών υλοποιήσεων των δορυφορικών συμβολαίων.
Μπορείτε να δημιουργήσετε ένα νέο δορυφορικό συμβόλαιο και να διαμορφώσετε το κύριο συμβόλαιο με τη νέα διεύθυνση. Αυτό σας επιτρέπει να αλλάξετε στρατηγικές (δηλαδή, να εφαρμόσετε νέα λογική) για ένα έξυπνο συμβόλαιο.
Αν και είναι παρεμφερές με το μοτίβο της μεσολάβησης που συζητήθηκε προηγουμένως, το μοτίβο στρατηγικής είναι διαφορετικό επειδή το κύριο συμβόλαιο, με το οποίο αλληλεπιδρούν οι χρήστες, έχει την επιχειρηματική λογική. Η χρήση αυτού του μοτίβου σας δίνει την ευκαιρία να εισάγετε περιορισμένες αλλαγές σε ένα έξυπνο συμβόλαιο χωρίς να επηρεαστεί η βασική υποδομή.
Το κύριο μειονέκτημα είναι ότι αυτό το μοτίβο είναι κυρίως χρήσιμο για μικρές αναβαθμίσεις. Επίσης, εάν το κύριο συμβόλαιο παραβιαστεί (π.χ. με χακάρισμα), δεν μπορείτε να χρησιμοποιήσετε αυτήν τη μέθοδο αναβάθμισης.
Μηχανισμός αναβάθμισης #5: Μοτίβο διαμαντιού
Το μοτίβο διαμαντιού μπορεί να θεωρηθεί ως βελτίωση του μοτίβου μεσολάβησης. Τα μοτίβα διαμαντιού διαφέρουν από τα μοτίβα μεσολάβησης επειδή το συμβόλαιο μεσολάβησης διαμαντιού μπορεί να εκχωρήσει κλήσεις συναρτήσεων σε περισσότερα από ένα συμβόλαια λογικής.
Τα συμβόλαια λογικής στο μοτίβο διαμαντιού είναι γνωστά ως όψεις. Για να λειτουργήσει το μοτίβο διαμαντιού, πρέπει να δημιουργήσετε μια χαρτογράφηση στο συμβόλαιο μεσολάβησης που αντιστοιχίζει επιλογείς συνάρτησης(opens in a new tab) σε διαφορετικές διευθύνσεις όψεων.
Όταν ένας χρήστης πραγματοποιεί μια κλήση συνάρτησης, το συμβόλαιο μεσολάβησης ελέγχει την αντιστοίχιση για να βρει την όψη που είναι υπεύθυνη για την εκτέλεση αυτής της συνάρτησης. Στη συνέχεια, καλεί το delegatecall
(χρησιμοποιώντας τη συνάρτηση fallback) και ανακατευθύνει την κλήση στο κατάλληλο συμβόλαιο λογικής.
Το μοτίβο αναβάθμισης διαμαντιού έχει ορισμένα πλεονεκτήματα σε σχέση με τα παραδοσιακά μοτίβα αναβάθμισης μεσολάβησης:
Σας επιτρέπει να αναβαθμίσετε ένα μικρό μέρος του συμβολαίου χωρίς να αλλάξετε όλο τον κώδικα. Η χρήση του μοτίβου μεσολάβησης για αναβαθμίσεις απαιτεί τη δημιουργία ενός εντελώς νέου συμβολαίου λογικής, ακόμη και για μικρές αναβαθμίσεις.
Όλα τα έξυπνα συμβόλαια (συμπεριλαμβανομένων των συμβολαίων λογικής που χρησιμοποιούνται σε μοτίβα μεσολάβησης) έχουν όριο μεγέθους 24KB, το οποίο μπορεί να συνιστά περιορισμό — ειδικά για πολύπλοκες συμβάσεις που απαιτούν περισσότερες λειτουργίες. Το μοτίβο διαμαντιού διευκολύνει την επίλυση αυτού του προβλήματος διαχωρίζοντας τις συναρτήσεις σε πολλαπλά συμβόλαια λογικής.
Τα μοτίβα μεσολάβησης υιοθετούν μια γενική προσέγγιση για τα στοιχεία ελέγχου πρόσβασης. Μια οντότητα με πρόσβαση σε λειτουργίες αναβάθμισης μπορεί να αλλάξει ολόκληρη τη σύμβαση. Ωστόσο, το μοτίβο διαμαντιού επιτρέπει μια προσέγγιση αρθρωτών αδειών, όπου μπορείτε να περιορίσετε τις οντότητες στην αναβάθμιση ορισμένων λειτουργιών στο πλαίσιο έξυπνου συμβολαίου.
Περισσότερα για το μοτίβο διαμαντιού(opens in a new tab).
Πλεονεκτήματα και μειονεκτήματα της αναβάθμισης των έξυπνων συμβολαίων
Πλεονεκτήματα | Μειονεκτήματα |
---|---|
Η αναβάθμιση ενός έξυπνου συμβολαίου μπορεί να διευκολύνει την επιδιόρθωση των τρωτών σημείων που ανακαλύφθηκαν στη φάση μετά την ανάπτυξη. | Η αναβάθμιση των έξυπνων συμβολαίων αναιρεί την ιδέα του αμετάβλητου κώδικα, η οποία έχει επιπτώσεις στην αποκέντρωση και την ασφάλεια. |
Οι προγραμματιστές μπορούν να χρησιμοποιήσουν αναβαθμίσεις λογικής για να προσθέσουν νέες δυνατότητες σε αποκεντρωμένες εφαρμογές. | Οι χρήστες πρέπει είναι σίγουροι ότι οι προγραμματιστές δεν τροποποιούν αυθαίρετα τα έξυπνα συμβόλαια. |
Οι αναβαθμίσεις έξυπνων συμβολαίων μπορούν να βελτιώσουν την ασφάλεια για τους τελικούς χρήστες, καθώς τα σφάλματα μπορούν να διορθωθούν γρήγορα. | Ο προγραμματισμός της λειτουργικότητας αναβάθμισης στα έξυπνα συμβόλαια προσθέτει άλλο ένα επίπεδο πολυπλοκότητας και αυξάνει την πιθανότητα κρίσιμων ελαττωμάτων. |
Οι αναβαθμίσεις συμβολαίων δίνουν στους προγραμματιστές περισσότερο χώρο να πειραματιστούν με διαφορετικές λειτουργίες και να βελτιώσουν τα dapp με την πάροδο του χρόνου. | Η ευκαιρία για αναβάθμιση έξυπνων συμβολαίων μπορεί να ενθαρρύνει τους προγραμματιστές να ξεκινήσουν έργα πιο γρήγορα χωρίς τη δέουσα επιμέλεια κατά τη φάση ανάπτυξης. |
Ο έλεγχος πρόσβασης χωρίς ασφάλεια ή ο συγκεντρωτισμός στα έξυπνα συμβόλαια μπορεί να διευκολύνει τους κακόβουλους φορείς να εκτελούν μη εξουσιοδοτημένες αναβαθμίσεις. |
Εκτιμήσεις για την αναβάθμιση των έξυπνων συμβολαίων
Χρησιμοποιήστε μηχανισμούς ασφαλούς ελέγχου πρόσβασης/εξουσιοδότησης για να αποτρέψετε μη εξουσιοδοτημένες αναβαθμίσεις έξυπνων συμβολαίων, ειδικά εάν χρησιμοποιείτε μοτίβα μεσολάβησης, μοτίβα στρατηγικής ή διαχωρισμό δεδομένων. Ένα παράδειγμα είναι ο περιορισμός της πρόσβασης στη λειτουργία αναβάθμισης, έτσι ώστε μόνο ο κάτοχος του συμβολαίου να μπορεί να το καλέσει.
Η αναβάθμιση των έξυπνων συμβολαίων είναι μια σύνθετη δραστηριότητα και απαιτεί υψηλό επίπεδο επιμέλειας για την πρόληψη της εισαγωγής τρωτών σημείων.
Μειώστε τις υποθέσεις εμπιστοσύνης αποκεντρώνοντας τη διαδικασία υλοποίησης αναβαθμίσεων. Πιθανές στρατηγικές περιλαμβάνουν τη χρήση συμβολαίου πορτοφολιού πολλαπλών υπογραφών για τον έλεγχο των αναβαθμίσεων ή την απαίτηση από τα μέλη DAO να ψηφίσουν για την έγκριση της αναβάθμισης.
Να γνωρίζετε το κόστος που συνεπάγεται η αναβάθμιση των συμβολαίων. Για παράδειγμα, η αντιγραφή κατάστασης (π.χ. υπόλοιπα χρηστών) από ένα παλιό συμβόλαιο σε ένα νέο συμβόλαιο κατά τη μετεγκατάσταση συμβολαίου μπορεί να απαιτεί περισσότερες από μία συναλλαγές, δηλαδή περισσότερες κρατήσεις gas.
Εξετάστε το ενδεχόμενο εφαρμογής timelock για την προστασία των χρηστών. Το timelock αναφέρεται σε μια καθυστέρηση που επιβάλλεται στις αλλαγές σε ένα σύστημα. Τα timelock μπορούν να συνδυαστούν με ένα σύστημα διακυβέρνησης πολλαπλών υπογραφών για τον έλεγχο των αναβαθμίσεων: εάν μια προτεινόμενη ενέργεια φτάσει το απαιτούμενο όριο έγκρισης, δεν εκτελείται μέχρι να παρέλθει η προκαθορισμένη περίοδος καθυστέρησης.
Τα timelock δίνουν στους χρήστες κάποιο χρόνο για έξοδο από το σύστημα εάν διαφωνούν με μια προτεινόμενη αλλαγή (π.χ. αναβάθμιση λογικής ή νέα συστήματα τελών). Χωρίς timelock, οι χρήστες πρέπει να εμπιστεύονται τους προγραμματιστές να μην εφαρμόζουν αυθαίρετες αλλαγές σε ένα έξυπνο συμβόλαιο χωρίς προηγούμενη ειδοποίηση. Το μειονέκτημα εδώ είναι ότι τα timelock περιορίζουν τη δυνατότητα γρήγορης επιδιόρθωσης ευπαθειών.
Πηγές
Plugin αναβαθμίσεων OpenZeppelin - Μια σουίτα εργαλείων για την ανάπτυξη και την εξασφάλιση αναβαθμίσιμων έξυπνων συμβολαίων.
Σεμινάρια
- Αναβαθμίστε τα έξυπνα συμβόλαιά σας | Εκπαιδευτικό υλικό στο YouTube(opens in a new tab) του Patrick Collins
- Εκπαιδευτικό υλικό μετεγκατάστασης έξυπνων συμβολαίων στο Ethereum(opens in a new tab) του Austin Griffith
- Χρήση του μοτίβου μεσολάβησης UUPS για να αναβαθμίσετε τα έξυπνα συμβόλαιά σας(opens in a new tab) του Pranesh A.S
- Εκπαιδευτκό υλικό στο Web3: Γράψτε αναβαθμίσιμο έξυπνο συμβόλαιο (πληρεξούσιο) χρησιμοποιώντας το OpenZeppelin(opens in a new tab) του fangjun.eth
Περισσότερες πληροφορίες
- Η κατάσταση των αναβαθμίσεων έξυπνων συμβολαίων(opens in a new tab) του Santiago Palladino
- Πολλοί τρόποι αναβάθμισης ενός έξυπνου συμβολαίου Solidity(opens in a new tab) - Crypto Market Pool blog
- Μαθαίνω: Αναβάθμιση έξυπνων συμβολαίων(opens in a new tab) - OpenZeppelin Docs
- Μοτίβα μεσολάβησης για τη δυνατότητα αναβάθμισης των συμβολαίων Solidity: Πληρεξούσια διαφανή ή UUPS(opens in a new tab) του Naveen Sahu
- Πώς λειτουργούν οι αναβαθμίσεις διαμαντιού(opens in a new tab) του Nick Mudge