Bine ați venit în primul articol al noii noastre serii go-ethereum!

În următoarele 10 minute veți:

  • Aflați primul glosar blockchain fără cunoștințele prealabile ale ecosistemului
  • Configurați nodul de testare complet sincronizat (“client server”) în sub 10 minute
  • Creeaza-ti contul și primiți gratuit o tranzacție de 8ETH de la fundația Ethereum

Motto-ul nostru este, practica înainte de teorie – așa că hai să intrăm direct în instalarea unui nod de testare Ethereum complet sincronizat conectat la o rețea de testare Rinkeby!

Geth

Geth este o interfață de linie de comandă (CLI), un binar compilat, un program și un client pentru rularea unui nod Ethereum complet implementat în Go.

Noi vom folosi Geth la:

  • rulați un nod Ethereum complet sincronizat pentru a vă conecta la o rețea de testare numită Rinkeby
  • creați un cont nou pentru a putea trimite și primi tranzacții
  • pentru citirea stării EVM, de ex. verificarea soldului oricărui cont (doriți să știți cât de mult sold are prietena, iubitul, soția, vecinul dvs.? Dulce transparență!)

Instalarea Geth

Îl putem instala direct din depozite:

Mac

brew tap ethereum/ethereumbrew install ethereum

Linux

sudo apt-get install software-properties-commonsudo add-apt-repository -y ppa:ethereum/ethereumsudo apt-get updatesudo apt-get install ethereum

Windows

Good luck :)

Verificați instalarea:

which geth> /usr/local/bin/geth
geth version> Geth> Version: 1.8.20-stable

Asigurați-vă că rulați aceeași versiune pentru a putea efectua o sincronizare completă a unei rețele Rinkeby, așa cum este descris în pașii următori, deoarece Rinkeby a acționat un hardfork constantinople susținut de Geth 1.8.20.

Rularea unui nod blockchain

Ei bine, diavolul este în detalii … dar a începe este de fapt simplu. Mulțumiri pentru dezvoltatorii Ethereum.

Să configurăm o nouă sincronizare completă Rinkeby (Rețeaua de testare Ethereum utilizând protocolul Clique PoA) nodul.

Implementarea Rinkeby PoA este mult mai rapidă, dar semnificativ mai puțin sigură. Este mai centralizat de la PoW, care este foarte bine fiind o rețea de testare. Rinkeby reușește să aprobe un nou bloc cu o grămadă de tranzacții la fiecare 15s.

Ok, ok, ok … Ce înseamnă de fapt aceste cuvinte?

  • Rinkeby: numele rețelei de testare a dovezii autorității
  • Nodul: practic un server tradițional care execută client / server Ethereum
  • Recensământ: un algoritm care definește modul în care tranzacțiile vor fi validate, atașate și persistate în baza de date pe fiecare nod
  • Bloc: o grămadă de tranzacții într-o matrice complicată expediată în jurul firului între toate nodurile rețelei la fiecare 15s
  • Tranzacţie: nu te gândi la o tranzacție bancară. O tranzacție blockchain este o schimbare de stare. Redenumirea proprietarului unui contract inteligent de la Alice la Bob? Schimbați soldul contului dvs. de la 1ETH la 5ETH? Setați valoarea variabilă „foo” la „foo_value_123” în contractul dvs. inteligent? Aceasta este o tranzacție.

Puteți citi mai multe despre propunerea Rinkeby PoA aici: https://github.com/ethereum/EIPs/issues/225

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

Comanda de mai sus va:

  • inițializați un director nou în care vor fi stocate toate datele ~/.gophersland_ethereum_r1. Directorul implicit ar fi: ~/.ethereum
  • începeți să descărcați istoricul Ethereum necesar pentru a deveni un nou nod complet valid, sincronizat al rețelei
  • comunicarea va avea loc prin portul 30304
  • cache, un fel de tampon, va fi setat la 2 GB pentru a accelera procesul de sincronizare
  • API RPC suplimentar va fi lansat, astfel încât să putem comunica cu nodul nostru prin console, GUI frumos peste portul 8546, mai târziu
Ethereum 69 Cum sa configurati un nod blockchain complet sincronizat

Așteptați câteva ore până când blockchain-ul este complet sincronizat.

Numărul actual de bloc din 24 septembrie este: 3039786. Pe AMD Ryzen 5 2600, 3,4 Ghz, procesul de sincronizare a durat 3 ore. A, da, am un nou PC de jocuri!

Între timp poți urmărește Web3Coach pe Twitter sau pregătiți cina, probabil și micul dejun, mergeți la sală … să spunem doar că blockchain-ul nu este cea mai rapidă bază de date 🙂

În cele din urmă, mesajul tipărit va fi:

  • INFO [<time>] Numărul segmentului de lanț nou importat = 1
  • INFO [<time>] Numărul segmentului de lanț nou importat = 1
  • INFO [<time>] Numărul segmentului de lanț nou importat = 1
  • INFO [<time>] Numărul segmentului de lanț nou importat = 1

Felicitări, acum faceți parte din revoluția blockchain în mai puțin de 10 minute !!!

Crearea primului dvs. cont blockchain

Keystore

Toate conturile Ethereum și cheile acestora sunt stocate într-un director numit „keystore”. Directorul este gol în mod implicit, deoarece nu ne-am creat încă propriul cont!

enchanter@lukas-gaming:~$ ls -la ~/.gophersland_ethereum_r1/
drwx------  4 enchanter enchanter 4096 sep 24 15:26 .drwxr-xr-x 18 enchanter enchanter 4096 sep 24 11:51 ..drwx------  4 enchanter enchanter 4096 sep 24 15:26 gethsrw-------  1 enchanter enchanter    0 sep 24 15:26 geth.ipcdrwx------  2 enchanter enchanter 4096 sep 23 09:54 keystore
enchanter@lukas-gaming:~$ ls -la ~/.gophersland_ethereum_r1/keystore/
drwx------ 2 enchanter enchanter 4096 sep 23 09:54 .drwx------ 4 enchanter enchanter 4096 sep 24 15:26 ..

Cont

Pentru a crea un cont nou, executați următoarele, deja familiare, geth cmd.

geth --datadir=~/.gophersland_ethereum_r1 account new

Vi se va solicita să introduceți o expresie de acces (aceasta este parola dvs. SUPER SECRETĂ). Acest lucru este necesar pentru decriptarea cheii private nou generate, asociată cu noua adresă Ethereum, deoarece vă permite să o utilizați ulterior pentru semnarea tranzacțiilor pe blockchain. Notați-l undeva, deoarece vom avea nevoie de el mai târziu. Dar nu vă faceți griji dacă o uitați, oricum aceasta este doar o rețea de testare.

enchanter@lukas-gaming:~$ ls -la ~/.gophersland_ethereum_r1/keystore/
drwx------ 2 enchanter enchanter 4096 sep 23 09:54 .drwx------ 4 enchanter enchanter 4096 sep 24 15:26 ..
enchanter@lukas-gaming:~$ geth --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: {ceee57f2b700c2f37d1476a7974965e149fce2d4}
enchanter@lukas-gaming:~$ 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--ceee57f2b700c2f37d1476a7974965e149fce2d4

Woo hoo! Noua mea adresă Ethereum este în viață: ceee57f2b700c2f37d1476a7974965e149fce2d4.

În mod normal, veți întâlni această adresă prefixată cu „0x”Pentru a indica codarea adresei, HEX.

Cel mai nou format al fișierelor cheie este: UTC--<created_at UTC ISO8601>-<your address in hex codificare>. Ordinea conturilor la listare este lexicografică, dar ca o consecință a formatului timepamp, este de fapt în ordinea creației.

Dacă sunteți curios ce se află în interiorul fișierului, nu ezitați să îl deschideți! Vei vedea:

  • Abordare: noua dvs. adresă hexagonală
  • Crypto: o grămadă de variabile matematice responsabile de reprezentarea cheii private în formă criptată, nu vă faceți griji pentru acea magie pentru moment

Notă interesantă: generarea contului are loc în modul offline și nu necesită un nod blockchain sincronizat. Curios cum se poate genera o adresă unică într-un mod offline din perspectiva tehnică? Vom verifica go-ethereum codul sursă însuși în articolul următor.

Spoiler: este pentru că adresa este un hash al cheii dvs. publice, care se bazează pe cheia dvs. privată unică.

Bine, am un nou cont Ethereum strălucitor, care este soldul meu și cum depun niște teste Eter?

Apropo de Ether … ce este de fapt?

Eter

Ether este criptomoneda care alimentează rețeaua Ethereum. Este folosit ca unitate de valoare și pentru plata minerilor pentru validarea, adăugarea și persistența tranzacțiilor la baza de date colectivă. Dar, în principal, este o tehnică pentru prevenirea SPAM, deoarece minerii sunt recompensați cu 5 (din luna trecută „doar” 3) ETH pentru fiecare bloc extras cu succes. Da, asta înseamnă 600 USD la prețul actual pe 24 septembrie, la fiecare 15 ani. Nu este o afacere proastă.

Cum să primiți GRATUIT o tranzacție de 8ETH de la fundația Ethereum

Verificarea soldului contului

Să ne asigurăm că soldul contului nostru este mai întâi 0, cu excepția cazului în care cineva a reușit deja să trimită niște Etere din bunătatea inimii sale.

Geth oferă o consolă JavaScript care poate fi atașată la binarul executabil pentru a interacționa convenabil cu blockchain-ul. Ne putem conecta la acesta specificând un fișier socket care este expus o singură dată Geth cizme sus. Fișierele socket sunt foarte utile pentru „comunicarea între procese pe aceeași mașină”, cunoscută sub denumirea de IPC.

Puteți localiza acest fișier în directorul de date implicit în timp ce rulează programul Geth:

enchanter@lukas-gaming:~$ ls -la ~/.gophersland_ethereum_r1/
drwx------  4 enchanter enchanter 4096 Sep 24 15:44 .drwxr-xr-x 18 enchanter enchanter 4096 Sep 24 15:47 ..drwx------  4 enchanter enchanter 4096 Sep 24 15:44 gethsrw-------  1 enchanter enchanter    0 Sep 24 15:44 geth.ipcdrwx------  2 enchanter enchanter 4096 Sep 24 15:47 keystore

Să interacționăm cu rețeaua Rinkeby folosind „geth attach”Cmd într-un alt terminal în timp ce nodul dvs. blockchain rulează încă. Asigurați-vă că treceți calea absolută către fișierul IPC, altfel veți primi o eroare.

enchanter@lukas-gaming:~$ geth attach ipc:/home/enchanter/.gophersland_ethereum_r1/geth.ipc
Welcome to the Geth JavaScript console!
instance: Geth/v1.8.15-stable-89451f7c/linux-amd64/go1.10.1coinbase: 0xceee57f2b700c2f37d1476a7974965e149fce2d4at block: 3044891 (Mon, 24 Sep 2018 16:42:36 CEST)
datadir: /home/enchanter/.gophersland_ethereum_r1modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
&gt; eth.accounts["0xceee57f2b700c2f37d1476a7974965e149fce2d4"]
&gt; eth.syncingfalse
&gt; eth.getBalance("0xceee57f2b700c2f37d1476a7974965e149fce2d4")0

Interogare blockchain:

conturi etice: pentru a vă verifica conturile disponibile în prezent

sincronizare eth: pentru a ne asigura că starea noastră, DB este complet actualizată cu restul rețelei pentru a se asigura că răspunsul getBalance se va baza pe cea mai recentă stare

eth.getBalance („gt; ”): pentru interogarea DB.

Primirea GRATUITĂ a unei tranzacții de 8ETH de la fundația Ethereum

Fundația Ethereum are un program foarte îngrijit numit „Robinet”Disponibil online pentru alocarea Ether conturilor care o solicită în timp real.

Solicitarea eterului:

  1. Publicați adresa contului dvs. pe una dintre rețelele sociale publice
  2. De exemplu, postați un tweet care să conțină adresa dvs. Ethereum oriunde în tweet ca acesta https://twitter.com/EnchanterIO/status/1044238559224483841, asigurați-vă că etichetați @ Web3Coach și @Routech și anunțați-ne dacă vă place tutorialul!
  3. Deschis https://www.rinkeby.io/#faucet și lipiți adresa URL de tweet
  4. Faceți clic pe „Dă-mi eter”, alegeți între 3, 7,5 sau 18,75 eter
  5. Așteptați câteva secunde
  6. Solicitați din nou soldul contului
0*Zd4RuYRAIiyqy8Jf
Robinetul Rinkeby
0*TM yQ3hRp8c8tyf8

Voilà

Ești bogat … într-o rețea de testare. Felicitări pentru că ai ajuns atât de departe.

Puteți continua să vă extindeți abilitățile de blockchain construind una de la zero în Go! “