暗号通貨とブロックチェーン研究所

暗号通貨とブロックチェーンに関する技術やトレンド情報を解説していきます。

今更聞けないイーサリアムの特徴とアルゴリズム、ロードマップを理解する

イーサリアム(Ethereum)とはスマートコントラクトを用いてアプリケーションの開発を行えるプラットフォームのことで、中央管理者のいないP2Pネットワークを用いて作られるこれらのアプリケーションはDapps(Decentralized Applications=分散型アプリケーション)と呼ばれています。そしてこのプラットフォーム上で使われる通貨の名称がイーサ(Ether=ETH)になります。ビットコインはBTCを送金や決済、資産としての発展を目指していますが、イーサリアムはETHをイーサリアムネットワーク上のトランザクションの手数料(Gas)として機能させています。つまりETHとはイーサリアム上でDappsを動かすための燃料のことなのです。

イーサリアムとイーサは混同しがちですが、イーサリアムはプラットフォームの名称でイーサはイーサリアム上で使える通貨の名称でDappsを動かすための燃料であるということを覚えておきましょう。

イーサリアムの特徴

スマートコントラクト

スマートコントラクトとはイーサリアム上で実行可能なデジタル契約のことで、第三者を仲介せずに自動履行することができます。イーサリアムブロックチェーンを用いることで契約の改ざんが不可能かつトラストレス(第三者を介さない)であることから安全性と透明性の高い取引の実現、また自動化によるコストカット(人件費や時間コスト)が実現することから注目されています。

実はスマートコントラクトの概念自体は1997年頃に提唱されており、初めての活用が自動販売機と言われています。自動販売機は「利用者がお金を入れる」「商品を選択する」という2つの条件が満たされたとき「商品を提供する」という契約が自動で履行されます。

つまり、この時代には存在しなかったブロックチェーン技術を活用できる現在において、スマートコントラクトの真価が発揮されようとしているのです。

計画的なハードフォーク

イーサリアムではトランザクションの処理速度の向上やセキュリティの改善のためにプロトコルをアップデートするためのハードフォークが4段階に分けられ計画的に予定されています。

1回目のハードフォーク:Frontier(フロンティア)2015年7月に実施済み

フロンティアは正式リリース前の開発者向けβ版(テスト版)リリースにあたり、基本機能の実証実験やバグの発見、開発者側にイーサリアムの分散化システムの開発方法を知らせる目的がありました。

2回目のハードフォーク:Homestead(ホームステッド)2016年3月に実施済み

ホームステッドでは、マイニング難易度の調整アルゴリズムの変更が行われました。これにより取引の承認に必要な時間が平均5~20秒に早まったことからイーサリアムのユーザービリティが向上しイーサリアム上でのアプリケーション開発への参入者が増加しました。また通貨としての価値もこの時期に大幅に増加しています。

3回目のハードフォーク:Metorpolis(メトロポリス

メトロポリスとはByzantium(ビザンティウム)とConstantinople(コンスタンティノープル)という2段階アップデートを行うハードフォークのことです。ビザンティウムは2017年10月に実施され、zk-snarkの実装に伴うプライバシー保護(匿名性)の強化、マイニング難易度の調整(ディフィカルティボムの調整)、マイニング報酬の変更(5ETH→3ETH)が行われました。

コスタンティノーブルは2018年内に実施予定で、PoWからPoSへの移行準備が行われる予定です。

※ディフィカルティボムとはマイニングの難易度を上昇させる仕組みのことです。これによりマイナーはブロックの生成を行うことはできず報酬を得ることができなくなります。これは最後のハードフォークであるセレニティで行われるPoSへの移行の際に古いチェーンを保持するメリットをなくすことでコミュニティに分裂を回避し新しいチェーンへの移行をスムーズにする目的があります。しかし、開発の遅延によりPoSへの移行準備が整わないうちにディフィカルティボムの影響によりマイニングの難易度が上昇する自体が起きてしまいました。そこでビザンティウムアップデートではディフィカルティボムの調整が行われたのです。

4回目のハードフォーク:Serenity(セレニティ)

セレニティとはイーサリアムで行われる最後のハードフォークのことで詳細時期は未定ですがブロック承認方法の変更が行われる予定です。これまでの承認方法であるPoWからCasper(キャスパー)と呼ばれる独自のPoSへと移行が予定されています。

アカウント

ビットコインネットワークではアカウントという概念は秘密鍵により示され、秘密鍵を持つ者がそのビットコインの所有権を証明できました。

イーサリアム においてはEOAとコントラクトアカウントという2つのアカウントがあり、どちらも20バイトのアドレスと状態を持っています。

EOA(Externally Owned Account):ユーザーが保持するアカウント

秘密鍵の署名でコントロールされており、紐づく残高とアドレスがある。ユーザーはEOAを通してイーサリアムネットワーク上で送金などができる。

コントラクトアカウント:スマートコントラクトのアカウント

EOAからトランザクションを介して生成され、EOAのトランザクションをトリガーにコントラクトのコードを実行する。スマートコントラクトからスマートコントラクトの生成やコードの実行も可能であり、これがスマートコントラクトとして機能する部分。アドレスと紐づく残高、コード情報を持っている。

ビットコインネットワークでは残高はUTXOで表現されていましたが、イーサリアムネットワークではアカウントに紐づく残高が存在し、ブロックチェーン上で管理されています。

アカウントの内部構造

アカウントを表すデータはState Treeに保存されており、中にはEtherの残高情報が入っています。イーサリアムを利用する全ユーザーの残高情報をブロックに入れるとブロックサイズが肥大化してしまうので、State Treeはブロックの外に保存しておき、各ブロックにはState Treeのroot値のみを保存しています。

  • nonce:EOAの場合は、そのアカウントが送ったトランザクションの数。コントラクトアカウントの場合は、そのアカウントが作ったコントラクトの数。
  • balance:アカウントが所持している通貨量(残高情報)。
  • storageRoot:アカウントが持っているデータのマークル木のルートハッシュ アカウントに紐づくStorage Treeのルートノードを表す値。デフォルトでは空。
  • codeHash:EVMのハッシュ値。EOAアカウントの場合は空文字のハッシュ、コントラクトアカウントの場合は実行コードのハッシュが入っている。

GHOSTプロトコルとブロックの生成速度

イーサリアムではGHOST(Greedy Heaviest Observed Subtree)プロトコルにより最も重いチェーンがメインチェーンに選択されています。重いチェーンとは最も計算が蓄積されているチェーンのことで、最も長いチェーンを採用するビットコインとはアルゴリズムが異なります。重いチェーンを採用する理由はブロックの生成時間が短いからです。詳細を今から解説して行きます。

ブロックの生成速度

ブロックチェーンがフォークしやすくなる

ブロックチェーンがフォークしやすくなるとは、つまり承認速度が上がったことでマイナーが同時にマイニングに成功する機会が多くなってしまうということです。ブロックチェーンの構造上、複数のチェーンが存在することは認められておらず、一つのチェーンを選択しなければなりません。そのためマイニングにつぎ込んだコストが無駄になってしまいます。

②マイニングの中央化が加速してしまう

マイナーがマイニングに成功すると、生成したブロックをネットワーク全体のノードに伝える必要があり、そのための伝搬時間を要することになります。そのためマイニングに成功したマイナーは、他のマイナーよりも早く次のマイニングを始めることができ、さらに次のマイニングを成功させる確率が上昇してしまいます。ブロックの生成速度が短い場合にこのような状態が起きやすくなると言われています。

この問題をGHOSTプロトコルは解決しました。

GHOSTプロトコルではUncleブロック(承認されなかったブロック)も考慮して、最も計算が蓄積されているチェーンをメインチェーンとしているので、例えuncleブロックを生成してしまったとしても無駄にはならずブロックチェーンのセキュリテイに貢献していることになります。(①の問題の解決)また、uncleブロックを生成したマイナーにも報酬を与える仕組みとなっているため、マイニングの中央化を解消しています。(②の問題の解決)GHOSTプロトコルにおいてはuncleブロックの存在が大きく関わってきているのです。

PoWからPoSへの移行

先述したように、イーサリアムでは最終ハードフォークであるセレニティでPoWからPoSへの移行が計画されていますが、そもそもなぜ移行するのでしょうか?

大きな理由はPoWではネットワークの維持に多大なマシンパワーと電力がかかってしまうため、それらのコスト下げる目的があります。特にイーサリアムではスマートコントラクトによりネットワーク全体で大きな処理能力が必要になってきます。また暗号通貨の保有量に応じてブロック生成の報酬を受け取れるため51%攻撃に強いなどセキュリティ面のメリットもあります。他にもスケーラビリティ問題を解決するシャーディングと言われる技術もPoSを前提に作られております。

では、なぜ最初からPoSを導入しなかったのでしょうか?それは初期段階からPoSを導入してしまうと富の集中化が起きてしまうからです。PoSは仕組み上、コインを多く保有する者ほどコインを多く手に入れられるため初期段階ではコインの保有率を分散させる必要があります。つまりリリース時にコイン保有者が1名(100%保有)であった場合には、その後発行される全てのコインはこの人に割り当てられるのです。そのためICOを実施することでできるだけ多くの人にコインを所有してもらう必要があったのです。イーサリアムにおいてはPoSへ移行するまでのPoWの期間を長めに保持することで、十分にコイン保有者を分散させることに成功しました。

以上がイーサリアムの概要になります。今後イーサリアムはAppStoreやGoogle Playのようなプラットフォームになることが予想され、イーサリアムの周りにはたくさんのサービスや開発者が生まれると思われます。その波に乗るためには早い段階から全体像を掴み、コアな技術に触れておくことが大切になるでしょう。

よろしければTwitterのフォローもよろしくお願いします!

twitter.com