Ethereum 69: miten täysin synkronoitu lohkoketjusolmu määritetään 10 minuutissa

Tervetuloa uuden go-ethereum -sarjamme ensimmäiseen artikkeliin!

Seuraavien 10 minuutin aikana:

  • Opi ensimmäinen blockchain-sanasto ilman tarvittavaa ekosysteemitietoa
  • Asenna täysin synkronoitu testaussolmu (“asiakas / palvelin”) alle 10 minuutissa
  • Luo tili ja vastaanota 8ETH-tapahtuma Ethereum-säätiöltä ILMAISEKSI

Mottomme on, harjoittelu ennen teoriaa - siirrytään sitten suoraan täysin synkronoidun Ethereum-testaussolmun asennukseen, joka on kytketty Rinkeby-testiverkkoon!

Geth

Geth on komentoriviliittymä (CLI), koottu binaari, ohjelma ja asiakas täyden Ethereum-solmun suorittamiseksi Go-sovelluksessa.

Käytämme Geth:

  • suorita täysin synkronoitu Ethereum-solmu yhteyden muodostamiseksi Rinkeby-nimiseen testiverkkoon
  • luo uusi tili voidaksesi lähettää ja vastaanottaa tapahtumia
  • EVM-tilan lukemiseen, esim. minkä tahansa tilin saldon tarkistaminen (haluatko tietää, kuinka paljon saldoa tyttöystävälläsi, poikaystävälläsi, vaimoillasi, naapurillasi on? Makea läpinäkyvyys!)

Gethin asentaminen

Voimme asentaa sen suoraan arkistoista:

mac

hauduta tap-ethereum / ethereum
hauduta asentaa ethereum

Linux

sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa: ethereum / ethereum
sudo apt-get-päivitys
sudo apt-get install ethereum

Windows

Onnea :)

Varmista asennus:

mikä gett
> / usr / paikallinen / bin / geth
geth-versio
> Geth
> Versio: 1.8.20-vakaa

Varmista, että käytät samaa versiota voidaksesi suorittaa Rinkeby-verkon täyden synkronoinnin, kuten seuraavissa vaiheissa kuvataan, koska Rinkeby toimi jatkuvassa asemassa olevassa kiintolevyssä, jota tuki Geth 1.8.20. Tämä yksityiskohtainen blogiviesti selittää lisätietoja jos olet kiinnostunut!

Lohkoketjusolmun suorittaminen

No, paholainen on yksityiskohdissa ... mutta aloittaminen on todella helppoa. Kudos Ethereumin kehittäjille.

Asennetaan uusi täysin synkronoitu Rinkeby (Ethereum-testiverkko Clique PoA -protokollaa käyttävä) -solmu.

Rinkeby PoA -sovellus on paljon nopeampi, mutta huomattavasti vähemmän turvallinen. Se on keskitetty enemmän mainnet concensus PoW: stä, joka on täydellisen hieno testiverkkona. Rinkeby onnistuu hyväksymään uuden lohkon joukolla tapahtumia joka 15. sekunti.

Ok, ok, ok ... Mitä nuo sanat oikeasti tarkoittavat?

  • Rinkeby: viranomaisen todistustestiverkon nimi
  • Solmu: pohjimmiltaan perinteinen palvelin, joka suorittaa Ethereum-asiakas / -palvelinta
  • Concensus: algoritmi, joka määrittelee, kuinka tapahtumat validoidaan, liitetään ja säilyvät jokaisen solmun tietokannassa
  • Estä: joukko tapahtumia monimutkaisessa ryhmässä, joka lähetetään johdon ympärille verkon kaikkien solmujen välillä 15 s välein
  • Tapahtuma: älä ajattele pankkitapahtumaa. Lohkoketjutapahtuma on tilanmuutos. Nimeämällä älykkään sopimuksen omistaja Alicesta Bobksi? Muutetaanko tilisi saldoa 1ETH: sta 5ETH: ksi? Asetatko muuttujan “foo” arvoksi “foo_value_123” älykkäässä sopimuksessa? Se on tapahtuma.

Voit lukea lisää Rinkeby PoA-ehdotuksesta täältä: 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 = nopea

Yllä oleva komento:

  • alusta uusi hakemisto, johon kaikki tiedot tallennetaan ~ / .gophersland_ethereum_r1. Oletushakemisto olisi: ~ / .ethereum
  • aloita Ethereum-historian lataaminen, jotta verkkoon tulee uusi täysin kelvollinen, synkronoitu solmu
  • viestintä tapahtuu sataman 30304 kautta
  • välimuisti, eräänlainen puskuri, asetetaan arvoon 2 Gt synkronoinnin nopeuttamiseksi
  • ylimääräinen RPC-sovellusliittymä käynnistyy, jotta voimme kommunikoida solmumme kanssa konsolien kautta, mukavan GUI: n kautta portissa 8546, myöhemmin

Odota muutama tunti, kunnes lohkoketju on täysin synkronoitu.

Nykyinen lohkonumero 24. syyskuuta alkaen on: 3039786. AMD Ryzen 5 2600 -laitteellani, 3,4 GHz, synkronointiprosessi kesti 3 tuntia. Voi kyllä, minulla on uusi pelitietokone!

Sillä välin voit seurata GophersLandia Twitterissä tai valmistaa illallisen, luultavasti myös aamiaisen, käydä kuntosalilla… sanotaan vain, blockchain ei ole nopein tietokanta :)

Lopulta tulostettu viesti on:

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

Onnittelut, olet nyt osa blockchain-vallankumousta alle 10 minuutissa!

Ensimmäisen blockchain-tilin luominen

keystore

Kaikki Ethereum-tilit ja niiden avaimet tallennetaan hakemistoon, jota kutsutaan ”avainsäilöksi”. Hakemisto on oletuksena tyhjä, koska emme ole vielä luoneet omaa tiliämme!

lumota @ lukas-pelaaminen: ~ $ ls -la ~ / .gophersland_ethereum_r1 /
drwx ------ 4 enchanter enchanter 4096 24. syyskuuta 15:26.
drwxr-xr-x 18 enchanter enchanter 4096 24. syyskuuta 11:51 ..
drwx ------ 4 enchanter enchanter 4096 24. syyskuuta 15:26 geth
srw ------- 1 enchanter enchanter 0 syys 24 15:26 geth.ipc
drwx ------ 2 enchanter enchanter 4096 23. syyskuuta 09:54 näppäimistö
lumota @ lukas-pelaaminen: ~ $ ls -la ~ / .gophersland_ethereum_r1 / näppäimistö /
drwx ------ 2 enchanter enchanter 4096 23. syyskuuta 09:54.
drwx ------ 4 enchanter enchanter 4096 24. syyskuuta 15:26 ..

Tili

Luo uusi tili suorittamalla seuraava, jo tuttu, get-cmd.

geth --datadir = ~ / .gophersland_ethereum_r1 tili uusi

Sinua pyydetään antamaan salasana (tämä on SUPR-SALASANA SALASANA). Tätä tarvitaan uuteen Ethereum-osoitteeseen liittyvän äskettäin luodun yksityisen avaimen salauksen purkamiseen, koska sen avulla voit käyttää sitä myöhemmin tapahtumien allekirjoittamiseen blockchainissa. Huomaa se jonnekin, koska tarvitsemme sitä myöhemmin. Mutta älä huolestu, jos unohdat sen, tämä on joka tapauksessa vain testiverkko.

lumota @ lukas-pelaaminen: ~ $ ls -la ~ / .gophersland_ethereum_r1 / näppäimistö /
drwx ------ 2 enchanter enchanter 4096 23. syyskuuta 09:54.
drwx ------ 4 enchanter enchanter 4096 24. syyskuuta 15:26 ..
lumota @ lukas-pelaaminen: ~ $ geth --datadir = ~ / .gophersland_ethereum_r1 tili uusi
INFO [09-24 | 15: 36: 33.566] Vertaisten enimmäismäärä ETH = 25 LES = 0 yhteensä = 25
Uusi tili on lukittu salasanalla. Ole hyvä ja anna salasana. Älä unohda tätä salasanaa.
tunnuslause
Toista salasana:
Osoite: {ceee57f2b700c2f37d1476a7974965e149fce2d4}
lumota @ lukas-pelaaminen: ~ $ ls -la ~ / .gophersland_ethereum_r1 / näppäimistö /
drwx ------ 2 enchanter enchanter 4096 24. syyskuuta 15:36.
drwx ------ 4 enchanter enchanter 4096 24. syyskuuta 15:26 ..
-rw ------- 1 enchanter enchanter 491 24. syyskuuta 15:36
UTC - 2018-09-24T13-36-43.069452577Z - ceee57f2b700c2f37d1476a7974965e149fce2d4

Hyvä! Uusi Ethereum-osoitteeni on elossa: ceee57f2b700c2f37d1476a7974965e149fce2d4.

Tavallisesti kohtaat tämän osoitteen, jonka etuliite on ”0x” osoittamaan osoitteen koodausta, HEX.

Avaintiedostojen uusin muoto on: UTC - - . Tilien järjestys luetteloinnissa on leksikografinen, mutta timespamp-muodon seurauksena se on tosiasiassa luomisjärjestyksessä.

Jos olet kiinnostunut tiedoston sisällöstä, avaa se vapaasti! Tulet näkemään:

  • Osoite: uusi hex-osoitteesi
  • Salaus: joukko matemaattisia muuttujia, jotka vastaavat yksityisen avaimesi edustamisesta salatussa muodossa, älä ole huolissasi taikuudesta toistaiseksi

Mielenkiintoinen huomautus: tilin luominen tapahtuu offline-tilassa, eikä se vaadi synkronoitua lohkoketjusolmua. Utelias, kuinka on mahdollista luoda yksilöllinen osoite offline-tilassa teknisestä näkökulmasta? Tarkastelemme itse go-ethereum-lähdekoodia seuraavassa artikkelissa.

Spoileri: johtuu siitä, että osoite on tiiviste julkisesta avaimesta, joka perustuu yksilölliseen, yksityiseen avaimeesi.

Okei, minulla on uusi kiiltävä Ethereum-tili, mikä on saldo ja kuinka talletan testieetteriä?

Eetteristä puhuttaessa ... mikä se oikeastaan ​​on?

Eetteri

Eetteri on Ethereum-verkkoa syöttävä salausvaluutta. Sitä käytetään arvoyksikkönä ja kaivostyöntekijöiden maksamiseen tapahtumien validoinnista, liittämisestä ja jatkamisesta kollektiiviseen tietokantaan. Mutta pääasiassa se on tekniikka roskapostin estämiseksi, koska kaivostyöntekijöille palkitaan 5 (viime kuusta “vain” 3) ETH jokaisesta onnistuneesti louhitusta lohkosta. Kyllä, se on 600 dollaria nykyhinnalla 24. syyskuuta joka 15. sekunti. Ei huono yritys.

Kuinka vastaanottaa 8ETH-tapahtuma Ethereum-säätiöltä ILMAISEKSI

Tilin saldo tarkistetaan

Varmistakaamme ensin, että tilimme saldo on 0, ellei joku jo onnistunut lähettämään eetteriä sydämensä hyvyydestä.

Geth tarjoaa JavaScript-konsolin, joka voidaan liittää suoritettavaan binääriin vuorovaikutuksessa lohkoketjun kanssa kätevästi. Voimme muodostaa yhteyden määrittämällä socket-tiedoston, joka paljastetaan, kun Geth käynnistyy. Pistorasiatiedostot ovat erittäin hyödyllisiä ”prosessienväliseen viestintään samassa koneessa”, eli IPC.

Voit etsiä tämän tiedoston oletusdatahakemistosta Geth-ohjelman ollessa käynnissä:

lumota @ lukas-pelaaminen: ~ $ ls -la ~ / .gophersland_ethereum_r1 /
drwx ------ 4 enchanter enchanter 4096 24. syyskuuta 15:44.
drwxr-xr-x 18 enchanter enchanter 4096 24. syyskuuta 15:47 ..
drwx ------ 4 enchanter enchanter 4096 24. syyskuuta 15:44 geth
srw ------- 1 enchanter enchanter 0 24. syyskuuta 15:44 geth.ipc
drwx ------ 2 enchanter enchanter 4096 24. syyskuuta 15:47 näppäimistö

Olkaamme vuorovaikutuksessa Rinkeby-verkon kanssa käyttämällä "geth liitte" -ddd: tä toisessa päätelaitteessa, kun blockchain-solmusi on edelleen käynnissä. Varmista, että siirrät absoluuttisen polun IPC-tiedostoon, muuten saat virheilmoituksen.

enchanter @ lukas-pelaaminen: ~ $ liittää ipc: /home/enchanter/.gophersland_ethereum_r1/geth.ipc
Tervetuloa Geth JavaScript -konsoliin!
esimerkki: Geth / v1.8.15-vakaa-89451f7c / linux-amd64 / go1.10.1
kolikkopohja: 0xceee57f2b700c2f37d1476a7974965e149fce2d4
lohkolla: 3044891 (ma 24. syyskuuta 2018 16:42:36 CEST)
datadir: /home/enchanter/.gophersland_ethereum_r1
moduulit: admin: 1.0 napsautus: 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
> eti.tilit
[ "0xceee57f2b700c2f37d1476a7974965e149fce2d4"]
> eth.syncing
väärä
> eth.getBalance ("0xceee57f2b700c2f37d1476a7974965e149fce2d4")
0

Kyselyn ketju:

eth.accounts: tarkistaa nykyiset tilisi

eth.syncing: Varmistaaksesi tilanne, DB on täysin ajan tasalla muun verkon kanssa varmistaakseen, että getBalance-vastaus perustuu viimeisimpään tilaan

eth.getBalance (“”): kysellä tietokantaa.

8ETH-tapahtuman vastaanottaminen Ethereum-säätiöltä ILMAISEKSI

Ethereum-säätiöllä on verkossa saatavana erittäin siisti ohjelma nimeltään Hanat, joiden avulla Ether voidaan osoittaa tileille, jotka sitä pyytävät reaaliajassa.

Pyydetään eetteriä:

  1. Julkaise tilisi osoite jossain julkisista sosiaalisista verkostoista
  2. E.g, lähetä twiitti, joka sisältää Ethereum-osoitteesi mihin tahansa twiittiin, kuten tämä: https://twitter.com/EnchanterIO/status/1044238559224483841, muista merkitä @BlocksByLukas ja @freeCodeCamp ja kerro meille, jos pidät opetusohjelmasta!
  3. Avaa https://www.rinkeby.io/#faucet ja liitä twiitti-URL-osoite
  4. Napsauta “Anna minulle eetteri”, valitse 3, 7,5 tai 18,75 eetteri
  5. Odota muutama sekunti
  6. Kysy tilisi saldo uudelleen
Rinkeby-hana

voilà

Olet rikas… testiverkossa. Onnittelut saavuttamisesta niin pitkälle. Lisää sisältöä tulossa pian!

Jatka kurssillani: Ethereum 101

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