【保存版】Ethereum client(イーサリアムクライアント)今こそ学習しましょう!
ブロックチェーンに携わる人なら「Ethereum Clients」、「Geth」、「Open Ethereum」など耳にするものの、なんかよくわからないなーと思う方も多いと思いかもしれません。
① Ethereum clietntとは
ではさっそく、Ethereumの公式ページを確認してみましょう。
さっそく中身を見てみましょう
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は分散化したコンピューターのネットワーク
②一つ一つのコンピューター(node)はソフトウェアを動かす
③このソフトウェアは、次のことを認証する
1.block(ブロック)
2.transaction data(取引データ)
④nodeを動かすために「client」と呼ばれるapplicationが必要
⇒「client」とは「node」を動かすために必要なもの
② Ethereum clietntの種類
では、このクライアントにはどんな種類があるのでしょうか。
公式ページには、次のように5つが紹介されています。
① Geth
② Open Ethereum
③ Nethermind
④ Besu
⑤ Trinity
では、なぜこのように多くの種類があるのでしょうか。
③ Ethereum clietntが多数存在する理由
まずは、一つ目のポイントです。
Clientはそれぞれ別のチーム、言語によって開発されている
The Ethereum community maintains multiple open-source clients, developed by different teams using different programming languages.
次に、二つ目のポイントです。
さまざまな言語などがあることにより、ネットワークが①より強力に・②より多様化になります。
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.
④ 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)
④-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を作るでのですね。
・補足 Ethereum clietnt state とは
ちなみに「state」ってなんでしょう?
Ethereumの公式ページにわかりやすい図が載っていました。
この例では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を実現しているようです。
④-3 Ethereum clietnt 相違点(State pruning)
「State pruning」は「stateを捨てること」を意味します。
確かにいつの時点でどのアドレスに何ETHあって、、などの情報はたまっていくとすごい量になりそうですね。
そして、この「State pruning」には2種類があるようです。
①Archive(保管する)
②Pruned(捨てられる)
要は、「state」を捨てるか・捨てないかなのですね。
⑤ Go Ethereum (Geth)について
最後に代表的なclientであるGethについて、Ethereumの公式HPから見てみましょう。
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につきまして、興味のある方はぜひこちらからご確認ください。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊