Smart contracts: όταν ο κώδικας εκτελεί τους κανόνες
Το blockchain αρχικά συνδεόταν κυρίως με τη μεταφορά ψηφιακής αξίας. Το Bitcoin απέδειξε ότι είναι δυνατό να στέλνει κανείς χρήματα μέσω του διαδικτύου χωρίς να χρειάζεται κάθε συναλλαγή να επιβεβαιώνεται από τράπεζα ή άλλον κεντρικό φορέα. Το blockchain όμως μπορεί να διαχειρίζεται κάτι περισσότερο από την πληροφορία του ποιος έστειλε τι σε ποιον. Μπορεί επίσης να αποθηκεύει και να εκτελεί προκαθορισμένους κανόνες.
Ακριβώς εδώ μπαίνουν στο παιχνίδι τα smart contracts: προγράμματα που τρέχουν απευθείας πάνω στο blockchain και, μόλις πληρωθούν οι προκαθορισμένες προϋποθέσεις, εκτελούν μια συγκεκριμένη ενέργεια. Μπορούν, για παράδειγμα, να μεταφέρουν ένα token, να ανταλλάξουν ψηφιακά περιουσιακά στοιχεία, να διαχειριστούν την εξασφάλιση ενός δανείου ή να εκδώσουν ένα NFT.
Χάρη στα smart contracts το blockchain εξελίχθηκε από μια τεχνολογία που προοριζόταν κυρίως για τη μεταφορά κρυπτονομισμάτων σε ένα περιβάλλον πάνω στο οποίο μπορούν να λειτουργούν ολόκληρες εφαρμογές. Πίσω τους βρίσκονται, μεταξύ άλλων, τα αποκεντρωμένα ανταλλακτήρια, το DeFi, τα stablecoins, τα NFT ή τα tokenized περιουσιακά στοιχεία.
Τι είναι το smart contract
Η ονομασία smart contract μπορεί να είναι κάπως παραπλανητική. Δεν πρόκειται απαραίτητα για σύμβαση με τη νομική έννοια του όρου και σίγουρα δεν πρόκειται για πρόγραμμα που είναι «έξυπνο» με τον τρόπο που είναι η τεχνητή νοημοσύνη.
Το smart contract είναι στην ουσία του ένα πρόγραμμα αποθηκευμένο στο blockchain, το οποίο περιέχει προκαθορισμένους κανόνες και εκτελεί βάσει αυτών συγκεκριμένες λειτουργίες.
Στο Ethereum το smart contract έχει τη δική του διεύθυνση στο blockchain, περιέχει τον κώδικά του και ταυτόχρονα δεδομένα που αντιπροσωπεύουν την τρέχουσα κατάστασή του. Μπορεί, για παράδειγμα, να κρατά κρυπτονομίσματα ή tokens, ενώ οι χρήστες μπορούν να επικοινωνούν μαζί του μέσω συναλλαγών στο blockchain. Στη συνέχεια το contract εκτελεί τη λειτουργία που είναι προγραμματισμένη στον κώδικά του.
Εάν ισχύσει η προϋπόθεση Α → εκτέλεσε την ενέργεια Β.
Για παράδειγμα:
- – Εάν ο χρήστης στείλει το απαιτούμενο ποσό → δώσε του το token.
- – Εάν η αξία της εξασφάλισης πέσει κάτω από το καθορισμένο όριο → ξεκίνησε τη ρευστοποίηση.
Το smart contract επομένως δεν προσπαθεί να κατανοήσει την πρόθεση του χρήστη. Απλώς εκτελεί τους κανόνες που έχει προγραμματισμένους.
Το smart contract ως αυτόματος πωλητής
Μία από τις απλούστερες παρομοιώσεις για το smart contract είναι ο αυτόματος πωλητής. Όταν πλησιάζουμε σε έναν τέτοιο, δεν χρειάζεται να διαπραγματευτούμε με κάποιον πωλητή. Βάζουμε το σωστό ποσό, επιλέγουμε προϊόν και το μηχάνημα, σύμφωνα με τους δικούς του κανόνες, μας δίνει το εμπόρευμα.
χρήματα + επιλογή προϊόντος = παράδοση προϊόντος
Αν βάλουμε λιγότερα χρήματα, η προϋπόθεση δεν πληρούται και το μηχάνημα δεν εκτελεί τη ζητούμενη ενέργεια. Αν οι προϋποθέσεις πληρούνται, δεν χρειάζεται κάποιος άλλος να αποφασίσει χειροκίνητα αν δικαιούμαστε το εμπόρευμα.
Το smart contract λειτουργεί με παρόμοιο τρόπο. Η διαφορά είναι ότι αντί για φυσικό μηχάνημα έχουμε ένα πρόγραμμα αποθηκευμένο στο blockchain και αντί για ένα κουτάκι αναψυκτικό το αποτέλεσμα μπορεί να είναι, για παράδειγμα, η μεταφορά κρυπτονομίσματος, η έκδοση ενός token ή η εκτέλεση μιας χρηματοοικονομικής πράξης.
Το smart contract δεν αποφασίζει. Εκτελεί.
Τι πρόβλημα λύνουν τα smart contracts
Στο παραδοσιακό χρηματοοικονομικό ή εμπορικό σύστημα χρειαζόμαστε συχνά κάποια μορφή μεσάζοντα.
Ας φανταστούμε μια συναλλαγή ανάμεσα σε δύο ανθρώπους που δεν γνωρίζονται μεταξύ τους. Ο ένας πρέπει να πληρώσει τα χρήματα και ο άλλος στη συνέχεια να παραδώσει ένα συγκεκριμένο περιουσιακό στοιχείο. Προκύπτει ένα απλό πρόβλημα εμπιστοσύνης.
Ποιος πρέπει να εκπληρώσει πρώτος το δικό του μέρος της συμφωνίας;
Ακριβώς γι' αυτό στον κλασικό κόσμο υπάρχουν τράπεζες, χρηματιστήρια, θεματοφύλακες, εταιρείες πληρωμών ή άλλοι φορείς που ελέγχουν τους κανόνες, κρατούν τα κεφάλαια και διασφαλίζουν τον διακανονισμό των συναλλαγών.
Το smart contract επιτρέπει να μεταφερθεί μέρος αυτού του ρόλου σε ένα πρόγραμμα.
Ας φανταστούμε, για παράδειγμα, την ανταλλαγή ενός ψηφιακού περιουσιακού στοιχείου έναντι 1.000 USDC. Ο αγοραστής καταθέτει στο smart contract 1.000 USDC. Ο πωλητής καταθέτει το ζητούμενο ψηφιακό περιουσιακό στοιχείο. Το smart contract ελέγχει αν πληρούνται και οι δύο προϋποθέσεις. Αν ναι, στέλνει το περιουσιακό στοιχείο στον αγοραστή και τα USDC στον πωλητή.
Σε μια τέτοια περίπτωση η μία πλευρά δεν χρειάζεται να εμπιστευτεί τυφλά ότι η άλλη, αφού λάβει τα κεφάλαια, θα εκπληρώσει πράγματι την υποχρέωσή της. Οι κανόνες του διακανονισμού αποτελούν μέρος του προγράμματος.
Αυτό φυσικά δεν σημαίνει ότι τα smart contracts εξάλειψαν εντελώς τους μεσάζοντες. Μπορούν όμως να αυτοματοποιήσουν ορισμένες δραστηριότητες που παλαιότερα απαιτούσαν ξεχωριστό διαχειριστή ή θεσμικό φορέα.

Το Ethereum και το προγραμματίσιμο blockchain
Το Bitcoin υποστηρίζει μια ορισμένη προγραμματίσιμη λογική, η βασική του λειτουργία όμως παραμένει η ασφαλής μεταφορά και διαφύλαξη ψηφιακής αξίας.
Το Ethereum επέκτεινε σημαντικά αυτή την ιδέα. Το blockchain του σχεδιάστηκε έτσι ώστε να είναι δυνατή η λειτουργία γενικότερων προγραμμάτων πάνω σε αυτό. Τα smart contracts στο Ethereum μπορούν σήμερα να γράφονται, για παράδειγμα, σε γλώσσες προγραμματισμού όπως η Solidity ή η Vyper και, μετά την ανάπτυξή τους, τα εκτελεί το δίκτυο Ethereum.
Για παράδειγμα, ένας χρήστης καταθέτει ETH σε ένα δανειοδοτικό πρωτόκολλο, το smart contract υπολογίζει την αξία της εξασφάλισης, επιτρέπει να δανειστεί κανείς έναντι αυτής ένα stablecoin και στη συνέχεια ελέγχει διαρκώς αν η εξασφάλιση εξακολουθεί να πληροί τις απαιτούμενες προϋποθέσεις.
Ακριβώς αυτή η προγραμματισιμότητα δημιούργησε τη βάση για μεγάλο μέρος του σημερινού οικοσυστήματος αποκεντρωμένων εφαρμογών.
Η χρήση των smart contracts έχει κόστος
Μολονότι το smart contract μπορεί να αυτοματοποιήσει μέρος μιας διαδικασίας, η εκτέλεσή του δεν είναι δωρεάν.
Κάθε λειτουργία που εκτελείται από το blockchain απαιτεί ορισμένους υπολογιστικούς πόρους. Στο Ethereum το κόστος αυτής της εργασίας ονομάζεται gas.
Ο χρήστης επομένως δεν πληρώνει μόνο για μια κλασική μεταφορά ETH. Προμήθεια πληρώνεται και κατά την επικοινωνία με smart contracts. Η ανάπτυξη ενός νέου smart contract είναι από μόνη της μια συναλλαγή στο blockchain και κατά κανόνα απαιτεί περισσότερο gas από μια απλή μεταφορά κρυπτονομίσματος.
Γι' αυτό το κόστος διαφορετικών λειτουργιών μπορεί να διαφέρει σημαντικά. Μια απλή μεταφορά token μπορεί να απαιτεί λιγότερη υπολογιστική εργασία από μια σύνθετη λειτουργία σε μια αποκεντρωμένη χρηματοοικονομική εφαρμογή, η οποία μέσα σε μία συναλλαγή επικοινωνεί με αρκετά διαφορετικά smart contracts.
Ακριβώς το υψηλότερο κόστος και η περιορισμένη χωρητικότητα του κύριου δικτύου συγκαταλέγονται στους λόγους ανάπτυξης των δικτύων Layer 2, τα οποία επιτρέπουν την αποδοτικότερη και φθηνότερη επεξεργασία πολλών λειτουργιών.
Τι δημιουργήθηκε χάρη στα smart contracts
Αποκεντρωμένα ανταλλακτήρια
Σε ένα κλασικό ανταλλακτήριο κρυπτονομισμάτων το σύστημα συναλλαγών το λειτουργεί μια συγκεκριμένη εταιρεία. Ένα αποκεντρωμένο ανταλλακτήριο, δηλαδή ένα DEX, μπορεί να διαχειρίζεται μέρος αυτής της διαδικασίας μέσω smart contracts.
Ο χρήστης, για παράδειγμα, συνδέει το πορτοφόλι του, επιλέγει το token που θέλει να ανταλλάξει και επιβεβαιώνει τη συναλλαγή. Το smart contract στη συνέχεια, σύμφωνα με τους κανόνες του, εκτελεί την ανταλλαγή και καθορίζει, για παράδειγμα:
- – πώς υπολογίζεται η τιμή,
- – πόσα tokens θα λάβει ο χρήστης,
- – πόσο υψηλή είναι η προμήθεια,
- – πώς γίνεται η διαχείριση της ρευστότητας,
- – πού θα σταλούν τα κεφάλαια.
Έτσι η ίδια η ανταλλαγή δεν χρειάζεται να πραγματοποιείται μέσα σε μια βάση δεδομένων που λειτουργεί ένα μεμονωμένο ανταλλακτήριο, αλλά μέσω κανόνων καταγεγραμμένων στο blockchain.
DeFi
Ακόμη πιο έντονος είναι ο ρόλος των smart contracts στα αποκεντρωμένα χρηματοοικονομικά, δηλαδή στο DeFi. Εδώ τα smart contracts μπορούν να διαχειρίζονται, για παράδειγμα:
- – δάνεια,
- – εξασφαλίσεις σε κρυπτονομίσματα,
- – ανταλλαγή περιουσιακών στοιχείων,
- – διαχείριση ρευστότητας,
- – παράγωγα,
- – καταβολή ανταμοιβών,
- – ορισμένες μορφές staking.
Σε ένα δάνειο εξασφαλισμένο με κρυπτονομίσματα το smart contract μπορεί να ορίσει την ελάχιστη αξία της εξασφάλισης και, σε περίπτωση πτώσης κάτω από το καθορισμένο όριο, να ξεκινήσει αυτόματα τη ρευστοποίηση. Έτσι τους κανόνες δεν χρειάζεται να τους ελέγχει χειροκίνητα κάποιος υπάλληλος ενός ιδρύματος.
Stablecoins
Τα smart contracts είναι σημαντικά και για τα stablecoins. Ένα token μπορεί με τη βοήθεια ενός smart contract να δημιουργείται, να μεταφέρεται ανάμεσα σε διευθύνσεις ή να αποσύρεται ξανά από την κυκλοφορία.
Σε ορισμένα πιο αποκεντρωμένα συστήματα stablecoin τα smart contracts διαχειρίζονται επιπλέον την εξασφάλιση σε κρυπτονομίσματα και ελέγχουν αυτόματα αν η αξία της παραμένει επαρκής.
Το stablecoin είναι περιουσιακό στοιχείο. Το smart contract είναι ένα από τα εργαλεία που μπορούν να διαχειρίζονται τους κανόνες λειτουργίας του.
NFT
Και τα NFT βασίζονται τυπικά σε smart contracts. Το contract μπορεί να ορίζει:
- – πόσα NFT υπάρχουν,
- – σε ποιον ανήκει ένα συγκεκριμένο token,
- – πώς μπορεί να μεταβιβαστεί,
- – ποια στοιχεία ταυτοποίησης συνδέονται με αυτό,
- – ποιοι κανόνες ισχύουν γι' αυτό.
Η ίδια η εικόνα, η μουσική ή κάποιο άλλο μέσο δεν χρειάζεται ωστόσο να είναι αποθηκευμένα ολόκληρα απευθείας μέσα στο smart contract. Το contract όμως μπορεί να αποτελεί την εγγραφή στο blockchain για την κυριότητα του συγκεκριμένου token και τους κανόνες μεταβίβασής του.
Tokenization περιουσιακών στοιχείων
Τα smart contracts έχουν σημασία και στο tokenization. Ένα token στο blockchain μπορεί, υπό ορισμένες προϋποθέσεις, να αντιπροσωπεύει μερίδιο σε ένα άλλο περιουσιακό στοιχείο ή ένα συγκεκριμένο οικονομικό δικαίωμα. Μπορεί να πρόκειται, για παράδειγμα, για:
- – ομόλογο,
- – αμοιβαίο κεφάλαιο,
- – εμπόρευμα,
- – ακίνητο,
- – άλλο χρηματοπιστωτικό μέσο.
Το smart contract μπορεί τότε να διαχειρίζεται, για παράδειγμα, τις μεταβιβάσεις του token, τα δικαιώματα των επιμέρους χρηστών ή τον τρόπο κατανομής ορισμένων πληρωμών.
Εδώ όμως είναι σημαντικό να διακρίνουμε ανάμεσα στο ίδιο το token του blockchain και στο δικαίωμα που υποτίθεται ότι αντιπροσωπεύει. Το smart contract μπορεί να διαχειρίζεται το token, αλλά η νομική σχέση με το πραγματικό περιουσιακό στοιχείο εξαρτάται ακόμη από τη συγκεκριμένη δομή του προϊόντος και τους ισχύοντες κανόνες.
Τα smart contracts δεν αφορούν μόνο τα κρυπτονομίσματα
Η αρχή του smart contract μπορεί να αξιοποιηθεί και εκτός των αμιγώς κρυπτονομισματικών εφαρμογών.
Η IBM περιγράφει τα smart contracts ως έναν τρόπο αυτοματοποίησης διαδικασιών που βασίζονται στη λογική «εάν ή όταν ισχύσει μια συγκεκριμένη προϋπόθεση, εκτέλεσε μια συγκεκριμένη ενέργεια». Ως πιθανές χρήσεις αναφέρει, για παράδειγμα, την αποδέσμευση κεφαλαίων, την καταγραφή γεγονότων ή την ενεργοποίηση του επόμενου βήματος μιας ροής εργασίας.
Παρόμοια αρχή μπορεί να αξιοποιηθεί, για παράδειγμα, στην εφοδιαστική αλυσίδα. Ας φανταστούμε τη μεταφορά ενός συγκεκριμένου εμπορεύματος. Το σύστημα μπορεί να καταγράφει πληροφορίες για τα επιμέρους στάδια της μεταφοράς. Μετά την επιβεβαίωση της παράδοσης μπορεί να ακολουθήσει η αυτόματη ενεργοποίηση της επόμενης διαδικασίας, για παράδειγμα η αποδέσμευση της πληρωμής ή η αλλαγή της κατάστασης της παραγγελίας.
Η IBM αναφέρει παραδείγματα συστημάτων blockchain που χρησιμοποιούνται στην ιχνηλάτηση φαρμακευτικών προϊόντων, στη διευθέτηση των σχέσεων ανάμεσα σε προμηθευτές και πελάτες ή στον τομέα του διεθνούς εμπορίου.

Τα smart contracts ως ψηφιακό LEGO
Μία από τις πιο ενδιαφέρουσες ιδιότητες των smart contracts είναι η ικανότητά τους να συνεργάζονται μεταξύ τους.
Σε ένα δημόσιο blockchain οι εφαρμογές και τα smart contracts μπορούν να επικοινωνούν με ήδη αναπτυγμένα contracts και να αξιοποιούν τις λειτουργίες τους, παρόμοια με ανοιχτές διεπαφές λογισμικού. Η αρχή αυτή ονομάζεται composability, δηλαδή συνθεσιμότητα.
Ο απλούστερος τρόπος είναι να φανταστούμε τα επιμέρους smart contracts ως τουβλάκια LEGO. Κάθε τουβλάκι μπορεί να επιτελεί μια συγκεκριμένη λειτουργία. Το ένα διαχειρίζεται ένα stablecoin. Το δεύτερο ένα αποκεντρωμένο ανταλλακτήριο. Το τρίτο παρέχει δάνεια. Το τέταρτο συγκεντρώνει δεδομένα τιμών.
Ο προγραμματιστής μιας νέας εφαρμογής δεν χρειάζεται να δημιουργήσει όλες αυτές τις λειτουργίες από την αρχή. Μπορεί να χρησιμοποιήσει ορισμένα ήδη υπάρχοντα smart contracts ως δομικά στοιχεία.
Ας φανταστούμε, για παράδειγμα, μια εφαρμογή για την αυτόματη διαχείριση ενός χαρτοφυλακίου κρυπτονομισμάτων. Αυτή μπορεί:
- – να αξιοποιήσει ένα stablecoin που δημιουργήθηκε από άλλο πρωτόκολλο,
- – να λάβει την τιμή ενός περιουσιακού στοιχείου από έναν oracle,
- – να ανταλλάξει ένα token μέσω ενός αποκεντρωμένου ανταλλακτηρίου,
- – και στη συνέχεια να τοποθετήσει τα κεφάλαια σε ένα άλλο πρωτόκολλο DeFi.
Όλα αυτά μπορούν να συμβούν μέσω αρκετών αλληλοσυνδεόμενων smart contracts.
Ακριβώς η συνθεσιμότητα είναι ένας από τους λόγους για τους οποίους το οικοσύστημα των αποκεντρωμένων εφαρμογών μπορεί να αναπτύσσεται τόσο γρήγορα.
Έχει όμως και την άλλη της όψη. Αν μια εφαρμογή εξαρτάται από αρκετά άλλα smart contracts, ένα πρόβλημα σε ένα από αυτά μπορεί να μεταδοθεί παραπέρα. Έτσι το πλεονέκτημα της διασύνδεσης γίνεται ταυτόχρονα ένας νέος τύπος κινδύνου.
Το smart contract δεν βλέπει τον πραγματικό κόσμο
Το smart contract μπορεί να διαχειρίζεται πολύ καλά πληροφορίες που υπάρχουν απευθείας στο blockchain. Μπορεί, για παράδειγμα, να διαπιστώσει:
- – πόσα tokens κατέχει μια συγκεκριμένη διεύθυνση,
- – αν πραγματοποιήθηκε μια συγκεκριμένη συναλλαγή,
- – πόσα κεφάλαια είναι κατατεθειμένα σε ένα άλλο contract,
- – σε ποια κατάσταση βρίσκεται μια συγκεκριμένη εφαρμογή blockchain.
Από μόνο του όμως, υπό κανονικές συνθήκες, δεν μπορεί να διαπιστώσει τι συμβαίνει εκτός του blockchain. Δεν γνωρίζει, για παράδειγμα:
- – ποια είναι η τρέχουσα τιμή του χρυσού,
- – αν βρέχει σήμερα,
- – ποιος κέρδισε έναν αθλητικό αγώνα,
- – ποια είναι η ισοτιμία EUR/USD,
- – αν η αποστολή έφτασε πράγματι,
- – αν μια εταιρεία εκπλήρωσε μια συγκεκριμένη υποχρέωση.
Αν το smart contract χρειάζεται να εργαστεί με δεδομένα εκτός του blockchain, πρέπει να τα αποκτήσει μέσω άλλων συστημάτων. Ακριβώς εδώ μπαίνουν στο παιχνίδι τα oracles.
Oracles: η γέφυρα ανάμεσα στο blockchain και τον έξω κόσμο
Ο oracle παρέχει στο smart contract πληροφορίες που προέρχονται από έξω από το blockchain.
Ας φανταστούμε ξανά μια δανειοδοτική εφαρμογή. Ο χρήστης καταθέτει ETH αξίας 10.000 δολαρίων ως εξασφάλιση και δανείζεται έναντι αυτών ένα stablecoin. Το smart contract γνωρίζει την ποσότητα των ETH που είναι κατατεθειμένα στο σύστημα. Δεν γνωρίζει όμως αυτόματα πόσο κοστίζει εκείνη τη στιγμή ένα ETH σε δολάρια.
Αν πρέπει να παρακολουθεί την αξία της εξασφάλισης, χρειάζεται εξωτερικό στοιχείο τιμής. Αυτό μπορεί να το παρέχει ένας oracle. Χάρη σε αυτό το smart contract μπορεί να εργαστεί, για παράδειγμα, με τιμές χρηματοοικονομικών περιουσιακών στοιχείων, αποτελέσματα γεγονότων ή άλλα δεδομένα που προέρχονται από έξω από το blockchain.
Έτσι όμως προκύπτει ένα νέο πρόβλημα.
Τι γίνεται αν ο oracle δώσει λανθασμένη τιμή;
Ένα smart contract μπορεί να είναι προγραμματισμένο άψογα και παρ' όλα αυτά να εκτελέσει λάθος ενέργεια, αν λάβει εσφαλμένα δεδομένα εισόδου.
Για παράδειγμα, μια λανθασμένη τιμή ενός περιουσιακού στοιχείου μπορεί να οδηγήσει στο να ρευστοποιήσει το δανειοδοτικό σύστημα μια θέση που υπό κανονικές συνθήκες δεν θα ρευστοποιούνταν.
Το πρόβλημα αυτό ονομάζεται συχνά oracle problem. Η ασφάλεια του συστήματος επομένως δεν εξαρτάται μόνο από το ίδιο το smart contract, αλλά και από την ποιότητα και την αξιοπιστία των δεδομένων που χρησιμοποιεί.
Το smart contract κάνει ό,τι γράφει ο κώδικας
Ένα από τα μεγαλύτερα πλεονεκτήματα των smart contracts είναι η προβλεψιμότητα: αν το contract έχει σταθερά καθορισμένους κανόνες, τους εκτελεί χωρίς δική του κρίση. Ταυτόχρονα αυτή είναι και μία από τις μεγαλύτερες αδυναμίες τους. Το πρόγραμμα δεν γνωρίζει τι σκόπευε ο προγραμματιστής, μόνο τι πραγματικά προγραμμάτισε.
Γι' αυτό η ασφάλεια είναι εξαιρετικά σημαντική κατά την ανάπτυξη smart contracts. Τα προγράμματα αυτά διαχειρίζονται συχνά πραγματικά ψηφιακά περιουσιακά στοιχεία και ένα σφάλμα μπορεί να έχει άμεσες οικονομικές συνέπειες. Σημαντικό ρόλο παίζουν επομένως οι δοκιμές, ο έλεγχος ασφαλείας και ο έλεγχος (audit) πριν ακόμη αναπτυχθεί το contract στο κύριο δίκτυο.
Η ιστορία των κρυπτονομισμάτων δείχνει ότι ένα σφάλμα σε ένα smart contract δεν είναι απαραίτητα μόνο θεωρητικό πρόβλημα.
Μία από τις πιο γνωστές περιπτώσεις ήταν το έργο The DAO το 2016. Ένα σφάλμα στο smart contract του χρησιμοποιήθηκε κακόβουλα για την άντληση περίπου 3,6 εκατομμυρίων ETH. Το γεγονός πυροδότησε στη συνέχεια μια εξαιρετικά περίπλοκη συζήτηση για το αν και πώς έπρεπε να αντιδράσει το Ethereum στο περιστατικό και τελικά συνέβαλε στη διάσπαση του δικτύου σε Ethereum και Ethereum Classic.
Η περίπτωση αυτή ανέδειξε μια πολύ σημαντική αρχή. Το blockchain μπορεί να εκτελεί σωστά τους κανόνες ενός smart contract, αλλά αν το σφάλμα βρίσκεται ήδη στους ίδιους τους κανόνες, η αποκέντρωση δεν το διορθώνει αυτόματα.
Η τεχνολογία επομένως μπορεί να εξαλείψει μέρος της λειτουργικής εμπιστοσύνης προς έναν μεσάζοντα, ταυτόχρονα όμως αυξάνει τη σημασία της ορθότητας του προγράμματος.

Αμεταβλητότητα, αναβαθμίσεις και έλεγχος
Λέγεται συχνά ότι ένα smart contract, μόλις αναπτυχθεί, δεν μπορεί πια να αλλάξει.
Η βασική αρχή είναι πράγματι ότι ο κώδικας που είναι αποθηκευμένος σε μια συγκεκριμένη διεύθυνση του blockchain είναι κατά κανόνα αμετάβλητος. Αυτό βοηθά στη δημιουργία εμπιστοσύνης ότι κανείς δεν μπορεί να ξαναγράψει τους κανόνες χωρίς προειδοποίηση.
Έχει όμως και μειονέκτημα. Αν εμφανιστεί στο contract ένα κρίσιμο σφάλμα, δεν θα ήταν δυνατό να διορθωθεί απλά, όπως ενημερώνουμε μια συνηθισμένη εφαρμογή κινητού.
Γι' αυτό δημιουργήθηκαν διάφοροι μηχανισμοί που επιτρέπουν την αναβάθμιση των εφαρμογών. Για παράδειγμα, το λεγόμενο proxy μοντέλο διαχωρίζει το μέρος του συστήματος με το οποίο επικοινωνεί ο χρήστης από το πρόγραμμα που περιέχει την τρέχουσα λογική. Οι προγραμματιστές μπορούν τότε, υπό ορισμένες προϋποθέσεις, να αναπτύξουν μια νέα έκδοση της λογικής, χωρίς να αλλάξει η κύρια διεύθυνση που χρησιμοποιούν οι χρήστες.
Έτσι όμως προκύπτει ένας ακόμη συμβιβασμός. Αν κάποιος μπορεί να ενημερώνει τους κανόνες του συστήματος, πρέπει να γνωρίζουμε:
Ποιος έχει αυτή την εξουσία;
- – μία εταιρεία,
- – ένας άνθρωπος,
- – μια ομάδα προγραμματιστών,
- – ένα DAO,
- – ένα multisig.
Ένα smart contract επομένως μπορεί τεχνικά να βασίζεται σε ένα αποκεντρωμένο blockchain, αλλά ορισμένα σημαντικά μέρη του μπορεί να εξαρτώνται ακόμη από μια σχετικά μικρή ομάδα ανθρώπων.
Ένας από τους τρόπους μείωσης της εξάρτησης από έναν μόνο άνθρωπο ή ένα μόνο ιδιωτικό κλειδί είναι το multisig.
Το multisig, δηλαδή multiple signature, απαιτεί για την εκτέλεση μιας συγκεκριμένης ενέργειας αρκετές ανεξάρτητες υπογραφές.
Για παράδειγμα, μια διαμόρφωση 3 από 5 σημαίνει ότι υπάρχουν πέντε εξουσιοδοτημένα κλειδιά, αλλά για την εκτέλεση μιας λειτουργίας πρέπει να συμφωνήσουν τουλάχιστον τρία.
Το multisig χρησιμοποιείται, για παράδειγμα, στη διαχείριση κεφαλαίων ή ορισμένων τμημάτων ενός DAO. Το πλεονέκτημα είναι ότι η απώλεια ή η παραβίαση ενός κλειδιού δεν σημαίνει αυτόματα απώλεια του ελέγχου ολόκληρου του συστήματος.
Το multisig όμως δεν είναι ταυτόχρονα συνώνυμο της αποκέντρωσης. Αν για μια σημαντική αλλαγή αποφασίζουν, για παράδειγμα, τρεις άνθρωποι από τους πέντε, εξακολουθεί να πρόκειται για αρκετά μικρή ομάδα.
Γι' αυτό στα smart contracts έχει νόημα να μην παρακολουθούμε μόνο αν χρησιμοποιούν blockchain, αλλά και ποιος έχει στην πραγματικότητα την εξουσία να αλλάξει τη λειτουργία τους.
Αυτή είναι μία από τις συχνότερες παρανοήσεις.
Μια εφαρμογή μπορεί να τρέχει σε αποκεντρωμένο blockchain και παρ' όλα αυτά να περιέχει πλήθος συγκεντρωτικών στοιχείων:
- – τη διαδικτυακή διεπαφή τη λειτουργεί μία εταιρεία,
- – την ενημέρωση του contract τη διαχειρίζονται λίγοι διαχειριστές,
- – τα δεδομένα τα παρέχει περιορισμένος αριθμός υπηρεσιών oracle,
- – ο διαχειριστής μπορεί να αναστείλει ορισμένες λειτουργίες,
- – ένα συγκεκριμένο κλειδί μπορεί να αλλάζει ορισμένες παραμέτρους του συστήματος.
Γι' αυτό δεν είναι ακριβές να λέμε:
«Χρησιμοποιεί smart contract, άρα είναι αποκεντρωμένο.»
Η σωστότερη ερώτηση είναι:
«Ποια μέρη του συστήματος είναι αποκεντρωμένα και ποια εξακολουθούν να απαιτούν εμπιστοσύνη σε συγκεκριμένα πρόσωπα ή υποδομές;»
Η ίδια αρχή ισχύει στα stablecoins, στα δίκτυα Layer 2 και σε άλλους τομείς της αγοράς κρυπτονομισμάτων.
Το smart contract δεν είναι αυτόματα νομική σύμβαση
Η λέξη «contract» μπορεί να δημιουργήσει την εντύπωση ότι πρόκειται για νομικά δεσμευτική σύμβαση. Το smart contract όμως είναι πρωτίστως ένα πρόγραμμα.
Μπορεί να εκτελεί τους όρους μιας συγκεκριμένης συμφωνίας, από μόνο του όμως δεν χρειάζεται να αποτελεί σύμβαση με την κλασική νομική έννοια.
Πλεονεκτήματα των smart contracts
Αυτοματοποίηση: Μόλις πληρωθούν οι καθορισμένες προϋποθέσεις, το πρόγραμμα μπορεί να εκτελέσει το επόμενο βήμα χωρίς χειροκίνητη παρέμβαση.
Διαφάνεια: Στα δημόσια blockchains μπορεί κανείς συχνά να παρακολουθεί τις συναλλαγές ενός smart contract και σε πολλές περιπτώσεις και τον δημοσιευμένο πηγαίο κώδικά του. Ο δημόσιος κώδικας από μόνος του όμως δεν σημαίνει ακόμη ότι είναι εύκολο να αξιολογηθεί η ορθότητά του.
Προγραμματισιμότητα: Τα smart contracts επιτρέπουν τη δημιουργία πολύ πιο σύνθετων κανόνων από μια απλή μεταφορά κρυπτονομίσματος.
Συνθεσιμότητα: Τα επιμέρους contracts μπορούν να συνδυάζονται και να αξιοποιούνται ως δομικά στοιχεία άλλων εφαρμογών.
Παγκόσμια προσβασιμότητα: Μια δημόσια εφαρμογή blockchain μπορεί να είναι προσβάσιμη σε χρήστες με συμβατό πορτοφόλι ανεξάρτητα από το πού συνδέονται στο δίκτυο. Στην πράξη όμως την πρόσβαση μπορούν να την επηρεάσουν, για παράδειγμα, η συγκεκριμένη διεπαφή χρήστη, οι ρυθμίσεις ή άλλες υπηρεσίες γύρω από το ίδιο το smart contract.
Ποιους κινδύνους έχουν τα smart contracts
Κίνδυνος σφάλματος στον κώδικα: Αν το contract διαχειρίζεται πραγματικά περιουσιακά στοιχεία, ακόμη και ένα μικρό προγραμματιστικό λάθος μπορεί να έχει πολύ σοβαρές οικονομικές συνέπειες.
Κίνδυνος oracle: Το smart contract μπορεί να είναι σωστό, αλλά να εργάζεται με λανθασμένα εξωτερικά δεδομένα.
Κίνδυνος διαχειριστή: Αν το σύστημα μπορεί να αναβαθμιστεί ή να ανασταλεί, έχει σημασία ποιος ελέγχει αυτές τις εξουσίες.
Κίνδυνος από άλλα smart contracts: Το composability σημαίνει ότι οι εφαρμογές μπορεί να είναι διασυνδεδεμένες. Ένα πρόβλημα σε ένα πρωτόκολλο μπορεί να επηρεάσει ένα σύστημα που εξαρτάται από αυτό.
Κίνδυνος blockchain: Το smart contract εξαρτάται ταυτόχρονα από το δίκτυο blockchain πάνω στο οποίο λειτουργεί, συμπεριλαμβανομένων των προμηθειών, της διαθεσιμότητας και των χαρακτηριστικών ασφαλείας του.
Κίνδυνος χρήστη: Οι συναλλαγές στο blockchain είναι συνήθως δύσκολα αναστρέψιμες. Ο χρήστης μπορεί να αλληλεπιδράσει με ένα απατηλό contract, να εγκρίνει μια επικίνδυνη συναλλαγή, να δώσει στο contract υπερβολικά ευρεία δικαιώματα διαχείρισης των tokens του ή να χρησιμοποιήσει μια πλαστή διεπαφή χρήστη.
Η ασφάλεια ενός smart contract επομένως δεν σημαίνει αυτόματα ακόμη και ασφάλεια ολόκληρης της διαδρομής από τον χρήστη μέχρι το blockchain.
Τι να ελέγξετε πριν χρησιμοποιήσετε ένα smart contract
Ο μέσος χρήστης φυσικά δεν πρόκειται να μελετά τη γλώσσα προγραμματισμού Solidity πριν από κάθε συναλλαγή. Παρ' όλα αυτά υπάρχουν μερικές απλές ερωτήσεις που βοηθούν στην καλύτερη κατανόηση του κινδύνου μιας εφαρμογής.
Ποιος δημιούργησε την εφαρμογή; Είναι η ομάδα ανάπτυξης γνωστή και έχει το έργο ιστορικό που μπορεί να εντοπιστεί;
Πόσο καιρό λειτουργεί το σύστημα; Μια νέα τεχνολογία μπορεί να είναι ενδιαφέρουσα, αλλά ταυτόχρονα έχει πίσω της μικρότερη περίοδο πραγματικής λειτουργίας.
Έχουν ελεγχθεί τα smart contracts; Ο έλεγχος ασφαλείας δεν εγγυάται ότι δεν υπάρχει κανένα σφάλμα στο πρόγραμμα, μπορεί όμως να αποκαλύψει ορισμένους σημαντικούς κινδύνους.
Μπορεί το contract να ενημερωθεί; Αν ναι, ποιος μπορεί να κάνει την αλλαγή;
Υπάρχει κλειδί διαχειριστή ή multisig; Είναι σημαντικό να γνωρίζουμε ποιος έχει τη δυνατότητα να αλλάζει σημαντικά μέρη του συστήματος.
Χρησιμοποιεί η εφαρμογή oracle; Αν ναι, με ποιον τρόπο αποκτά τα εξωτερικά δεδομένα;
Από ποια άλλα πρωτόκολλα εξαρτάται; Η διασύνδεση με άλλα smart contracts μπορεί να φέρνει οφέλη αλλά και επιπλέον εξαρτήσεις.
Τι συμβαίνει σε περίπτωση προβλήματος; Έχει το σύστημα τη δυνατότητα να σταματήσει ορισμένες λειτουργίες ή να πραγματοποιήσει ενημέρωση ασφαλείας;
Όσο πιο σύνθετη είναι μια εφαρμογή, τόσο πιο σημαντικό είναι να κατανοούμε ότι η ασφάλειά της δεν καθορίζεται από ένα και μόνο smart contract, αλλά από ολόκληρη την αρχιτεκτονική γύρω από αυτό.
Συμπέρασμα
Το smart contract είναι στη βάση του μια απλή ιδέα: ένα πρόγραμμα αποθηκευμένο στο blockchain λαμβάνει μια συγκεκριμένη είσοδο, ελέγχει τους προκαθορισμένους κανόνες και εκτελεί μια συγκεκριμένη ενέργεια. Ακριβώς αυτή η ιδέα επέτρεψε στο blockchain να επεκτείνει τη χρήση του από τη μεταφορά κρυπτονομισμάτων σε χρηματοοικονομικές εφαρμογές, ψηφιακά περιουσιακά στοιχεία και αυτοματοποιημένες διαδικασίες.
Τα smart contracts ταυτόχρονα δεν σημαίνουν ότι από τον ψηφιακό κόσμο εξαφανίστηκε η ανάγκη για εμπιστοσύνη ή ο κίνδυνος. Η εμπιστοσύνη απλώς μετατοπίζεται εν μέρει. Αντί να ρωτάμε μόνο «Μπορώ να εμπιστευτώ τον μεσάζοντα;», πρέπει να ρωτάμε επίσης «Μπορώ να εμπιστευτώ τον κώδικα, τα δεδομένα που χρησιμοποιεί και τους ανθρώπους που μπορούν ενδεχομένως να αλλάξουν τη λειτουργία του;»
Δεν αρκεί επομένως να γνωρίζουμε ότι μια συγκεκριμένη υπηρεσία «χρησιμοποιεί smart contracts». Πιο σημαντικό είναι να κατανοήσουμε τι κάνει πραγματικά το contract, από πού αντλεί τις πληροφορίες, ποιος έχει τον έλεγχό του και από τι εξαρτάται. Τα smart contracts δεν είναι αυτόματα ασφαλή ούτε αποκεντρωμένα, αποτελούν όμως έναν από τους βασικούς δομικούς λίθους των σημερινών εφαρμογών blockchain.
Το κείμενο αυτό εξυπηρετεί αποκλειστικά ενημερωτικούς και εκπαιδευτικούς σκοπούς και δεν αποτελεί επενδυτική συμβουλή. Τα κρυπτοπεριουσιακά στοιχεία είναι ευμετάβλητα και μπορείτε να χάσετε ολόκληρο το επενδυμένο ποσό.
Author
Tomáš Bára
Stablecoins: ψηφιακό χρήμα ανάμεσα στο κρύπτο και τον παραδοσιακό οικονομικό κόσμο
Το Bitcoin και το Ethereum έδειξαν πόσο ασταθής μπορεί να είναι ο κόσμος των κρυπτονομισμάτων. Γι' αυτόν ακριβώς τον λόγο, ένα από τα πιο σημαντικά κομμάτια αυτής της αγοράς έγιναν τα stablecoins – περιουσιακά στοιχεία των οποίων ο στόχος είναι να μην αλλάζουν την αξία τους. Μάθετε τι κρατά σταθερή την τιμή τους, σε τι διαφέρουν τα USDC, USDT ή τα tokens εξασφαλισμένα με κρυπτονομίσματα, και τι αποκάλυψε η κατάρρευση του TerraUSD.
Layer 1 και Layer 2: γιατί το blockchain χρειάζεται περισσότερα στρώματα
Το Bitcoin και το Ethereum έδειξαν ότι το blockchain μπορεί να λειτουργήσει χωρίς κεντρική αρχή. Καθώς όμως αυξανόταν ο αριθμός των χρηστών, εμφανίστηκαν όρια χωρητικότητας και αυξανόμενες προμήθειες. Μάθετε πώς το Layer 1 αποτελεί ένα ασφαλές θεμέλιο και πώς λύσεις Layer 2, όπως το Lightning Network ή τα rollups, το βοηθούν να διαχειρίζεται περισσότερη κίνηση.