Πώς να γράψετε και να αναπτύξετε το πρώτο σας έξυπνο συμβόλαιο

Από τότε που η Ethereum κοσμεί τον χώρο κρυπτογράφησης με την παρουσία της στα μέσα του 2015, η επαναστατική εφεύρεση του Καναδο-Ρώσου Προγραμματιστή Vitalik Buterin γέννησε πολλές νέες αποκεντρωμένες εφαρμογές (dApps). Μαζί με τη μυριάδα των dApps που κατασκευάζονται, η επιτυχία του Ethereum αποδίδεται κυρίως στην εφαρμογή έξυπνων συμβάσεων.

Είναι αρκετά ενδιαφέρον ότι η εφεύρεση έξυπνων συμβολαίων χρονολογείται από το 1996. Ο επιστήμονας υπολογιστών Nick Szabo συνέταξε τον όρο «έξυπνες συμβάσεις» και τους εξηγεί ως εξής:

«Καλώ αυτά τα νέα συμβόλαια« έξυπνα », επειδή είναι πολύ πιο λειτουργικά από τους άψυχους προγόνους τους σε χαρτί. Δεν υπονοείται καμία χρήση τεχνητής νοημοσύνης. Ένα έξυπνο συμβόλαιο είναι ένα σύνολο υποσχέσεων, που καθορίζονται σε ψηφιακή μορφή, συμπεριλαμβανομένων των πρωτοκόλλων στα οποία τα μέρη εκτελούν αυτές τις υποσχέσεις »- Nick Szabo, 1996

Το έργο του αργότερα συνέχισε να εμπνέει πολλούς άλλους ερευνητές και επιστήμονες, συμπεριλαμβανομένου του Vitalik, ο οποίος δημιούργησε το Ethereum.

Βασικές πληροφορίες

Προτού ερευνήσουμε περαιτέρω τον οδηγό, είναι σημαντικό να κατανοήσουμε δύο σημαντικές έννοιες.

Το πρώτο πράγμα που πρέπει να καταλάβουμε είναι τι είναι η εικονική μηχανή Ethereum ( EVM ). Ο μοναδικός σκοπός του είναι να λειτουργεί ως περιβάλλον χρόνου εκτέλεσης έξυπνων συμβάσεων που βασίζονται στο Ethereum. Σκεφτείτε το ως έναν παγκόσμιο σούπερ υπολογιστή που εκτελεί όλα τα έξυπνα συμβόλαια. Όπως υποδηλώνει το όνομα, το EVM είναι εικονικό και όχι φυσικό μηχάνημα. Μπορείτε να διαβάσετε περισσότερα για το EVM εδώ.

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

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

Fee for transaction = Total gas used * gas price;

Διαβάστε περισσότερα για το αέριο εδώ.

Τώρα που έχετε βασικές γνώσεις σχετικά με το τι είναι ένα έξυπνο συμβόλαιο και πώς λειτουργεί το έξυπνο συμβόλαιο, μπορούμε να πάμε κατευθείαν στο πώς θα κάνουμε το δικό μας έξυπνο συμβόλαιο!

Εγκαθιστώ

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

Συνδεθείτε στο Metamask. Εάν δεν έχετε εγκαταστήσει ακόμα το MetaMask, μπορείτε να ξεκινήσετε εδώ.

Μεταβείτε στο δίκτυο δοκιμών Kovan τόσο στο Pragma όσο και στο MetaMask.

Για να σας δώσω μια σύντομη επισκόπηση σχετικά με τα testnets, δείτε αυτό το άρθρο

Το Ethereum mainnet είναι το επίσημο δίκτυο Ethereum. Είναι πιο ασφαλές και χρησιμοποιεί το Ether, το οποίο έχει πραγματική νομισματική αξία.

Τα Testnets είναι δίκτυα Ethereum παιδικής χαράς στα οποία ο Ether συμφωνείται ότι δεν έχει χρηματική αξία. Οι προγραμματιστές χρησιμοποιούν αυτές τις παιδικές χαρές για να δοκιμάσουν εφαρμογές πριν τις αναπτύξουν στο mainnet για τους χρήστες τους.

Για εναλλαγή μεταξύ αυτών των δικτύων, κάντε κλικ στο όνομα δικτύου δίπλα στο εικονίδιο MetaMask και επιλέξτε το δίκτυο. Για αυτό το σεμινάριο, επιλέξτε Kovan .

Γράφοντας το έξυπνο συμβόλαιο

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

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

Ας περάσουμε από γραμμή προς γραμμή:

pragma solidity ^0.4.21;

Αυτό υποδηλώνει ότι ο πηγαίος κώδικας είναι γραμμένος για το Solidity version 0.4.21 ή οτιδήποτε νεότερο που δεν σπάει τη λειτουργικότητα. Αυτό γίνεται για να διασφαλιστεί ότι ο κώδικας δεν συμπεριφέρεται διαφορετικά με τις νέες εκδόσεις μεταγλωττιστή.

contract yourToken

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

address public minter;

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

event Sent(address from, address to, uint amount);

Τα συμβάντα επιτρέπουν στους ελαφριούς πελάτες (UI) να αντιδρούν αποτελεσματικά στις αλλαγές.

function yourToken() public {
minter = msg.sender;
}

Ας ορίσουμε τη διεύθυνσή σας Ethereum ως minter της σύμβασης. Θα χρειαστεί να αποκτήσετε πρόσβαση στο συμβόλαιο μέσω του MetaMask σας για να μπορέσετε να το κάνετε. Θα το εξετάσουμε ξανά μετά την ανάπτυξη του συμβολαίου.

function mint(address receiver, uint amount) public {
if(msg.sender != minter) return;
balances[receiver]+=amount;
}

Αυτή η λειτουργία σάς επιτρέπει να κόβετε το ποσό των κερμάτων που θέλετε. Μπορείτε να κόψετε όσα κουπόνια θέλετε. Η συνθήκη if λέει στο σύστημα να σταματήσει να εκτελείται εάν δεν είστε ο minter, ο οποίος έχει ρυθμιστεί στη λειτουργίαToken.

Εάν είστε στην πραγματικότητα ο minter, σας επιτρέπει να κόβετε τα κουπόνια.

function send(address receiver, uint amount) public {
if(balances[msg.sender] < amount) return;
balances[msg.sender]-=amount;
balances[receiver]+=amount;
emit Sent(msg.sender, receiver, amount);
}

Αυτή είναι μια λειτουργία που επιτρέπει σε μια διεύθυνση να στέλνει τα διακριτικά σε άλλη διεύθυνση. Χρειάζονται δύο παράμετροι: δέκτης και ποσό. Μειώνει το ποσό από τη διεύθυνση του αποστολέα και προσθέτει το ίδιο ποσό στη διεύθυνση του παραλήπτη. Το Event Sent, το οποίο δηλώσαμε νωρίτερα, χρησιμοποιείται πλέον για τη μεταφορά. Προς το παρόν, διατηρήσαμε τον αποστολέα ως msg.sender, ο οποίος είναι ο minter, καθώς δεν θέλουμε να περιπλέξουμε τη σύμβαση.

Αυτό είναι. Το συμβόλαιό σας είναι τώρα έτοιμο, οπότε ας το συντάξουμε.

Σύνταξη και ανάπτυξη του έξυπνου συμβολαίου

Μόλις καταρτιστεί το συμβόλαιο, ας το αναπτύξουμε στο blockchain. Όπως αναφέρθηκε προηγουμένως, θα χρησιμοποιήσουμε το testnet Kovan για να αναπτύξουμε τη σύμβαση.

Ελέγξτε εάν έχει αναπτυχθεί το έξυπνο συμβόλαιο.

Για τη σύμβαση που ανέπτυξα για αυτό το σεμινάριο, αυτή είναι η συναλλαγή. Μπορείτε επίσης να το δείτε στο Pragma βάσει των συμβολαίων σας.

Αλληλεπιδράστε με το έξυπνο συμβόλαιο στο Pragma

Εκεί το έχεις. Το πρώτο σας έξυπνο συμβόλαιο, που αναπτύχθηκε σε blockchain. :)

Παρουσιάστηκαν πολλές νέες έννοιες μαζί με μερικά εκπληκτικά χρήσιμα εργαλεία. Μπορεί να είναι λίγο συντριπτικό, και αυτό είναι εντάξει! Απλώς προσπαθήστε να ξεπεράσετε τις έννοιες και στη συνέχεια να το χρησιμοποιήσετε.

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

Έχετε απορίες; Προσθέστε τα στα σχόλια ή εγγραφείτε στην ομάδα τηλεγραφημάτων μας και μιλήστε μας απευθείας.