Μετάβαση στο κύριο περιεχόμενο
Change page

Βιβλιοθήκες Έξυπνων Συμβολαίων

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

Προαπαιτούμενα

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

Τι περιέχει η βιβλιοθήκη

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

Επαναληψιμότητα

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

Οι βιβλιοθήκες έξυπνων συμβολαίων συνήθως παρέχουν επαναχρησιμοποιήσιμες υλοποιήσεις αυτών των συμπεριφορών ως βιβλιοθήκες(opens in a new tab) ή μέσω κληρονομικότητας(opens in a new tab) στη Solidity.

Ως παράδειγμα, παρακάτω είναι μια απλοποιημένη έκδοση της Ownable σύμβασης(opens in a new tab) από τη βιβλιοθήκη OpenZeppelin Contracts(opens in a new tab), η οποία ορίζει μια διεύθυνση ως ιδιοκτήτη μιας σύμβασης και παρέχει έναν τροποποιητή για τον περιορισμό της πρόσβασης σε μια μέθοδο μόνο σε αυτόν τον ιδιοκτήτη.

1contract Ownable {
2 address public owner;
3
4 constructor() internal {
5 owner = msg.sender;
6 }
7
8 modifier onlyOwner() {
9 require(owner == msg.sender, "Ownable: caller is not the owner");
10 _;
11 }
12}
Εμφάνιση όλων
Αντιγραφή

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

1import ".../Ownable.sol"; // Path to the imported library
2
3contract MyContract is Ownable {
4 // The following function can only be called by the owner
5 function secured() onlyOwner public {
6 msg.sender.transfer(1 ether);
7 }
8}
Αντιγραφή

Ένα άλλο δημοφιλές παράδειγμα είναι το SafeMath(opens in a new tab) ή το DsMath(opens in a new tab). Πρόκειται για βιβλιοθήκες (σε αντίθεση με τα βασικά συμβόλαια) που παρέχουν αριθμητικές συναρτήσεις με ελέγχους υπέρβασης, οι οποίες δεν παρέχονται από τη γλώσσα. Είναι καλή πρακτική να χρησιμοποιείτε μία από αυτές τις βιβλιοθήκες αντί για εγγενείς αριθμητικές πράξεις για να προφυλάξετε το συμβόλαιό σας από υπερβάσεις, οι οποίες μπορούν να έχουν καταστροφικές συνέπειες!

Πρότυπα

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

Όταν περιλαμβάνετε ένα ERC ως μέρος των συμβολαίων σας, είναι καλή ιδέα να αναζητήσετε τυπικές υλοποιήσεις αντί να προσπαθήσετε να αναπτύξετε τη δική σας. Πολλές βιβλιοθήκες έξυπνων συμβολαίων περιλαμβάνουν εφαρμογές για τα πιο δημοφιλή ERC. Για παράδειγμα, το πανταχού παρόν πρότυπο ανταλλάξιμου token ERC20 μπορεί να βρεθεί στο HQ20(opens in a new tab), DappSys(opens in a new tab) και OpenZeppelin(opens in a new tab). Επιπλέον, ορισμένα ERC παρέχουν επίσης κανονικές υλοποιήσεις ως μέρος του ίδιου του ERC.

Αξίζει να αναφερθεί ότι ορισμένα ERC δεν είναι αυτόνομα, αλλά είναι προσθήκες σε άλλα ERC. Για παράδειγμα, το ERC2612(opens in a new tab) προσθέτει μια επέκταση στο ERC20 για βελτίωση της χρηστικότητάς του.

Πώς να προσθέσετε μια βιβλιοθήκη

Ανατρέξτε πάντα στην τεκμηρίωση της βιβλιοθήκης που συμπεριλαμβάνετε για συγκεκριμένες οδηγίες σχετικά με τον τρόπο συμπερίληψής της στο έργο σας. Αρκετές βιβλιοθήκες συμβολαίων Solidity συσκευάζονται χρησιμοποιώντας npm, οπότε μπορείτε απλώς να τους κάνετε εγκατάσταση npm install. Τα περισσότερα εργαλεία για τη μεταγλώττιση συμβολαίων θα εξετάσουν το node_modules σας για βιβλιοθήκες έξυπνων συμβολαίων, ώστε να μπορείτε να κάνετε τα εξής:

1// This will load the @openzeppelin/contracts library from your node_modules
2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
3
4contract MyNFT is ERC721 {
5 constructor() ERC721("MyNFT", "MNFT") public { }
6}
Αντιγραφή

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

Πότε να το χρησιμοποιήσετε

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

Η ασφάλεια είναι επίσης ένα μεγάλο πλεονέκτημα. Οι βιβλιοθήκες ανοιχτού κώδικα έξυπνων συμβολαίων επίσης υποβάλλονται συχνά σε αυστηρό έλεγχο. Δεδομένου ότι πολλά έργα εξαρτώνται από αυτές, υπάρχει ισχυρό κίνητρο εκ μέρους της κοινότητας να παραμένουν υπό συνεχή αναθεώρηση. Είναι πολύ πιο συνηθισμένο να εντοπίζονται σφάλματα στον κώδικα εφαρμογής παρά σε επαναχρησιμοποιούμενες βιβλιοθήκες συμβολαίων. Ορισμένες βιβλιοθήκες υποβάλλονται επίσης σε εξωτερικούς ελέγχους(opens in a new tab) για πρόσθετη ασφάλεια.

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

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

OpenZeppelin Contracts - Η πιο δημοφιλής βιβλιοθήκη για ασφαλή ανάπτυξη έξυπνων συμβολαίων.

DappSys - Ασφαλή, απλό, με ευέλικτα δομικά στοιχεία για έξυπνα συμβόλαια.

HQ20 - Ένα έργο Solidity με συμβόλαια, βιβλιοθήκες και παραδείγματα για να σας βοηθήσει να κατασκευάσετε πλήρως λειτουργικές αποκεντρωμένες εφαρμογές για τον πραγματικό κόσμο.

thirdweb Solidity SDK - Παρέχει τα απαραίτητα εργαλεία για την αποτελεσματική κατασκευή προσαρμοσμένων έξυπνων συμβολαίων.

  • Συμβουλές ασφαλείας για προγραμματιστές Ethereum – Οδηγός εκμάθησης σχετικά με ζητήματα ασφαλείας κατά την ανάπτυξη έξυπνων συμβολαίων, συμπεριλαμβανομένης της χρήσης βιβλιοθηκών.
  • Κατανόηση του έξυπνου συμβολαίου token ERC-20 – Οδηγός εκμάθησης για το πρότυπο ERC20, που παρέχεται από πολλαπλές βιβλιοθήκες.

Περισσότερες πληροφορίες

Γνωρίζετε κάποιο πόρο της κοινότητας που σας βοήθησε; Επεξεργαστείτε αυτή τη σελίδα και προσθέστε το!

Ήταν χρήσιμο αυτό το άρθρο;