Kuinka synkronoida Ethereum-solmu tekemättä tekemiäni virheitä

Kun aloitin kehityksen Ethereum-alustalla, solmun synkronointi oli yksi ensimmäisistä asioista, jotka tein. Koska kukaan ei pitänyt kättäni eikä missään voinut vahvistaa kaikkia tavanomaisia ​​virheitäni, hukkaan viikkoja vain solmun synkronoinnissa. Se oli niin päänsärkyä, että melkein luopuin.

Terminologian tuntematon vain vaikeutti sitä.

Joten tässä artikkelissa haluan vahvistaa kaikki tavalliset virheet ja selittää syyt jokaisen vaiheen taustalle solmua synkronoitaessa. Toivottavasti sinulla ei ole niin ilkeä varhainen kokemus kuin minulla.

Nopea esittely

Ethereumissa kehittäjät luovat kappaletta sovellusta, joka toimii verkossa. Näitä kutsutaan älykkäiksi sopimuksiksi . Vaikka voit ottaa ne käyttöön manuaalisesti synkronoimatta Ethereum-solmuun, pitkällä aikavälillä on helpompaa synkronoida kehitysprosessi (varsinkin kun haluamme käyttää kehityskehyksiä, kuten tryffeliä).

Ethereum-solmun synkronointiin tarvitaan seuraava ohjelmisto:

  • Geth - Ethereum-solmun asiakas.
  • Ethereum Wallet - Ethereum-solmun käyttöliittymä.

Aloitetaan.

Asenna Geth

Lataa Geth siirtymällä tänne Windows-käyttäjille. Napsauta sitten Geth for Windows -painiketta.

MacOS-käyttäjille suosittelen lataamista homebrew-ohjelmalla. Voit tehdä sen seuraavilla komennoilla:

brew tap ethereum/ethereumbrew install ethereum

Katso lisätietoja Gethin ohjeista.

Tarkista, että Geth on asennettu oikein kirjoittamalla geth versionpääte (MacOS) tai PowerShell (Windows).

Asenna Ethereum Wallet

Kutsumme verkon kanssa vuorovaikutuksessa olevaa käyttöliittymää "lompakoksi". Löydät monia erilaisia ​​lompakoita Ethereumille nopealla Google-haulla (kuten Parity, Jaxx ja MyEtherWallet). Pidän henkilökohtaisesti Ethereum Walletin käytöstä. Sillä on käyttäjäystävällinen käyttöliittymä, ja olen myös hieman puolueellinen, koska sen on kehittänyt Ethereum itse.

Asennusohjelman löydät täältä.

Huomaa: Pidän parempana Ethereum Walletista kuin Mist . Mist on pohjimmiltaan selain, joka hajauttaa hajautettuja sovelluksia (dApps) ja verkkosivustoja.

Älykkään sopimuksen kehittämiseen tarvitsemme vain Ethereum-lompakon.

Mainnet vs Testnet

Ethereumissa on kaksi pääverkkoa: mainnet ja testnet.

Mainnetia käytetään todellisen eetterin kauppaan. Eterin arvo on sidottu todelliseen fiat-valuutaan kryptovaluutanvaihdon kautta.

Kehittäjinä emme halua suorittaa sovellustestejä oikealla rahalla. Tätä varten testnet on tarkoitettu.

Kutsumme testiverkkoa Ropsteniksi .

Suorita Geth ja Ethereum Wallet

Kun kehität älykästä sopimusta, sinun on ensin synkronoitava testnet. Meidän täytyy vain synkronoida verkkopalvelu, kun olemme valmiita käyttöönottoon.

Tarvitset noin 30 Gt tallennustilaa testiverkon synkronointiin. Koska mainnetissä on enemmän tapahtumia, tarvitset noin 100 Gt mainnetin synkronointiin.

Huomaa: jotkut sanovat, että tarvitset SSD-tallennustilaa nopeaan kirjoittamiseen, jotta synkronointi pystyy saamaan uusimman eston. Henkilökohtaisesti olen havainnut, että kiintolevytallennus on kunnossa. Jos kuitenkin annan valinnan, käytän ehdottomasti SSD-tallennustilaa.

Windows-käyttäjille

Helppokäyttöisyyden vuoksi suosittelen, että luot kansion blockchainin tallentamiseksi. Esimerkiksi "C: \ EthereumTestnet".

Kun olet luonut kansion, yritä suorittaa seuraava komento:

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

Edit: Vaikuttaa siltä, ​​että jotkut argumentit ovat muuttuneet. Jos kohtait tällaisen virheen "lippu annettu, mutta ei määritelty: -data-dir", yritä vaihtaa argumentin nimi arvoon - datadir arvoksi data-dir.

Argumentti --testnetmäärittää, että haluamme synkronoida Ropsten-verkkoon. Siksi, jotta pääverkko synkronoitaisiin, sinun tarvitsee vain poistaa argumentti --testnetja muuttaa tietohakemisto . Esimerkiksi:

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

--rpcArgumentti mahdollistaa HTTP-RPC-palvelin. Tämä antaa meille mahdollisuuden käyttää tiettyjä palveluita, kuten mitä mainitaan --rpcapi eth,web3,net,personal.

Komennon kirjoittamisen jälkeen sinun pitäisi nähdä jotain tällaista:

Jotta estät lohkoketjun etenkin monen tunnin synkronoinnin jälkeen, ÄLÄ sulje komentokehotetta äkillisesti. Lopeta aina synkronointi painamalla Ctrl + C ja odota, kunnes Geth sammuttaa ohjelman puolestasi.

Kaikkia tarvittavia komento- ja RPC-palveluita on kuitenkin vaikea muistaa. Siksi ehdotan, että luot pikakuvakkeen tai erätiedoston auttamaan sinua.

Luo vain tiedosto millä tahansa tekstieditorilla ja tallenna se .bat- tiedostona. Esimerkiksi RunGethTestnet.bat (nimi ei ole tärkeä). Kopioi ja liitä komento tiedostoon ja tallenna se. Kun seuraavan kerran sinun on suoritettava Geth for Ropsten, kaksoisnapsauta tiedostoa.

Gethin suorittamisen jälkeen meidän on suoritettava Ethereum Wallet. Koska haluamme käyttöliittymän löytävän tarkan sijainnin, johon synkronoimme tiedostomme Gethin avulla, suoritamme sen konsolista.

Samoin kuin Geth, tallensin siihen myös erätiedoston esimerkkikomennolla, kuten alla olevan:

Huomaa, että komentosi saattaa näyttää hieman erilaiselta kuin minun, koska saatat tallentaa sovelluksesi toiseen hakemistoon.

Vaihtoehtoisesti voit lisätä sovelluksen polulle.

Argumentissa --node-datadir="C:\EthereumTestnet"sanotaan, mihin tallensin chaindatani, joka on täsmälleen sama, jonka määrittelin Gethille.

Mac-käyttäjille

Se on hieman yksinkertaisempi MacOS: lle, koska chaindata ladataan automaattisesti kirjastoon eikä piilossa meiltä. Joten meidän ei tarvitse määrittää tietohakemistoa.

Suosittelen kuitenkin luomaan komentosarjatiedoston, jotta Geth- ja Ethereum-lompakon käyttö olisi helpompaa.

Huomaa: Gethin täytyy juosta ennen Ethereum Walletia .

Pelkästään Ethereum Walletin suorittaminen käynnistää synkronointiprosessin, koska se suorittaa automaattisesti Geth-asiakkaan taustalla. Tämä on käyttäjäystävällinen, mutta ei salli haluamiamme RPC-palveluja. Siksi haluamme varmistaa, että RPC on käytössä sekä Geth- että Ethereum Wallet -suorituksessamme.

Muutama muistiinpano

  1. Synkronointiprosessi on hyvin pitkä ja voi kestää jopa 2–3 päivää. Ole kärsivällinen ja harkitse tietokoneen jättämistä päälle yön yli.
  2. Synkronointinopeus riippuu Internet-nopeudestasi, ikäisesi laskemisesta ja tallennusaseman kirjoitusnopeudesta.
  3. Koska tiedot tallennetaan lohkoihin ja linkitetään toisiinsa, korruptio yhdessä lohkossa voi vahingoittaa koko chaindataa. Tämä voi mahdollisesti tuhlata vaivaa odottamalla päiviä solmun synkronoimiseksi. Siksi on erittäin tärkeää sammuttaa Geth oikein. Joissakin tapauksissa saatat haluta palata takaisin. Mutta ennaltaehkäisy on parempi kuin parannuskeino täällä.
  4. Ethereum-lompakon etenemispalkki EI OLE tarkka. Siihen vedoten saat paljon ahdistusta ja turhautumista.
  5. Geth kulkee portilla 30303 ulkoista kuuntelua varten.
  6. Oletusportti, jota käytetään sisäiseen viestintään, esimerkiksi lompakon ja Gethin välillä, on 8545.

Varmista, että Geth-asiakasporttisi on avattu

On todella tärkeää varmistaa, että yhteyttä Geth-asiakasohjelmaasi ei ole rajoitettu. Yksi valtava päänsärky, jonka kohdasin, oli antaa palomuurini rajoittaa niiden yhteyksien määrää, joita voisin saada Geth-asiakkaan kautta.

Voit havaita tämän ongelman katsomalla ikäisesi laskea . Jos se pysyy jatkuvasti matalalla noin 1–3 ikäisellään (vähintään puolen tunnin ajan), on hyvät mahdollisuudet, että yhteys on rajallinen. Terve alue on yli 5 ikäisensä.

MacOS-käyttäjät

Kun suoritat Gethin, sinun pitäisi olla ilmoitus, joka sallii yhteyden. No, tietysti, napsauta "Salli.

Tarkista tämä valitsemalla Järjestelmäasetukset> Järjestelmä ja yksityisyys.

Napsauta Palomuuri- välilehdessä Palomuuriasetukset .

Windows-käyttäjät

Avaa portti valitsemalla Ohjauspaneeli> Järjestelmä ja suojaus> Windows Defenderin palomuuri.

Napsauta Lisäasetukset . Napsauta sivupaneelissa Saapuvat säännöt .

Saapuvat portit, jotka haluat avata, ovat TCP ja UDP 30303. Joten loin yhden säännön TCP 30303: lle ja toisen UDP 30303: lle.

Saatat joutua avaamaan lähtevät portit myös TCP 30303: lle.

Huomaa, että mikä tahansa kolmannen osapuolen palomuuri / virustorjunta voi rajoittaa myös yhteyksiäsi, joten muista määrittää se vastaavasti.

Kiinnitä Gethiin

Jos haluat hakea lisätietoja solmustasi, voit liittää Geth-asiakkaan ja suorittaa komennot sen avulla RPC-palveluilla.

Tässä on yksinkertainen tapa tarkistaa synkronointitila: Liitä asiakas kirjoittamalla seuraava komento erilliseen päätelaitteeseen / konsoliin.

geth attach //127.0.0.1:8545

Jälleen kerran kannattaa ehkä tallentaa se erä- / komentotiedostoon omaan mukavuuteenne.

Komennon suorittamisen jälkeen sinun pitäisi nähdä jotain tällaista.

Kirjoita web3.ethja sinun pitäisi nähdä paljon tietoa. Jos haluat hakea tarkkoja tietoja synkronoinnista, kirjoita web3.eth.syncingsen sijaan.

Kuten näette, etenemispalkki löytyy yläosassa Ethereum Lompakko on vain vertailu highestBlock ja currentBlock . Koska highestBlock tiedetään tietokoneeseen ei ehkä ole todellinen korkein lohko, etenemispalkki ei välttämättä heijasta todellista edistystä.

Itse asiassa korkein esto ja tunnettu tila kasvavat edelleen, kun synkronoit solmujasi .

Joitakin loppupisteitä

Koska tekniikka muuttuu nopeasti, käytä aina asiakkaan ja lompakon vakaa versio välttääksesi itsellesi enemmän päänsärkyä.

Huomaa myös, että jokaisella kohtaamallasi ongelmalla on aina kiertotapa. Kun kohtaat synkronointiongelman, voit yrittää etsiä ratkaisuja, koska et todennäköisesti ole ensimmäinen, joka kohtaa samaa ongelmaa.

Muista aina itsellesi, että sinun ei tarvitse synkronoida solmua älykkään sopimuksen luomiseksi. Se auttaa vain ymmärtämään ympäristöä ja kehitysprosessiasi. Älä siis lyö itseäsi sen yli, jos kohtaat ongelmia niin varhaisessa kehitysprosessissa.

Jos haluat lisää tällaisia ​​artikkeleita, seuraa minua tai käy sivustollani - kehittäjän näkökulma.