Εισαγωγή στα έξυπνα συμβόλαια
Τελευταία επεξεργασία: @0xmike7(opens in a new tab), 22 Απριλίου 2024
Τι είναι το έξυπνο συμβόλαιο;
Το «έξυπνο συμβόλαιο» είναι ένα απλό πρόγραμμα που εκτελείται στην κρυπτοαλυσίδα του Ethereum. Είναι μια συλλογή από κώδικα (μεταβλητές) και δεδομένα (σταθερές) που αναφέρονται σε συγκεκριμένη διεύθυνση στην κρυπτοαλυσίδα του Ethereum.
Τα έξυπνα συμβόλαια είναι ένας τύπο λογαριασμού Ethereum. Αυτό σημαίνει ότι έχουν υπόλοιπο και μπορούν να αποτελέσουν στόχο συναλλαγών. Ωστόσο, δε διαχειρίζονται από κάποιο χρήστη, αλλά δημοσιεύονται στο δίκτυο και λειτουργούν σύμφωνα με τον προγραμματισμό τους. Οι λογαριασμοί χρήστη μπορούν να αλληλεπιδράσουν με ένα έξυπνο συμβόλαιο υποβάλλοντας συναλλαγές, που εκτελούν μια λειτουργία σύμφωνα με το έξυπνο συμβόλαιο. Τα έξυπνα συμβόλαια ορίζουν τους όρους, όπως μια κανονική σύμβαση και τους επιβάλλουν αυτόματα μέσω του κώδικά τους. Τα έξυπνα συμβόλαια δεν μπορούν να διαγραφούν από προεπιλογή και οι αλληλεπιδράσεις με αυτά είναι μη αναστρέψιμες.
Προαπαιτούμενα
Εάν ξεκινάτε τώρα ή αναζητάτε μια λιγότερο τεχνική εισαγωγή, προτείνουμε να δείτε την εισαγωγή μας στα έξυπνα συμβόλαια.
Ενημερωθείτε σχετικά με τους λογαριασμούς, τις συναλλαγές και την εικονική μηχανή του Ethereum πριν την είσοδό σας στον κόσμο των έξυπνων συμβολαίων.
Ένας ψηφιακός αυτόματος πωλητής
Ίσως, η καλύτερη παρομοίωση ενός έξυπνου συμβολαίου με μια συσκευή αυτόματης πώλησης, όπως περιγράφηκε από τον Nick Szabo(opens in a new tab). Με τη σωστή προσθήκη, είναι εγγυημένο ένα συγκεκριμένο αποτέλεσμα.
Για αγορά από μια συσκευή αυτόματης πώλησης:
1money + snack selection = snack dispensed
Αυτή η λογική προγραμματίζεται στη συσκευή αυτόματης πώλησης.
Ένα έξυπνο συμβόλαιο, όπως ο αυτόματος πωλητής, έχει προγραμματιστεί ανάλογα γι αυτό. Ακολουθεί ένα απλό παράδειγμα για το πώς θα ήταν αυτό το μηχάνημα αυτόματης πώλησης αν ήταν ένα έξυπνο συμβόλαιο γραμμένο στη Solidity:
1pragma solidity 0.8.7;23contract VendingMachine {45 // Declare state variables of the contract6 address public owner;7 mapping (address => uint) public cupcakeBalances;89 // When 'VendingMachine' contract is deployed:10 // 1. set the deploying address as the owner of the contract11 // 2. set the deployed smart contract's cupcake balance to 10012 constructor() {13 owner = msg.sender;14 cupcakeBalances[address(this)] = 100;15 }1617 // Allow the owner to increase the smart contract's cupcake balance18 function refill(uint amount) public {19 require(msg.sender == owner, "Only the owner can refill.");20 cupcakeBalances[address(this)] += amount;21 }2223 // Allow anyone to purchase cupcakes24 function purchase(uint amount) public payable {25 require(msg.value >= amount * 1 ether, "You must pay at least 1 ETH per cupcake");26 require(cupcakeBalances[address(this)] >= amount, "Not enough cupcakes in stock to complete this purchase");27 cupcakeBalances[address(this)] -= amount;28 cupcakeBalances[msg.sender] += amount;29 }30}Εμφάνιση όλωνΑντιγραφή
Όπως η συσκευή αυτόματης πώλησης αφαιρεί την ανάγκη ύπαρξης υπαλλήλου πώλησης, έτσι τα έξυπνα συμβόλαια μπορούν να αντικαταστήσουν τους μεσάζοντες σε πολλές κατηγορίες.
Δεν απαιτείται άδεια
Οποιοσδήποτε μπορεί να συντάξει ένα έξυπνο συμβόλαιο και να το δημοσιεύσει στο δίκτυο. Απλά χρειάζονται γνώσεις προγραμματισμού μιας γλώσσας για έξυπνο συμβόλαιο και τα απαιτούμενα ETH για τη δημοσίευση του συμβολαίου. Η δημοσίευση ενός έξυπνου συμβολαίου, τεχνικά είναι μια συναλλαγή, οπότε χρειάζεται να πληρώσετε για το Gas με τον ίδιο τρόπο που θα πληρωθούν οι κρατήσεις για μια μεταφορά ETH. Ωστόσο, το κόστος gas για τη δημοσίευση του συμβολαίου είναι πολύ υψηλότερο.
Το Ethereum διαθέτει φιλικές γλώσσες για τον προγραμματιστή, για τη σύνταξη έξυπνων συμβολαίων όπως:
- Solidity
- Vyper
Περισσότερα για τις γλώσσες προγραμματισμού
Ωστόσο, θα πρέπει να μεταγλωττιστούν πριν μπορέσουν να δημοσιευθούν ώστε η εικονική μηχανή του Ethereum να μπορέσει να διαχειριστεί και αποθηκεύσει το συμβόλαιο. Περισσότερα για τη μεταγλώττιση
Συνθετικότητα
Τα έξυπνα συμβόλαια είναι δημόσια στο Ethereum και μπορούν να θεωρηθούν ως ελεύθερα API. Αυτό σημαίνει ότι μπορείτε να επικαλεστείτε άλλα έξυπνα συμβόλαια μέσα από το δικό σας έξυπνο συμβόλαιο, ώστε να επεκτείνετε σημαντικά τις δυνατότητές του. Τα συμβόλαια μπορούν ακόμη να δημοσιεύουν άλλα συμβόλαια.
Μάθετε περισσότερα σχετικά με τη συνθετικότητα έξυπνου συμβολαίου.
Περιορισμοί
Τα έξυπνα συμβόλαια από μόνα τους δεν μπορούν να λάβουν πληροφορίες για πραγματικά συμβάντα επειδή δεν μπορούν να λάβουν δεδομένα από πηγές εκτός κρυπτοαλυσίδας. Αυτό σημαίνει ότι δεν μπορούν να ανταποκριθούν σε γεγονότα στον πραγματικό κόσμο. Αυτό συμβαίνει λόγω σχεδιασμού. Με τη χρήση εξωτερικών πληροφοριών θα μπορούσε να τεθεί σε κίνδυνο η συναίνεση, η οποία είναι σημαντική για την ασφάλεια και την αποκέντρωση.
Ωστόσο, είναι σημαντικό για τις εφαρμογές blockchain να μπορούν να χρησιμοποιούν δεδομένα εκτός αλυσίδας. Η λύση είναι τα oracles τα οποία είναι εργαλεία που συλλέγουν δεδομένα εκτός αλυσίδας και τα καθιστούν διαθέσιμα σε έξυπνα συμβόλαια.
Ένας άλλος περιορισμός των έξυπνων συμβολαίων είναι το μέγιστο μέγεθος του συμβολαίου. Ένα έξυπνο συμβόλαιο μπορεί να έχει μέγιστο τα 24KB ή έως ότου εξαντληθεί το αέριο του. Αυτό μπορεί να ξεπεραστεί χρησιμοποιώντας το The Diamond Pattern(opens in a new tab).
Συμβόλαια πολλαπλών υπογραφών
Τα συμβόλαια πολλαπλών υπογραφών είναι λογαριασμοί έξυπνων συμβολαίων που απαιτούν πολλαπλές έγκυρες υπογραφές για την εκτέλεση μιας συναλλαγής. Αυτό είναι πολύ χρήσιμο για την αποφυγή μεμονωμένων σημείων αποτυχίας για συμβόλαια που διαθέτουν σημαντικές ποσότητες ether ή άλλων κρυπτονομισμάτων. Τα Multisigs κατανέμουν επίσης την ευθύνη για την εκτέλεση του συμβολαίου και τη διαχείριση κλειδιών μεταξύ πολλών μερών και αποτρέπουν την απώλεια ενός μόνο ιδιωτικού κλειδιού που οδηγεί σε μη αναστρέψιμη απώλεια κεφαλαίων. Για αυτούς τους λόγους, τα συμβόλαια πολλαπλών υπογραφών μπορούν να χρησιμοποιηθούν για απλή διακυβέρνηση DAO. Τα πολλαπλής υπογραφής απαιτούν Ν υπογραφές από Μ πιθανές αποδεκτές υπογραφές (όπου Ν ≤ M και Μ > 1) για να εκτελεστούν. Χρησιμοποιούνται συνήθως N = 3, M = 5
και N = 4, M = 7
. Ένα πολλαπλής υπογραφής 4/7 απαιτεί τέσσερις από τις 7 πιθανές έγκυρες υπογραφές. Αυτό σημαίνει ότι τα κεφάλαια εξακολουθούν να μπορούν να ανακτηθούν ακόμη και αν χαθούν τρεις υπογραφές. Σε αυτή την περίπτωση, σημαίνει επίσης ότι η πλειοψηφία των κατόχων κλειδιών πρέπει να συμφωνήσει και να υπογράψει για να εκτελεστεί το συμβόλαιο.
Πηγές έξυπνου συμβολαίου
Συμβόλαια OpenZeppelin - Βιβλιοθήκη για ασφαλή ανάπτυξη έξυπνου συμβολαίου.
- openzeppelin.com/contracts/(opens in a new tab)
- GitHub(opens in a new tab)
- Φόρουμ κοινότητας(opens in a new tab)