【完全保存版】イーサリアムのアドレスとアカウントの違いを理解しよう!
0 はじめに
本日は、こちらのPDFを元に、アカウントやアドレスの違いを説明をします。
https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf
1 アカウントとは
では、こちらの「アカウント」を見てみましょう。
1 構成
このように、「アドレス」と「アカウントステート(状態)」が紐づいています。
この2つをまとめたものが「アカウント」です。
「アドレス」はその名の通り、「アカウントステート」の場所を示す住所の役割です。
2 アカウントステートについて
では、「アカウントステート」を見てみましょう。
下のように「ノンス」「バランス(残高)」「ストレージハッシュ」「コードハッシュ」の4つから構成されています。
「ノンス」はトランザクションの重複を避けるために使われる数字です。
「バランス(残高)」はその名の通り、そのアカウントが持つ残高です。
3 EOAとコントラクトアカウントについて
ここで、「EOA」と「コントラクトアカウント」について見ていきましょう。
「EOA」はメタマスクなどで作られるアカウントです。
一方、「コントラクトアカウント」はコードから作られるアカウントです。
「EOA」の操作には秘密鍵が必要です。
一方、「コントラクトアカウント」はコードを持ち、値を格納する「ストレージ」を持ちます。
4 アカウントステートのそれぞれの構成要素について
先ほどのアカウントに戻りましょう。
EOAは「ノンス」と「バランス(残高)」のみを持ちます。
一方、「コントラクトアカウント」は「ストレージハッシュ」と「コードハッシュ」も持ちます。
「ハッシュ」の概念がご不明の場合は、「ストレージ」や「コード」を短くまとめたものというイメージで良いと思います。
2 ワールドステートについて
1 概要
次に、これらの「アドレス」と「アカウントステート」がどこにあるのかも見てみましょう。
イーサリアムの場合は、「ワールドステート」に格納されています。
ここに、全てのアカウントの状態が記録されています。
2 トランザクションとの関係性について
そして、この「ワールドステート」は「トランザクション」という処理によって常に変更し続けています。
例えば、「AからBに3ETHを送付する」というトランザクションが実行さレたとします。
その場合、「ワールドステート」内のAとBのアカウントが変化します。
3 ブロックとの関係性について
そして、実際には、トランザクションは下のように、「ブロック」にまとめられます。
4 ステートチェーンについて
このように、「ブロック」というチェーンによって、「ワールドステート(状態)」が変化していきます。
そのため、イーサリアムは「ステート(状態)チェーン」と見ることもできます。
5 ブロックチェーンについて
「ブロック」の視点に立つと、「ブロック」がチェーン状になっています。
そのため、「ブロックチェーン」となります。
今回は以上です。