ブロックチェーン/レベル VI · ビットコインの後/6.3 Ethereumとスマートコントラクト/レッスン 1
イーサリアムのホワイトペーパーとEVM
すべてのノードで動作し、ガスを燃料とするステートマシン
用意するものイーサリアムのホワイトペーパー(2014年)のコピーイーサリアムのイエローペーパー(ギャビン・ウッド、2014年)Etherscanのようなブロックエクスプローラーへのアクセス
問い
- 何千台ものマシンに複製されたコンピューターが、命令の1つひとつに料金を課す必要があるのはなぜでしょうか?
- それらのマシン上で動くコードがペナルティなしに無限にループできるとしたら、何が壊れるのでしょうか?
- UTXOとその場で更新される残高という2つの異なるアカウントモデルは、同じ資産をどのように異なる形で表現できるのでしょうか?
探究
- 当時19歳だったヴィタリック・ブテリンは2013年後半にイーサリアムのホワイトペーパーを起草し、特定の通貨ではなく汎用的な計算プラットフォームを提案しました。2014年1月に公表されたこのプロジェクトには、ギャビン・ウッド、ジョセフ・ルービン、チャールズ・ホスキンソン、アンソニー・ディ・イオリオ、ミハイ・アリシエといった共同創業者が集まりました。2014年7月から8月にかけてクラウドセールが実施され、この事業のために約31,500BTCが調達されました。ネットワークは2015年7月30日に正式にローンチし、ビットコインの限定的なスクリプト機能から、開発者が複雑なアプリケーションをオンチェーンで直接構築できる完全にプログラム可能な環境への転換を印しました。
- このアーキテクチャの中核をなすのが、すべてのフルノードに複製されるチューリング完全なステートマシン、イーサリアム仮想マシン(EVM)です。個々の未使用アウトプットを追跡するビットコインのUTXOモデルとは異なり、イーサリアムは残高がその場で更新されるアカウントモデルを採用しています。秘密鍵で管理されるものであれコードで管理されるものであれ、各アカウントはノンスと残高を保持します。トランザクションが実行されると、EVMはそれを決定論的に処理します。すべてのノードが各自で同じ結果を計算するため、参加者間の信頼を必要とせずにコンセンサスが確保されます。
- スマートコントラクトは、Solidityなどの高水準言語で書かれ、EVMが実行する低水準のオペコードにコンパイルされるプログラムです。コントラクトは価値とロジックを同時に保持します。コントラクトはイーサを保有したり、条件付きの取引を実行したり、他のアカウントからの入力に基づいてガバナンス投票を管理したりできます。実行が決定論的であり、多くのコントラクトがソースコードを公開しているため、誰でもやり取りする前にそのロジックを確認できます。ルールが人間の裁量ではなくソフトウェアによって執行されるため、この透明性により、多くの金融アプリケーションで信頼できる仲介者が不要になります。
- 無限ループやDoS(サービス拒否)攻撃を防ぐため、EVMのあらゆる操作は「ガス」を消費します。ガスとは、イーサで支払われる計算の単位です。送信者はあらかじめガスリミットを指定し、実行中にこの燃料が尽きるとステートの変更は巻き戻されますが、消費されたガスは差し引かれたままです。この経済的制約により、開発者は効率的なコードを書かざるを得なくなり、放置すればチェーンを停止させかねない悪意あるコントラクトやバグのあるコントラクトからネットワークが守られます。ガス価格は需要に応じて上下します。当初はユーザーが単純に入札していましたが、2021年以降はプロトコルが定めるベースフィーが自動的に調整され、その上にチップが上乗せされる仕組みになっています(後のレッスンで扱います)。
- EVMの設計上の選択は、表現力とセキュリティのトレードオフを反映しています。チューリング完全性は任意の計算を可能にしますが、脆弱性の温床となりうる複雑さも持ち込みます。アカウントモデルは一部のプログラムをUTXOよりもシンプルにしますが、互いに呼び出し合うコントラクトは、The DAOハックの原因となった欠陥であるリエントランシーなどのバグを避けるため、慎重に書かなければなりません(後のレッスンで扱います)。EVMが標準化されていることで、その固有の命令セットに精通したツールや監査者からなる広大なエコシステムが成り立っています。
- Etherscanなどのブロックエクスプローラーを開き、スマートコントラクトをデプロイした最近のトランザクションを1つ調べてみましょう。「Contract Creation」というステータスと、ガスリミットに対する使用ガス量に注目してください。また、トランザクションの入力データに、新しいアドレスに格納されるコンパイル済みバイトコードが含まれている点も確認しましょう。この具体的な手順から、デプロイの機械的な実態が見えてきます。コードはアップロードされ、すべてのノードによって検証され、チェーンのステートマシンに固定されて、将来のやり取りに応じて実行できる状態になるのです。
重要な事実
- ヴィタリック・ブテリンは2013年後半にイーサリアムのホワイトペーパーを執筆し、同プロジェクトは2014年1月に発表されました。
- 2014年7月から8月にかけて行われたクラウドセールでは、イーサリアム開発基金のために約31,500BTCが調達されました。
- イーサリアムのメインネットは2015年7月30日にローンチし、チューリング完全な仮想マシンを導入しました。
- 無限ループを防いで処理の終了を保証するため、EVMのあらゆる操作はイーサで支払われるガスを消費します。
- イーサリアムは、ビットコインのUTXOシステムとは異なり、残高をその場で更新するアカウントモデルを採用しています。
- スマートコントラクトは通常Solidityで書かれ、決定論的なEVMバイトコードにコンパイルされます。
演習 九・六・三・一
9集めるイーサリアムのホワイトペーパーに記載されている、ビットコインのプロトコルと異なる技術的制約や設計上の決定事項を9つ挙げてください。
6まとめるこれら9つの項目を、影響度に基づいてステート管理、セキュリティ、実行コスト、言語サポート、コンセンサス、ガバナンスという6つのカテゴリーに分類してください。
3絞り込む6つのクラスターを、チューリング完全性にガスの仕組みが必要となる3つの根本的な理由に絞り込んでください。
1結晶化するEVMの決定論的な性質が、ステート遷移に関するグローバルなコンセンサスをどのように保証しているのかを説明する文を1つ書いてください。
事実確認
日付、数字、主張は、下記に記載された公表資料と照合して確認しました。