Kaip sinchronizuoti „Ethereum“ mazgą nedarant mano padarytų klaidų

Kai pirmą kartą pradėjau kurti „Ethereum“ platformoje, mazgo sinchronizavimas buvo vienas iš pirmųjų kelių dalykų, kuriuos padariau. Niekam nesusilaikius už rankos ir niekur neįtvirtinant visų pasitaikančių klaidų, aš sugaišau savaites tik sinchronizuodamas mazgą. Tai buvo toks galvos skausmas, kad aš beveik pasidaviau.

Nežinodamas terminijos, tai tik apsunkino.

Taigi šiame straipsnyje noriu sutelkti visas dažniausiai pasitaikančias klaidas ir paaiškinti kiekvieno žingsnio priežastis sinchronizuojant mazgą. Tikimės, kad neturėsite tokios nemalonios ankstyvos patirties, kaip aš.

Greitas įvadas

Programoje „Ethereum“ kūrėjai kuria tinkle veikiančias programos dalis. Tai vadinama protingomis sutartimis . Nors juos galite įdiegti rankiniu būdu, nesinchronizuodami su „Ethereum“ mazgu, ilgainiui kūrimo procesą patogiau sinchronizuoti (ypač kai norime naudoti tokias kūrimo sistemas kaip „Truffle“).

Norėdami sinchronizuoti „Ethereum“ mazgą, mums reikės šios programinės įrangos:

  • „Geth“ - „Ethereum“ mazgo klientas.
  • „Ethereum“ piniginė - „Ethereum“ mazgo vartotojo sąsaja.

Pradėkime.

Įdiekite „Geth“

Norėdami atsisiųsti „Geth“, eikite čia „Windows“ vartotojams. Tada spustelėkite mygtuką „Geth for Windows“.

„MacOS“ vartotojams rekomenduoju atsisiųsti naudojant „homebrew“. Tai galite padaryti naudodami šias komandas:

brew tap ethereum/ethereumbrew install ethereum

Išsamesnės informacijos ieškokite Getho instrukcijose.

Patikrinkite, ar „Geth“ tinkamai įdiegta, įvesdami geth versionterminalą („MacOS“) arba „PowerShell“ („Windows“).

Įdiekite „Ethereum“ piniginę

Mes vadiname GUI, kuris sąveikauja su tinklu, „pinigine“. Greitoje „Google“ paieškoje galite rasti daug skirtingų „Ethereum“ piniginių (tokių kaip „Parity“, „Jaxx“ ir „MyEtherWallet“). Man asmeniškai patinka naudoti „Ethereum“ piniginę. Jis turi patogią naudoti sąsają, be to, esu šiek tiek šališkas, nes ją sukūrė pats „Ethereum“.

Diegimo programą rasite čia.

Pastaba: man labiau patinka „ Ethereum“ piniginė, o ne „ Migla“ . „Mist“ iš esmės yra naršyklė, teikianti decentralizuotas programas („dApps“) ir svetaines.

Norint sukurti pažangią sutartį, mums reikės tik „Ethereum“ piniginės.

„Mainnet vs Testnet“

Ethereum yra du pagrindiniai tinklai: mainnet ir testnet.

Mainnetas naudojamas sandoriui su tikruoju Eteriu. Eterio vertė yra susieta su realia fiat valiuta per kriptovaliutų mainus.

Kaip kūrėjai, mes nenorime vykdyti programų testų iš tikrų pinigų. Tam ir skirtas testnet.

Testnetą vadiname „ Ropsten“ .

Paleiskite „Geth“ ir „Ethereum“ piniginę

Kai kuriate pažangią sutartį, pirmiausia turėtumėte sinchronizuoti testnet. Sinchronizuoti maitinimo tinklą mums reikės tik tada, kai būsime pasirengę dislokuoti.

Norėdami sinchronizuoti testnetą, jums reikės apie 30 GB vietos. Kadangi „Mainnet“ yra daugiau operacijų, jums reikės apie 100 GB, kad sinchronizuotumėte „Mainnet“.

Pastaba: kai kurie sako, kad norint greitai rašyti reikia SSD atminties, kad sinchronizavimas galėtų pasivyti naujausią bloką. Asmeniškai manau, kad HDD saugykla yra gerai. Tačiau, jei man būtų suteikta galimybė, aš tikrai naudočiau SSD saugyklą.

Skirta „Windows“ vartotojams

Kad galėtumėte lengvai pasiekti, rekomenduoju sukurti aplanką, kuriame būtų saugoma „blockchain“. Pavyzdžiui, „C: \ EthereumTestnet“.

Sukūrę aplanką pabandykite paleisti šią komandą:

geth — testnet — data-dir=”C:\EthereumTestnet” — rpc — rpcapi eth,web3,net,personal

Redaguoti: Atrodo, kad kai kurie argumentai pasikeitė. Jei susidūrėte su tokia klaida „vėliava pateikta, bet neapibrėžta: -data-dir“, pabandykite pakeisti argumento pavadinimą į - datadir į data-dir.

Argumentas --testnetnurodo, kad norime sinchronizuoti su „Ropsten“ tinklu. Taigi, norint sinchronizuoti pagrindinį kompiuterį, jums tereikia pašalinti argumentą --testnetir pakeisti duomenų katalogą. Pavyzdžiui:

geth — data-dir=”C:\EthereumMainnet” — rpc — rpcapi eth,web3,net,personal

--rpcArgumentas leidžia HTTP-RPC serveris. Tai leidžia mums naudotis tam tikromis paslaugomis, tokiomis kaip nurodyta --rpcapi eth,web3,net,personal.

Įvedę komandą turėtumėte pamatyti kažką panašaus:

Kad nebūtų sugadintas blockchain, ypač po daugelio valandų sinchronizavimą, jūs turėtumėte ne uždaryti komandinę eilutę staiga. Visada sustabdykite sinchronizavimą paspausdami „ Ctrl“ + C ir palaukite, kol „Geth“ už jus išjungs programą.

Tačiau sunku prisiminti visas reikalingas komandų ir RPP paslaugas. Štai kodėl aš siūlau jums sukurti nuorodą arba paketinį failą.

Paprasčiausiai sukurkite failą naudodami bet kurį turimą teksto redaktorių ir išsaugokite jį kaip .bat failą. Pavyzdžiui, RunGethTestnet.bat (vardas nėra svarbus). Nukopijuokite ir įklijuokite komandą į failą ir išsaugokite. Kitą kartą, kai reikės paleisti „Geth for Ropsten“, tiesiog dukart spustelėkite failą.

Paleidę „Geth“, turime paleisti „Ethereum“ piniginę. Kadangi norime, kad sąsaja nustatytų tikslią vietą, kurioje sinchronizavome failus naudodami „Geth“, vykdome ją iš konsolės.

Panašiai kaip „Geth“, taip pat išsaugojau jai paketinį failą su pavyzdine komanda, tokia kaip žemiau:

Atminkite, kad jūsų komanda gali atrodyti šiek tiek kitokia nei mano, nes galite išsaugoti programą kitame kataloge.

Arba galite pridėti programą prie savo kelio.

Argumente --node-datadir="C:\EthereumTestnet"nurodoma, kur aš saugojau savo chaindatą, kuris yra tas pats, kurį nurodžiau Getui.

Skirta „Mac“ vartotojams

Tai šiek tiek paprasčiau „MacOS“, nes chaindata yra automatiškai atsisiunčiama į biblioteką ir nėra paslėpta nuo mūsų. Taigi, mums nereikės nurodyti duomenų katalogo.

Nepaisant to, rekomenduoju sukurti scenarijaus failą, kad palengvintumėte „Geth“ ir „Ethereum Wallet“ naudojimą.

Pastaba: Getas turi bėgti prieš „Ethereum“ piniginę .

Vien paleidus „Ethereum Wallet“ bus automatiškai pradėtas sinchronizavimo procesas, nes fone jis automatiškai paleis „Geth“ klientą. Tai yra patogi vartotojui, tačiau neįgalina RPC paslaugų, kuriomis norime naudotis. Taigi norime užtikrinti, kad RPC būtų įgalintas vykdant „Geth“ ir „Ethereum Wallet“.

Keli užrašai

  1. Sinchronizavimo procesas yra labai ilgas ir gali trukti iki 2–3 dienų. Būkite kantrūs ir apsvarstykite galimybę palikti kompiuterį per naktį įjungtą.
  2. Sinchronizavimo greitis priklauso nuo jūsų interneto greičio, bendraamžių skaičiaus ir saugojimo disko rašymo greičio.
  3. Kadangi duomenys yra saugomi blokuose ir susieti, korupcija viename bloke gali sugadinti visą chaindatą. Tai gali sugaišti jūsų pastangas laukiant dienų, kol mazgas bus sinchronizuotas. Todėl labai svarbu tinkamai uždaryti savo getą. Tam tikrais atvejais galbūt norėsite grįžti atgal. Bet čia geriau prevencija nei gydymas.
  4. Progreso juosta ant jūsų Ethereum piniginę NE tiksli. Pasikliaudami tuo sukelsite daug nerimo ir nusivylimo.
  5. Getas veikia 30303 prievade, kad galėtų klausytis iš išorės.
  6. Numatytasis prievadas, naudojamas vidiniam ryšiui, pavyzdžiui, tarp jūsų piniginės ir Geth, yra 8545.

Įsitikinkite, kad atidarytas jūsų „Geth“ kliento prievadas

Labai svarbu įsitikinti, kad ryšys su „Geth“ klientu nėra ribotas. Vienas didžiulis galvos skausmas, kurį patyriau, buvo leisti savo užkardai apriboti ryšių, kuriuos galėjau turėti per „Geth“ klientą, skaičių.

Šią problemą galite pastebėti pažvelgę ​​į bendraamžių skaičių . Jei jis nuolat būna mažas (maždaug 1–3 bendraamžiai) (mažiausiai pusvalandį), yra didelė tikimybė, kad jūsų ryšys yra ribotas. Sveikas diapazonas yra didesnis nei 5 bendraamžiai.

„MacOS“ vartotojai

Kai paleidžiate „Geth“, turėtų būti pranešimas, leidžiantis prisijungti. Na, žinoma, spustelėkite „Leisti.

Norėdami patikrinti, eikite į Sistemos nuostatos> Sistema ir privatumas.

Skirtuke Firewall spustelėkite Firewall Options .

„Windows“ vartotojai

Norėdami atidaryti savo prievadą, eikite į Valdymo skydas> Sistema ir sauga> „Windows Defender“ užkarda.

Spustelėkite Išplėstiniai nustatymai . Šoniniame skydelyje spustelėkite Įeinančios taisyklės .

Gaunami prievadai, kuriuos norite atidaryti, yra TCP ir UDP 30303. Taigi aš sukūriau vieną taisyklę TCP 30303, o kitą - UDP 30303.

Gali tekti atidaryti ir TCP 30303 siunčiamus prievadus.

Atminkite, kad bet kuri trečiosios šalies užkarda / antivirusinė programa taip pat gali apriboti jūsų ryšius, todėl būtinai ją sukonfigūruokite.

Pritvirtinkite prie Geto

Norėdami gauti daugiau informacijos apie savo mazgą, galite prisijungti prie „Geth“ kliento ir su juo vykdyti komandas naudodamiesi RPC paslaugomis.

Štai paprastas būdas patikrinti sinchronizavimo būseną: prisijunkite prie kliento, įvesdami šią komandą į atskirą terminalą / konsolę.

geth attach //127.0.0.1:8545

Vėlgi, galbūt norėsite jį laikyti paketo / scenarijaus faile savo patogumui.

Vykdę komandą turėtumėte pamatyti kažką panašaus.

Įveskite web3.ethir turėtumėte pamatyti daug informacijos. Norėdami gauti konkrečią sinchronizavimo informaciją, įveskite web3.eth.syncing.

Kaip matote, „Ethereum“ piniginės viršuje rasta progreso juosta yra tik didžiausio ir dabartinio bloko palyginimas . Kaip highestBlock žinoma jūsų kompiuteris gali būti ne tikrasis didžiausias blokas, kurio juosta gali neatspindėti realios pažangos.

Tiesą sakant, sinchronizuodami savo mazgus , „didžiausios blokos“ ir „ žinomos valstybės “ toliau didės.

Keletas paskutinių taškų

Kadangi technologija greitai keičiasi, visada naudokite stabilią kliento ir piniginės versiją, kad nesukeltumėte sau daugiau galvos skausmo.

Be to, atkreipkite dėmesį, kad visais būdais galite išspręsti bet kokias problemas. Kai susiduriate su sinchronizavimo problema, galite pabandyti ieškoti sprendimų, nes greičiausiai ne pirmasis susidursite su ta pačia problema.

Ir visada priminkite sau, kad norint sukurti išmanią sutartį nereikia sinchronizuoti mazgo. Tai tik padeda lengviau suprasti aplinką ir vystymosi procesą. Taigi, nenugalėkite savęs, jei taip anksti susiduriate su kūrimo procesu.

Norėdami gauti daugiau tokių straipsnių, sekite mane arba apsilankykite mano svetainėje - kūrėjo perspektyva.