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要素しかアクセスできない。