Nimbus je novi klijent za Ethereumov sljedeći stadij: Serenity. Nimbus je zapravo novi čvor, u neku ruku. Ako ste Ethereum laik i pokušavate doznati što Nimbus jest upravo sada, došli ste na pravo mjesto.
O shardingu, skaliranju i svemu drugome što članak najave spominje pričati ćemo u budućim člancima. Ovaj članak napisan je kako bi vas upoznao s onime što Nimbus jest danas.
Želimo vam pomoći da razumijete što ovaj alat predstavlja, zašto postoji, i kako pomoći pri njegovom razvoju kako biste zajedno s Nimbus timom pomogli razviti Ethereum 2.0.
Što je Nimbus sada?
Za pregled onoga što Nimbus želi biti, pogledajte originalnu objavu.
Trenutno, u studenom 2018, Nimbus je set alata koji uspješno prolazi neke softverske testove. Softverski testovi su setovi računalnog koda koji se moraju izvršiti bez da jave grešku. Kada se izvrše pomoću Nimbusa, rezultat tih testova ne bi smio biti negativan. Ako svi ovi testovi prođu (pass), Nimbus se može smatrati Ethereum klijentom.
Ovako izgleda prekrasni ekran uspješnih testova.
Od ožujka 2019. Nimbus će sinkronizirati Ethereum proof of work lanac do bloka 1.1 milijun, no ne može biti korišten za spajanje na neki novčanik ili za slanje transakcija. Neće potpuno sinkronizirati blockchain ni u light (laganom) ni u full (punom) načinu rada, niti će pokrenuti neko korisničko sučelje.
Što se tiče Ethereum 2.0 strane Nimbusa koja se razvija u nim-beacon-chain repozitoriju, trenutno će simulirati nekoliko validatora i beacon čvorova, spojiti ih, te graditi beacon lanac. To se može pokrenuti i lokalno pa slobodno isprobajte prateći upute iz službenih objava.
Dakle, koji mu je cilj?
Tim trenutno razvija set alata i modula koji će zajedno zadovoljiti uvjete da podrže Ethereum 2.0, poput podrške za sharding ili validaciju putem Proof of Stake sustava. Istovremeno ali zasebno se razvija i Ethereum 1.0 strana Nimbusa, što znači da će Nimbus biti alternativa za Geth i Parity kao full čvorove, ali će imati i mogućnost pokretanja u light načinu rada – bez da treba preuzeti cijeli blockchain – i za stateless način rada.
Prioritet je razviti Nimbus kao Ethereum 2.0 čvor, a tek nakon toga usavršiti 1.0 stranu. To je zbog toga jer Nimbus tim financije dobiva od Ethereum Fundacije koja prioritizira razvoj novog Ethereuma.
Modularnost
Da bi ga se moglo pokrenuti na slabim i embedded uređajima, Nimbus će morati biti iznimno podesiv. Krajnji je cilj podržati sve module na plug-and-play način jednostavnom aktivacijom i deaktivacijom po želji, dok će ti moduli funkcionirati kao pod-programi koji API-jem komuniciraju s Nimbus jezgrom.
Specifično, Nimbus će imati razne verzije. Moći ćete ga kompajlirati (izgraditi) i pokrenuti s posebnim opcijama. Ako ga stavljate na Nokia 3310 telefon, nećete graditi istu verziju kao kada ga stavljate na snažno stolno računalo, niti će to biti ista verzija koja će se koristiti u micro-USB stickovima koje ćete potajno priključiti u “pametne” gradske klupe da biste potajno dodatno decentralizirali mrežu 🕵️♂️
I, da, sve ovo će biti moguće s Nimbusom.
Sučelja (poput JSON-RPC ili neko za embedded Javu) biti će razvijena za razne operativne sustave na kojima ćemo koristiti Nimbus. Tim se usredotočuje na otvoreni hardver, no ni jedna platforma neće biti zapostavljena. Nimbus će, primjerice, pružati i EVM-C sučelje pa će svi klijenti koji koriste isti moći odabrati žele li koristiti Aleth, Geth, ili Nimbus.
Drugi modularni dijelovi biti će i primjerice back-end baza podataka koja se koristi (SQLite vs RocksDB), sustav za pisanje logova (konzola, JSON, txt datoteke, baza podataka), mrežni protokol itd.
Natječe li se Nimbus s Gethom?
Da i ne. Ethereumova misija je od prvog dana da ima više klijenata radi zdravlja mreže ako se pronađe greška u jednom od njih. Na primjer, greška u Bitcoin Core klijentu oštetiti će cijelu Bitcoin mrežu jer je Bitcoin Core program koji se koristi u 95% slučajeva.
To je neprihvatljivo u Ethereumu, pa se trudimo imati diversificirani skup klijenata. Vodeći su trenutno Geth i Parity u relativno sličnim postocima s ponešto ostalih između njih. Cilj je izgraditi Nimbus do te razine da preuzme barem četvrtinu tog kolača, a kasnije uz druge klijente i manje.
Bitno je napomenuti da s Nimbusom ne pokušavamo smanjiti broj Gethova u mreži ili Paritijevu popularnost. Nimbus je tu da prošiti ekosustav novim uređajima koji sada mogu pokrenuti svoj čvor, a ne da zamijeni trenutne klijente. Kao primjer – Status aplikacija će koristiti Nimbus kada Nimbus bude spreman.
Izgradnja
Dosta priče, ajmo graditi.
Prije nego počnemo, pretpostavlja se da
- ste pročitali uvod u Nim i imate Nim na sustavu
- koristite sustav poput OS X ili Linux koji je u prijateljskim odnosima s komandnom linijom (Terminal). Ako niste, predlažemo da instalirate neku virtualnu mašinu koja ima sav potrebni softver već instaliran. Primjerice, naša Nim Vagrant mašina je vrlo dobro rješenje.
Napomena: Nimbus koristi Makefile sustav za igradnju komponenti kako bi proces pokretanja softvera bio identičan na svim platformama. Ne koristimo Nimov upravitelj paketima Nimble jer je fundamentalno nefunkcionalan i ne izgleda da će problemi uskoro biti riješeni.
Instalacija
Klonirajte Nimbus:
git clone https://github.com/status-im/nimbus
cd nimbus
Da pokrenemo Nimbus prvo moramo instalirati RocksDB bazu podataka i noviju verziju Nima. Na OS X izvršite:
brew install rocksdb
Na Linux sustavima, sljedeće bi trebalo biti dovoljno:
sudo apt-get install librocksdb-dev rocksdb # or your own Linux distribution's equivalent
Na Windows sustavu, prvo se pobrinite da imate make
instaliran – to možete učiniti pomoću popularnih upravitelja paketima kao što je Chocolatey:
choco install make
Alternativno, instalirajte MinGW32make.exe
s MinGW web stranice.
Napomena: Windows zahtijeva da dodate programe koje želite moći pokrenuti iz bilo kojeg dijela sustava u vašu PATH varijablu radnog okruženja. To se radi tako da otvorite Start izbornik, tražite “env”, kliknete na Edit System Environment Variables i izmijenite PATH unos na popisu tako da dodate novu vrijednost na dno koja odgovara lokaciji gdje ste instalirali make
ili mingw make
(ako ste koristili Chocolatey, ovaj korak nije potreban). Moj PATH izgleda ovako.
Samo na Windowsima – pokrenite:
make fetch-dlls
ili ako ste instalirali mingw32make.exe
:
mingw32make.exe fetch-dlls
To će preuzeti RocksDB i SQLite baze podataka i staviti ih u mapu build
odakle će im Nimbus moći pristupiti.
Pokretanje
Da izgradite Nimbus iz izvornog koda, na Linux / OS X:
make
na Windows:
make
ili
mingw32make.exe
Nimbus će biti izgrađen i smješten u build
mapu odakle ga možete pokrenuti naredbom nimbus
ili nimbus.exe
u Windows okruženju.
Da pokrenete testove:
make test # (ili mingw32make.exe test na Windowsima s MinGW)
Ako sve prođe kako treba, ekran bi trebao vrištati zelene [OK]
-ove.
Da ažuirate datoteke za ponovnu izgradnju ako je došlo do nekih promjena:
make update
Da počistite izgrađene datoteke i počnete ispočetka:
make clean
Ethereum 2.0
Da pokrenete i testirate Ethereum 2.0 verziju Nimbusa (simulaciju mreže):
make eth2_network_simulation
Pokrenuti će se nekoliko Beacon čvorova i validatori će probati izgraditi beacon lanac. Više o samoj simulaciji pogledajte u ovom članku.
Da počnete simulaciju ispočetka i generirate sve datoteke iz nule:
make clean_eth2_network_simulation_files
Čestitamo! Uspješno ste izgradili i pokrenuli Nimbus, donekle. U budućim člancima raščlaniti ćemo neke testove, pogledati kako najlakše pridonijeti Nimbusu, uroniti u Nim jezik i još mnogo toga.