投稿者: Vitalik Buterin 投稿日: 2013年12月31日

この連載の第1回では、インターネットによって、分散型企業、つまりインターネット上で分散型ネットワークとして完全に存在し、何千ものサーバー上で「生きて」いくための計算を行うオートマトンを作ることができるという話をしました。その結果、これらのネットワークはビットコインの残高を維持し、トランザクションを送受信することさえできるようになりました。思考能力と資本維持能力という2つの能力は、理論的には、経済主体が市場で生き残るために必要なものすべてであり、その思考と資本によって、自らの資源需要に追いつけるだけの速さで販売可能な価値を生み出すことができればよい。しかし、実際には、周囲の世界とどのように相互作用するかという大きな課題がまだ残されている。

データの取得

この点に関する2つの大きな課題の1つ目は、インプットの問題である。分散型企業は、現実の世界についてどのように事実を学ぶことができるのだろうか?少なくとも理論的には、分散型企業が事実なしに存在することは可能であることは確かである。計算機ネットワークは最初からツェルメロ・フレンケル集合論の公理を組み込み、可能な限りの数学的定理を証明する無限ループに入るかもしれない。しかし実際には、そのようなシステムでさえ、世界がどのような定理を面白いと思うかを何らかの方法で知る必要があるだろう。一方、人々が何を欲しているか、それを得るためにどのような資源があるかというデータを持つ企業は、世界全体にとってより有用である。

ここで、「自己検証データ」と「非自己検証データ」という2種類のデータを区別して考える必要がある。自己証明データとは、一度ある方法で計算されると、ある意味で自らの正当性を「証明」するデータである。例えば、ある分散型企業が「123456789」という数列を含む素数を探している場合、「12345678909631」と入力すれば、その数が本当に素数であることを計算機で検証することができるのだ。一方、ベルリンの現在の気温は自己検証を全く行わない。11℃かもしれないが、17℃かもしれないし、231℃かもしれない。外部のデータがなければ、3つの値すべてが等しく正当であるように見える。

ビットコインは興味深い事例です。ビットコインのシステムでは、取引は部分的に自己検証されます。正しく署名された取引という概念は完全に自己検証である。取引の署名が楕円曲線デジタル署名検証アルゴリズムに合格すれば、その取引は有効である。理論的には、トランザクションの署名の正しさは前のトランザクションの公開鍵に依存すると主張するかもしれない。しかし、これは実際には自己検証の性質を全く損なわない - トランザクションの提出者は、常に前のトランザクションも提出するよう要求することができる。しかし、自己検証できないものがある。それは時間である。トランザクションはお金を受け取る前にお金を使うことはできず、さらに重要なことは、トランザクションは既に使われたお金を使うことはできないということである。同じお金を使う2つの取引があった場合、理論的にはどちらかが先になる可能性があり、一方の履歴が他方より有効であるかどうかを自己検証する方法はない。

ビットコインは、本質的に時間問題を計算民主主義で解決しています。もしネットワークの大多数がある順序で出来事が起こったと同意すれば、その順序は真実とみなされ、この民主的プロセスのすべての参加者が正直に参加するインセンティブがあります。もし参加者の誰かがそうしなければ、不正参加者がネットワークの残りの部分をまとめたものより多くの計算能力を持っていない限り、彼自身のバージョンの歴史は常に少数意見となり、したがって拒否されて不正参加者からブロック収入を奪うことになります。

より一般的なケースでは、ブロックチェーンのコンセプトから得られる基本的なアイデアは次のとおりです。ある種の資源民主主義メカニズムを使って、ある事実の正しい価値について投票し、「主流の見解」と一致しない報告をした人から金銭報酬を奪うことによって、人々が正確な推定値を提供するインセンティブを確保することができるのです。問題は、この同じコンセプトが他の場所でも適用できるかということだ。例えば、多くの人が望んでいるビットコインの改良点の1つは、価格の安定化です。例えば、ビットコインが他の通貨や商品の観点から自身の価格を追跡できれば、アルゴリズムによって価格が高い場合はより多くのビットコインを放出し、価格が低い場合はより少ないビットコインを放出することができ、自然に価格が安定し、現在のシステムが経験する急激なスパイクが減少します。しかし、今のところ、そのようなことを実現する実用的な方法を考え出した人はまだいない。しかし、なぜそうしないのか?

その答えは、精度の高さです。マイナーは各ブロックにビットコイン価格に関する独自の見解を書き込むことができ、そのデータを使用するアルゴリズムは、過去1000ブロックの中央値を取ることによってそれを取得することができるのである。中央値からある程度の誤差がある採掘者はペナルティを受けることになる。しかし、問題は、採掘業者が不正を行うあらゆるインセンティブを持ち、かつ、かなりの余裕を持っていることです。実際のビットコイン価格が114ドルで、ネットワークパワーのかなりの割合(例えば5%)を持つマイナーであるあなたは、113~115ドルが安全なマージン内に入る可能性が99.99%あることを知っているので、その範囲内の数字を報告すればブロックが拒否されることはない。ビットコイン価格はいくらと言うべきでしょうか?答えは、115 USDのようなものです。なぜなら、もしあなたがもっと高く見積もった場合、ネットワークが提供する中央値は114 BTCではなく114.05 BTCになってしまい、ビットコインネットワークはこの情報を使ってさらにお金を印刷し、既存の預金者を犠牲にしてその過程であなた自身の将来の収益を増やすことになるからです。そして、ビットコインネットワークはこの情報を使ってさらにお金を印刷し、その過程で、既存の預金者を犠牲にして自分の将来の収入を増やすことになります。その時点で、このサイクルが繰り返されます。価格は114米ドルで、あなたは114から116米ドルが安全マージン内に収まることを99.99%確信しているので、116米ドルという答えを書き入れます。その次は117ドル、118ドルとなり、気がつけばハイパーインフレでネットワーク全体が崩壊している、というサイクルを繰り返している。

上記の問題は、特に2つの事実から生じている。1つは、価格が何であるかに関して許容できる範囲の可能性があること、もう1つは、投票者が答えをある方向に誘導するインセンティブを持つことである。もしproof of workの代わりにproof of stakeが使われた場合(つまり1クロックサイクル=1票ではなく、1ビットコイン=1票)、逆の問題が生じるだろう。ステークホルダーは新しいビットコインの印刷を全く望んでいないので、誰もが価格を下げるよう入札するだろう。プルーフ・オブ・ワークとプルーフ・オブ・ステークを組み合わせることで、この問題を解決できるのでしょうか。そうかもしれないし、そうでないかもしれない。

また、この問題を解決する方法として、少なくとも未成年の通貨より上位のアプリケーションでは、報告された市場価格ではなく、実際の市場価格に注目するという方法も考えられます。例えば、リップル(またはカラーコインをベースにしたもの)のようなシステムが既に存在し、様々な暗号資産間の分散型交換が行われているとします。金や米ドルのような資産を表すコントラクトもあれば、会社の株式、スマートプロパティ、そして明らかにビットコインと同様の信頼性のない暗号通貨も存在するかもしれない。したがって、システムを欺くためには、悪意のある参加者は、単に自分たちの都合の良い方向に少し間違った価格を報告するだけでなく、これらの商品の実際の価格も押し下げる必要がある。基本的には、LIBORスタイルの価格操作の陰謀である。そして、ここ数年の経験が示すように、LIBORのような価格操作の陰謀は、人間が制御するシステムでも必ずしも克服できないものである。

さらに、暗号市場でなければ正確な価格を把握することが難しいというこの根本的な弱点は、普遍的なものとは言い難い。価格の場合、腐敗の余地が大きいことは間違いない。そして、上記は腐敗の可能性の全容を説明し始めたわけでもないのである。例えば、ビットコインが個々の不換紙幣よりもずっと長く続くと予想する場合、通貨生成アルゴリズムには、米ドルのような個々の通貨ではなく、商品の観点からビットコインの価格を懸念してもらい、正確にどの商品を使用するかという問題は「解釈」に大きく委ねられるかもしれません。しかし、他のほとんどのケースでは、そのような問題は存在しません。例えば、ベルリンの天気の分散型データベースが欲しい場合、それを一方向にごまかす重大なインセンティブはない。技術的には、分散型企業が農作物保険に参入すれば多少は変わるでしょうが、その場合でもリスクは小さくなります。なぜなら、二つのグループが反対方向に動くからです(つまり、干ばつがあることにしたい農民と、ないことにしたい保険会社です)。このように、分散型の気象ネットワークは、現在の技術でも作ることは十分に可能なのです。

世界を舞台に活躍する

ある種の民主的な投票プロトコルがあれば、分散型企業が世界の事実を知ることは可能であると、上で推論した。しかし、その逆は可能なのだろうか?ビットコインのように、ただそこに座って人々がデータベースのエントリに価値を与えるのを待つよりも、もっと実質的な方法で、企業が実際に環境に影響を与えることは可能なのだろうか?答えはイエスで、その目標を達成するにはいくつかの方法がある。まず、最も明白なのは、APIを使用することです。APIとは、アプリケーション・プログラミング・インターフェースのことで、コンピュータ・プログラムが特定のウェブサイトや他のソフトウェア・プログラムと相互作用できるように特別に設計されたインターフェースである。例えば、HTTP GET リクエストを http://blockchain.info/address/1AEZyM6pXy1gxiqVsRLFENJLhDjbCj4FJz?format=json に送ると、blockchain.info のサーバーに命令が送られ、サーバーはビットコインアドレス 1AEZyM6pXy1gxiqVsRLFENJLhDjbCj4FJz との最新の取引を含むファイルをコンピューターに適した形式で返送するのである。この10年、ビジネスのインターネットへの移行が進むにつれ、APIでアクセスできるサービスも急速に増えてきた。インターネット検索、天気予報、オンラインフォーラム、株式取引などがあり、毎年さらに多くのAPIが作られている。ビットコインでは、最も重要なピースの1つである「お金のAPI」を手に入れたのです。

しかし、まだ1つ重大な、そして意外と平凡な問題が残っています。それは、現在のところ、HTTPリクエストを分散して送信することができないということです。HTTPリクエストを分散して送信することは、今のところ不可能です。リクエストは最終的に全部まとめてサーバーに送信されなければならず、それはつまり、どこかで全体が組み立てられていなければならないことを意味します。前述のブロックチェーンクエリのように、公開データを取得することだけが目的のリクエストの場合、これは深刻な問題ではなく、この問題は投票プロトコルで解決できる。しかし、リソースの購入などを自動化するAPIがそうであるように、アクセスするためにAPIの秘密鍵が必要な場合、秘密鍵がそのまま平文で、最終受信者以外の場所に表示されると、秘密鍵のプライバシーが直ちに侵害されることになる。署名は、上で見たように、分散化された方法で行うことができ、署名されたリクエストは改ざんされないので、リクエストに署名を要求することはこの問題を軽減する。しかし、これを実現するにはAPI開発者側にさらなる努力が必要であり、今のところ署名付きAPIリクエストを標準として採用するところまでは至っていない。

その問題を解決しても、まだ別の問題が残っています。APIと対話することは、コンピュータープログラムにとって難しいことではありません。しかし、そもそもプログラムはどうやってそのAPIを知るのでしょうか?APIが変更された場合、どのように対処するのか?あるAPIを運営している企業が完全に潰れてしまい、代わりに他の企業が参入してきたらどうするのか?APIが削除され、それに代わるものが存在しない場合はどうだろう?最後に、分散型企業が自身のソースコードを変更する必要がある場合はどうだろうか?これらはコンピュータが解決するのがはるかに困難な問題です。これに対する答えはただ一つ、サポートに人間を頼ることです。ビットコインは、それを維持するために人間に大きく依存しています。2013年3月に、ブロックチェーンのフォークを修正するためにビットコインのコミュニティからの積極的な介入を必要としたことを見ましたし、ビットコインは、おそらく設計できる中で最も安定した分散コンピューティングプロトコルの1つです。51%攻撃が起こり、ブロックチェーンフォークでネットワークが3つに分かれ、DDoSで5つの主要なマイニングプールが同時にダウンしたとしても、煙が消えれば、いくつかのブロックチェーンが優位に立ち、マイナーたちはそれを中心に組織化し、ネットワークはそこから前進し続けるだけでしょう。より複雑な企業は、より脆弱になります。資金を保有するネットワークが何らかの形で秘密鍵を漏えいした場合、その結果、倒産してしまいます。

しかし、人間を信頼しすぎることなく利用するにはどうしたらいいのだろうか。もし、その人間が、最速の採掘機を作るというような、簡単に測定できる極めて特殊なタスクしか与えられていないのであれば、問題はない。しかし、人間がやらなければならない仕事は、まさにそのような簡単に測定できない仕事です。新しいAPIを発見した人にいくら報酬を与えるか、どのように判断するのでしょうか。ビットコインは、抽象化のレイヤーを一つ上げることで、単純に複雑さを取り除くことでこの問題を解決している。ビットコインの株主は価格が上がれば利益を得るので、株主は価格を上げるようなことをするよう奨励されます。実際、ビットコインの場合、プロトコルをサポートし、その成長と普及を支援することで、全体の準宗教が形成されています。すべての企業がこれほど熱狂的な支持者を持つとは考えにくいことです。

敵対的買収

また、「将来性」の問題と並行して、「敵対的買収」という問題もあります。これは、ビットコインでいうところの51%攻撃に相当するものですが、より高い確率で発生します。お金を扱う企業が敵対的に買収されるということは、その企業の財布の中身をすべて抜き取る能力を攻撃者が獲得することを意味します。Decentralized Dropbox, Incの敵対的買収は、攻撃者が全員のファイルを読むことができることを意味します(ただし、ファイルが暗号化されていることが望ましいですが、その場合でも攻撃者は全員のファイルを拒否することができます)。分散型ウェブホスティング会社の敵対的買収は、ウェブサイトをホストしている人だけでなく、その顧客にとっても大きな損失につながります。攻撃者は、各顧客がログインすると同時に、顧客の個人データを攻撃者自身のサーバーに送信するようにウェブページを修正する能力を得るためです。敵対的買収はどのように行われるのだろうか?秘密鍵が1000個中501個の場合、答えは簡単で、同時に数千個の異なるサーバーになりすまし、それらすべてで企業に参加するのだ。ボットネットに感染した数百万台のコンピュータを経由して通信を転送すれば、発見されることなく簡単に実現できる。そして、ネットワーク内の半分以上のサーバーを手に入れたら、すぐにキャッシュアウトに踏み切ることができるのです。

幸いなことに、ビットコインの存在は多くの解決策を生み出し、その中でもビットコイン自身が採用しているプルーフ・オブ・ワークはその一つに過ぎない。ビットコインは貨幣の完璧なAPIであるため、貨幣の希少性とインセンティブを伴うあらゆる種類のプロトコルが、コンピュータネットワークで利用できるようになったのである。参加する各ノードが、例えば100BTCを支配していることを証明する必要があるProof of stakeは、可能なソリューションの1つです。これが実行されると、敵対的買収を実行する場合、すべての正規ノードが一緒にコミットするよりも多くのリソースが必要になります。100BTCは、ネットワークが部分的に管理するマルチシグネチャアドレスに保証金として移動させることも可能で、ノードの不正行為を阻止するとともに、その所有者に、企業を存続させるために行動し、さらには協力する大きなインセンティブを与えることができる。