Δοκιμή και επίσημη επαλήθευση για την ασφάλεια έξυπνων συμβάσεων Web3

Δοκιμή και επίσημη επαλήθευση για την ασφάλεια έξυπνων συμβάσεων Web3

Δοκιμή και επίσημη επαλήθευση για Web3 Smart Contract Security Intelligence δεδομένων PlatoBlockchain. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Ώρα ανάγνωσης: 9 πρακτικά

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

1. Η ασφάλεια είναι πάντα απαραίτητη.

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

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

  1. Έξυπνη δοκιμή συμβολαίου
  2. Επίσημη Επαλήθευση Έξυπνων Συμβάσεων

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

2. Έξυπνη δοκιμή συμβάσεων

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

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

2.1 Αυτοματοποιημένο

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

2.1.1. Λειτουργική δοκιμή

Ας υποθέσουμε ότι γράφετε ένα πρόγραμμα για να πάρει δύο αριθμούς, τον a και τον b και μετά επιστρέφετε την πρόσθεση και των δύο αριθμών. Έτσι, για να ελέγξετε αυτό το πρόγραμμα, δίνετε 2 και 8 και τροφοδοτείτε το αναμενόμενο αποτέλεσμα να είναι 10. Τώρα όταν το πρόγραμμα εκτελείται, θα πρέπει να επιστρέψει επίσης 10. Εάν το κάνει, τότε λειτουργεί καλά και ο κωδικός μας είναι σωστός, αλλά αν όχι, τότε υπάρχει κάποιο σφάλμα με τον κώδικά μας. 

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

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

2.1.2. Στατική Ανάλυση

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

2.1.3. Δυναμική Ανάλυση

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

Εγχειρίδιο 2.2

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

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

2.2.1 Έλεγχοι κωδικών:- 

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

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

2.2.2 Bug Bounty:-

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

3. Επίσημη Επαλήθευση Έξυπνων Συμβάσεων

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

3.1 Ποια είναι η επίσημη προδιαγραφή;

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

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

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

3.1.1 Προδιαγραφές

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

// Specification: Adds two numbers
// Inputs: a, b (uint)
// Outputs: the sum of a and b (uint) function add(uint a, uint b) public view returns (uint) {
// Implementation details are not relevant to the specification
// …
}

3.1.2 Μοντέλο

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

// Model: Adds two numbers
// Inputs: a, b (uint)
// Outputs: the sum of a and b (uint) function add(uint a, uint b) public view returns (uint) {
return a + b;
}

3.1.3 Μηχανή επαλήθευσης

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

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

Remix IDE: ένα ολοκληρωμένο περιβάλλον ανάπτυξης που περιλαμβάνει ένα επίσημο εργαλείο επαλήθευσης που μπορεί να επαληθεύσει την ορθότητα των έξυπνων συμβολαίων.

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

pragma solidity 0.7.6; // Model: Adds two numbers
// Inputs: a, b (uint)
// Outputs: the sum of a and b (uint)
function add(uint a, uint b) public pure returns (uint) {
return a + b;
} // Model: Adds two numbers
// Inputs: a, b (uint)
// Outputs: the sum of a and b (uint) function add(uint a, uint b) public pure returns (uint) {
return a + b;
} // Specification: Adds two numbers
// Inputs: a, b (uint)
// Outputs: the sum of a and b (uint) function test_add(uint a, uint b) public pure returns (bool) {
uint expected = a + b;
uint actual = add(a, b);
return expected == actual;
} // Verification: Verify the correctness of the add function contract TestAdd {
function test_add(uint a, uint b) public view returns (bool) {
return CertoraProver.verify(test_add, a, b);
}
}

Στο παραπάνω παράδειγμα, ορίζουμε ένα έξυπνο συμβόλαιο Solidity που περιλαμβάνει ένα μοντέλο της συνάρτησης προσθήκης, μια προδιαγραφή για τη συνάρτηση και μια μηχανή επαλήθευσης (Certora Prover) που μπορεί να επαληθεύσει την ορθότητα της συνάρτησης. Ορίζουμε επίσης μια δοκιμαστική συνάρτηση (test_add) που μπορεί να χρησιμοποιηθεί για την επαλήθευση της ορθότητας της συνάρτησης.

3.2 Δοκιμή έναντι επίσημης επαλήθευσης

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

3.3 Τεχνικές για επίσημη επαλήθευση

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

3.3.1 Έλεγχος μοντέλου

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

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

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

3.3.2 Απόδειξη Θεωρήματος

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

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

4. Σύναψη

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

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

28 Προβολές

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

Περισσότερα από Quillhash