Τι είναι το honeypot σε μία πρόταση;
Το honeypot είναι ένα token όπου το contract σου επιτρέπει την αγορά, αλλά την πώληση την καθιστά τεχνικά αδύνατη ή τη βαραίνει με τόσο υψηλή προμήθεια που από την πώληση δεν σου μένει σχεδόν τίποτα. Στο γράφημα μοιάζει με πύραυλο που μόνο ανεβαίνει, επειδή σχεδόν κανείς δεν μπορεί να πουλήσει.
Σημαντικό: σε αυτό το κείμενο περιγράφουμε γενικά μοτίβα στον κώδικα και στα δεδομένα, όχι συγκεκριμένα projects. Δεν λέμε ότι οποιοδήποτε token είναι απάτη. Δείχνουμε πώς λειτουργεί ο μηχανισμός και πώς μπορεί κάποιος να τον ελέγξει μόνος του. Η μηχανική που παρουσιάζουμε εδώ βασίζεται στη δημόσια τεκμηρίωση του προτύπου ERC-20, της γλώσσας Solidity και στην τεκμηρίωση των αποκεντρωμένων ανταλλακτηρίων (Uniswap, PancakeSwap), στην οποία παραπέμπουμε στις πηγές.
Πώς το κάνει τεχνικά το contract;
Ένα token σε αλυσίδες EVM (Ethereum, BNB Chain και παρόμοιες) είναι απλώς ένα smart contract. Σύμφωνα με το πρότυπο ERC-20, η μεταφορά του token περνάει από τη συνάρτηση transfer ή transferFrom (βλ. τεκμηρίωση ERC-20 και OpenZeppelin στις πηγές). Μέσα στο σώμα αυτής της συνάρτησης ο δημιουργός μπορεί να γράψει στη Solidity οποιεσδήποτε συνθήκες. Η αγορά και η πώληση δεν είναι δύο διαφορετικές συναρτήσεις, είναι απλώς μεταφορές μεταξύ του πορτοφολιού σου και του ζεύγους ρευστότητας (για παράδειγμα στο Uniswap ή στο PancakeSwap, τη μηχανική των ζευγών των οποίων περιγράφει η τεκμηρίωσή τους). Αυτό είναι το κλειδί: το contract μπορεί να διακρίνει αν τα tokens φεύγουν προς το ζεύγος ρευστότητας (πώληση) ή από το ζεύγος προς εσένα (αγορά), και να συμπεριφερθεί ανάλογα διαφορετικά.
Τα πιο συχνά μοτίβα που εμφανίζονται σε τέτοια contracts:
| Μοτίβο | Τι κάνει | Πώς εκδηλώνεται |
|---|---|---|
| Blacklist / whitelist | Μόνο επιτρεπόμενες διευθύνσεις μπορούν να μεταφέρουν | Η πώλησή σου κάνει revert (αποτυγχάνει) |
| Ασύμμετρος φόρος | Αγορά 0 %, πώληση 99 % | Πουλάς, αλλά παίρνεις ψίχουλα |
| Μπλοκάρισμα κατά την πώληση προς το ζεύγος | require που αποτυγχάνει όταν παραλήπτης είναι το liquidity pool |
Η πώληση δεν περνάει καθόλου |
| Μεταβλητό flag | Ο δημιουργός απενεργοποιεί εκ των υστέρων το trading | Η αγορά λειτούργησε, η πώληση αργότερα σταμάτησε |
| Max transaction / cooldown | Όριο τόσο χαμηλό που η πώληση δεν περνάει | Η συναλλαγή κάνει revert στο όριο |
Το κοινό είναι ότι η λογική είναι υπό συνθήκη και μεταβλητή. Το contract δεν χρειάζεται να είναι honeypot από την αρχή. Μπορεί να γίνει τη στιγμή που ο δημιουργός καλέσει μια συνάρτηση που περιορίζει το trading.
Πώς φαίνεται με συγκεκριμένο νούμερο;
Ας φανταστούμε ένα απλοποιημένο, καθαρά ενδεικτικό παράδειγμα (δεν πρόκειται για μετρημένα δεδομένα). Βάζεις στο contract 1 ETH και αγοράζεις 1.000.000 tokens. Η αγορά περνάει χωρίς προβλήματα, επειδή ο φόρος αγοράς είναι ρυθμισμένος στο 0 %.
Έπειτα προσπαθείς να πουλήσεις αυτά τα 1.000.000 tokens πίσω. Προκύπτουν δύο τυπικές καταστάσεις:
- Σκληρό honeypot: η συναλλαγή δεν περνάει καθόλου. Το πορτοφόλι δηλώνει ότι η συναλλαγή απέτυχε (revert). Τα tokens σου μένουν, ETH δεν παίρνεις.
- Μαλακό honeypot (φορολογικό): η πώληση περνάει, αλλά ο φόρος πώλησης είναι 99 %. Από την αξία που αντιστοιχεί σε 1 ETH σου έρχεται στον λογαριασμό το ισοδύναμο 0,01 ETH. Τυπικά "μπόρεσες να πουλήσεις", στην πραγματικότητα έχασες σχεδόν τα πάντα.
Η διαφορά μεταξύ αυτών των δύο είναι σημαντική: το μαλακό honeypot συχνά περνάει το επιφανειακό test, επειδή η πώληση τεχνικά λειτουργεί. Μόνο η ματιά στο τελικό ποσό δείχνει ότι ο φόρος κατάπιε σχεδόν ολόκληρο το υπόλοιπο.
Πώς μπορεί κάποιος να το ελέγξει πριν την αγορά;
Υπάρχουν αρκετές διαδικασίες που δουλεύουν μόνο με δημόσια διαθέσιμα δεδομένα. Τις περιγράφουμε ως εργαλεία επαλήθευσης, όχι ως εγγύηση.
1. Προσομοίωση πώλησης
Ορισμένα εργαλεία (honeypot checkers, ή προσομοιωτές συναλλαγών) εκτελούν σε δοκιμαστικό περιβάλλον μια προσομοιωμένη αγορά και αμέσως πώληση και μετρούν πόσα θα επέστρεφαν. Η έξοδος συνήθως είναι ο εκτιμώμενος φόρος αγοράς, ο φόρος πώλησης και η πληροφορία αν η πώληση περνάει καθόλου. Περιορισμός: η προσομοίωση βασίζεται στην τρέχουσα κατάσταση του contract. Αν ο δημιουργός αλλάξει τη λογική αργότερα, το αποτέλεσμα μπορεί να μην ισχύει πια.
2. Ανάγνωση επαληθευμένου πηγαίου κώδικα
Στον block explorer (για παράδειγμα Etherscan για το Ethereum ή BscScan για το BNB Chain, βλ. πηγές) στα επαληθευμένα contracts φαίνεται ο κώδικας Solidity. Παρακολουθούμενα μοτίβα:
- συναρτήσεις που αλλάζουν φόρους ή κανόνες συναλλαγών μετά το deployment,
- συνθήκες
requireμέσα στη μεταφορά που διαφέρουν για αγορά και πώληση, - ρόλοι τύπου
onlyOwnerπου επιτρέπουν στον ιδιοκτήτη μονομερή παρέμβαση, - λίστες διευθύνσεων (
_isBlacklistedκαι παρόμοια).
Αν το contract δεν είναι επαληθευμένο (ο πηγαίος κώδικας δεν έχει δημοσιευτεί), δεν μπορείς να διαβάσεις τι κάνει. Αυτό από μόνο του δεν αποτελεί απόδειξη τίποτα, αλλά είναι πληροφορία για το τι δεν γνωρίζεις.
3. Ματιά στις πραγματικές πωλήσεις στην αλυσίδα
Στο ιστορικό συναλλαγών του ζεύγους μπορείς να διαπιστώσεις αν έχει καν κάποιος πουλήσει επιτυχώς. Όταν εκεί υπάρχουν πολλές αγορές και σχεδόν καθόλου πωλήσεις, είναι ένα μοτίβο που αξίζει προσοχή. Αντίθετα, μια σειρά κανονικών πωλήσεων από διάφορες διευθύνσεις είναι ένδειξη ότι η πώληση εκείνη τη στιγμή λειτουργούσε.
4. Ποιος κατέχει και ποιος μπορεί να αλλάξει
Χρήσιμο είναι να δεις την κατανομή των κατόχων και το αν η ιδιοκτησία του contract έχει αποποιηθεί (renounced), ή αν ο ιδιοκτήτης έχει ακόμη το δικαίωμα να αλλάξει παραμέτρους. Η αποποίηση της ιδιοκτησίας μειώνει τον κίνδυνο μεταγενέστερης αλλαγής των κανόνων, αλλά δεν αποκλείει ότι η λογική honeypot είναι ήδη μόνιμα στον κώδικα.
Γιατί ούτε ένα καθαρό test δεν είναι εγγύηση;
Επειδή η κατάσταση του contract είναι μεταβλητή στον χρόνο. Τρεις συγκεκριμένες παγίδες:
- Χρονισμένη αλλαγή: αγορά και πώληση λειτουργούν σήμερα, αύριο ο δημιουργός καλεί μια συνάρτηση που μπλοκάρει την πώληση.
- Φόροι κατωφλίου: ο φόρος αυξάνεται μόνο αφού επιτευχθεί κάποιος όγκος ή αριθμός κατόχων.
- Proxy contracts: η λογική μπορεί να αντικατασταθεί μέσω ενός αναβαθμίσιμου proxy, οπότε ο κώδικας που διάβασες μπορεί να μην είναι πια αυτός που εκτελείται.
Γι' αυτό ισχύει ότι το test λέει πώς συμπεριφέρθηκε το contract τη στιγμή του test, όχι πώς θα συμπεριφερθεί αργότερα. Ακριβώς εξαιτίας αυτών των παγίδων θεωρούμε το αποτέλεσμα της προσομοίωσης και της ανάγνωσης του κώδικα ισχυρή ένδειξη, όχι βεβαιότητα.
Τι πρέπει να ξέρεις τώρα και τι παραμένει αβέβαιο
Μετά από αυτό το μάθημα θα πρέπει να είσαι σε θέση να:
- εξηγήσεις γιατί το contract μπορεί να διακρίνει την αγορά από την πώληση,
- ονομάσεις τα βασικά μοτίβα honeypot (blacklist, ασύμμετρος φόρος, μπλοκάρισμα πώλησης, μεταβλητό flag),
- διακρίνεις το σκληρό honeypot (η πώληση δεν περνάει) από το μαλακό (η πώληση περνάει, αλλά ο φόρος παίρνει σχεδόν τα πάντα),
- εκτελέσεις τρεις επαληθεύσεις: προσομοίωση πώλησης, ανάγνωση επαληθευμένου κώδικα και έλεγχο πραγματικών πωλήσεων στην αλυσίδα.
Τι παραμένει αβέβαιο και δεν μπορεί να διαπιστωθεί αξιόπιστα εκ των προτέρων: πώς θα συμπεριφερθεί ο δημιουργός στο μέλλον, αν θα αλλάξει τις παραμέτρους, και αν πίσω από ένα proxy contract δεν θα αντικαταστήσει τη λογική. Κανένα εργαλείο δεν δίνει εκατό τοις εκατό βεβαιότητα, επειδή δουλεύει με την παρελθούσα και την παρούσα κατάσταση, όχι με τη μελλοντική πρόθεση.
Αυτό δεν είναι σύσταση για το τι να κάνεις με τα χρήματά σου. Είναι μια περιγραφή της μηχανικής και των μεθόδων επαλήθευσης, ώστε να αποφασίζεις με ανοιχτά μάτια.

