Sa mundo ng pag-compute, ang isang "kliyente" ay tumutukoy sa anumang uri ng software na na-download sa iyong computer at tumutulong sa iyong makipag-ugnayan sa isa pang uri ng software o serbisyong ibinigay ng isang server. Halimbawa, ang Gmail ay isang software client na kumokonekta sa isang email server at nagbibigay-daan sa mga user na magpadala at tumanggap ng mga email.
Ang isang kliyente ng Ethereum ay ang software na kailangan upang payagan ang mga Ethereum node na magbasa ng mga bloke sa Ethereum blockchain at mga smart contract na nakabatay sa Ethereum. Ang "node" ay ang tumatakbong piraso ng software ng kliyente. Upang magpatakbo ng isang node, kailangan mo munang mag-download ng isang Ethereum client application.
Ano ang mga Ethereum node?
Ang "node" ay isang computer na gumaganap ng isang partikular na function sa Ethereum network at nagpapatakbo ng client software upang magawa ito. Depende sa kung ano ang iyong mga partikular na pangangailangan, ito man ay isang desentralisadong aplikasyon (dapp) o isang wallet, mayroong tatlong magkakaibang uri ng mga node na maaaring patakbuhin ng sinumang kliyente: mga full node, light node at archive node. Ang bawat node ay magpapakahulugan sa data nang iba at nag-aalok ng iba't ibang mga pamamaraan para sa pag-synchronize - ito ay tumutukoy sa kung gaano kabilis ang iyong node ay nakakakuha ng na-update na impormasyon para sa iyong kliyente upang bigyang-kahulugan.
- Ang buong node ay puno ng data; sila ay nag-iimbak at maaaring ipamahagi ang lahat ng blockchain data mula sa Ethereum network. Ang isang buong node ay karagdagang lalahok sa block validation (ibig sabihin, i-verify ang lahat ng mga bloke at estado sa network).
Ang isang bentahe ng pagpapatupad ng isang buong node ay maaari itong direktang makipag-ugnayan sa anumang matalinong kontrata sa pampublikong blockchain. Ang buong node ay maaari ding direktang mag-deploy ng mga smart contract sa pampublikong blockchain.
Gayunpaman, ang buong paggamit at pag-imbak ng data, pati na rin ang direktang pagpapagana ng smart contract, ay may halaga. Ang buong node ay maaaring maging buwis sa hardware at bandwidth na mapagkukunan ng iyong computer. Ang pagkuha ng buong data ay maaari ding maging napakatagal, kung minsan ay tumatagal ng maraming araw upang i-sync ang iyong data kapag ang node ay unang na-deploy. Pagkatapos, ang node ay dapat na mapanatili, i-upgrade at panatilihing online upang hindi na ulitin ang buong proseso ng pag-synchronize.
- Ang mga light node ay katulad ng buong node ngunit mas kaunting impormasyon ang pinangangasiwaan. Ang light node ay nag-iimbak ng impormasyon ng header chain (pangunahing impormasyon na nakaimbak sa isang block gaya ng timestamp at ang hash ng nakaraang block,) ngunit makakatanggap lamang ng karagdagang impormasyon kapag Request. Nagagawa nilang i-verify ang validity ng data ngunit hindi ganap na lumahok sa block validation. Ang mga light node ay halos palaging ipinapatupad sa loob ng mga malalayong kliyente. Dahil ang mga node na ito ay hindi nagsasagawa ng mas masinsinang pag-imbak ng data at mga proseso ng pagsulat, napatunayang kapaki-pakinabang ang mga ito para sa mga device na may mababang kapasidad tulad ng mga smartphone.
- Ang mga archive node ay mga node na nag-iimbak ng lahat ng impormasyon na ginagawa ng isang buong node at bumubuo ng isang archive ng mga makasaysayang estado ng blockchain. Ang mga archive node ay magpapanatili ng makasaysayang data kahit na matapos ang isang kliyente sa pag-synchronize. Ang mga buo at magaan na node, sa kabilang banda, ay "magpuputol" sa makasaysayang data ng blockchain, ibig sabihin ay maaari nilang muling itayo, ngunit hindi panatilihin ang impormasyong ito.
Bagama't maaaring hindi kapaki-pakinabang ang mga archive node para sa karaniwang user, napatunayang epektibo ang mga ito sa paggamit ng mga block explorer, wallet vendor at chain analytics.
Ano ang isang kliyente ng Ethereum ?
Maaaring maging kapaki-pakinabang ang mga kliyente para sa mga developer dahil hinahayaan nila silang makipag-ugnayan sa network at iba pang mga network node gamit ang iba't ibang programming language. Ang Ethereum Foundation ay nagpapanatili ng maraming iba't ibang mga kliyente para sa iba't ibang mga programming language, kabilang ang Go, Rust, Java at C#. Ang iba't ibang mga third-party na developer ay lumikha din ng mga kliyente ng Ethereum para sa karagdagang suporta sa wika.
Ang pinakakaraniwang gamit para sa mga kliyente ng Ethereum ay kinabibilangan ng mga interface ng transaksyon at pagmimina, ngunit ang mga kaso ng paggamit nito ay maaaring higit pa sa mga pangunahing pakikipag-ugnayan sa blockchain.
Pinapanatili ng Ethereum Foundation ang mga sumusunod na kliyente:
- Nethermind (C#, .NET)https://nethermind.io/client
Nagbibigay ang mga ito ng mga pagpipilian sa mga developer sa pagpapatupad ng kanilang mga proyektong nakabase sa Ethereum. Kung ang iyong gustong wika ay T opisyal na sinusuportahan ng Ethereum Foundation, maraming mga third-party na kliyente ng Ethereum ang umiiral upang magbigay ng karagdagang suporta sa wika.
Ang dahilan kung bakit posible ang lahat ng iba't ibang kliyenteng ito ay dahil ang Ethereum ay tinukoy ng isang pormal na detalye (ibig sabihin ang " Yellow Paper "). Ang mga pormal na detalye na bumubuo sa Ethereum ay nagtatakda ng blockchain bukod sa Bitcoin. Kung saan tinukoy ng Ethereum ang mga karaniwang gawi para Social Media ng lahat ng kliyente ng Ethereum , walang ganoong mga kahulugan ang Bitcoin CORE . Sa pamamagitan ng pagbibigay ng pare-parehong dokumentasyon at malinaw na wika, ang mga detalye ng Ethereum ay nagbigay-daan sa blockchain na payagan ang mga independiyente, ngunit interoperable, mga pagpapatupad ng software ng isang kliyente ng Ethereum .
Mga uri ng kliyente ng Ethereum
Puno ng kleyente
Iniimbak ng buong mga kliyente ang buong blockchain ng Ethereum ; isang proseso na maaaring tumagal ng ilang araw upang ma-synchronize at nangangailangan ng malaking halaga ng espasyo sa disk – higit sa 1 Terabyte upang maging eksakto, ayon sa pinakabagong mga numero . Binibigyang-daan ng buong kliyente ang mga konektadong node na gawin ang lahat ng gawain sa network, kabilang ang pagmimina, transaksyon at pagpapatunay ng block-header at pagpapatakbo ng mga smart contract.
Banayad na kliyente
Ang mga kliyente ng Ethereum ay maaaring ipatupad nang buo o bahagi. Ang pangkalahatang-ideya sa itaas ay nagbibigay ng paliwanag kung paano gumagana ang isang "buong" kliyente, gayunpaman mahalagang malaman na T mo palaging kailangang magpatakbo ng isang buong kliyente. Kadalasan kapag pinag-uusapan ang pag-imbak ng data at bilis, pipiliin ng mga developer na gamitin ang tinatawag na "mga light client."
Nag-aalok ang mga light client ng subset ng functionality ng isang buong client. Ang mga magaan na kliyente ay maaaring magbigay ng mas mabilis na bilis at magbakante ng availability ng pag-iimbak ng data dahil, hindi katulad ng buong mga kliyente, hindi nila iniimbak ang buong Ethereum blockchain.
Ang saklaw ng paggana ng isang magaan na kliyente ay iniayon sa mga layunin ng kliyente ng Ethereum . Halimbawa, ang mga light client ay madalas na ginagamit para sa mga pribadong key at Ethereum address management sa loob ng wallet. Bukod pa rito, may posibilidad silang pangasiwaan ang mga smart na pakikipag-ugnayan sa kontrata at mga broadcast ng transaksyon. Kasama sa iba pang mga gamit para sa mga malalayong kliyente ang mga instance ng web3 sa loob ng mga object ng JavaScript, mga browser ng dapp at pagkuha ng data ng exchange rate.
Malayong kliyente
Mayroong pangatlong uri ng kliyente na tinatawag na isang remote client na katulad ng isang light client. Ang pangunahing pagkakaiba ay, ang isang malayong kliyente ay hindi nag-iimbak ng sarili nitong kopya ng blockchain, at hindi rin ito nagpapatunay ng mga transaksyon o block header. Sa halip, ang mga remote na kliyente ay ganap na umaasa sa isang buo o magaan na kliyente upang bigyan sila ng access sa Ethereum blockchain network. Ang mga ganitong uri ng kliyente ay kadalasang ginagamit bilang wallet para sa pagpapadala at pagtanggap ng mga transaksyon.
Ang pagkakaiba sa pagitan ng mga node at mga kliyente
Ang mga node at kliyente ay gumagana sa tabi ng ONE isa at ang parehong mga termino ay madalas na ginagamit nang palitan. Gayunpaman, pareho silang gumagana nang hiwalay upang ma-access ang Ethereum network.
Mag-isip ng mga node at kliyente na tumatakbo tulad ng isang computer na nag-a-access sa internet: ang node ay isang operating system, tulad ng Windows o iOS, at ang kliyente ay ang computer mismo. Ang computer ng kliyente ay nagbibigay sa isang gumagamit ng kakayahang ma-access ang node operating system, na kung saan, ay nagbibigay sa iyo ng kakayahang ma-access ang internet. Ang iba't ibang mga computer ay magbibigay sa iyo ng access sa parehong operating system at ang iba't ibang mga operating system ay magbibigay sa iyo ng access sa parehong internet.
MetaMask
Upang makita kung paano gumagana ang mga kliyente ng Ethereum sa totoong mundo, maaari nating tingnan ang MetaMask bilang isang halimbawa. Ang MetaMask ay isang browser-based wallet, Remote Procedure Call (RPC) client at basic contract explorer. Ang anumang computer na may Chrome, Firefox, Opera o Brave Browser ay kayang magpatakbo ng MetaMask.
Ang MetaMask ay isang pagpapatupad ng isang malayuang kliyente na nakikipag-ugnayan sa blockchain sa pamamagitan ng isang magaan na kliyente. Upang maiwasan ang anumang mga isyu sa seguridad, ang MetaMask ay nagpapatakbo ng sarili nitong light client upang makipag-usap sa malayong kliyente upang matiyak ang epektibong seguridad at katiyakan ng mga transaksyon.
Ang MetaMask ay natatangi mula sa iba pang mga wallet na nakabatay sa browser dahil nag-aaplay ito ng web3 instance sa JavaScript reader ng browser, na nagbibigay ng access sa Ethereum mainnet at iba pang testnets pati na rin, kabilang ang Ropsten testnet, Kovan testnet at ang lokal na instance ng isang RPC node. Kahit na may kakaibang functionality nito, nagpapatakbo pa rin ang MetaMask ng isang malayuang kliyente tulad ng ginagawa ng karamihan sa ibang mga wallet ng browser. Ang malayong kliyente ay nagbibigay-daan sa pag-andar ng imbakan ng pitaka, pagsasahimpapawid ng transaksyon at mga iniksyon ng JavaScript sa web3.