Ethereum 69: kako v 10 minutah nastaviti popolnoma sinhronizirano vozlišče blockchain

Dobrodošli v prvem članku naše nove serije go-ethereum!

V naslednjih 10 minutah boste:

  • Naučite se prvega glosarja blockchaina brez potrebnega predhodnega znanja ekosistema
  • V celoti sinhronizirano vozlišče za testiranje (»odjemalec / strežnik«) nastavite na manj kot 10 minut
  • Ustvarite svoj račun in prejmite transakcijo v višini 8ETH od fundacije Ethereum BREZPLAČNO

Naš moto je, vadite pred teorijo - zato skočite naravnost v namestitev popolnoma sinhroniziranega vozlišča za preizkušanje Ethereuma, povezanega s testno mrežo Rinkeby!

Geth

Geth je vmesnik ukazne vrstice (CLI), sestavljen binarni program, program in odjemalec za izvajanje celotnega vozlišča Ethereum, implementiran v Go.

Geth bomo uporabili za:

  • zaženite popolnoma sinhronizirano vozlišče Ethereum, da se povežete s testnim omrežjem, imenovanim Rinkeby
  • ustvarite nov račun, da boste lahko pošiljali in prejemali transakcije
  • za branje stanja EVM, npr. preverjanje stanja katerega koli računa (želite vedeti, koliko stane vaše dekle, fant, žena, sosed? Sladka prosojnost!)

Namestitev Geth-a

Namestimo ga lahko neposredno iz skladišč:

Mac

pivo tap ethereum / ethereum
pivo namestite ethereum

Linux

sudo apt - namestite programske lastnosti-pogoste
sudo add-apt-repository -y ppa: ethereum / ethereum
sudo apt-get update
sudo apt-get install ethereum

Windows

Vso srečo :)

Preverite namestitev:

ki geth
> / usr / local / bin / geth
različica geth
> Geth
> Različica: 1,88-stabilno

Prepričajte se, da imate isto različico, da boste lahko izvajali popolno sinhronizacijo omrežja Rinkeby, kot je opisano v naslednjih korakih, ker je Rinkeby delovala na hardforku v stalnem množici, ki ga podpira Geth 1.8.20. Ta podrobna objava v blogu razlaga več podrobnosti, če vas spletka!

Zagon vozlišča blockchain

No, hudič je v podrobnostih ... toda začetek je pravzaprav preprost. Kudos razvijalcem Ethereuma.

Nastavimo novo popolnoma sinhronizirano vozlišče Rinkeby (preizkusno omrežje Ethereum s protokolom Clique PoA).

Izvajanje Rinkeby PoA je veliko hitrejše, a bistveno manj varno. Bolj je centraliziran iz PoW mainnet concensus, kar je povsem v redu, ker je testna mreža. Rinkeby uspe odobriti nov blok s kopico transakcij vsakih 15 s.

Ok, ok, ok ... Kaj dejansko pomenijo te besede?

  • Rinkeby: ime testne mreže Proof of Authority
  • Vozlišče: v bistvu tradicionalni strežnik, ki izvaja Ethereum odjemalec / strežnik
  • Concensus: algoritem, ki določa, kako bodo transakcije potrjene, dodane in obstojne v bazi podatkov na vsakem vozlišču
  • Blok: kup transakcij v zapletenem nizu, ki se na vsakih 15 sekund odda okoli žice med vsemi vozlišči v omrežju
  • Transakcija: ne razmišljajte o bančni transakciji. Transakcija blockchain je sprememba stanja. Preimenovanje lastnika pametne pogodbe iz Alice v Bob? Spreminjanje stanja na vašem računu z 1ETH na 5ETH? V svoji pametni pogodbi vrednost spremenljivke „foo“ nastavite na „foo_value_123“? To je transakcija.

Več o predlogu za Rinkeby PoA si lahko preberete tukaj: https://github.com/ethereum/EIPs/isissue/225

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

Zgornji ukaz:

  • inicializirajte nov imenik, v katerem bodo shranjeni vsi podatki v ~ / .gophersland_ethereum_r1. Privzeti imenik bi bil: ~ / .ethereum
  • začnite prenašati zgodovino Ethereuma, potrebno za novo popolnoma veljavno sinhronizirano vozlišče omrežja
  • komunikacija bo potekala prek pristanišča 30304
  • predpomnilnik, nekakšen medpomnilnik, bo nastavljen na 2 GB, da pospeši proces sinhronizacije
  • sprožil se bo dodatni RPC API, da bomo lahko komunicirali z našim vozliščem prek konzole, prijazen GUI prek porta 8546, pozneje

Počakajte nekaj ur, da se blockchain v celoti sinhronizira.

Trenutna številka bloka na dan 24. septembra je: 3039786. Na mojem AMD Ryzen 5 2600, 3,4 Ghz, je postopek sinhronizacije trajal 3 ure. O ja, nov igralni računalnik imam!

Medtem lahko spremljate GophersLand na Twitterju ali si pripravite večerjo, verjetno tudi zajtrk, pojdite v telovadnico… recimo, blockchain ni najhitrejša baza podatkov :)

Na koncu bo tiskano sporočilo:

  • INFO [<čas>] Uvoženo novo število verižnih segmentov = 1
  • INFO [<čas>] Uvoženo novo število verižnih segmentov = 1
  • INFO [<čas>] Uvoženo novo število verižnih segmentov = 1
  • INFO [<čas>] Uvoženo novo število verižnih segmentov = 1

Čestitamo, zdaj ste del blockchain revolucije v manj kot 10 minutah !!!

Ustvarjanje vašega prvega računa za blockchain

Keystore

Vsi računi Ethereum in njihovi ključi so shranjeni v imeniku, imenovanem "keystore". Imenik je privzeto prazen, saj še nismo ustvarili svojega računa!

enhanter @ 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 geth
srw ------- 1 enhanter enchanter 0 sep 24 15:26 geth.ipc
drwx ------ 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 ..

račun

Če želite ustvariti nov račun, izvedite naslednji že znani geth cmd.

geth --datadir = ~ / .gophersland_ethereum_r1 račun nov

Pozvani boste, da vnesete geslo (to je vaša SUPER SECRET PASSWORD). To je potrebno za dešifriranje novo ustvarjenega zasebnega ključa, povezanega z vašim novim naslovom Ethereum, saj vam omogoča, da ga pozneje uporabite za podpisovanje transakcij na blockchain. Zapišite si ga nekje, saj ga bomo potrebovali kasneje. Brez skrbi, če ga pozabite, je tako ali tako le testna mreža.

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 račun nov
INFO [09-24 | 15: 36: 33.566] Največje število vrstnikov ETH = 25 LES = 0 skupaj = 25
Vaš novi račun je zaklenjen z geslom. Prosimo, vnesite geslo. Ne pozabite tega gesla.
Geslo:
Ponovite geslo:
Naslov: {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 enhanter enchanter 491 sep 24 15:36
UTC - 2018-09-24T13-36-43.069452577Z - ceee57f2b700c2f37d1476a7974965e149fce2d4

Woohoo! Moj nov naslov Ethereum je živ: ceee57f2b700c2f37d1476a7974965e149fce2d4.

Običajno boste naleteli na ta naslov s predpono »0x« in označil kodiranje naslova, HEX.

Najnovejša oblika ključnih datotek je: UTC - - . Vrstni red računov pri uvrstitvi na seznam je leksikografski, vendar je posledica zapisa časovne žarnice dejansko po vrstnem redu.

Če vas zanima, kaj je znotraj datoteke, jo odprite! Boš videl:

  • Naslov: vaš novi šestnajsti naslov
  • Kripto: kopica matematičnih spremenljivk, odgovornih za predstavljanje vašega zasebnega ključa v šifrirani obliki, za zdaj ne skrbite za to magijo

Zanimiva opomba: generiranje računa se zgodi v načinu brez povezave in ne potrebuje sinhroniziranega vozlišča blockchain. Zanimivo, kako je s tehnične perspektive mogoče ustvariti edinstven naslov v načinu brez povezave? V naslednjem članku bomo sami preverili izvorno kodo go-ethereuma.

Spoiler: zato, ker je naslov šifriranje vašega javnega ključa, ki temelji na vašem edinstvenem zasebnem ključu.

V redu, imam nov shinny Ethereum račun, kakšno je stanje in kako položim nekaj preizkusnega eterja?

Ko že govorimo o etru ... kaj je pravzaprav?

Eter

Eter je kripto valuta, ki napaja mrežo Ethereum. Uporablja se kot enota vrednosti in za plačevanje rudarjev za potrjevanje, dodajanje in vztrajanje transakcij v kolektivnem DB-ju. V glavnem je to tehnika za preprečevanje neželene pošte, ker so rudarji nagrajeni s 5 (od prejšnjega meseca "le" 3) ETH za vsak uspešno izkopan blok. Da, to je 600 USD po trenutni ceni 24. septembra, vsakih 15. Ni slab posel.

Kako BREZPLAČNO prejmete transakcijo 8ETH od fundacije Ethereum

Preverjanje stanja na računu

Prepričajmo se, da je stanje na našem računu 0, razen če je kdo že poslal dobroto svojega srca.

Geth ponuja konzolo JavaScript, ki jo je mogoče pripeti na izvedljiv binarni zapis za priročno interakcijo z blockchainom. Z njim se lahko povežemo tako, da določimo datoteko vtičnic, ki je izpostavljena, ko se Geth zažene. Datoteke vtičnic so zelo uporabne za "medprocesno komunikacijo na istem stroju", tj. IPC.

To datoteko lahko najdete v privzetem imeniku podatkov med izvajanjem programa Geth:

enhanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 /
drwx ------ 4 enchanter enchanter 4096 24. september 15:44.
drwxr-xr-x 18 enchanter enchanter 4096, 24. septembra 15:47.
drwx ------ 4 enchanter enchanter 4096 24. september 15:44 geth
srw ------- 1 enchanter enchanter 0 24. september 15:44 geth.ipc
drwx ------ 2 enchanter enchanter 4096 24. septembra 15:47 keystore

Pojdimo v interakcijo z omrežjem Rinkeby s pomočjo cmd "geth attach" na drugem terminalu, medtem ko vaše vozlišče blockchain še vedno deluje. Prepričajte se, da ste prehodili absolutno pot do datoteke IPC, sicer boste prišli do napake.

enchanter @ lukas-gaming: ~ $ geth attach ipc: /home/enchanter/.gophersland_ethereum_r1/geth.ipc
Dobrodošli na konzoli Geth JavaScript!
primer: Geth / v1.8.15-stable-89451f7c / linux-amd64 / go1.10.1
coinbase: 0xceee57f2b700c2f37d1476a7974965e149fce2d4
ob bloku: 3044891 (pon, 24. sep. 2018 16:42:36 CEST)
datadir: /home/enchanter/.gophersland_ethereum_r1
module: 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
> et.računi
["0xceee57f2b700c2f37d1476a7974965e149fce2d4"]
> et.sinziranje
lažno
> eth.getBalance ("0xceee57f2b700c2f37d1476a7974965e149fce2d4")
0

Poizvedba blockchain:

eth.accounts: preverite trenutno razpoložljive račune

eth.syncing: da bi zagotovili, da je naše stanje, DB popolnoma posodobljen s preostalim omrežjem, da zagotovimo, da bo odgovor getBalance temeljil na zadnjem stanju

eth.getBalance (""): za poizvedbo v DB.

BREZPLAČNO prejemanje transakcije v višini 8ETH od fundacije Ethereum

Fundacija Ethereum ima na spletu zelo urejen program, imenovan „Pipa“, za pripisovanje Ether računov, ki ga zahtevajo v realnem času.

Prošnja za eter:

  1. Objavi svoj račun na enem od javnih družabnih omrežij
  2. E.g, objavite tvit z vašim naslovom Ethereum kjerkoli v tvitu, kot je ta https://twitter.com/EnchanterIO/status/1044238559224483841, obvezno označite @BlocksByLukas in @freeCodeCamp in nam sporočite, če vam je vadnica všeč!
  3. Odprite https://www.rinkeby.io/#faucet in prilepite URL tvita
  4. Kliknite »Daj mi eter«, izberite med 3, 7,5 ali 18,75 eter
  5. Počakajte nekaj sekund
  6. Ponovno poizvedujte o svojem računu
Rinkeby pipa

Voilà

Bogati ste ... v testni mreži. Čestitamo za dosežek. Več vsebin prihaja kmalu!

Nadaljujte po mojem: Ethereum 101

https://www.lukaslukac.io/courses/ethereum-101-glossary-smart-contracts-tests-frameworks