Skip to content

Commit 23219d9

Browse files
committed
add number lists
1 parent 267606f commit 23219d9

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

ethereum_accounts.md

+12-12
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
# このブログの対象読者
44

5-
イーサリアムについて知りたい方<br />
6-
暗号資産やNFTを触れたことがあり、背景で何が起こっているのか理解したい人<br />
7-
スマートコントラクトを書いていて、EVM(Ethereum virtual machine)の知識を増やしたい方
5+
1. イーサリアムについて知りたい方<br />
6+
2. 暗号資産やNFTを触れたことがあり、背景で何が起こっているのか理解したい人<br />
7+
3. スマートコントラクトを書いていて、EVM(Ethereum virtual machine)の知識を増やしたい方
88

99
# はじめに
1010

@@ -30,23 +30,23 @@
3030

3131
それぞれのアドレスにはアカウントのStateが紐づけられています。アカウントのstateは以下の4項目から成ります。
3232

33-
### nonce
33+
### 1. nonce
3434

3535
EOAsでは、アカウントから送られたトランザクションの数を示します。一番最初のトランザクションのnonceは0を示し、それ以降トランザクションを送るたび1増加していきます。<br />
3636

3737
contract accountsでは、アカウントから作られたコントラクトの数を示します。コントラクトが新しいコントラクトデプロイするとnonceが1増えます。(contract accountsのnonceは0ではなく1から始まります。)
3838

39-
### ether balance
39+
### 2. ether balance
4040

4141
アドレスが持つETH(単位はwei)を表します。EOAs, contract accounts両方ともETHを受け取る、また送ることが可能です。その際に、このbalanceの値が更新されていきます。solidityでは、<address>.balanceで取得することが可能です。なお、1ETH=1,000,000,000,000,000,000 wei(0が18個)です。
4242

43-
### codeHash
43+
### 3. codeHash
4444

4545
EVM上でcontract accountsが持つプログラムコードのハッシュです。ユーザーがDappsを利用するときに実行されるスマートコントラクトのコードになります。スマートコントラクトがデプロイした後に変更できない理由は、このcodeHashを書き換えることが出来ないためです。EOAsはコードを持たないため、空文字となります。
4646

47-
### storageRoot
47+
### 4. storageRoot
4848

49-
contract accountsのstorageは、Merkle Patricia treeというデータ構造で管理されています。現在のstorageの状態を正確で効率的に表す値として、storageRoot(Merkle Patricia treeのルーツノードのハッシュ)が使われています。気になる方は、[Merkle Patricia tree](https://ethereum.org/en/developers/docs/data-structures-and-encoding/patricia-merkle-trie/)を読んでみてください。
49+
contract accountsのstorageは、Merkle Patricia treeというデータ構造で管理されています。現在のstorageの状態を正確で効率的に表す値として、storageRoot(Merkle Patricia treeのルーツノードのハッシュ)が使われています。気になる方は、[Merkle Patricia tree](https://ethereum.org/en/developers/docs/data-structures-and-encoding/patricia-merkle-trie/)を読んでみてください。EOAsはこのデータ構造を保持しません。EOAsのstorageRootは空となります。
5050

5151
EOAsとcontract accountsでは、それぞれの保持するstate(codeHashとstorageRoot)に違いがあることが確認できました。これが最初に出した問題の答えです。Etherscanで確認すると、contract accountsではContractCreatorという項目で、誰がこのコントラクトをデプロイしたかを確認することができます。またcontractという項目をみると、ソースコードを見ることができます(コードがverifyされていない場合は、見ることができません。)
5252

@@ -56,10 +56,10 @@ EOAsとcontract accountsでは、それぞれの保持するstate(codeHashとsto
5656

5757
イーサリアムのworld stateは、トランザクションによって更新されます。単純化してworld stateの更新をみていきます。<br />
5858

59-
ユーザーはトランザクションを作成します。<br />
60-
作成したトランザクションにprivate keyで署名します。<br />
61-
トランザクションはMempoolに送られます。<br />
62-
マイニングにより、トランザクションはブロックチェーンのブロックに取り込まれます。<br />
59+
1. ユーザーはトランザクションを作成します。<br />
60+
2. 作成したトランザクションにprivate keyで署名します。<br />
61+
3. トランザクションはMempoolに送られます。<br />
62+
4. マイニングにより、トランザクションはブロックチェーンのブロックに取り込まれます。<br />
6363

6464
これがworld state更新の流れになります。署名にprivate keyが使われることからも明らかですが、トランザクションを送ることができるのはEOAsのみになります。contract accountsはトランザクションを送ることができません。このこともEOAsとcontract accountsの違いになります。
6565

0 commit comments

Comments
 (0)