Κλειδιά στην απόδειξη συμμετοχής του Ethereum
Τελευταία επεξεργασία: @corwintines, 25 Φεβρουαρίου 2025
Το Ethereum εξασφαλίζει τα περιουσιακά στοιχεία των χρηστών χρησιμοποιώντας κρυπτογράφηση δημόσιου-ιδιωτικού κλειδιού. Το δημόσιο κλειδί χρησιμοποιείται ως βάση για μια διεύθυνση Ethereum, δηλαδή είναι ορατό στο κοινό και χρησιμοποιείται ως μοναδικό αναγνωριστικό. Το ιδιωτικό (ή μυστικό) κλειδί πρέπει να είναι προσβάσιμο μόνο από τον κάτοχο ενός λογαριασμού. Το ιδιωτικό κλειδί χρησιμοποιείται για την 'υπογραφή' συναλλαγών και δεδομένων, ώστε η κρυπτογραφία να μπορεί να αποδείξει ότι ο κάτοχος εγκρίνει κάποια ενέργεια ενός συγκεκριμένου ιδιωτικού κλειδιού.
Τα κλειδιά του Ethereum δημιουργούνται χρησιμοποιώντας ελλειπτική καμπύλη κρυπτογραφίας.
Ωστόσο, όταν το Ethereum άλλαξε από την Απόδειξη εργασίας σε Απόδειξη συμμετοχής, προστέθηκε ένας νέος τύπος κλειδιού στο Ethereum. Τα αρχικά κλειδιά λειτουργούν ακριβώς όπως πριν. Δεν υπήρξαν αλλαγές στα κλειδιά με βάση την ελλειπτική καμπύλη που εξασφαλίζουν τους λογαριασμούς. Ωστόσο, οι χρήστες χρειάστηκαν ένα νέο τύπο κλειδιού για τη συμμετοχή στην Απόδειξη συμμετοχής με αποθήκευση κεφαλαίου ETH και εκτέλεση επικυρωτών. Αυτή η ανάγκη προέκυψε από προκλήσεις κλιμακωσιμότητας που σχετίζονται με πολλά μηνύματα που περνούν μεταξύ μεγάλου αριθμού επικυρωτών, που απαιτούσαν μια κρυπτογραφική μέθοδο που θα μπορούσε εύκολα να συγκεντρωθεί για να μειώσει την ποσότητα επικοινωνίας που απαιτείται για το δίκτυο για να καταλήξει σε συναίνεση.
Αυτός ο νέος τύπος κλειδιού χρησιμοποιεί το Boneh-Lynn-Shacham (BLS) σχήμα υπογραφής. Το BLS επιτρέπει μια πολύ αποτελεσματική συγκέντρωση υπογραφών, αλλά επιτρέπει επίσης την αντίστροφη μηχανική των συγκεντρωμένων μεμονωμένων κλειδιών επικυρωτή και είναι ιδανικό για τη διαχείριση ενεργειών μεταξύ επικυρωτών.
Οι δύο τύποι κλειδιών επικυρωτή
Πριν από τη μετάβαση στην απόδειξη συμμετοχής, οι χρήστες του Ethereum είχαν μόνο ένα ιδιωτικό κλειδί με βάση την ελλειπτική καμπύλη για να έχουν πρόσβαση στα κεφάλαιά τους. Με την εισαγωγή της Απόδειξη συμμετοχής, οι χρήστες που ήθελαν να κάνουν μεμονωμένα αποθήκευση κεφαλαίου, απαιτούσαν επίσης ένα κλειδί επικυρωτή και ένα κλειδί ανάληψης.
Το κλειδί του επικυρωτή σας
Το κλειδί υπογραφής επικυρωτή αποτελείται από δύο στοιχεία:
- Ιδιωτικό κλειδί επικυρωτή
- Δημόσιο κλειδί επικυρωτή
Ο σκοπός του ιδιωτικού κλειδιού επικυρωτή είναι να υπογράφει ενέργειες on-chain όπως προτάσεις μπλοκ και βεβαιώσεις. Εξαιτίας αυτού, αυτά τα κλειδιά πρέπει να φυλάσσονται σε ένα πορτοφόλι άμεσα προσβάσιμο.
Αυτή η ευελιξία έχει το πλεονέκτημα της πολύ γρήγορης μετακίνησης των κλειδιών υπογραφής επικυρωτή από τη μία συσκευή στην άλλη, ωστόσο, εάν έχουν χαθεί ή κλαπεί, ένας κλέφτης μπορεί να ενεργήσει κακόβουλα με μερικούς τρόπους:
- Να προκαλέσει την τιμωρία του επικυρωτή με:
- Το να είναι προτείνων και να υπογράφει δύο διαφορετικά μπλοκ beacon για το ίδιο slot
- Το να κάνει επιβεβαίωση και να υπογράφει μια βεβαίωση που «περιβάλλει» μια άλλη
- Το να κάνει επιβεβαίωση και να υπογράφει δύο διαφορετικές βεβαιώσεις που έχουν τον ίδιο στόχο
- Να επιβάλει μια εκούσια έξοδο, η οποία σταματά τον επικυρωτή από την αποθήκευση κεφαλαίου και να δίνει πρόσβαση στο υπόλοιπο ETH του στον κάτοχο του κλειδιού ανάληψης
Το δημόσιο κλειδί επικυρωτή περιλαμβάνεται στα δεδομένα συναλλαγής όταν ένας χρήστης καταθέτει ETH στο συμβόλαιο κατάθεσης αποθήκευσης κεφαλαίου. Αυτό είναι γνωστό ως δεδομένα κατάθεσης και επιτρέπει στο Ethereum να αναγνωρίζει τον επικυρωτή.
Πιστοποιητικά ανάληψης
Κάθε επικυρωτής έχει μια ιδιότητα γνωστή ως στοιχεία ανάληψης. Αυτό το πεδίο 32 byte ξεκινά είτε με 0x00
, που αντιπροσωπεύει στοιχεία ανάληψης BLS, είτε με 0x01
, που αντιπροσωπεύει στοιχεία που δείχνουν σε μια διεύθυνση εκτέλεσης.
Οι επικυρωτές με κλειδιά BLS 0x00
πρέπει να ενημερώσουν αυτά τα στοιχεία ώστε να δείχνουν σε μια διεύθυνση εκτέλεσης για να ενεργοποιήσουν τις πληρωμές υπερβάλλοντος ισοζυγίου ή την πλήρη ανάληψη από το αποθηκευμένο κεφάλαιο. Αυτό μπορεί να γίνει παρέχοντας μια διεύθυνση εκτέλεσης στα δεδομένα κατάθεσης κατά τη διάρκεια της αρχικής δημιουργίας κλειδιού, Ή χρησιμοποιώντας το κλειδί ανάληψης αργότερα για να υπογράψει και να μεταδώσει ένα μήνυμα BLSToExecutionChange
.
Το κλειδί ανάληψης
Το κλειδί ανάληψης θα απαιτείται για την ενημέρωση των στοιχείων ανάληψης ώστε να δείχνουν σε μια διεύθυνση εκτέλεσης, εάν δεν έχει οριστεί κατά την αρχική κατάθεση. Αυτό θα επιτρέψει την έναρξη επεξεργασίας των πληρωμών υπερβάλλοντος ισοζυγίου και θα επιτρέψει επίσης στους χρήστες να κάνουν πλήρη ανάληψη του αποθηκευμένου κεφαλαίου ETH τους.
Όπως και τα κλειδιά επικυρωτή, τα κλειδιά ανάληψης αποτελούνται επίσης από δύο στοιχεία:
- Ιδιωτικό κλειδί ανάληψης
- Δημόσιο κλειδί ανάληψης
Η απώλεια αυτού του κλειδιού πριν την ενημέρωση των στοιχείων ανάληψης σε τύπο 0x01
σημαίνει απώλεια πρόσβασης στο υπόλοιπο του επικυρωτή. Ο επικυρωτής μπορεί ακόμα να υπογράφει βεβαιώσεις και μπλοκ καθώς αυτές οι ενέργειες απαιτούν το ιδιωτικό κλειδί του επικυρωτή, ωστόσο υπάρχει μικρό ή καθόλου κίνητρο εάν χαθούν τα κλειδιά ανάληψης.
Ο διαχωρισμός των κλειδιών επικυρωτή από τα κλειδιά λογαριασμού Ethereum, επιτρέπει τη λειτουργία πολλαπλών επικυρωτών από έναν μόνο χρήστη.
Παράγωγη Κλειδιών από Μυστική Φράση
Εάν κάθε 32 ETH που αποθηκεύονται απαιτούσαν ένα νέο σύνολο δύο εντελώς ανεξάρτητων κλειδιών, η διαχείριση κλειδιών θα γινόταν γρήγορα δύσχρηστη, ειδικά για χρήστες που εκτελούν πολλούς επικυρωτές. Αντίθετα, πολλαπλά κλειδιά επικυρωτή μπορούν να παραχθούν από ένα ενιαίο κοινό μυστικό και η αποθήκευση αυτού του ενιαίου μυστικού επιτρέπει την πρόσβαση σε πολλαπλά κλειδιά επικυρωτή.
Τα μνημονικά και οι διαδρομές είναι σημαντικά χαρακτηριστικά που συναντούν συχνά οι χρήστες όταν έχουν πρόσβαση στα πορτοφόλια τους. Το μνημονικό είναι μια ακολουθία λέξεων που λειτουργεί ως αρχικός σπόρος για ένα ιδιωτικό κλειδί. Όταν συνδυάζεται με πρόσθετα δεδομένα, το μνημονικό δημιουργεί ένα αναγνωριστικό γνωστό ως «κύριο κλειδί». Αυτό μπορεί να θεωρηθεί ως η ρίζα ενός δέντρου. Κλαδιά από αυτή τη ρίζα μπορούν στη συνέχεια να παραχθούν χρησιμοποιώντας μια ιεραρχική διαδρομή, έτσι ώστε οι κόμβοι να μπορούν να υπάρχουν ως συνδυασμοί του αναγνωριστικού του γονικού κόμβου και της θέσης τους στο δέντρο. Διαβάστε για τα πρότυπα BIP-32 και BIP-19 για τη δημιουργία κλειδιών με βάση μνημονικά.
Αυτές οι διαδρομές έχουν την ακόλουθη δομή, η οποία θα είναι γνωστή στους χρήστες που έχουν αλληλεπιδράσει με συσκευή πορτοφολιού:
1m/44'/60'/0'/0`
Οι διαδρομές σε αυτήν τη διαδρομή διαχωρίζουν τα συστατικά του ιδιωτικού κλειδιού ως εξής:
1master_key / purpose / coin_type / account / change / address_index
Αυτή η λογική επιτρέπει στους χρήστες να συνδέσουν όσο το δυνατόν περισσότερους επικυρωτές σε μια ενιαία φράση μνημονικού, επειδή η ρίζα του δέντρου μπορεί να είναι κοινή και η διάκριση μπορεί να συμβεί στα κλαδιά. Ο χρήστης μπορεί να παράγει οποιοδήποτε αριθμό κλειδιών από τη φράση μνημονικού.
1 [m / 0]2 /3 /4[m] - [m / 1]5 \6 \7 [m / 2]
Κάθε κλαδί χωρίζεται από ένα /
, οπότε το m/2
σημαίνει ξεκινήστε από το κύριο κλειδί και ακολουθήστε το κλαδί 2. Στο παρακάτω σχήμα χρησιμοποιείται μια ενιαία φράση μνημονικού για να αποθηκευτούν τρία κλειδιά ανάληψης, καθένα με δύο συσχετισμένους επικυρωτές.