見出し画像

【保存版】Ethereum nodeの3類型の違いを理解しよう!(保持データについて)

① Ethereum nodeの3類型

Ethereumnodeには

① Light node (ライトノード)
② Full node (フルノード)
③ Archive node (アーカイブノード)

3種類があります。

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

違いはいったいなんなのでしょうか。

② 「block」と「State」の違い

本題に入る前に「block」「State」の違いを理解しましょう。

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

こちらのEthereum の公式HPが端的に表しています。大まかに

①block ⇒ transaction(取引データ)の集合
②State  ⇒ 状態データ

となります。

③ 具体例からの考察

5月20日にA君 5,000円、B君 8,000円、Cさん 10,000円 Dさん 12,000円を持っていたとします。

まずはこの状態が「state」です。

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

5月21日に次のような取引が行われました。

① A ⇒ B 3,000円
② C ⇒ D 5,000円

これがtransaction(トランザクション)であり、これを一つにまとめたものがBlockです。

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

また、これにより、5月21日の「state」は

A:2,000円 B 11,000円 C 5,000円 D 17,000円

となりました。

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

続いて、5月22日に次のような取引が行われました。

① D ⇒ A 4,000円
② B ⇒ C 7,000円

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

これにより、5月22日の「state」は次のようになります。

A:6,000円 B 4,000円 C 12,000円 D 13,000円

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

④ Full node(フルノード)

Full nodeは全ての「Block」のデータを取得します。(「State」ではない!)

そのため、

5月21日
①A ⇒ B 3,000円
②C ⇒ D 5,000円

5月22日
①D ⇒ A 4,000円
②B ⇒ C 7,000円

という情報を持っています。

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

でも、この情報だけでは、5月20日にAさんがいくら持っていたのかということをすぐには確認ができません。

もちろん、現在の「state」が分かれば

6,000円 - 4,000円(5月22日分) + 3,000円(5月21日分)=5,000円

と求めることができます。

ただ、都度計算が必要となってくるので、大変です。

⑤ Archive node(アーカイブノード)

そこで出てくるのがArchive node(アーカイブノード)です。

Archive nodeは「Block」の情報に加え、「state」の情報を保持します。そのため、「5月20日のAさんの所持金は?」となったときに、すぐに結果が出てきます。

ただ、保持する情報が多くなってしまうので、データサイズが膨大になってしまいます。

https://etherscan.io/chartsync/chainarchive

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

こちらがデータサイズの変遷です。こちらによると、現在のArchive nodeのデータサイズは7TeraByte(テラバイト)を超えており、さらに増え続けています。

ちなみに、Teraは10の12乗であり、一兆です。

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

⑥ Light node(ライトノード)

最後にLight nodeですが、こちらはTransactionは保持せず、Block header(ブロックヘッダ)のみを保持しています。

ここでいうと日付情報などを保持しています。(正確に言うと、Block headerには「state root」「transactions root」を含みますが、ここでは省略します。 )そして、Transactionが必要なときにはFull nodeからTransactionを取得することができます。

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

そのため、データサイズも小さくなってきます。


いかがでしたでしょうか。ポイントは「block」と「state」の違いを理解することなのではと思います。

また、BlockBaseでは、ブロックチェーン関連の勉強会を実施しています。

ご興味のある方はぜひお気軽にご確認ください。


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