Ethereum 69: kako postaviti potpuno sinkronizirani blockchain čvor u 10 minuta

Dobrodošli u prvi članak naše nove serije go-ethereum!

U sljedećih 10 minuta ćete:

  • Naučite prvi blockchain pojmovnik bez potrebnog prethodnog znanja ekosustava
  • Postavite potpuno sinkronizirani čvor za testiranje ("klijent / poslužitelj") ispod 10 minuta
  • Kreirajte svoj račun i BESPLATNO primite transakciju u iznosu od 8ETH od Ethereum fondacije

Naš moto je, vježbajte prije teorije - pa uskočite ravno u instalaciju potpuno sinkroniziranog čvora za ispitivanje Ethereuma spojenog na Rinkeby-ovu testnu mrežu!

Geth

Geth je sučelje naredbenog retka (CLI), sastavljeni binarni program, program i klijent za pokretanje čitavog Ethereum čvora implementirano u Go.

Geth ćemo koristiti za:

  • pokrenite potpuno sinkronizirani čvor Ethereum da biste se povezali s testnom mrežom zvanom Rinkeby
  • stvorite novi račun kako biste mogli slati i primati transakcije
  • za čitanje stanja EVM-a, npr. provjera stanja bilo kojeg računa (želite znati koliko uravnotežuju vaša djevojka, dečko, supruga, komšija? Slatka transparentnost!)

Instaliranje Geth-a

Možemo ga instalirati izravno iz spremišta:

ortak

pivo slavina ethereum / ethereum
pivo instalirati ethereum

Linux

sudo apt-get install softver-svojstva-uobičajena
sudo add-apt-repozitorij -y ppa: ethereum / ethereum
sudo apt-get update
sudo apt-get install ethereum

Windows

Sretno :)

Provjerite instalaciju:

koji geth
> / usr / local / bin / geth
inačica geth
> Geth
> Verzija: 1,88-stabilno

Uvjerite se da koristite istu verziju kako biste mogli izvesti potpunu sinkronizaciju Rinkeby mreže, kao što je opisano u sljedećim koracima jer je Rinkeby djelovao hardforkom iz konstantnog naroda koji podržava Geth 1.8.20. Ovaj detaljni blog objavljuje više detalja ako ste zaintrigirani!

Trčanje blockchain čvora

Pa, vrag je u detaljima ... ali početak je zapravo jednostavan. Kudos programerima Ethereuma.

Postavimo novi potpuno sinkronizirani čvor Rinkeby (Ethereum testna mreža pomoću protokola Clique PoA).

Provedba Rinkeby PoA mnogo je brža, ali znatno manje sigurna. On je više centraliziran iz PoW-a za mainnet concensus, što je sasvim u redu da bude testna mreža. Rinkeby uspijeva odobriti novi blok s hrpom transakcija svakih 15-ak.

Ok, ok, ok ... Što te riječi zapravo znače?

  • Rinkeby: naziv testne mreže Proof of Authority
  • Čvor: u osnovi tradicionalni poslužitelj koji izvršava Ethereum klijent / poslužitelj
  • Concensus: algoritam koji definira kako će se transakcije provjeriti, dodati i ustrajati u bazi podataka na svakom čvoru
  • Blok: hrpa transakcija u složenom nizu koji se šalje oko žice između svih čvorova mreže svakih 15 s
  • Transakcija: nemojte razmišljati o bankovnoj transakciji. Transakcija na blockchainu je promjena stanja. Preimenovanje vlasnika pametnog ugovora iz Alice u Bob? Promjena stanja računa s 1ETH u 5ETH? Postavljate vrijednost varijable „foo“ na „foo_value_123“ u vašem pametnom ugovoru? To je transakcija.

Više o prijedlogu Rinkeby PoA možete pročitati ovdje: https://github.com/ethereum/EIPs/isissue/225

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

Gornja naredba će:

  • inicijalizira novu mapu u kojoj će svi podaci biti pohranjeni u ~ / .gophersland_ethereum_r1. Zadani direktorij bio bi: ~ / .ethereum
  • započnite s preuzimanjem povijesti Ethereuma koja je potrebna da postane novi potpuno valjani, sinkronizirani čvor mreže
  • komunikacija će se odvijati preko luke 30304
  • predmemorija, vrsta međuspremnika, postavit će se na 2 GB kako bi se ubrzao proces sinkronizacije
  • pokrenut će se dodatni RPC API tako da možemo komunicirati s našim čvorom putem konzola, lijepo GUI na port 8546, kasnije

Pričekajte nekoliko sati dok se blockchain u potpunosti ne sinkronizira.

Trenutni broj bloka od 24. rujna je: 3039786. Na mom AMD Ryzen 5 2600, 3,4 Ghz, proces sinkronizacije trajao je 3 sata. O da, imam novi gaming PC!

U međuvremenu možete pratiti GophersLand na Twitteru ili pripremati večeru, vjerojatno i doručak, otići u teretanu ... recimo, blockchain nije najbrža baza podataka :)

Na kraju će ispisana poruka biti:

  • INFO [
  • INFO [
  • INFO [
  • INFO [

Čestitamo, sada ste dio blockchain revolucije za manje od 10 minuta !!!

Stvaranje vašeg prvog računa na blockchainu

ključeva

Svi Ethereum računi i njihovi ključevi pohranjeni su u mapu koja se zove "keystore". Katalog je prema zadanim postavkama prazan jer još nismo stvorili vlastiti račun!

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 geth
srw ------- 1 enchanter 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

Da biste stvorili novi račun, izvršite sljedeće, već poznate, geth cmd.

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

Od vas će se tražiti da unesete zaporku (ovo je vaša SUPER SECRET PASSWORD). Ovo je potrebno za dešifriranje novo generiranog privatnog ključa povezanog s vašom novom Ethereum adresom jer vam kasnije omogućuje korištenje za potpisivanje transakcija na blockchainu. Zapišite to negdje, jer ćemo nam trebati kasnije. Ali ne brinite se ako to zaboravite, ionako je to samo 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 novi
INFO [09-24 | 15: 36: 33.566] Maksimalni broj vršnjaka ETH = 25 LES = 0 ukupno = 25
Vaš novi račun zaključan je lozinkom. Molimo vas da unesete lozinku. Ne zaboravite ovu lozinku.
zaporka:
Ponovite zaporku:
Adresa: {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

Juhu! Moja nova Ethereum adresa je živa: ceee57f2b700c2f37d1476a7974965e149fce2d4.

Ovu adresu obično ćete sresti s prefiksom "0x" da biste naznačili kodiranje adrese, HEX.

Najnoviji format ključnih datoteka je: UTC - - . Redoslijed računa prilikom popisa je leksikografski, ali kao posljedica formata timespamp, zapravo je redoslijedom kreiranja.

Ako vas zanima što se nalazi u datoteci, slobodno je otvorite! Vidjet ćeš:

  • Adresa: vaša nova šesterokutna adresa
  • Kripto: gomila matematičkih varijabli odgovornih za predstavljanje vašeg privatnog ključa u šifriranom obliku, za sada ne brinite o toj magiji

Zanimljiva napomena: generiranje računa događa se u izvanmrežnom načinu i za to nije potreban sinkronizirani blockchain čvor. Zanimljivo je kako je moguće generirati jedinstvenu adresu u offline načinu iz tehničke perspektive? U sljedećem ćemo članku provjeriti sam izvorni kod go-ethereuma.

Spoiler: to je zato što je adresa šifri vašeg javnog ključa koja se temelji na vašem jedinstvenom, privatnom ključu.

U redu, imam novi sjajni Ethereum račun, koliki je moj saldo i kako mogu uplatiti neki testirani Eter?

Kad smo već kod Etera, što je to?

Eter

Eter je kripto valuta koja napaja mrežu Ethereuma. Koristi se kao jedinica vrijednosti i za plaćanje rudarima za potvrđivanje, dodavanje i ustrajanje transakcija u kolektivnom DB-u. Ali uglavnom je to tehnika sprječavanja SPAM-a, jer rudari dobivaju 5 (od prošlog mjeseca "samo" 3) ETH za svaki uspješno minirani blok. Da, to je 600 USD po trenutnoj cijeni od 24. rujna, svakih 15. Nije loš posao.

Kako BESPLATNO dobiti transakciju u iznosu od 8ETH od zaklade Ethereum

Provjera stanja na računu

Pobrinimo se da stanje na našem računu prvo bude 0, osim ako netko već nije uspio poslati nešto Etera iz dobrote svog srca.

Geth pruža JavaScript konzolu koja se može priključiti na izvršnu binarnu datoteku radi praktične interakcije s blockchainom. S njim se možemo povezati specificiranjem datoteke utičnice koja je izložena nakon što se Geth digne. Socket datoteke su vrlo korisne za "međuprocesnu komunikaciju na istom računalu", aka IPC.

Ovu datoteku možete pronaći u zadanom direktoriju podataka dok je Geth program pokrenut:

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

Idemo u interakciju s mrežom Rinkeby koristeći cmd "geth attach" na drugom terminalu, dok vaš blockchain čvor i dalje radi. Obavezno prođite apsolutnu putanju do IPC datoteke, inače ćete dobiti pogrešku.

enchanter @ lukas-gaming: ~ $ geth attach ipc: /home/enchanter/.gophersland_ethereum_r1/geth.ipc
Dobrodošli na Geth JavaScript konzolu!
primjer: Geth / v1.8.15-stable-89451f7c / linux-amd64 / go1.10.1
coinbase: 0xceee57f2b700c2f37d1476a7974965e149fce2d4
u bloku: 3044891 (pon, 24. rujna 2018. 16:42:36 CEST)
datadir: /home/enchanter/.gophersland_ethereum_r1
moduli: 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.insenziranje
lažan
> eth.getBalance ("0xceee57f2b700c2f37d1476a7974965e149fce2d4")
0

Blokiraj upit:

et.accounts: za provjeru trenutno dostupnih računa

eth.syncing: da bismo bili sigurni da je naša država, DB je u potpunosti aktualn s ostatkom mreže kako bi se osiguralo da se odgovor getBalance temelji na najnovijem stanju

eth.getBalance (""): da biste dobili upit u DB-u.

BESPLATNO primanje transakcije od 8ETH od zaklade Ethereum

Zaklada Ethereum ima vrlo uredan program nazvan "Slavina" dostupan na mreži za dodjeljivanje Etera računima koji to zahtijevaju u stvarnom vremenu.

Zatraživanje etera:

  1. Objavite adresu svog računa na jednoj od javnih društvenih mreža
  2. E.g, objavite tweet koji sadrži vašu Ethereum adresu bilo gdje u tvitu poput ovog https://twitter.com/EnchanterIO/status/1044238559224483841, obavezno označite @BlocksByLukas i @freeCodeCamp i javite nam ako vam se sviđa udžbenik!
  3. Otvorite https://www.rinkeby.io/#faucet i zalijepite tweet URL
  4. Kliknite na "Daj mi eter", izaberi između 3, 7,5 ili 18,75 Etera
  5. Pričekajte nekoliko sekundi
  6. Ponovno upitajte stanje računa
Rinkeby slavina

Evo ga

Bogati ste ... u testnoj mreži. Čestitamo da ste stigli do sada. Više sadržaja uskoro stiže!

Nastavite mojim tečajem: Ethereum 101

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