Open1
コントラクトはどこに保持されるか
コントラクトはどこに保持されるか
リソース
- Anatomy of smart contracts | ethereum.org
- Introduction to Smart Contracts — Solidity 0.8.10 documentation
- ethereum/go-ethereum: Official Go implementation of the Ethereum protocol
やること
- コントラクトはどこに保持されるかソースコードレベルで知りたい
メモ
- go-ethereum/core at master · ethereum/go-ethereumを読むとstateに関するコードが見える。とはいえでかいコードなのでちゃんと全部読むのは厳しい...
- ソースコード(bytecote)もコントラクトのstate(storage)も全てEthereumのdbに保持されてる
- levelDBとmemoryDB(map[string][]byteのstruct)を使ってる
 
- levelDBとmemoryDB(
- storage
- blockchainで永続化されるkey-valueのmap形式(levelDBか?)
- 自分自身のコントラクトから自分自身のStorageにしかアクセスできない
 
- memory
- 呼び出し(コントラクトへのメッセージコール)ごとに初期化されるメモリ領域
- 使用領域が大きいとgas代が多くかかる
 
- stack
- EVMはスタックマシーン。計算結果とかを積む。一番上のstack要素しかアクセスできない。