見出し画像

【保存版】Ethereum client(イーサリアムクライアント)今こそ学習しましょう!

ブロックチェーンに携わる人なら「Ethereum Clients」、「Geth」、「Open Ethereum」など耳にするものの、なんかよくわからないなーと思う方も多いと思いかもしれません。

① Ethereum clietntとは

ではさっそく、Ethereumの公式ページを確認してみましょう。

スクリーンショット (215)

さっそく中身を見てみましょう

スクリーンショット (216)

Ethereum is a distributed network of computers running software (known as nodes) that can verify blocks and transaction data. You need an application, known as a client, on your computer to "run" a node.

ポイントを整理します

①Ethereumは分散化したコンピューターのネットワーク

スクリーンショット (218)


②一つ一つのコンピューター(node)はソフトウェアを動かす

スクリーンショット (219)


③このソフトウェアは、次のことを認証する
 1.block(ブロック)
 2.transaction data(取引データ)

スクリーンショット (220)


④nodeを動かすために「client」と呼ばれるapplicationが必要
 ⇒「client」とは「node」を動かすために必要なもの

スクリーンショット (221)

② Ethereum clietntの種類

では、このクライアントにはどんな種類があるのでしょうか。

スクリーンショット (223)

公式ページには、次のように5つが紹介されています。

① Geth
② Open Ethereum
③ Nethermind
④ Besu
⑤ Trinity

では、なぜこのように多くの種類があるのでしょうか。

③ Ethereum clietntが多数存在する理由

スクリーンショット (236)


まずは、一つ目のポイントです。
Clientはそれぞれ別のチーム、言語によって開発されている

The Ethereum community maintains multiple open-source clients, developed by different teams using different programming languages. 

スクリーンショット (237)


次に、二つ目のポイントです。
さまざまな言語などがあることにより、ネットワークが①より強力に・②より多様化になります。

This makes the network stronger and more diverse. 


そして、最後のポイントです。

もし特定のclientが独占状態になってしまうと「single points of failure」(単一障害点)となってしまいます。
 そうならないように多様なClientが存在しています。

The ideal goal is to achieve diversity without any client dominating to reduce any single points of failure.

スクリーンショット (238)


④ Ethereum clietnt 相違点

では、それぞれのclientはどのように異なるのでしょうか。
3つの観点から確認してみましょう。

① Networks
② Sync strategies
③ State pruning


④-1 Ethereum clietnt 相違点(Networks)

それぞれのclientがどのようなネットワークで構築が可能かを表しています。例えばGethでは下の4つのネットワークが可能です。

① Mainnet (mainnet)
② Görli (testnet)
③ Rinkeby (testnet)
④ Ropsten (testnet)

スクリーンショット (239)


④-2 Ethereum clietnt 相違点(Sync strategies

それぞれのclientがブロックチェーンとどのような同期方法がとれるのかを表しています。同期方法には次の6つの方法があるようです。

① Full
② Fast (Default)  ←こちらがデフォルトなのですね。
③ Light
④ Warp sync
⑤ Beam sync
⑥ Header sync

いくつかの同期方法も見てみましょう。


① Full 

downloads all blocks (including headers, transactions and receipts) and generates the state of the blockchain incrementally by executing every block.

1.全てのブロックをダウンロードする
2.ブロックチェーンのstateを作る
 ⇒Fullは新しくstateを作るでのですね。

スクリーンショット (240)

・補足 Ethereum clietnt state とは

ちなみに「state」ってなんでしょう?

Ethereumの公式ページにわかりやすい図が載っていました。

スクリーンショット (241)

この例ではState内に4つのアカウントが載っており、それぞれ

①14c5f8ba :1024ETH
②bb75a980 : 5202ETH
③892bf92f :0ETH
④4096ad65 :77ETH

となっているところ、①14c5f8baから②bb75a980へ10ETHが送られ、

①14c5f8ba :1014ETH
②bb75a980 : 5212ETH
③892bf92f :0ETH
④4096ad65 :77ETH

となっているようです。

このようにアカウントの状態を保管しているのが「state」なのですね。


Fast (Default) 

downloads all blocks (including headers, transactions and receipts), verifies all headers, and downloads the state and verifies it against the headers.

1.全てのブロックをダウンロードする
2.全てのheadersを検証する
3.stateをダウンロードし、検証する
 ⇒Fastはstateを作るのではなく、あくまでもverify(検証)がメイン。
  これによりFastを実現しているようです。

スクリーンショット (242)


④-3 Ethereum clietnt 相違点(State pruning

「State pruning」は「stateを捨てること」を意味します。

確かにいつの時点でどのアドレスに何ETHあって、、などの情報はたまっていくとすごい量になりそうですね。

そして、この「State pruning」には2種類があるようです。

①Archive(保管する)
②Pruned(捨てられる)

スクリーンショット (243)

要は、「state」を捨てるか・捨てないかなのですね。


⑤ Go Ethereum (Geth)について

最後に代表的なclientであるGethについて、Ethereumの公式HPから見てみましょう。

スクリーンショット (244)

Go Ethereum (Geth for short) is one of the original implementations of the Ethereum protocol. Currently, it is the most widespread client with the biggest user base and variety of tooling for users and developers. It is written in Go, fully open source and licensed under the GNU LGPL v3.

①現時点で最も使われている
②ユーザー・開発者向けのツールが多い

Go言語で書かれている
④全てオープンソース
⑤ライセンスは「NU LGPL v3

⇒ここにも記載があるように、gethが最も利用されているclientなのですね。


いかがでしたでしょうか。

最後に、この普段から勉強会を主催しています、BlockBaseにつきまして、興味のある方はぜひこちらからご確認ください。


サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊