イーサリアムというと、よく「スマートコントラクト」や「ワールドコンピュータ」と聞きますが、その実態を理解できる説明を探すのは困難であると言えます。「技術はすごいけどいまいちわからない」というのがイーサリアムの一般的な認識であると言えますが、Ethereum 2.0すなわちイーサリアムの完成版となるセレニティへの移行までの重要な開発などを理解するには、現在のEthereum1.0を理解しておく必要があると言えるでしょう。
また、DEVCON4で行われたプライベートミーティングで内容が明らかとなったEthereum 1.xは今後のイーサリアムにおいてとても重要なアップグレード内容であり、現在のイーサリアムエコシステムと比較することでその重要性を理解することができます。
本稿では、非技術者でも「イーサリアムを理解する」ということを念頭に、Ethereum 2.0へ移行までの重要なポイントを抑え、今話題のEthereum 1.xについて詳しくリサーチを行いました。本稿で現在のイーサリアムエコシステムを理解でき、今後の将来性についてイメージができます。
- 1 1.イーサリアムはステートマシン
- 1.1 1-1.状態遷移
- 1.2 1-2.ETHとステートマシンの関係
- 2 2.EVM(Ethereum Virtual Machine)
- 2.1 2-1.SolidityとEVMコード
- 2.2 2-2.OPCODEの”マイナーアップグレード”
- 2.3 2-3.EVMとイーサリアムの抱える問題
- 2.3.1 2-3-1.GHOSTプロトコル
- 2.3.2 2-3-2.256bitの利点と欠点
- 3 3.非中央集権ストレージ”Swarm”とブロックチェーンサイズ
- 3.1 3-1.IPFS
- 3.1.1 3-1-1.BitTorrentとP2P
- 3.1.2 3-1-2.HTTPの利点とSPOF
- 3.2 3-2.DHT(Distributed Hash Tables)
- 3.3 3-3.非中央集権ストレージ”Swarm”
- 3.1 3-1.IPFS
- 4 4.巨大なイーサリアムエコシステム
- 4.1 4-1.ワールドコンピュータのオーバービュー
- 4.2 4-2.既存システムとの融合
- 5 5.Ethereum 1.xとは?
- 5.1 5-1.次世代のEVM”eWASM”
- 5.1.1 5-1-1.eWASMの利点
- 5.1.2 5-1-2.開発と実装状況
- 5.1.3 5-1-3.実装後の”副次的な影響”
- 5.2 5-2.どのブロックチェーンプロジェクトも抱える”容量問題”
- 5.3 5-3.イーサリアム上でのRentと”ステート”
- 5.3.1 5-3-1.ステートの推移から見える問題
- 5.3.2 5-3-2.イーサリアムにおけるRentモデルとEIP-169
- 5.1 5-1.次世代のEVM”eWASM”
- 6 6.結論と考察
1.イーサリアムはステートマシン
まず最初に、イーサリアムの基礎的な考え方について見ていきましょう。イーサリアムは状態遷移モデルですが、ぱっと聞くとイメージがわかないと思います。
1-1.状態遷移
例えば、図1のように墨汁が100ETHを所持していて、DMMが0ETHの所有という状態があるとします。ここから100ETHを送金したとき、墨汁とDMMのETH所持数はお互いに変化して、墨汁は0ETH、DMMは100ETHを所有していることになります。
図1.アカウントの状態遷移
1-2.ETHとステートマシンの関係
つまり両者の”State”、状態が変化することになり、送金後のETHは、DMMが100ETHを所有しているので、図2.のように墨汁が100ETHを持つことはありえません。よって、このような状態のものをステートマシンとよび、この状態の変化をベースに考えています。
わかりやすく例をあげると、ゲームを作成する際キャラクターがジャンプしているという状態のとき、地上を走るという状態にはなりません。従って状態遷移モデルをイーサリアムで考えた場合、100ETHを送金した後の状態は0ETHになるということが決まっていることになります。
イーサリアムでは、ネットワーク内で使用される通貨、つまりネイティブ通貨にETHを使用してネットワークを維持しています。ここで、墨汁とDMMの100ETHを得たり、所有数が0ETHになるという状態の変化は、ETHの送金によって変わることになります。
したがって、「イーサリアムはETHトランザクションによって状態の変化するステートマシン」であることになります。
2.EVM(Ethereum Virtual Machine)
次にイーサリアムにとって重要となるのは、Ethereum Virtual Machine、俗に”EVM”と呼ばれているものです。このバーチャルマシンはスマートコントラクトを実行するイーサリアムの根幹で、スタックマシンというコンピュータであり、その構造はとてもシンプルなものになっています。
2-1.SolidityとEVMコード
スタックという名前の通り、データをPush(追加)したり、Pop(取り除く)という下記のような形です。
出典:https://en.wikipedia.org/wiki/Stack_(abstract_data_type)
コントラクトは、Solidityというイーサリアムによって、