Kuidas sünkroonida Ethereumi sõlm ilma tehtud vigu tegemata?

Kui alustasin arendamist Ethereumi platvormil, oli sõlme sünkroonimine üks esimesi asju, mida tegin. Kuna keegi ei hoidnud minu käest kinni ja kuhugi ei saaks kinnistada kõiki levinud vigu, raiskasin nädalaid lihtsalt sõlme sünkroonimisega. See oli selline peavalu, et ma peaaegu loobusin.

Terminoloogia mittetundmine tegi selle ainult raskemaks.

Seega tahan selles artiklis koondada kõik levinumad vead, mis võivad ette tulla, ja selgitada sõlme sünkroonimisel iga sammu põhjuseid. Loodetavasti pole teil nii vastikut varajast kogemust kui mul.

Kiire sissejuhatus

Ethereumis loovad arendajad võrgus töötavaid rakenduse tükke. Neid nimetatakse arukateks lepinguteks . Kuigi saate neid käsitsi juurutada Ethereumi sõlmega sünkroonimata, on pikas perspektiivis arendusprotsessi jaoks sünkroonimine mugavam (eriti kui me tahame kasutada selliseid arendusraamistikke nagu Trühvlid).

Ethereumi sõlme sünkroonimiseks vajame järgmist tarkvara:

  • Geth - Ethereumi sõlme klient.
  • Ethereumi rahakott - Ethereumi sõlme kasutajaliides.

Alustame.

Installige Geth

Gethi allalaadimiseks minge Windowsi kasutajatele siia. Seejärel klõpsake nuppu Geth for Windows.

MacOS-i kasutajatele soovitan teil alla laadida homebrew abil. Seda saate teha järgmiste käskudega:

brew tap ethereum/ethereumbrew install ethereum

Lisateavet leiate Gethi juhistest.

Kontrollige, kas Geth on õigesti installitud, tippides geth versionterminali (MacOS) või PowerShelli (Windows).

Installige Ethereumi rahakott

Nimetame võrguga suhtlevat GUI-d “rahakotiks”. Kiire Google'i otsingu abil leiate Ethereumi jaoks palju erinevaid rahakotte (näiteks Parity, Jaxx ja MyEtherWallet). Mulle isiklikult meeldib kasutada Ethereumi rahakotti. Sellel on kasutajasõbralik liides ja ma olen ka natuke erapoolik, kuna selle on välja töötanud Ethereum ise.

Installeri leiate siit.

Märkus: Ma eelistan Ethereum Rahakott et Mist . Mist on põhimõtteliselt brauser, mis renderdab detsentraliseeritud rakendusi (dApps) ja veebisaite.

Nutika lepingu väljatöötamiseks vajame ainult Ethereumi rahakotti.

Mainnet vs Testnet

Ethereumis on kaks peamist võrku: mainnet ja testnet.

Mainnetti kasutatakse tõelise eetriga tehingute tegemiseks. Eetri väärtus on krüptoraha vahetuse kaudu seotud reaalse fiati valuutaga.

Arendajatena ei taha me rakenduste teste päris raha eest käivitada. Selleks testnet on mõeldud.

Me nimetame testnet Ropsten .

Käivitage Geth ja Ethereum Wallet

Nutika lepingu väljatöötamisel peaksite testnet esmalt sünkroonima. Peame peavõrgu sünkroonima alles siis, kui oleme valmis juurutama.

Testvõrgu sünkroonimiseks vajate umbes 30 GB salvestusruumi. Kuna mainnetis on rohkem tehinguid, vajate mainneti sünkroonimiseks umbes 100 GB .

Märkus: mõned ütlevad, et kiireks kirjutamiseks vajate SSD-mäluruumi, et sünkroonimine jõuaks uusimale plokile järele. Isiklikult leian, et kõvaketta salvestamine on korras. Valiku andmise korral kasutaksin aga kindlasti SSD-mälu.

Windowsi kasutajatele

Lihtsa juurdepääsu huvides soovitan teil luua plokiahela salvestamiseks kaust. Näiteks „C: \ EthereumTestnet”.

Pärast kausta loomist proovige käivitada järgmine käsk:

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

Edit: Tundub, et mõned argumendid on muutunud. Kui ilmnes selline tõrge „lipp on ette nähtud, kuid pole määratletud: -data-dir”, proovige argumendi nimeks muuta - datadir asemel data-dir.

Argument --testnettäpsustab, et me tahame sünkroonida Ropsteni võrku. Seega peate mainneti sünkroonimiseks lihtsalt argumendi välja võtma --testnetja andmekataloogi muutma. Näiteks:

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

--rpcArgument võimaldab HTTP-RPC server. See võimaldab meil kasutada teatud teenuseid, näiteks seda, mis on kirjas --rpcapi eth,web3,net,personal.

Pärast käsu sisestamist peaksite nägema midagi sellist:

Et blokeerimisahelat mitte rikkuda, eriti pärast mitu tundi kestnud sünkroonimist, EI tohiks te käsuviiba järsult sulgeda. Peatage sünkroonimine alati vajutades klahvikombinatsiooni Ctrl + C ja oodake, kuni Geth programmi teie eest välja lülitab.

Kõiki vajalikke käsu- ja RPC-teenuseid on aga raske meelde jätta. Sellepärast soovitan teil abiks luua otsetee või pakkfail.

Looge lihtsalt fail mis tahes olemasoleva tekstiredaktori abil ja salvestage see .bat- failina. Näiteks RunGethTestnet.bat (nimi pole oluline). Kopeerige ja kleepige käsk faili ning salvestage see. Järgmine kord, kui peate Geth for Ropsten käivitama, topeltklõpsake failil.

Pärast Gethi jooksmist peame juhtima Ethereumi rahakotti. Kuna me tahame, et liides leiaks täpse asukoha, kus me Gethi abil oma failid sünkroonisime, käivitame selle konsoolist.

Sarnaselt Gethiga salvestasin selle jaoks ka pakettfaili koos näite käsuga, nagu näiteks allpool:

Pange tähele, et teie käsk võib tunduda minu omast veidi erinev, kuna võite oma rakenduse salvestada muusse kataloogi.

Teise võimalusena saate rakenduse oma teele lisada.

Argumendis on --node-datadir="C:\EthereumTestnet"öeldud, kuhu ma talletasin oma chaindata, mis on täpselt sama, mille Gethi jaoks täpsustasin.

Maci kasutajatele

MacOS-i jaoks on see veidi lihtsam, sest chaindata laaditakse automaatselt teeki alla ja ei ole meie eest varjatud. Seega ei pea me andmekataloogi täpsustama.

Sellest hoolimata soovitan Gethi ja Ethereumi rahakoti käivitamise hõlbustamiseks luua skriptifail.

Märkus: Geth peab jooksma enne Ethereumi rahakotti .

Ainult Ethereumi rahakoti käivitamine käivitab sünkroonimisprotsessi automaatselt, kuna see käivitab automaatselt Gethi kliendi taustal. See on kasutajasõbralik, kuid ei võimalda RPC-teenuseid, mida soovime kasutada. Seega tahame tagada, et RPC on lubatud nii meie Gethi kui ka Ethereumi rahakoti teostamisel.

Paar märkust

  1. Sünkroonimisprotsess on väga pikk ja võib kesta kuni 2–3 päeva. Palun kannatlikkust ja kaaluge arvuti ööseks sisselülitamist.
  2. Sünkroonimiskiirus sõltub teie Interneti-kiirusest, eakaaslaste loendusest ja salvestusdraivi kirjutamiskiirusest.
  3. Kuna andmed on salvestatud plokkidena ja omavahel ühendatud, võib korruptsioon ühes plokis rikkuda kogu chaindata. See võib potentsiaalselt raisata teie jõupingutusi sõlme sünkroonimise ootamispäevadel. Seetõttu on väga oluline oma Geth korralikult kinni panna. Teatud juhtudel võiksite tagasi liikuda. Kuid ennetamine on siin parem kui ravi.
  4. Teie Ethereumi rahakoti edenemisriba EI OLE täpne. Sellele toetumine tekitab palju ärevust ja pettumust.
  5. Geth töötab pordil 30303 väliseks kuulamiseks.
  6. Sisepidamiseks, näiteks teie rahakoti ja Gethi vahel, kasutatakse vaikeporti 8545.

Veenduge, et teie GET-kliendi port oleks avatud

On väga oluline veenduda, et ühendus teie Gethi kliendiga pole piiratud. Üks tohutu peavalu oli see, kui lasin oma tulemüüril piirata Gethi kliendi kaudu saadaolevate ühenduste arvu.

Saate selle probleemi märgata, kui vaadata eakaaslaste arvu . Kui see püsib pidevalt madal, umbes 1–3 eakaaslasega (vähemalt pool tundi), on suur tõenäosus, et teie ühendus on piiratud. Tervislik vahemik on üle 5 eakaaslase.

MacOS-i kasutajad

Gethi käivitamisel peaks olema ühenduse lubamise teade. Noh, muidugi, klõpsake nuppu „Luba.

Kontrollimiseks minge jaotisse Süsteemieelistused> Süsteem ja privaatsus.

Vastavalt tulemüür tab, klõpsa tulemüür Valikud .

Windowsi kasutajad

Pordi avamiseks minge juhtpaneelile> Süsteem ja turvalisus> Windows Defenderi tulemüür.

Klõpsake valikul Täpsemad seaded . Klõpsake külgpaneelil valikut Sissetulevad reeglid .

Sissetulevad pordid, mida soovite avada, on TCP ja UDP 30303. Nii et lõin ühe reegli TCP 30303 jaoks ja teise UDP 30303 jaoks.

Võib-olla peate avama ka TCP 30303 väljaminevad pordid.

Pange tähele, et mis tahes kolmanda osapoole tulemüür / viirusetõrje võib piirata ka teie ühendusi, seega seadistage see kindlasti vastavalt.

Kinnitage Gethi külge

Teie sõlme kohta lisateabe hankimiseks võite manustada Gethi kliendi ja sellega RPC-teenuseid kasutades käske täita.

Siin on lihtne viis sünkroonimise oleku kontrollimiseks: lisage klient kliendile, sisestades järgmise terminali / konsooli järgmise käsu.

geth attach //127.0.0.1:8545

Jällegi võiksite oma mugavuse huvides selle salvestada pakett- / skriptifaili.

Pärast käsu käivitamist peaksite nägema midagi sellist.

Tippige web3.ethja peaksite nägema palju teavet. Sünkroonimise kohta konkreetse teabe hankimiseks tippige web3.eth.syncingselle asemel.

Nagu näete, on Ethereumi rahakoti ülaosast leitud edenemisriba lihtsalt võrdlus kõrgeima ja praeguse blokeerimise vahel . Kuna highestBlock teada arvuti ei pruugi olla tegelik kõrgeim blokaad, edenemisribal ei pruugi kajastada tegelikku kulgu.

Tegelikult suurenevad sõlmede sünkroonimisel kõrgeimad ja teadaolevad riigid jätkuvalt.

Mõned viimased punktid

Kuna tehnoloogia muutub kiiresti, kasutage alati kliendi ja rahakoti stabiilset versiooni, et vältida endale rohkem peavalu.

Pange tähele ka seda, et kõigi teie ees seisvate probleemide jaoks on alati lahendus. Kui sünkroonimisel tekib probleem, võite proovida lahendusi otsida, kuna tõenäoliselt pole esimene, kes sama probleemiga silmitsi seisab.

Ja tuletage endale alati meelde, et nutika lepingu väljatöötamiseks pole vaja sõlme sünkroonida. See aitab ainult paremini mõista nii keskkonda kui ka arenguprotsessi. Nii et ärge pekske ennast selle üle, kui teil on arendusprotsessi alguses nii probleeme.

Selliste artiklite kohta lisateabe saamiseks jälgige mind või külastage minu saiti - arendaja vaatenurk.