Ethereum 69: kā 10 minūtēs izveidot pilnībā sinhronizētu blokķēdes mezglu

Laipni lūdzam mūsu jaunās go-ethereum sērijas pirmajā rakstā!

Nākamo 10 minūšu laikā jūs:

  • Uzziniet pirmo ķēdes vārdnīcu bez nepieciešamām iepriekšējām zināšanām par ekosistēmām
  • Iestatiet pilnībā sinhronizēto testēšanas mezglu (“klients / serveris”) mazāk nekā 10 minūtēs
  • Izveidojiet savu kontu un BEZMAKSAS saņemiet 8ETH darījumu no Ethereum fonda

Mūsu moto ir - praktizēt pirms teorijas - tātad sāksim tieši pilnībā sinhronizēta Ethereum testēšanas mezgla uzstādīšanu, kas savienots ar Rinkbija testa tīklu!

Geth

Geth ir komandrindas saskarne (CLI), apkopots binārs, programma un klients pilna Ethereum mezgla palaišanai, kas ieviests Go.

Mēs izmantosim Geth uz:

  • palaist pilnībā sinhronizētu Ethereum mezglu, lai izveidotu savienojumu ar testa tīklu ar nosaukumu Rinkeby
  • izveidojiet jaunu kontu, lai varētu sūtīt un saņemt darījumus
  • EVM stāvokļa lasīšanai, piem. jebkura konta bilances pārbaude (vēlaties uzzināt, cik daudz ir jūsu draudzenei, puisim, sievai, kaimiņam? Saldu caurspīdīgumu!)

Instalējot Geth

Mēs to varam instalēt tieši no krātuvēm:

Mac

brūvēt krānu ethereum / ethereum
brūvēt instalēt ethereum

Linux

sudo apt-get instalēt programmatūru-properties-common
sudo add-apt-repository -y ppa: ethereum / ethereum
sudo apt-get atjauninājums
sudo apt-get install ethereum

Windows

Veiksmi :)

Pārbaudiet instalāciju:

kurš geth
> / usr / local / bin / geth
geth versija
> Geth
> Versija: 1.8.20-stabila

Pārliecinieties, ka jūs izmantojat to pašu versiju, lai varētu veikt pilnīgu Rinkeby tīkla sinhronizāciju, kā aprakstīts nākamajās darbībās, jo Rinkeby rīkojās pastāvīgā cilvēka cietajā formiņā, kuru atbalsta Geth 1.8.20. Šis sīki izstrādātais emuāra pasts izskaidro sīkāku informāciju, ja esat ieinteresēts!

Blokķēdes mezgla vadīšana

Nu velns ir detaļās… bet sākt ir faktiski vienkārši. Kudos uz Ethereum izstrādātājiem.

Izveidosim jaunu pilnībā sinhronizētu Rinkeby (Ethereum testa tīkls, izmantojot Clique PoA protokolu) mezglu.

Rinkeby PoA ieviešana ir daudz ātrāka, bet ievērojami mazāk droša. Tas ir vairāk centralizēts no Mainnet concensus PoW, kas ir lieliski, ja tas ir testa tīkls. Rinkbijam izdodas apstiprināt jaunu bloku ar virkni darījumu ik pēc 15 sekundēm.

Ok, ok, ok ... Ko šie vārdi patiesībā nozīmē?

  • Rinkijs: Iestādes apliecināšanas testa tīkla nosaukums
  • Mezgls: pamatā tradicionāls serveris, kas izpilda Ethereum klientu / serveri
  • Concensus: algoritms, kas nosaka, kā darījumi tiks validēti, pievienoti un saglabāti katra mezgla datu bāzē
  • Bloķēt: darījumu komplekss sarežģītā blokā, kas tiek nosūtīts ap vadu starp visiem tīkla mezgliem ik pēc 15 sekundēm
  • Darījums: nedomājiet par bankas darījumu. Blokķēdes darījums ir stāvokļa maiņa. Vai pārdomāt viedā līguma īpašnieku no Alises uz Bobu? Mainot konta atlikumu no 1ETH uz 5ETH? Vai jūsu viedajā līgumā mainīgā “foo” vērtība tiek iestatīta uz “foo_value_123”? Tas ir darījums.

Plašāku informāciju par Rinkija PoA priekšlikumu var lasīt šeit: https://github.com/ethereum/EIPs/issues/225

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

Iepriekš minētā komanda:

  • inicializējiet jaunu direktoriju, kurā visi dati tiks saglabāti ~ / .gophersland_ethereum_r1. Noklusējuma direktorija būtu: ~ / .ethereum
  • sāciet lejupielādēt Ethereum vēsturi, kas nepieciešama, lai kļūtu par jaunu pilnībā derīgu, sinhronizētu tīkla mezglu
  • komunikācija notiks pa ostu 30304
  • Kešatmiņa, sava veida buferis, tiks iestatīta uz 2 GB, lai paātrinātu sinhronizācijas procesu
  • Tiks palaista papildu RPC API, lai mēs varētu sazināties ar savu mezglu, izmantojot konsoles, jauku GUI portā 8546, vēlāk

Pagaidiet dažas stundas, līdz bloķēšanas ķēde ir pilnībā sinhronizēta.

Pašreizējais bloka numurs 24. septembrī ir: 3039786. Manā AMD Ryzen 5 2600, 3,4 GHz, sinhronizācijas process ilga 3 stundas. Ak, jā, man ir jauns spēļu dators!

Tikmēr jūs varat sekot GophersLand vietnē Twitter vai pagatavot vakariņas, iespējams, arī brokastis, doties uz sporta zāli… pieņemsim tikai teikt, blockchain nav ātrākā datu bāze :)

Visbeidzot drukātais ziņojums būs:

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

Apsveicam, jūs tagad esat daļa no blockchain revolūcijas mazāk nekā 10 minūšu laikā !!!

Pirmā blokķēdes konta izveidošana

Taustiņu veikals

Visi Ethereum konti un to atslēgas tiek glabāti direktorijā, ko sauc par “keytore”. Pēc noklusējuma direktorija ir tukša, jo mēs vēl neesam izveidojuši savu kontu!

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 keytore
enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 / taustiņu veikals /
drwx ------ 2 enchanter enchanter 4096 sep 23 09:54.
drwx ------ 4 enchanter enchanter 4096 sep 24 15:26 ..

Konts

Lai izveidotu jaunu kontu, izpildiet šo, jau pazīstamo, ged cmd.

geth --datadir = ~ / .gophersland_ethereum_r1 konts jauns

Jums tiks piedāvāts ievadīt ieejas frāzi (tas ir jūsu super slepenais parole). Tas ir nepieciešams, lai atšifrētu jūsu jaunizveidoto privāto atslēgu, kas saistīta ar jauno Ethereum adresi, jo tas ļauj to vēlāk izmantot darījumu parakstīšanai blokķēdē. Ievērojiet to kaut kur, jo mums tas būs vajadzīgs vēlāk. Bet neuztraucieties, ja to aizmirstat. Jebkurā gadījumā tas ir tikai testa tīkls.

enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 / taustiņu veikals /
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 konts jauns
INFO [09-24 | 15: 36: 33.566] Maksimālais vienaudžu skaits ETH = 25 LES = 0 kopā = 25
Jūsu jaunais konts ir bloķēts ar paroli. Lūdzu, ievadiet paroli. Neaizmirstiet šo paroli.
Ieejas frāze:
Atkārtot ieejas frāzi:
Adrese: {ceee57f2b700c2f37d1476a7974965e149fce2d4}
enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 / taustiņu veikals /
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

Woohoo! Mana jaunā Ethereum adrese ir dzīva: ceee57f2b700c2f37d1476a7974965e149fce2d4.

Jūs parasti saskarsities ar šo adresi, kurai ir burts “0x”, lai norādītu adreses kodējumu, HEX.

Jaunākais atslēgu failu formāts ir: UTC - - . Kontu secība, iekļaujot sarakstā, ir leksikogrāfiska, taču laika sprīga formāta rezultātā tā faktiski ir izveidošanas secībā.

Ja jums ir interese, kas atrodas failā, nekautrējieties to atvērt! Tu redzēsi:

  • Adrese: jūsu jaunā heksa adrese
  • Kriptogrāfija: matemātisko mainīgo kopums, kas atbild par jūsu privātās atslēgas atveidošanu šifrētā formā. Pagaidām neuztraucieties par šo maģiju.

Interesanta piezīme: konta ģenerēšana notiek bezsaistes režīmā, un tam nav nepieciešams sinhronizēts ķēdes mezgls. Interesanti, kā no tehniskā viedokļa ir iespējams ģenerēt unikālu adresi bezsaistes režīmā? Nākamajā rakstā mēs pārbaudīsim pašu go-ethereum avota kodu.

Spoileris: tas notiek tāpēc, ka adrese ir jūsu publiskās atslēgas sajaukums, kuras pamatā ir jūsu unikālā, privātā atslēga.

Labi, ka man ir jauns satriecošs Ethereum konts, kāds ir mans atlikums un kā es varu noguldīt dažus testēšanas ēterus?

Runājot par ēteri… kas tas patiesībā ir?

Ēters

Ēteris ir kriptovalūta, kas baro Ethereum tīklu. Tas tiek izmantots kā vērtības vienība un maksā kalnračiem par darījumu apstiprināšanu, pievienošanu un saglabāšanu kolektīvajā DB. Bet galvenokārt tas ir SPAM novēršanas paņēmiens, jo kalnračiem tiek piešķirta 5 (kopš pagājušā mēneša “tikai” 3) ETH par katru veiksmīgi noraktu bloku. Jā, tas ir USD 600 par pašreizējo cenu 24. septembra ik pēc 15 sekundēm. Nav slikts bizness.

Kā BEZMAKSAS saņemt 8ETH darījumu no Ethereum fonda

Konta atlikuma pārbaude

Vispirms pārliecināsimies, vai mūsu konta bilance ir 0, ja vien kādam no sirds nav izdevies nosūtīt kādu ēteri.

Geth nodrošina JavaScript konsoli, kuru var pievienot izpildāmajam bināram, lai ērti mijiedarbotos ar blokķēdi. Mēs varam izveidot savienojumu ar to, norādot ligzdas failu, kas tiek pakļauts, kad Geth sāknējas. Socket faili ir ļoti noderīgi “starpposma saziņai tajā pašā mašīnā”, aka IPC.

Kamēr darbojas Geth programma, šo failu var atrast noklusējuma datu direktorijā:

enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 /
drwx ------ 4 enchanter enchanter 4096 24. septembris 15:44.
drwxr-xr-x 18 enchanter enchanter 4096 24. septembris 15:47 ..
drwx ------ 4 enchanter enchanter 4096 24. septembris 15:44 geth
srw ------- 1 enchanter enchanter 0 24. septembris 15:44 geth.ipc
drwx ------ 2 enchanter enchanter 4096 24. septembris 15:47 taustiņu veikals

Mijiedarbosimies ar Rinkeby tīklu, izmantojot cmd “geth pievienot” citā terminālī, kamēr jūsu blokķēdes mezgls joprojām darbojas. Pārliecinieties, ka IPC failam ir jāiet absolūtais ceļš, pretējā gadījumā jūs saņemat kļūdu.

enchanter @ lukas-gaming: ~ $ geth pride ipc: /home/enchanter/.gophersland_ethereum_r1/geth.ipc
Laipni lūdzam Geth JavaScript konsolē!
piemērs: Geth / v1.8.15-stabils-89451f7c / linux-amd64 / go1.10.1
monētu bāze: 0xceee57f2b700c2f37d1476a7974965e149fce2d4
blokā: 3044891 (Pirmdien, 2018. gada 24. septembrī 16:42:36 CEST)
datadir: /home/enchanter/.gophersland_ethereum_r1
moduļi: admin: 1.0 kliķis: 1.0 atkļūdošana: 1.0 eth: 1.0 miner: 1.0 net: 1.0 personal: 1.0 RPP: 1.0 txpool: 1.0 web3: 1.0
> eth.accounts
["0xceee57f2b700c2f37d1476a7974965e149fce2d4"]
> eth.syncing
viltus
> eth.getBalance ("0xceee57f2b700c2f37d1476a7974965e149fce2d4")
0

Vaicājuma bloķēšana:

eth.accounts: lai pārbaudītu pašreiz pieejamos kontus

eth.syncing: lai pārliecinātos par mūsu stāvokli, DB ir pilnībā atjaunināts ar pārējo tīklu, lai nodrošinātu, ka getBalance atbilde tiks balstīta uz jaunāko stāvokli

eth.getBalance (“”): lai vaicātu DB.

8ETH darījuma saņemšana no Ethereum fonda BEZMAKSAS

Ethereum fondam ir ļoti glīta programma ar nosaukumu “Jaucējkrāns”, kas tiešsaistē pieejama Ether piešķiršanai kontiem, kas to pieprasa reāllaikā.

Pieprasot ēteri:

  1. Publicējiet sava konta adresi kādā no publiskajiem sociālajiem tīkliem
  2. E. g., Ievietojiet tvītu, kurā ir jūsu Ethereum adrese, jebkur tviterī, piemēram, šajā: https://twitter.com/EnchanterIO/status/1044238559224483841, noteikti atzīmējiet @BlocksByLukas un @freeCodeCamp un paziņojiet mums, vai jums patīk apmācība!
  3. Atveriet https://www.rinkeby.io/#faucet un ielīmējiet čivināt URL
  4. Noklikšķiniet uz “Give me Ether”, izvēlieties starp 3, 7,5 vai 18,75 Ether
  5. Pagaidiet dažas sekundes
  6. Vēlreiz vaicājiet sava konta atlikumu
Rinkija krāns

Voilà

Jūs esat bagāts… testa tīklā. Apsveicam ar tik tālu nokļūšanu. Drīzumā parādīsies vairāk satura!

Turpiniet manu kursu: Ethereum 101

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