PocketWPは、暗号資産(暗号通貨/仮想通貨)の情報を
整理・ストックするサービスです(β)
ゴリ学習メモ01-01 | スライド補足記事
edit 編集

ブロックチェーンの歴史を振り返りながら、2018年のブロックチェーンの立ち位置を確認する。

2009年のビットコインの発明の「副産物」としてブロックチェーンはこの世に生まれた。一見ぽっと出に見えるこの技術。実は誕生の背景には積み重ねられた歴史が存在する。そしてこの技術の誕生後すぐに、ブロックチェーンに魅せられた技術者達が様々なプロトコルを作っていった。この記事では、そのようなブロックチェーン誕生以前から、ブロックチェーン誕生、そして大増殖までの歴史を簡易に理解することを目指している。

  • 更新履歴
    18/10/20 本文完了 - 現在推敲中
    18/10/21 画像追加+加筆

0.ブロックチェーンの歴史全体像

当サイトの【ゴリ学習メモシリーズ】では、暗号資産の萌芽から、今日にいたるブロックチェーンブームまでの歴史をスマホサイズのスライドにて紹介しており、現在7つのスライドを展開している。全てのスライドの冒頭には下記のこの図を掲載しており、この図に従って各技術の詳細を解説している。

これはブロックチェーン以前の暗号資産から今日のイーサリアム、そしてイーサリアムに続く新たなるブロックチェーンプロトコルの流れを図に落とし込んだものである。各技術の細かな詳細は【ゴリ学習メモ】の各スライドに任せるとして、まずこの記事では歴史の全体感をつかむことを目指し、極力技術的な内容を排した形で、下記に流れを説明できればと思う。

ゴリ学習メモ スライド一覧はこちら

1.まず図解でブロックチェーンを簡単に理解する

まず、ブロックチェーンとは何か。図で理解してみよう。

ブロックチェーンはデータ群をブロックという一つの塊に格納し、これを前後に連結させる形式で、過去のデータを保存するという「データ保存のルール」を持っている。

これは従来のDropboxに画像をアップロードする保存の仕方や、もっと専門的な用語でいうとDB(データベース)にデータ格納するのと何が違うのか。最も大きな違いとしては、過去のデータの改ざんを防ぐ、といった点にある。もっと正確に言えば、過去データの変更履歴、例えばAさんのウォレットにBさんが20BTC振り込んだ、といったデータ変更要求を書き換える、ということを阻止する仕組みとなっている。

さらにブロックチェーンは、このデータの塊たちを一つの場所に格納して保存し運用するのではなく、このチェーンを全世界のマシン(ノード)で同じ最新のコピーを持ち合い、分散的に管理するといった仕組みを持っている。

逆に言うと、ブロックチェーンだからこそ、全世界でのデータの分散と運用が可能になっていると言える。ブロックチェーンではない、すなわち、ただのパブリックなDropboxであったり、誰でも変更可能なDB(データベース)であった場合、データの不正な変更は誰にでも可能となってしまう。それを防ぐためには、データを変更する権限を適切なユーザーに配分し、誰かの監視のもとに管理を行わなければならない。

ブロックチェーンではデータをブロックという塊に保存し、ブロックという塊を前後に連結する。そういったルールで全世界のマシンは動いていくため、たとえ分散がされていてもルールから外れたデータ改ざんは無視される構造になっている。ここがブロックチェーンの技術的に優れた特徴だ。(なぜ改ざんを防止するかはとても長くなるのでここでは端折るが、現段階ではブロックチェーンが改ざんを不可能にし、データの分散を可能にしたとだけ理解してもらいたい)

ブロックチェーンの利点とは。

上記をまとめて、ブロックチェーンを一言で説明すると「過去のデータの正しさをネットワーク参加者で保証し、それにより改ざんを防ぐ技術」であると言える。

改ざんがなければ、誰が誰にどんなデータを送ったいう事実を信用することができる。改ざんがないのだから、ネットワーク参加者にとってデータを通貨とみなして利用することが可能になる。改ざんがないことは全世界に点在するマシンが保証する。なにがしかの特定の権威や監視に頼らずに、分散的なデータ管理を実現する。それがブロックチェーンの性質であり、利点である。

改めて分解してブロックチェーンの特徴を整理すると以下である。

整理|ブロックチェーンの3つの特徴(技術的ではなく概念的な特徴)
  • 【1.】ネットワーク参加者同士で、データの存在を保証する
  • 【2.】ネットワーク参加者同士で、データの改ざんがないこと保証する
  • 【3.】【1.】【2.】の実現により何かひとつの権威に依存せずに、ネットワーク参加者同士で、データを相互に移転できる(価値移転が可能になる)

ブロックチェーンによる「データの保証」により、何かひとつの権威に依存しない形で、デジタルネットワーク上で価値移転を実現することができた。

2.ブロックチェーン以前の歴史

ブロックチェーンが"なかった"時代は、分散保証による価値移転をどう実現していたか。

ではブロックチェーンという考えがない時代では、ブロックチェーンが実現する下記3つの利点をどう実現していたのか。

先ほどのブロックチェーンの3つの特徴を、条件として言い換えると..

  • 【1.】ネットワーク参加者同士でデータの存在をどう保証し
  • 【2.】ネットワーク参加者同士でデータの改ざんがないことをどう保証し
  • 【3.】ネットワーク参加者同士で自身の持つデータをどう移転していたか
    (分散的にどう価値移転を実現したか)

これら三つを行うにはどうしていたか。誰かがお金のケタを増やしてズルすることをどう防ぐのか。

結論から言うと、ブロックチェーン以前の様々な取り組みでは、この3つを満たす現実的な解を見つけることができなかった。

正確に言えば、見つけようとしていたが、どれも現実的ではなかった。ネットワークの参加にあたって特殊なマシンを必要としたり、コンセプトは素晴らしいが実装が具体的でなかったり、通貨の条件である可分性(分けることができること)を満たしていなかったりと、なにかしら問題を抱えていた。

ネットワーク上での価値転送は、とりあえず権力に頼る形式で実現させていた。

ブロックチェーン以前では、中央集権的な手法により価値移転を実現していた。(むしろ分散的に価値を保証するといった考えの方が"いまでも"特殊だと思われている。)

 ネットワーク上での価値転送を実現する当時の解決方法としては、銀行などなにがしかと提携することによって「信頼」を獲得し、ネットワーク上で価値転送を実現しようとする人たちのほうがメジャーな勢力であった。

古くは、ECashというシステムがある。これは銀行と提携することで、パソコン内部のデータを通貨とみなした。

だがこれはクレジットカードの利便性に勝てず、敗北した。その敵対するクレジットカードのシステムも、中央集権によって成り立っている。これらの技術は国、銀行、一部の運営会社のシステムは不正がないだろう、という「信用」の元に価値転送を実現する、いわば中央集権的に依存した技術。現在の我々のネット決済やATMでの引き落としなどはこれらの技術や信用に依存して成り立っている。(というか2018年現在もメインストリームなのはこの手法)

一方、マイノリティの「分散的に価値転送を保存したい勢」はビットコイン登場以前、どのような取り組みをして価値転送を試みようとしていたのか。

ビットコイン以前の基礎技術 - PoW(Proof Of Works,プルーフオブワークス)

ビットコインやブロックチェーンに関心のある人なら耳にしたことがあると思う技術、PoW (Proof of Works, プルーフオブワークス)。PoWは、元々はスパムメールを防止するための技術である。 この技術自体は1993年に誕生している。

暗号学的ハッシュ関数とは、文字列を一見無意味な文字列に技術である。例えば「q」という文字列をハッシュ関数にかけると「8e35c2cd3bf6641bdb0e2050b76932cbb2e6034a0ddacc1d9bea82a6ba57f7cf」といった文字列に変換される。同じアルゴリズムであれば、いつ「q」をハッシュ関数にかけても、同じ答えになる。だが逆のことをやろうとすると大変だ。上記の文字列の元となる答え「q」を見つけ出そうとした場合、全ての組み合わせをテストしなければならない。わかりやすい例として「q」という一文字で解説したが、答えは一文字とは限らない。

このハッシュの逆算を元に、スパムメールを防止しようというアイディアがPoWである。メール送信者に、任意の値になる文字列を出力する答えは何かとお題をだし、それに答えられたらメールを送信できる、といった仕組みである。

ビットコイン以前の分散的価値移転アイディア❶ - RPoW (Reusable Proof Of Works, リユーサブルプルーフオブワークス)

元々はスパムメール防止策であったPoWの仕組みを転じさせてデジタル上の通貨と見做すことができるのではないか?といった提案は1993年当時から存在していた(HashCash)。これは、ハッシュの逆算の元となる文字列を「通貨」として見なせないかとう試みである。一方で、HashCashを通貨として利用した場合、「複製」をどうやって制御するか、という問題は解決されずにいた。元となる文字列はデジタルなので、当然簡単にコピーされてしまうからだ。

そこで、2004年、Hal Finneyによって生み出されたのが「RPoW(Reusable Proof Of Works, リユーサブルプルーフオブワークス)」という技術である。この技術を荒くいうと、PoWで作成した通貨を使用した場合「浄化」するような仕組みを整えることで、2重利用を阻止するといったものである。

これは、一部で実用化していたが、特殊な暗号化処理のためのデバイスが必要だったなどの悪条件があり、普及には至らなかった。

ビットコイン以前の分散的価値移転アイディア❷ - BitGold

2005年に発表されたBitgoldというアイディア。これはスマートコントラクトの提唱者でもあるNick Szabo(ニック・サザボ、ニック・スザボ)によって発案された。このアイディアは、現実世界の金の鋳造コストや、紙幣の発行コストの大きさに課題意識を持ち発案されているという背景がある。

仕組みとしてはビットコインのマイニングのように、各マシンで「大くじ引き抽選会」のようなものを物を行い、そのくじ引きに当選した人が、各マシンで当選を認められ、そのくじ引きで当選した文字列が各マシンで通貨として認められ、かつ所有できる、といった仕組みである。ただし、その文字列自体が通貨だったため、我々が現実世界で享受する通貨のメリットである「可分性(10000円を100円x100枚に両替し、100円を使用する)」を実現することができないといった構造ではあった。

もっと具体的に仕組みを概説すると下記となる。ただしこの画像は技術的な説明も含むため、読み飛ばしていただいても構わない。

だがこの時代に水面下で考えられていたこれらの「ネットワーク参加者同士」で「改ざんを防ぐ」ためのアイディアや技術は決して無駄にはなっていない。ブロックチェーンの発想の礎となっている。BitgoldおよびSmartContractの発案者である「Nick Szabo」と、ビットコイン・ブロックチェーンの発明者である「Satoshi Nakamoto」は密にコミュニケーションをとっていたとも言われており、この積み重ねがのちに生み出されるビットコインの礎となっていたのは明らかだろう。

まとめ | ブロックチェーン以前の歴史

繰り返しになるが、ブロックチェーンを概念的に整理すると、3つの特徴がある。

  • 【1.】ネットワーク参加者同士で、データの存在を保証する
  • 【2.】ネットワーク参加者同士で、データの改ざんがないこと保証する
  • 【3.】【1.】【2.】の実現により何かひとつの権威に依存せずに、ネットワーク参加者同士で、データを相互に移転できる(価値移転が可能になる)

そして、このブロックチェーンが存在しなかった時代においては、分散的なネットワーク上での価値移転はできなかった。2018年現在もそうだが、銀行や特定のサービス提供者など何がしかの権威に頼る、信頼する形で、ネットワーク上での価値転送を実現した。

そして、ブロックチェーン以前の時代において、元となった技術にはBitgoldやPoW、そしてRPoWが存在する。そしてこれらのアイディアをいい感じに無駄のないセンスで束ね、実現したのが、次に続くBitcoin(ビットコイン)であり、Bitcoinの副産物であるブロックチェーンなのである。

3.ブロックチェーンの誕生

Bitcoinとブロックチェーンの誕生

ブロックチェーンの以前に生まれた、PoW、Bitgoldといったアイディアを束ね、分散的な環境において始めて、現実的な価値移転の仕組みを仕組みを実装したのが、2008年にSatoshi Nakamotoが考え、2009年にリリースした「Bitcoin(ビットコイン)」である。

元々「Blockchain(ブロックチェーン)」はBitcoinの副産物という関係であった。あくまで分散化され、暗号化されたネットワーク上でどう価値移転を実現するのか、が彼の関心ごとであり、ブロックチェーンはそれを実現するためのBitcoin内部のソリューションの一つに過ぎなかった。ブロックチェーンは2018年の今でこそ様々な利用方法が提案されているが、当時のBitcoinのブロックチェーンは単に価値移動を目的としたものであった。

★Bitcoinのブロックチェーンをこの場で説明すると、非常に長くなるため、この場では省略いただきます、なお下記スライド【ゴリ学習メモ】にてビットコインについての要約をご覧いただくこともできます👇

【スライド】ゴリ学習メモ01-03 : ビットコインとはそもそも何か?

【スライド】ゴリ学習メモ01-04 : ビットコイン関連用語集

【スライド】ゴリ学習メモ01-05 : ビットコインの送金の仕組みを理解する

アルトチェーン・アルトコイン群の誕生

Bitcoinの発明は、Satoshi Nakamotoのミステリアスなストーリー性もあってか、じわじわと注目が集めていった。そんな中、Bitcoinの中枢技術である「ブロックチェーン」は価値移動以外に利用できるのではないか?と考えた人やチームが次々と現れた。

こうして生み出されたブロックチェーンを元に作られた新しいオリジナルのチェーンは、アルトコインやアルトチェーンと呼ばれている。2013年がブームの最初期であり、それはアルトブームとも呼ばれている。そのブームの中では、価値移転のみならず、証券を表現できるチェーンであったり、あるいは不動産を表現できる、ドメイン名の所有を表現できる、といった、ブロックチェーンの「ネットワーク上で相互にデータの確かさを証明する」といった利点を生かした、様々な用途が提案されてきた。

この時代の代表的なプロトコルとしては下記のようなものが挙げられる。

  • ❶AltCoin(アルトコイン・オルトコイン) に属するもの。
    通貨としてBlockchainを利用したもの。
    • ・LiteCoin - Bitcoinと違い、暗号化のアルゴリズムが異なる
    • ・Monacoin - Litecoinのフォーク
    • ・NXT - 通貨機能がメインでありつつも、メッセージ送信機能などが存在。またPoS(Proof of Stake)で実装されたコイン
  • ❷AltChain(アルトチェーン・オルトチェーン)に属するもの。
    AltChainはBlockchainを通貨とは違った別の設計思想で実装したもの。通貨機能は含むものの、AltChainにおける通貨は、プラットフォームにおける主要な機能ではなく、セカンダリな機能と言える。
    • ・NameCoin - チェーンに名前と所有者を組み合わせた情報を保存できる

だがこの時代の多くは、チェーン一つにつき、一つの使い道、といったように「統一したトークンの規格をつくる」といった発想や「プロトコルとアプリケーションを分離する」といった現在では当たり前になっている考え方は、当時主流ではなかった。

この時代では、各々の好き好きに特定の用途のみに限ったオリジナルのブロックチェーンを作り合うという状態で、その中で様々なコイン・プロトコルが立ち上がっていった。(中には単なるビットコインのコピーでしかないものも多く存在した。)

チェーンがそれぞれで独立してしまうと、チェーンを支えるコンピューターの計算力は分散されてしまうし(計算力が十分でないと攻撃に弱い)、また、プロトコル一つにつき、一つの機能、といったように機能を作るにしてもプロトコルから開発を始めなくてはならず、何かと無駄が多い。

その点に課題を持って生まれたのが、”ICOブーム”を生み出すきっかけとなったプロトコルであるあの「イーサリアム」である。

★なお、ここで紹介したアルトコイン・アルトチェーンについては下記のスライドでまとめているのでご興味があったら👇

【スライド】ゴリ学習メモ01-06 : 2013年のBitcoin2.0ブームを復習する

4.イーサリアムの誕生

イーサリアムの誕生までのアルトチェーンは、基本的に、機能1つにつき1つのチェーンといった、機能とチェーンが1対1対応となっているのが基本の考え方であった。

そのような考え方が当たり前だった中で、イーサリアムが革命的だったのは、ブロックチェーンを「プロトコル」と「アプリケーション」という概念で明確に分離した点にある。

開発者は、ブロックチェーンの基本となる「プロトコル」レイヤーに関与せず、ブロックチェーンアプリケーションを作ることができるようになった。また、開発者の間口も広がったことにより、後年の"ICOブーム"のきっかけともなり、ビットコインとともに世間に暗号通貨の存在を知らしめるエポックメイキング的なプロトコルとなった。大きく4つの特徴に分けて、下記にイーサリアムの特徴を説明していく。

イーサリアムの特徴❶.ブロックチェーンを「プロトコル」と「アプリケーション」に分離するという発想。

ネームドコイン(Namedcoin)の開発者でもあった、イーサリアム(Ethereum)の主唱者であるヴィタリックブテリン(Vitalik Buterin)は、その乱立に問題意識を感じていた。

ヴィタリックは、スマートフォンと「OS」と「アプリ」の関係のように、ブロックチェーンを「プロトコル」と「アプリケーション」の二つに分離することを提唱。2013年のBitcoin2.0ブームでは、「プロトコル」と「アプリケーション」は一体であり、作りたい特定の用途に合わせて、プロトコルからアプリケーションまで作り上げる必要があった。

これはスマホアプリに例えると、メルカリを作るために、わざわざメルカリ専用のOSを作り、その後メルカリアプリを作る、といったようなことである。当然、無駄が多いのは明白だ。

イーサリアムでは、スマホの「OS」にあたる「プロトコル」部分をイーサリアムが担い、「アプリケーション」部分はイーサリアムに載る形で、参加者が自由に開発することができるという構造になっている。

さらに内部で使用されるトークンは規格が定義され、無駄な実装や規格が乱立しないように抑制されるような統制も存在する。

一つの「プロトコル」の上に世の中の様々な「アプリケーション」のデータや処理の流れが刻まれる。「プロトコル」の運用は全世界に存在するコンピュータ(ノード)で支えるという構造になっている。

イーサリアムの特徴❷.全世界ですべてのアプリケーションのデータを共有する「ワールドコンピュータ」。

スマホアプリの例で例えた「OS」と「アプリ」の関係と、イーサリアムにおける「プロトコル」と「アプリケーション」の関係は、構造としては説明しやすく確かに似ているが、一つ大きく異なる点がある。

スマホ内部のデータは入っているアプリは、各々の端末で違ってくるのが当然である。これはなんとなくイメージしやすい。「写真」アプリでできることは写真をカメラで撮影し、フォルダに保存するが、保存されている写真は各々の端末で当然異なってくる。だがイーサリアムでは、イーサリアムが動いている全世界のノードには、(フルノードであれば)全て同じデータがブロックチェーン形式で保存されている。またアプリケーションが振る舞うルールも、全世界のノードで共通に保存されている。端末ごとに保存する状態がバラバラであるか、すべての端末で保存する情報が一緒であるか、ここは大きな違いなので注意したい。

世界中でアプリケーションのステート(State,状態)を保存するマシン群。そして全世界のノードがこの状態を相互に保証する。この構造は「ワールドコンピューター」と呼ばれている。

イーサリアムの特徴❸.Ethereumはスマートコントラクトの概念をブロックチェーンと結びつけた。

イーサリアムの上に載る「アプリケーション」でそれぞれ定義されるデータの振る舞いの仕方。この振る舞いはスマートコントラクトとも表現される。

スマートコントラクトは、Ethereumが提唱したブロックチェーンの独自の概念ではない。スマートコントラクトの最初の提案は1994年に遡る。前述のBitgoldを提唱したNick Szabo(ニック・サザボ)が提案した概念だ。

スマートコントラクトとは、機械を使って契約を自動履行をしたら社会コストが削減できるのではないか、という発想に基づいた、契約自動執行の概念である。もっとも単純な例として、自動販売機がスマートコントラクトの例として挙げられている。Nick Szaboが執筆したスマートコントラクトに関するエッセイは、合計3本、1994年から1998年まで出し続けてきたが、それを実現するための分散コンピューティング技術は当時存在していなかった。

(もしスマートコントラクトの原典に興味がある場合は【ゴリ学習メモ01-02:スマートコントラクトの"3つの原典"を見てみよう】にまとめているので参照いただければと。)

Vitalikはこの90年代に提唱されていたスマートコントラクトの概念を、ブロックチェーンに結びつけ、この世に新しい技術として再誕させた。

イーサリアムにおけるスマートコントラクトとは、アプリケーション内部のデータに変更を加える際に、どのように振る舞うのかをルールづけ、それを世の中にオープンにしたものである。データがどこにどう格納されるのかと、データが変更される際にどのように「振る舞う」のかを定義づける行為である。

プログラミングをやっている人であれば「クラス」に近いものと認識いただけると概ね相違ないと思う。ただその「クラス」が有効範囲が違う。デプロイされて動いているマシンでのあるプロセス内だけで有効、なのではなく、全世界で共有されているワールドコンピュータ内部でその「クラス」の振る舞いは約束される、といったイメージだ。なおCryptoKittiesのContactのソースコードを見ると直感的に理解しやすい。https://github.com/cryptocopycats/awesome-cryptokitties/tree/master/contracts

イーサリアムの特徴❹.スマートコントラクト内部で使用される独自通貨に規格を設けた。

イーサリアムのもう一つの大きな特徴として、スマートコントラクト内部で使用される、独自通貨に規格を設けている点が挙げられる。トークンにはERC-20やERC-721といった規格が定められており、この規格に従って、アプリケーション作成者はトークンをジェネレートできるようになっている。

そして、今ではこのトークンをほぼ「ボタンポチ!」の感覚で、想像以上に簡単に作れてしまうようになっている。この簡単さが昨今のICOブームに繋がっている。極端な話アプリケーションがなくとも、スマートコントラクトの中身を実装していなくとも、簡単にトークンが作れてしまい、販売することができてしまう。

本当に簡単に作れてしまうゆえ、投機やSCAMによる無意味な取引が大量に発生してしまうというデメリットもある。そのデメリットのわかりやすい例が「送金詰まり」だ。無駄な処理に汚染されてしまい、イーサリアムの処理がおいつかず送金が確定しないという事象が発生する。

これは何もSCAMや無駄な送金に限った話ではなく、イーサリアムを利用したアプリケーションが増えれば増えるほど、または、実用が始まれば始まるほど、データの変更要求は増えていき「送金詰まり(トランザクション詰まり)」は容易に起こり得る。最近の有名な送金詰まりの例はDAppsゲームの「CryptoKitties」による送金詰まりだ。

これがブロックチェーン関連の文脈でよく言われる「スケーラビリティの問題」の正体である。これは現在イーサリアムコミュニティが解決しようとしている問題であり、またイーサリアムではない新しいプロトコル達が狙っている領域でもある。

★なおイーサリアムについても、当サイトにて簡単に概要をまとめたスライドがあるため、ご興味がありましたらご参照ください👇

【スライド】ゴリ学習メモ01-07 : イーサリアム概要(設定課題と解決策)

そして2018年現在のブロックチェーン

と、駆け足でブロックチェーンの歴史を説明してきた。2018年我々は、ちょうどこの「スケーラビリティ問題をどう解決するか」という問題に直面しているという状況だ。

ブロックチェーンを価値転送以外に利用しようとしている業界の先駆者であるイーサリアムはPlasmaやRaiden、あるいはShadingと呼ばれる考え方を持って、このスケーラビリティ問題を解決しようとしている。

そして先駆者であるイーサリアムを追う形で、ライバルたちも多数生まれている。代表的なものを挙げると、超高速処理を謳うEOS(イオス)や、開発者フレンドリーを掲げるLISK(リスク)やSTRATIS(ストラティス)、他にもNEO(ネオ)、Zilliqa(ジリカ)、Tezos(テゾス)、様々なプロトコルが生まれ、議論を巻き起こしている。この議論は実用に対する話から、思想的な対立、単純にポジショントークもあり面白い。

次の項では、簡単に、イーサリアムの最新の取り組みおよび、他のプロトコルの紹介をしていく。

5. 新しい「プロトコル系」ブロックチェーン群

まず、そもそもイーサリアムのスケーラビリティはなぜ「悪い」と言われるのか。他のプロトコルの槍玉に上がる「イーサリアムのスケーラビリティ問題(=処理速度が遅い)」。他のプロトコルを紹介する前にまずイーサリアムのスケーラビリティが悪いのか、その原理を理解しよう。(ブロックチェーンの原理を含めて紹介すると非常に長くなるので、簡単に概念レベルでの紹介とする)

まずイーサリアムはデータの保存や変更を、15秒間に一度の間隔で確定する。さらに15秒間に一度の処理確定でどれくらいのデータを処理するのか。ビットコインの場合は、1MBと定められているが、イーサリアムの場合は投票により毎回この量が変動する。過去のもっとも大きなブロックサイズは、2018年1月の32KB(0.032MB)である。(*なおイーサリアムではブロックサイズとは呼ばず、ブロックガスリミットという表現が正しい)

比較対象としては相応しくはないのだが、ビットコインの一つの送金のデータサイズを例にあげて皮算用してみよう。ビットコインの一つの送金のデータサイズ(トランザクション, Tx)は平均250バイト。単位をKBに合わせると約0.3KBとなる。イーサリアムの最大のブロックガスリミットは32KBであるから、ビットコインの一つの送金のデータサイズをベースに見積もった場合、32KB / 0.3KB = 約100件のデータとなる。つまり15秒間に100件程度のデータ処理しかできない計算となる。これを秒に直すと、1秒間に6件程度のデータ保存しか処理できない、という計算になる。よく処理速度の比較対象となるのが、VISAの処理速度。これは平均で1秒間4000~6000件とも言われる。今後イーサリアムをベースにあらゆるアプリケーションを乗せて、データの保存を行なった場合、現状のままでは到底ワールドコンピュータとして使える速度ではない。

こうした背景から、イーサリアムのコミュニティや、そしてイーサリアムを追いかける新しいプロトコル群は、このスケーラビリティの悪さを解決しようと、様々な活動を行なっているのである。もちろん他にも比較の理由はあるが、どのプロトコルでも共通してこのイシューを解決すべきものとして定めている。

と、前置きが長くなったが、ここからは現在具体的にどのような事例があるのかを見ていこう。

EOS(イオス)

イオスは秒間2,000個のデータ変更要求を受け付けることができるといわれている。単純計算でイーサリアムの300倍程度の速度を持つ。少しだけ技術的な話になるが、これはデータをブロックとして格納し「確定」する際のアルゴリズムに大きな違いがある。(このデータの塊であるブロックを「確定」する際の方法を、ブロックチェーン用語でコンセンサスアルゴリズム、と呼んでいる)

イーサリアムはPoWと呼ばれる、ビットコインのマイニングと同じコンセンサスアルゴリズムが採用されている。理解のために、あえてとても怒られそうな表現で説明すると、イーサリアムのPoWは「15秒に1回、全世界で誰でも参加できる無差別級の大くじ引き大会を行って、当選した人が要求されたデータを確定し保存する権利を持つ」といったアルゴリズムである。(これは無駄が多く、電気代をとても消費する)

それに対してEOSは、DPoS(Delegated Proof Of Stake)と呼ばれる、コンセンサスアルゴリズムを採用している。イーサリアムが全世界規模で抽選を行うのに対して、これは投票に選ばれた人のみがデータを確定する権利を持つ、いわば間接民主制に近い仕組みである。

EOSではブロックプロデューサーという21つのノードのみがデータを確定する権利を有する仕組みになっており、これが圧倒的速さの秘密でもある。

また、PoWのようなくじ引きによって確定させる、といったルールは存在しないため、委任を受けた21つのノードがデータを受け取ったらすぐさまそれを単純に「確定」させる、といった仕組みとなっている。

イーサリアムやビットコインで使われている「PoW」というコンセンサスアルゴリズムは、誰でも参加可能ゆえ、不正が行われる恐れがある。そのためわざわざ小難しいくじ引きをさせるというルールを設け、くじ引きに当選していないとそのブロック確定は認められないといった仕組みとなっている。これにより処理速度を犠牲にしているが、セキュリティと分散性(誰でも参加可能性)を担保している。

一方で、EOSにはくじ引きのような仕組みは存在しない、受け取ったデータにひたすらハンコを押すだけだ。ただしハンコを押すことができるのは、投票によって「信頼」された21つのノードだけとなっている。これは、分散性を犠牲にすることで、処理速度とセキュリティを担保した格好だ。

EOSの仕組みは処理速度に対してパラメータを振り切らせたような格好だが、その分散性については度々議論が巻き起こったりする。(それって、AWSみたいなクラウドと変わらなくない?といったような)

分散性をある程度犠牲にすることで、データの承認速度をあげたプロトコル、これがEOS、という理解をしておけばひとまずは良いと思う。

LISK(リスク)

LISKもEOSと同じコンセンサスアルゴリズム「DPoS」を採用している。LISKでは101人の投票で選ばれたものがブロックを承認する仕組みである。

DPoSも目立った特徴であるが、LISKの最もユニークな点は 「サイドチェーン」という概念である。メインでデータを格納するブロックチェーンを「メインチェーン」と称し、そこから枝分かれするチェーンを「サイドチェーン」と称している。「サイドチェーン」上で、アプリケーション固有のデータの処理を記述していき、「メインチェーン」には余計な処理を書き込まない、といった選り分けをして運用する。これにより「メインチェーン」に対してのデータ処理要求の絶対量を減らすことを試みる。そもそもの処理絶対量を減らすのが、LISKのとったアプローチだ。

なおLISKはイーサリアムとは違って「メインチェーン」にデータの振る舞い、つまりスマートコントラクトは書き込めない形式になっている。あくまでメインチェーンはLSKトークンというプロトコル通貨のやりとりのみを記載できるようになっており、その間のデータの処理は全て「サイドチェーン」で実行するようになっている。(2018年現在の情報収集時点では) メインチェーンができることは、メインチェーン上のLSKトークンの移動や、新しい「サイドチェーン(アプリケーション)」の作成、そして「サイドチェーン」へのLSKトークンの移動、他、全てで7項目くらいしかできることがない。

「サイドチェーン」ではメインチェーンから受け取ったLSKトークンを元に、アプリケーション作成者が独自で独自のトークンに変換するなどのプログラミングを行い、アプリケーションを実装していく。ただサイドチェーンをどう作るか、という指針にすいては、現在表立った情報は公開されておらず、続報を待つ格好になっている。

LISKの思想として「WEB開発者フレンドリー」を掲げており、サイドチェーン開発補助のためのSDK(Sidechain Development Kit)をリリース予定とのことだ。(個人的にこの公表は待ち遠しい)

なおリスクについては下記のスライドにてまとめているので、興味がありましたらご覧ください。

【スライド】PocketWP-0014 : LISK(リスク)

Tezos(テゾス)

TezosもDPoSを採用したプロトコルである。トランザクションの処理速度はDPoSによってある程度担保しようとしていると見えるが、Tezosの面白いポイントは、イーサリアムの「プロトコル」と「アプリケーション」の分離の考え方を、より抽象度を高めたものにした点である。

Tezosはブロックチェーンの「プロトコル」部分を3つに分解している。

  • 1.ネットワークプロトコル - トランザクションとブロックを発見する役割
  • 2.トランザクションプロトコル - 正当なトランザクションの要件を明らかにする
  • 3.コンセンサスプロトコル - 独自チェーン(ユニークチェーン)の周りにコンセンサスを形成する

Tezosはこれらのプロトコルを分解した上で、これらをモジュールとして捉え、これらそれぞれに対して変更を加えたい場合、投票によって新しく使用を変更し、かつ、ハードフォークを必要とせずに継続的にチェーンを維持することができるという特徴を持つ。

これは、一つの仕様変更のためにステークホルダーとのコンセンサスを取り、ノードのソースをまるっと差し替えるハードフォークとは違い、つねに自己進化を続けることを可能にしている。

ブロックチェーンの「スケーラビリティ問題」というのは多くの場合、その処理速度のみ指す場合が多いが、Tezosはプロトコルの老朽化に強い仕組みを備えたプロトコルであるのがユニークな点である。

また関数型プログラミング言語であるOcaml(!)を使っている点もまたユニークである。

Ethereumで議論されていること

イーサリアムコミュニティ自体もスケーラビリティ問題に対して指をくわえてみているわけではない。SNSなどで有名なPlasma(プラズマ)という概念の提案や、Shading(シャーディング)といった処理を分散させる方法が模索されている。

Shading(シャーディング)

現在のブロックチェーンでは、同じデータ処理要求に対して、全ノードで一斉にPoWによるくじ引き競争をするが、そうではなくデータ処理要求をノードごとに担当を分割して、並行的に別データ要求を処理することによって処理速度を上昇させるという方法論が検討されている。

SideChain (サイドチェーン技術  ex. Prasma, Raiden )

現在のチェーンを「メインチェーン」と定義。「メインチェーン」から枝分かれした「サイドチェーン」なるものに、各アプリケーションのトランザクションを刻んでおき、定期的にまとめてメインチェーンに刻むことによって、そもそものメインチェーンへのトランザクション量を減らすという対策である。

ただしこれらを実装した場合、PoWを行うノードのハッシュパワーが分散してしまうので、PoWでの実装は難しいと言われる。PoSを実装した、イーサリアムのバージョン(Casper)が前提となっていると言われている。

*今各所で行われているプラズマの実装&研究はPoSを前提にしたものなのかはまだ調べていない、おってここら辺は調査予定。

まとめ  |  4.新しい「プロトコル系」ブロックチェーン群 

以上が2018年現在我々が直面しているブロックチェーンの「スケーラビリティ問題」に対しての各プロトコルの解決策の紹介である。

それぞれ一長一短がある。様々な通貨を紹介したが、ここで理解したいのが、スケーラビリティを解決しデータの処理速度を高めたからといって、それが現在のイーサリアムを超えたものであり諸手をあげて上位互換のプロトコルだ!ということはできないのだ、ということである。

何かを高めようとした場合、何かが犠牲になっている場合がある。例えばEOSは素早い処理速度を実現したとしても、それが全ての点においてイーサリアムに優っているのではなく、EOSの場合はその代償として分散性を犠牲にしている。

こういった事象は、ブロックチェーンの文脈では、よく「トリレンマ」という関係で表現される。ブロックチェーンのトリレンマ問題。下記の記事はぜひ読んでおきたい。

【外部サイト】トリレンマに挑むイーサリアム・ビットコイン・ブロックチェーン


ジレンマという言葉は、とある2つの事柄があって、片方を立たせれば片方が立たず、といった現象を指している。トリレンマはこの3つバージョンと思っていただければいい。

ブロックチェーン文脈におけるトリレンマは下記の三つである。

  • ❶「分散性」
  • ❷「セキュリティ」
  • ❸「スケーラビリティ(データの処理能力)」

たとえばEOSは上で紹介したように、DPoSというコンセンサスアルゴリズムによってデータの承認を21人と限定し、特殊なくじ引きのようなシステムを設けないことによって速度を高めることを実現した。だが、ブロックを承認する21つのノードに入るためには条件があり、それが分散性を犠牲にしている。(だからと言って中央集権的アプローチも一概に悪いとは言えない場合もあるし、それは用途によって当然プロトコルの評価は異なってくると思われる)

今後もスケーラビリティの向上に焦点を合わせたプロトコルは継続的に生まれていくだろうが、単純なマーケティングワードに振り回されずに、常にトリレンマの観点、および実装する用途によっての評価の視点を忘れないでおきたい。

6.ブロックチェーン関連の他の動き

上記にてブロックチェーンの大まかな歴史、そして2018年現在、スケーラビリティ問題に関心が向かい、各プロジェクトで解決を行なっている最中であることは上記に説明した。

一方で、これらとは流れや文脈を異にしたブロックチェーンや、新しい動きもあるため、ざっと下記に紹介していく。

プライベートチェーン/コンソーシアムチェーン

上記の各プロトコル群とは、やや並行別宇宙に存在しているのが、プライベートチェーンないしコンソーシアムチェーンの世界である。

これは主にエンタープライズIT(業務システム)をターゲットにしたシステムで、ノードを特定の会社や業界間の中でのみ運用するという特徴を持つ。つまり分散性は無視して、特定の業界(=コンソーシアム)で運用することを前提に、超高速の分散コンピューティングを実現するという手法。

有名どころとしては、Hyperledger(ハイパーレジャー), R3Corda(コルダ), Fabric(ファブリック)というものがある。また日本国産のプライベートチェーンとして、BitflyerのMiyabi(ミヤビ)やmijin(ミジン)といったものが存在する。

Hyperledgerでは、PBFTといったコンセンサスアルゴリズムが採用されており、ノードによって役割が異なってくるといった特徴がある。

いずれにせよ共通するのは、クローズドな環境で不正がないという前提にて、分散性を無視、かつセキュリティを無視することで(この場合のセキュリティは不正なノードの存在をどう処理するかの耐性をさす)、高速性に思い切り振り切った仕様になっている。

なお、今まで紹介していたイーサリアムやEOS、LISKといった通貨はこれと比較して「パブリックチェーン」とも言われる。HyperledgerなどのプライベートチェーンとEthereumのようなパブリックチェーンを組合わせて運用するシステムもプロジェクトとしては存在するので、こちらも合わせてウォッチが必要。

また、こう言ったブロックチェーンのトリレンマを全く無視して、一般へのPR目的で「世界最速のブロックチェーンを開発しました」的なニュースはよく巷に溢れがちなので、ここら辺の情報は注意したい。(投資家の皆さんやりましたよアピール)

クロスチェーンの世界

様々なプロトコルが生まれているなかで、このチェーン同士をデータが不整合なく行き来する仕組みも現在考えられている。それがクロスチェーンである。

代表的なものとしてCosmos, Bancorといったプロトコルがある。これは例えばイーサリアムやリスク、イーサリアムからEOSといった、別プロトコルをまたがったデータのやりとりを可能にしようとしている取り組みだ。

COSMOSの例では、ブロックチェーンに他のチェーンのやりとりをする共通規格を作りましょう、といったことを提案している。この規格がABCI(The Application BlockChain Interface)というもので、各チェーンのノードにこの規格を搭載したエンジンであるTendermintを組み入れることによって、相互通信を可能にしましょうといった取り組みである。

仮に普及した場合、共通インターフェースが実装されることによって開発者の負担の逓減が可能になることや、自身の属するプロトコルが老朽化(オワコン化)したとしても、次のプロトコルへの移動が可能になるといった世界が実現するであろうと予測する。

(といいつつも個人的には各々のまだプロトコル自身が発展途上であるため、まだここに対して深く考えるのは現時点においては杞憂だとも思っている部分がある)

以上がブロックチェーンのスケーラビリティ問題以外についての、ホットトピックの紹介である。他には米証券取引委員会(SEC)のトークンに対する扱いや、セキュリティトークンブームの兆しなど紹介すべきことはたくさんあるが、一旦この場では割愛させていただく。

7.まとめ | おさらい

まず、ブロックチェーンは一言で説明すると「過去のデータの正しさをネットワーク参加者で保証し、それにより改ざんを防ぐ技術」であるということを説明した。それによりネットワーク参加者は安心してデータを価値としてみなし、通貨として利用することが可能になった。

そのブロックチェーンを発明したのがビットコインであり、ビットコイン以前ではそういった世界観は実現することができていなかった。

ビットコインの発明は注目を浴び、その中核技術であるブロックチェーンは、価値転送以外に利用用途があるだろうと様々な人やチームがその応用例を考え始めた。それが2013年前後のアルトチェーン・アルトコインブームである。ある用途では証券を表現するものとして。ある用途としてはドメインの名前とその所有者証明のために。

イーサリアム創始者であるVitalik Buterinは、アルトチェーンの一つであるNamedCoinに身を置く一開発者であったが、機能一つにつき一つのチェーンといったあり方に疑問を感じ、「イーサリアム」を提唱し開発した。

「イーサリアム」はブロックチェーンを二つの概念に切り分けた。それが「プロトコル」と「アプリケーション」という概念だ。これはスマホの「OS」と「アプリ」の概念に似た関係だが、一つ大きく違うのは「イーサリアム」ではアプリに記録されたデータを全ノードで共有する(フルノードの場合)という点だ。スマホの場合はアプリに保存されたデータは端末ごとによって異なってくる。その仕組みは一言で「ワールドコンピュータ」とも言われる。

イーサリアムは大きな問題を抱えていた。それはデータの処理速度である。これは「スケーラビリティ問題」と称される。イーサリアムはその状態を指を加えてただ待っているわけではなく、コミュニティ内部で、Plasmaといった概念の提唱やShadingの議論などを踏まえ、開発者が様々な解決策を模索中である。(今まさに2018年現在、ブロックチェーンで起こっているホットなトピックはまさにここであるとも言える)

一方でイーサリアムのスケーラビリティ問題を解決すべく、他の様々なプロトコルが生まれている。EOS、LISK、Tezos、NEO、Stratisといったプロトコルだ。これらのプロトコルは、分散性を犠牲にすることによって処理速度を向上させるといったアイディアで問題の解決を測ろうとしたり、あるいは「サイドチェーン」という概念で、データの変更要求の絶対数を削減しようと試みたりしている。だが処理速度が向上したとしても、ブロックチェーンのトリレンマ問題の観点は常に忘れないことが重要だ。何かを立てると、何かが犠牲になっている場合がある。処理速度が向上したからと言って、必ずしもイーサリアムの上位互換とは言えないことは注意したい。

また上記のパブリックチェーンの流れとは違った世界で、プライベートチェーンないし、コンソーシアムチェーンといった、動きもあることも紹介した。

他にやや水面下であるが、様々に生まれゆくブロックチェーンを相互に運用し行き来できる「クロスチェーン」という概念についても議論が進んでいる。

駆け足かつ長文ではあるが、以上が1990年のブロックチェーン以前から、今我々がいる2018年までの歴史、および現在のホットトピックの整理である。


今後のブロックチェーンの進化に期待したいですね。読了ありがとうございました。

これにて本文は終わりです

ゴリ学習メモ01-01に関連する他の情報に触れてみる

PocketWPについて

暗号資産(暗号通貨, 仮想通貨)やブロックチェーンは理解が難しく、また一次情報の多くはPCに最適化されている状況にあります。PocketWPでは、下記の3点のアプローチによってその問題を解決しようとしています。
  • ・SmartPhoneFirst - スマホで最適化したスライド/UI
  • ・Stockable - 流れてしまいがちな情報を蓄積し、共有できる
  • ・Followable - 追いかけるべき情報源がわかる
将来的には共同で編集できる仕組みなども設計中です。 暗号資産・暗号通貨の価値を広げるには、良質な情報を読みやすく噛み砕くことが必要だと思っています。 よろしければご意見をこちらからお寄せください (お問い合わせフォーム)
運営者情報① : IXTgorilla
IXTゴリラ
@IXTgorilla
Twitterにて #PocketWP #ゴリ学習メモ なるスマホに最適化した暗号資産の学習情報をスライド形式にて発信しているゴリラ。 これまではTwitterのみの発信を行なっていましたが、蓄積される場所が欲しいという声にお答えし、Web化を行なってみました。
運営者情報② : CryptoGorillaz
暗号通貨に関する情報を共有するコミュニティ。当初はコラ画像などをつくる集団だったが、暗号通貨の魅力や将来性にほだされ、日夜暗号通貨に関する情報共有を行なっている。(IXTゴリラもここに所属しています)

寄付/投げ銭はこちら

  • Ethereum(ETH) / ERC20トークンでの投げ銭
    0x77535cb08CF5Ba3B85A34A3B037766103226c783