【保存版】Ethereum nodeの3類型の違いを理解しよう!(保持データについて)
① Ethereum nodeの3類型
Ethereumのnodeには
① Light node (ライトノード)
② Full node (フルノード)
③ Archive node (アーカイブノード)
の3種類があります。
違いはいったいなんなのでしょうか。
② 「block」と「State」の違い
本題に入る前に「block」と「State」の違いを理解しましょう。
こちらのEthereum の公式HPが端的に表しています。大まかに
①block ⇒ transaction(取引データ)の集合
②State ⇒ 状態データ
となります。
③ 具体例からの考察
5月20日にA君 5,000円、B君 8,000円、Cさん 10,000円 Dさん 12,000円を持っていたとします。
まずはこの状態が「state」です。
5月21日に次のような取引が行われました。
① A ⇒ B 3,000円
② C ⇒ D 5,000円
これがtransaction(トランザクション)であり、これを一つにまとめたものがBlockです。
また、これにより、5月21日の「state」は
A:2,000円 B 11,000円 C 5,000円 D 17,000円
となりました。
続いて、5月22日に次のような取引が行われました。
① D ⇒ A 4,000円
② B ⇒ C 7,000円
これにより、5月22日の「state」は次のようになります。
A:6,000円 B 4,000円 C 12,000円 D 13,000円
④ 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円
という情報を持っています。
でも、この情報だけでは、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
こちらがデータサイズの変遷です。こちらによると、現在のArchive nodeのデータサイズは7TeraByte(テラバイト)を超えており、さらに増え続けています。
ちなみに、Teraは10の12乗であり、一兆です。
⑥ Light node(ライトノード)
最後にLight nodeですが、こちらはTransactionは保持せず、Block header(ブロックヘッダ)のみを保持しています。
ここでいうと日付情報などを保持しています。(正確に言うと、Block headerには「state root」や「transactions root」を含みますが、ここでは省略します。 )そして、Transactionが必要なときにはFull nodeからTransactionを取得することができます。
そのため、データサイズも小さくなってきます。
いかがでしたでしょうか。ポイントは「block」と「state」の違いを理解することなのではと思います。
また、BlockBaseでは、ブロックチェーン関連の勉強会を実施しています。
ご興味のある方はぜひお気軽にご確認ください。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊