Πώς να δημιουργήσετε ένα EOS dapp (απλός οδηγός)

Πριν από δύο εβδομάδες παρακολούθησα το πρώτο παγκόσμιο EOS Hackathon στο Χονγκ Κονγκ. Δημιούργησα μια κατανεμημένη εφαρμογή (dapp) στην αγορά δεδομένων peer-to-peer χρησιμοποιώντας το ReactJS και το EOSJS, καθώς και ένα προσαρμοσμένο έξυπνο συμβόλαιο γραμμένο σε C ++. Ενώ δεν κερδίσαμε (ο νικητής χρησιμοποίησε το υλικό σάρωσης αμφιβληστροειδούς και την ενσωματωμένη λειτουργία επαλήθευσης ταυτότητας της EOS), λάβαμε μεγάλη αναγνώριση από την κοινότητα του EOS για το έργο μας.

Αυτός είναι ένας οδηγός βήμα προς βήμα για καθέναν που θα ήθελε να ξεκινήσει να δημιουργεί ένα EOS dapp.

Για να ξεκινήσετε, συστήνω ιδιαίτερα τη χρήση του Docker και την εγκατάσταση της εικόνας EOSIO Dev. Ακολουθήστε την επίσημη τεκμηρίωση EOSIO εδώ. https://developers.eos.io/eosio-nodeos/docs/docker-quickstart

Δημιουργία πορτοφολιού

Προκειμένου να δημιουργηθεί ένα dapp που πραγματικά αλληλεπιδρά με ένα πορτοφόλι και λογαριασμούς, θα χρειαστεί να τα ορίσουμε.

Σε ένα τερματικό, πληκτρολογήστε cleos wallet create

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

Σημείωση: Εάν αυτό δεν λειτουργεί, δεν κάνατε ψευδώνυμο στο "cleos" στο βήμα 1 παραπάνω. Βεβαιωθείτε ότι έχετε ακολουθήσει ολόκληρο τον οδηγό γρήγορης εκκίνησης που παρέχεται από το EOSIO.

Αν αντιμετωπίσετε κάποιο πρόβλημα με το κλειδί του πορτοφολιού σας, απλώς πληκτρολογήστε το ξεκλείδωμα του cleos wallet

Στη συνέχεια, εισάγετε τον κωδικό πρόσβασης που αποθηκεύσατε προηγουμένως.

Δημιουργία λογαριασμών

Για να αλληλεπιδράσετε με dapps, θα πρέπει να έχετε λογαριασμό στο εσωτερικό του πορτοφολιού σας. Ας πάμε μπροστά και να δημιουργήσουμε ένα λογαριασμό. Ξεκινάμε εισάγοντας δύο σετ κλειδιών στο πορτοφόλι μας. Κάποιος θα είναι ο OwnerKey και ένας θα είναι το ActiveKey. Βεβαιωθείτε ότι έχετε αποθηκεύσει και τα δύο ζεύγη κλειδιών. Ο OwnerKey θα πρέπει να διατηρείται πάντα ασφαλής ανά πάσα στιγμή.

Δημιουργήστε τον ιδιοκτήτη σας

Στο τερματικό σας, πληκτρολογήστε κλειδί δημιουργίας cleos

Το τερματικό θα επιστρέψει ένα ιδιωτικό κλειδί και ένα δημόσιο κλειδί.

Στη συνέχεια, πληκτρολογήστε εισαγωγή κλεψύδρας cleos [ιδιωτικό κλειδί από πάνω]

Το τερματικό θα επιστρέψει το εισαγόμενο ιδιωτικό κλειδί για το [Public Key from above]

Δημιουργήστε το ActiveKey (ίδια βήματα με τη δημιουργία του OwnerKey)

Στο τερματικό σας, πληκτρολογήστε κλειδί δημιουργίας cleos

Το τερματικό θα επιστρέψει ένα ιδιωτικό κλειδί και ένα δημόσιο κλειδί.

Στη συνέχεια, πληκτρολογήστε εισαγωγή κλεψύδρας cleos [ιδιωτικό κλειδί από πάνω]

Το τερματικό θα επιστρέψει το εισαγόμενο ιδιωτικό κλειδί για το [Public Key from above]

Δημιουργήστε τον πρώτο λογαριασμό σας

Στο τερματικό σας, πληκτρολογήστε

cleos Δημιουργία λογαριασμού eosio user1 [Δημόσιο κλειδί κατόχου] [Ενεργό δημόσιο κλειδί]

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

Δημιουργώντας ένα διακριτικό (το EOSIO το κάνει πολύ εύκολο!)

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

Ξεκινήστε με τη δημιουργία ενός λογαριασμού στον οποίο θα αναπτύξουμε τη σύμβαση συμβόλων. Ακολουθήστε τα βήματα στην ενότητα Δημιουργία Λογαριασμών (παραπάνω) για να δημιουργήσετε ένα PropertyKey και το ActiveKey.

Στη συνέχεια, στο τερματικό σας

cleos δημιουργία λογαριασμού eosio eosio.token [Νέο δημόσιο κλειδί ιδιοκτήτη] [Νέο ενεργό δημόσιο κλειδί]

Στη συνέχεια, θα αναπτύξουμε το συμβόλαιο τυποποιημένων συμβόλων σε αυτόν τον νέο λογαριασμό.

claos σύμβαση σύμβασης eosio.token build / contracts / eosio.token -p eosio.token

Σημειώστε ότι στη γραμμή πάνω από το -p eosio.token δηλώνεται ότι ο λογαριασμός eosio.token δίνει άδεια για την ανάπτυξη της σύμβασης. Είναι πιθανό το πορτοφόλι σας να κλειδωθεί, οπότε θα θέλετε να ξεκλειδώσετε το πορτοφόλι προτού το κάνετε ακολουθώντας τα βήματα ξεκλειδώματος στην ενότητα Δημιουργία πορτοφολιού (παραπάνω). Όταν δημιουργείτε τις δικές σας προσαρμοσμένες συμβάσεις, θα τις αναπτύξετε με τον ίδιο τρόπο που κάναμε εδώ, αλλά αντί για claos set eosio.token, θα αντικαταστήσετε το eosio.token με την προσαρμοσμένη σύμβασή σας.

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

cleos push action eosio.token δημιουργία '["eosio", "1000000000.0000 TOK"] -p eosio.token

Το παραπάνω παράδειγμα δημιουργεί μάρκες TOK 1 δις με το eosio ως εκδότη. Το τελευταίο βήμα είναι να εκδώσουμε μάρκες σε έναν από τους λογαριασμούς μας. Σημειώστε ότι η "σημείωση" είναι ένας τρόπος σύνδεσης μιας περιγραφής συμβολοσειράς στις συναλλαγές. Επίσης, παίρνουμε τώρα την άδεια (μέσω -p) από το eosio αντί του eosio.token, αφού ο λογαριασμός eosio περιέχει όλα τα μάρκες 1bn.

cleos push action eosio.token θέμα "[" user1 "," 100.0000 TOK "," σημείωμα "] -p eosio

Αυτό είναι, τώρα έχετε έτοιμη να συνδεθείτε στο οικοσύστημα της εφαρμογής σας!

Χρησιμοποιώντας το EOSJS Για να συνδέσετε το EOS στο dapp σας

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

Αν δεν έχετε ήδη ρυθμίσει την εφαρμογή αντιδράσεων, πληκτρολογήστε

create-react-app [όνομα της αντίδρασης σας]

Σε αυτόν τον κατάλογο βάσεων, πληκτρολογήστε τα ακόλουθα στο τερματικό σας για να εγκαταστήσετε eosjs και να τα προσθέσετε στο package.json σας

npm install eosjs -s

Στη συνέχεια, στο αρχείο App.js, θα θέλετε να εισαγάγετε eosjs χρησιμοποιώντας:

εισαγωγή Eos από "eosjs"?

Θα πρέπει να αρχικοποιήσουμε μια περίπτωση eosjs για να την χρησιμοποιήσουμε στην εφαρμογή μας. Αυτό γίνεται προσθέτοντας τα ακόλουθα στο παγκόσμιο πεδίο εφαρμογής. Λάβετε υπόψη ότι το user1ActivePrivKey και το user2ActivePrivKey είναι τα ιδιωτικά κλειδιά που δημιουργήσαμε στη Δημιουργία Λογαριασμών. Μην χρησιμοποιείτε τα κλειδιά του ιδιοκτήτη εδώ. Τα ενεργά πλήκτρα είναι ασφαλέστερα. Θα πρέπει να αποθηκεύσετε αυτά τα κλειδιά ως περιβαλλοντικές μεταβλητές και να τις εισαγάγετε αν πρόκειται να κάνετε αυτόν τον κώδικα κοινό σε οποιοδήποτε σημείο.

const eos = Eos ({
  keyProvider: [
    user1ActivePrivKey,
    user2ActivePrivKey
  ]
});

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

eos.getCurrencyBalance ("eosio.token", "user1") και στη συνέχεια (tokenBalance => {
  console.log (tokenBalance)
});

Εφόσον έχουμε εκχωρήσει αναγνωριστικά στο χρήστη1 στην προηγούμενη ενότητα, θα πρέπει να δείτε το τρέχον υπόλοιπο συμβολοσειράς των 100.0000 TOK. Αν ελέγξουμε το υπόλοιπο συμβόλων του χρήστη2, δεν θα πρέπει να βλέπετε υπόλοιπο.

eos.getCurrencyBalance ("eosio.token", "user2") και στη συνέχεια (tokenBalance => {
  console.log (tokenBalance)
});

Σε αυτό το παράδειγμα dapp, θα έχουμε κάποιες πολύ βασικές λειτουργίες. Υποθέτουμε ότι ο χρήστης1 λαμβάνει κάποια αξία και, αντίθετα, στέλνει μάρκες στο χρήστη2. Σε eosjs, ο καλύτερος τρόπος για να γίνει αυτό είναι μέσω μιας «συναλλαγής». Εδώ, θα στείλουμε 5 TOK

eos
  .συναλλαγή({
    Ενέργειες: [
      {
        λογαριασμός: "eosio.token",
        όνομα: "μεταφορά",
        εξουσιοδότηση: [
          {
            ηθοποιός: "user1",
            άδεια: "ενεργή"
          }}
        ],
        δεδομένα: {
          από: "user1",
          σε: "user2",
          ποσότητα: "5.0000 TOK",
          σημείωμα: "κάποια περιγραφή της συναλλαγής"
        }}
      }}
    ]
  })
  .then (αποτέλεσμα => {
    // Ελέγξτε ξανά τα υπόλοιπα των συμβόλων. Τώρα θα δείτε 5 TOK στο user2's
    // account και 95 TOK στο λογαριασμό του χρήστη1
  });

Όταν δημιουργείτε μια προσαρμοσμένη σύμβαση, θα αλληλεπιδράτε με αυτήν με τον ίδιο τρόπο που αλληλεπιδράτε με το συμβόλαιο συμβόλων.

Επόμενα βήματα

Για πρόσθετα παραδείγματα από την ομάδα EOSIO και για να δημιουργήσετε πρόσθετη λειτουργικότητα για το dapp σας, μεταβείτε στην επίσημη τεκμηρίωση της EOS.

Ερωτήσεις; Θέματα? Παρακαλώ αφήστε ένα σχόλιο και θα συνεργαστώ μαζί σας για να το πάρετε αυτό. Αν βρήκατε αυτόν τον οδηγό χρήσιμο, χτυπήστε μερικές φορές για να βοηθήσετε άλλους επιδιώκοντας EOS devs να το βρείτε. Επίσης, ενημερώστε μας αν ενδιαφέρεστε για έναν προηγμένο οδηγό. Κατασκευάσαμε κάτι πολύ πιο περίπλοκο για τον hackathon και χαίρομαι που μοιράζομαι περισσότερα!

Αν θέλετε να διαβάσετε περισσότερα για την εμπειρία μου στο hackathon, δείτε το άλλο άρθρο μου εδώ!