Πώς να μεταφέρετε χρήματα στο δίκτυο Ethereum χρησιμοποιώντας το GETH CLI

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

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

Εγινε? Τέλειος.

Σε αυτό το σημείο γνωρίζετε:

  • πώς να εκτελέσετε έναν πλήρως συγχρονισμένο κόμβο blockchain Ethereum
  • πώς να επισυνάψετε GETH console
  • πώς να υποβάλετε ερώτημα για το υπόλοιπο ενός λογαριασμού Ethereum
geth attach ipc:/home/enchanter/.gophersland_ethereum_r1/geth.ipc 
eth.getBalance("0xceee57f2b700c2f37d1476a7974965e149fce2d4")
> 7500000000000000000

Ναι, ίσως να σκεφτείτε, αλλά περιμένετε για ένα δεύτερο Λούκα… γιατί 7.5ETHεμφανίζεται όπως 7500000000000000000στο Geth console;

Ether εναντίον Wei

Η Εικονική Μηχανή Ethereum δεν υποστηρίζει δεκαδικά ή επιπλέοντα σώματα. Προφανώς, οι υπολογισμοί στη χρηματοδότηση είναι ευκολότεροι σε ακέραιους αριθμούς.

Επομένως, για να μπορέσει να στείλει ένα κλάσμα 1 ETH, το Ίδρυμα Ethereum αποφάσισε να δημιουργήσει το δικό του μετρικό σύστημα όπου η μικρότερη μονάδα θα ήταν 1 Wei και 1 Ether είναι 1e18 Wei.

Αλλά μην ανησυχείτε, υπάρχουν εργαλεία που μπορούν να κάνουν τη ζωή σας πιο εύκολη. Για παράδειγμα, συνιστώ ανεπιφύλακτα τον ηλεκτρονικό μετατροπέα Ether to Wei:

//etherconverter.online

Για να στείλετε 15 $ Ether αξίας, όπου 1 ETH == 200 $ (παλιές καλές εποχές…), θα κάνατε μια συναλλαγή στέλνοντας 0,0740 ETH που θα ήταν και πρέπει να εκπροσωπείται στο Wei ως

Online μετατροπέας Ether σε Wei:

Επισκόπηση του μετρικού συστήματος Ethereum:

Η πρακτική κάνει την κυριότητα. Ας στείλουμε πραγματικά 74000000000000000 Wei (15 $) σε άλλο λογαριασμό.

Αποστολή Ether σε άλλο λογαριασμό χρησιμοποιώντας το GETH CLI

Σε ένα τερματικό, θυμηθείτε να εκτελέσετε έναν πλήρως συγχρονισμένο κόμβο blockchain:

geth --rinkeby --datadir=~/.gophersland_ethereum_r1 --port=30304 --cache=2048 --rpc --rpcport=8546 --rpcapi=eth,web3,net,personal --syncmode=fast

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

ls -la ~/.gophersland_ethereum_r1/keystore/> drwx------ 2 enchanter enchanter 4096 sep 24 15:36 .> drwx------ 4 enchanter enchanter 4096 sep 24 15:26 ..> -rw------- 1 enchanter enchanter 491 sep 24 15:36 
UTC--2018-09-24T13-36-43.069452577Z--ceee57f2b700c2f37d1476a7974965e149fce2d4geth --datadir=~/.gophersland_ethereum_r1 account new> INFO [09-24|15:36:33.566] Maximum peer count ETH=25 LES=0 total=25> Your new account is locked with a password. Please give a password. Do not forget this password.
> Passphrase: > Repeat passphrase: > Address: {7aa4a14286a25e3a275d7a122c23dc3c107a636a}ls -la ~/.gophersland_ethereum_r1/keystore/> drwx------ 2 enchanter enchanter 4096 oct 25 20:14 .> drwx------ 4 enchanter enchanter 4096 oct 25 19:48 ..> -rw------- 1 enchanter enchanter 491 sep 24 15:36 
UTC--2018-09-24T13-36-43.069452577Z--ceee57f2b700c2f37d1476a7974965e149fce2d4

Τώρα, ας επισυνάψουμε την κονσόλα Geth στον τρέχοντα κόμβο blockchain, όπως κάναμε στο προηγούμενο άρθρο, για να μεταφέρουμε 15 $ σε αυτόν τον πρόσφατα δημιουργημένο λογαριασμό εκτελώντας την eth.sendTransactionεντολή.

geth attach ipc:/home/enchanter/.gophersland_ethereum_r1/geth.ipc 
eth.sendTransaction({from: "0xceee57f2b700c2f37d1476a7974965e149fce2d4",to: "0x7aa4a14286a25e3a275d7a122c23dc3c107a636a", value: "74000000000000000"})

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

Θα πρέπει να λάβετε ένα σφάλμα. Αυτό συμβαίνει επειδή η αποστολή του Ether είναι «συναλλαγή» και μια συναλλαγή αλλάζει κατάσταση, κοστίζει φυσικό αέριο και ξοδεύει χρήματα. Αυτό σημαίνει ότι πρέπει να υπογραφεί με το ιδιωτικό κλειδί μας που είναι αποθηκευμένο στο Keystore. Για να αποκρυπτογραφήσουμε το κλειδί, πρέπει να παρέχουμε έναν κωδικό πρόσβασης, ή με άλλα λόγια, να ξεκλειδώσουμε τον λογαριασμό.

Εκτελέστε την ακόλουθη εντολή για να ξεκλειδώσετε τον λογαριασμό σας για τα επόμενα 60 και εκτελέστε ξανά την εντολή sendTransaction.

web3.personal.unlockAccount(web3.personal.listAccounts[0], null, 60) 
eth.sendTransaction({from: "0xceee57f2b700c2f37d1476a7974965e149fce2d4", to: "0x7aa4a14286a25e3a275d7a122c23dc3c107a636a", value: "74000000000000000"})

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

Αυτή τη φορά η εντολή πέτυχε και μια απόδειξη κατακερματισμού συναλλαγής επιστράφηκε! Ω! ναι!

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

  1. Ανοίξτε τον εξερευνητή
  2. Επικολλήστε το κατακερματισμό της απόδειξης συναλλαγής στη γραμμή αναζήτησης
  3. Τελειώσαμε, ξοδέψαμε 21.000 φυσικού αερίου (πρότυπο για την αποστολή χρημάτων) και η συναλλαγή πέτυχε!

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

eth.getBalance("0xceee57f2b700c2f37d1476a7974965e149fce2d4") > 7425979000000000000 
eth.getBalance("0x7aa4a14286a25e3a275d7a122c23dc3c107a636a") > 74000000000000000

Δουλεύει άψογα.

Συγχαρητήρια! Εσείς:

  • έμαθε τη διαφορά μεταξύ Ether και Wei και πώς να τα μετατρέψετε
  • υπέβαλε την πρώτη σας συναλλαγή σε παγκόσμιο δίκτυο δοκιμών Ethereum, Rinkeby

Μπορείτε να συνεχίσετε να επεκτείνετε τις δεξιότητές σας στο blockchain δημιουργώντας ένα από το μηδέν στο Go! "