イーサリアムの誕生背景を知っておこう
イーサリアムは、「ワールドコンピュータ」と呼ばれる汎用性の高いブロックチェーンです。
決済・送金のためのブロックチェーンとして誕生したビットコインのシステムに改良を加える形で、2015年にローンチされました。
イーサ(ETH)という独自通貨を持ち、スマートコントラクトを実行できる点が特徴です。
ビットコインが極めて限定的なスクリプト言語しか対応していないのに対して、イーサリアムは複雑なコードを実行可能なバーチャルマシン(仮想マシン)を動かすことができます。
これにより、ビットコインと比べてより広範な場面でブロックチェーンを活用することができるようになりました。
イーサリアムの考案者であるヴィタリック・ブテリンは、2013年にビットコインを改良したイーサリアムの最初の発想を導き出しました。
そのアイデアを、マスターコインと呼ばれる当時注目を集めていたプロジェクトに持ち込んだところ、ロードマップに影響を与えすぎることから却下されてしまいます。
そこでヴィタリックは、自ら新しいプロジェクトを立ち上げることを決め2014年にICOを実施したのです。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.
イーサリアムの独自通貨
後ほど学習しますが、イーサリアムを使用(厳密にはイーサリアムバーチャルマシン(EVM)を使ってスマートコントラクトを実行)するにはガスと呼ばれる手数料が必要になります。
この手数料の支払いに使用されるのが、専用の仮想通貨「イーサ(Ether、ETH)」です。(正確な内容についてはレッスン2で再び詳しく学習します)
ビットコインの単位であるBTCやmBTC、μBTC、Satoshiなどと同様に、イーサにもETH以外の通貨単位が存在します。
イーサの最小単位は「wei」であり、1ETHは100京weiにあたります。
コンピュータサイエンスの話になりますが、イーサリアム内でイーサを扱う際には常にweiに換算して処理しています。
つまり、1ETHのトランザクションを処理する際には、1,000,000,000,000,000,000weiとしてエンコードされているのです。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.
イーサリアムの4段階ハードフォーク
ハードフォークというと何となくネガティブなイメージがあるのではないでしょうか。
ハードフォークは規定されたルールを緩和するために行われるブロックチェーンのアップデートです。
ブロックチェーンに汎用性を持たせることができる一方で、可用性と分断耐性を損なう可能性があるためハードフォークには反対するノードが出てきます。
そのため、コミュニティが分断するイメージが付いてしまっているようです。
イーサリアムでは、ローンチ当時より以下の通り4段階の計画的ハードフォークが設計されています。
予め決められていたハードフォークのため、基本的にコミュニティからの反発は起こりません。
- フロンティア:ブロックナンバー0、2015年7月30日に実施
- ホームステッド:ブロックナンバー1,150,000、2016年7月30日に実施
- メトロポリス:2つのハードフォークにより構成
- ビザンチウム:ブロックナンバー4,370,000、2017年10月に実施
- コンスタンティノープル:ブロックナンバー7,280,000、2019年2月28日に実施
- セレニティ:4つのフェーズを経て完了、通称「イーサリアム2.0」
- フェーズ0:2020年12月1日より開始
- フェーズ1以降:未定
万が一、コミュニティからの反発が起こった場合でも、ディフィカルティボムと呼ばれる仕組みによって対策が施されます。
ディフィカルティボムは、ハードフォークの際に旧チェーンをマイニングしないよう旧チェーンに対して実行される仕組みです。
具体的には、マイニングのディフィカルティを意図的に上昇させることで、マイニングすることができなくなります。
こうすることで、旧チェーンにマイナーが残らないようにすることができるのです。
イーサリアムは、コンセンサスアルゴリズムをプルーフオブワーク(PoW)からプルーフオブステーク(PoS)へと移行する「イーサリアム2.0」の開発に注力しています。
移行の背景にはいくつかの理由がありイーサリアム史上最大のアップデートになるため、レッスン5以降で詳しく学習します。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.
イーサリアムの構成要素から概要を掴もう
ビットコインのブロックチェーンでは、基本的に通貨(BTC)のトランザクションのみをブロックに記録しています。
これに対してイーサリアムは、通貨だけでなく汎用データストアの状態遷移も記録しています。
汎用データストアとは、キー・バリュー型で表現できるものあればどのようなデータでも保持できることを意味するストアのことです。
これは、多くのコンピュータで使用されているRAM(Random Access Memory)のストレージモデルと同じ役割を果たします。
これにより、通貨のトランザクション以外にもデータを取り扱えるようになりました。
データストアの状態遷移を記録するその性質から、イーサリアムはしばしば「ワールドステートコンピュータ」とも呼ばれます。
そんなイーサリアムは、主に以下の要素によって構成されています。
レッスン2で詳しく学習するため、ここでは概要だけ把握しておきましょう。
P2Pネットワーク
イーサリアムでは、TCPポート番号30303を使ってネットワークを稼働させています。
トランザクション
ビットコインを拡張する形で開発されたイーサリアムにおけるトランザクションは、主に送信者、受信者、値、データペイロードなどを含むネットワーク上のメッセージとして構成されます。
バーチャルマシン / ステートマシン(仮想マシン / 状態マシン)
「ワールドステートコンピュータ」と呼ばれるように、イーサリアムは状態遷移の集合体です。
イーサリアムの状態遷移は専用のバーチャルマシン「Ethereum Virtual Machine(EVM)」によって処理されます。
Solidityなどの専用のプログラミング言語で記述されるEVMプログラムこそがスマートコントラクトと呼ばれ、実行時にバイトコード(機械語)にコンパイルされます。
データ構造
イーサリアムの状態は、ネットワークを構成する各ノードのデータベース(基本的にGoogle製のLevelDBを使用)として格納されています。
データベースには、トランザクションと状態が「マークルパトリシアツリー」と呼ばれるハッシュデータ構造で保管されます。
クライアント
イーサリアムネットワークに参加するには、専用のクライアントが必要になります。
クライアントの代表例は、Go-Ethereum(Geth)とParityです。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.
チューリング完全性って何?
イーサリアムについて学習する中で、しばしばチューリング完全という言葉が出てくることがあります。
チューリング完全とは、あらゆる処理を実行可能な仕組みのことです。
従って、ビットコインはチューリング完全ではなく、イーサリアムはチューリング完全だといえます。
チューリング完全は、コンピュータサイエンスの父と呼ばれるアラン・チューリングに由来します。
チューリングは、プログラムの停止性問題を解くことはできないということを証明したことで一躍有名になりました。
プログラムの停止性問題とは、プログラムを実行することなくそのプログラムの帰結を予測することはできないというものです。
コンピュータプログラムでは、無限ループと呼ばれる無限に終了しないプログラムを組むことは容易にできます。
しかしながら、意図しない無限ループが生まれてしまうことも多々発生してしまうのです。
この意図しない無限ループは、コンピュータサイエンスの世界では非常にクリティカルな問題として定義されています。
なぜなら無限ループに陥ったプログラムは、以降使い物にならず、そればかりか無限にリソースを消費し続けてしまうからです。
例えばプリンターなどの電子機器であれば、無限ループが発生してしまっても電源を切れば止めることができます。
一方で、不特定多数のノードから構成されるブロックチェーンには電源など存在しません。
仮にブロックチェーンで無限ループが発生してしまうと、全てのノードが同時にダウンするまで無駄なリソースを消費し続けることになってしまうのです。
これはブロックチェーンの特徴であり場合によっては弱点にもなり得ます。
この問題に対してイーサリアムは、ガス(Gas)と呼ばれる手数料を設定することで対応しました。
イーサリアムを使ってプログラムを動かすには、必ずガスが必要になります。
ガスが不足した場合には強制的にプログラムが停止する仕組みを導入したことで、無限ループの問題を解消することに成功したのです。
より深くイーサリアムについて学んでいくと、様々な場面でガス代の高騰を問題視する意見を目にすると思います。
中には、いっそのことガスを廃止すればいいのでは?といった指摘も存在します。
しかしながら、そもそもガスはコンピュータサイエンスの最重要課題である停止性問題(無限ループ)を解消するために導入された仕組みであり、ガス無くしてイーサリアムはありえないのです。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.