2013-10-01

ストールマンのいう不自由なSaaSSを打ち破る方法について、FreenetやBitTorrentやBitcoinの先例を考える

GNUの30周年にことよせてWired.comoに起稿したストールマンの文章によれば、ストールマンは、SaaSS(Service as a Software Substitute)を不自由なソフトウェアと同等に、利用者の自由を奪う危険な存在であると考えているそうだ。

Why Free Software Is More Important Now Than Ever Before | Wired Opinion | Wired.com

SaaSSは、もはや空気のようなものだ。どこにでもある。そもそも、このブログというサービスを提供しているBloggerだって、SaaSSだ。Twitterもそうだ。Googleのような検索サイトもそうだ。メールだって、大抵の人間は、自分の支配力はほとんど及ばないメールサーバーに依存している。今や、お金のやり取りだって、ネットワークと他人のサーバーに依存して行なっているではないか。自分の所有せず、また支配力の及ばない、ネットワーク越しのサーバーに依存したサービスは、すべてSaaSSといえる。これらのサービスは、利用者ではなく、サーバーの管理者に、不公平で一方的な権力を与えている。サーバーの管理者は、利用者を監視し、検閲し、攻撃することができる。インターネット越しに他人の所有するサーバーを介して提供されるほぼすべてのサービスは、SaaSSだ。

ではどうするのか、gnu.orgや、fsf.orgや、stallman.orgですら、利用者の自由を尊重しない不自由なSaaSSなのか。彼らの文章は自由かもしれない。彼らが提供するソフトウェア(JavaScript)は自由かもしれない。サーバーは自由なOSと、その上で動く自由なソフトウェアで構成されているのかもしれない。事によれば、サーバーのソフトウェア群や設定ファイルすら(秘密鍵などのごく一部を除き)、提供されているかもしれない。しかし、サーバーは、物理的なハードウェアであるサーバーは、利用者の自由にはならない。

ストールマンは、セキュリティに関して独特な意見を持っていた。もちろん、時代の変わった今日でも、まだその意見を維持しているかどうかはわからないが、基本的には、あまり変わっていないのではないかと思う。

On Hacking - Richard Stallman

ストールマンは、ハッキングが好きだった。ハッキングというのは、例えばある問題を解くのに、既知の最小プログラムは6個のインストラクションからなるプログラムであったところを、5個に削減するとか、数値をローマ数字で表示するとか、英語という自然言語で書かれた質問の意味を理解するプログラムなどだ。ハッキングとは、既存の制約を打ち破る行為である。

コンピューターにセキュリティの概念が持ち込まれ、ユーザーごとに権限が付加され、独裁的なコンピューターの管理者と、それ以外の奴隷のごとき一般ユーザーに分けられ、また正しく認証された人間やプログラムでなければ、コンピューターを使えないようにするということが、行われるようになってきた。

すでに述べたように、ハッキングとは、既存の制約を打ち破る行為である。とすると、セキュリティによる制約を打ち破るのが、ハッカーの格好の遊び場になるのは当然のことだろう。

ストールマンは、セキュリティなど元から相手にしなかった。セキュリティなどというものがあるから、セキュリティを打ち破ることに、貴重なハッキング能力が浪費されてしまうのだ。セキュリティなどなければ、もっと別の有益な制約を打ち破ること、たとえば、プログラムで自然言語の理解するだとか、計算量が爆発的に増大する問題を十分に信頼可能な高い精度で解くヒューリスティックな手法などといった、本物の価値あるハッキングに、ハッカーの労力が費やされる。セキュリティなど無価値だ。

ストールマンも開発に関わったITS(Incompatible Timesharing System)というOSでは、セキュリティに関して、独特の思想を持っていた。というより、現代でいうところのセキュリティはなかったのだ。

セキュリティなどというものがあるから、打ち破りたくなるのだ。ユーザーごとに異なる不公平な権限が付与されているからこそ、打ち破りたくなるのだ。ITSにはユーザーという概念はあったが、あくまでコンピューターの利用者を識別する程度の意味でしかなかった。あらゆるユーザーは、別のユーザーの端末を覗きこむことができた。ただ、ユーザーの方でも、別のユーザーに除かれているという事がわかる仕組みだった。初期のITSにはログイン時のパスワードすらなかった。ファイルをユーザーが所有するという概念がなく、OSを構成するものも含む、システムのあらゆるファイルは、全ユーザーによりいつでも書き換え可能だった。これにより、ユーザーごとに異なる権限の制約を打ち破るハッキングへの魅力がなくなり、ハッカーはもっと価値のあるハッキング、例えば自然言語の解釈や過労死寸前のセールスマンの訪問ルートを決定する問題などに、労力に集中できた。

OSやハードウェアの欠陥を探して、システムをクラッシュさせるというのも、ハッキングにおける興味の対象のひとつだった。これも、ハッカーの興味を、本当に価値のあるハッキングから、目的と手段を混同したような意味のないハッキングへの労力の浪費を促した。そこで、ITSでは、画期的な方法により、利益のないハッキング対象からハッカーの興味をそいだ。ITSでは、全ユーザーに、いつでもシステムをクラッシュできる方法が提供されていた。これにより、システムをクラッシュさせるといった程度のつまらないハッキングへの興味をそぎ、もっと有益なハッキングに意識を集中させることができた。

しかし、時代は変わった。ストールマンとて、gnu.orgや、fsf.orgや、stallman.orgの内容が、誰の手によっても自由に書き換え可能になって欲しくはないだろう。このようなWebサイトで公開されている文章の複製物が改変されるのはともかく、このWebサイト上の文章そのものは、改変されてほしくないはずだ。これは、つまりサーバーに不公平な権力を与えていることになる。

ある情報が改変されていないかどうかを高い確率で保証するだけなら、ハッシュ関数や、ハッシュ関数と公開鍵暗号を併用した署名により、実現可能だ。だから、複製物が改変版であるかどうかを見分けるのは容易い。しかし、サーバーという物理的存在を自由にするのは難しい。

ましてや、いまだに我々の計算力やストレージ容量やネットワーク帯域は貧弱なので、個人の支配できるコンピューターやネットワークで、大規模なサーバーを置き換えるのは難しい。Googleのような検索を実現するには、ハードウェアの能力が圧倒的に足りない。メールも、メールサーバーを常に稼働させておかなければならないし、優秀なスパムフィルターや、高速なメールの検索が難しい。httpサーバーも難しい。何もかもが難しい。一体どうすればいいのか。

非中央管理ネットワーク

現状の多くのSaaSSの問題が、サーバーという中央管理された少数の権威と、その権威に依存する権力を持たない多数のクライアントという、中央管理ネットワークという仕組みそのものから発生する問題である。では、この中央管理の権力を排除してしまえばいいのではないか。

非中央管理ネットワーク、分散ネットワーク、あるいは俗にPeer-To-Peer(P2P)などと呼ばれている一連の技術が、中央管理する権力の排除を可能にする。

これらのネットワークでは、すべての参加者が、公平である。すべての参加者(ノード)は、従来の中央管理ネットワークでいう、サーバーでもあり、クライアントでもあるのだ。

まず、中央管理ネットワークにおける、ブログへのアクセスを考えよう。あるクライアントが、あるブログを見たいとする。クライアントはブログの住所を入力し、住所に対応するサーバーからブログを構成する情報を受け取る。

非中央管理ネットワークではどうなるのか。すべての参加者は、周囲の少数の参加者とお互いに接続して、メッシュ状のネットワークを構築する。ブログを見たい参加者は、周囲の参加者に、ブログの住所を伝える。周囲の参加者が、その住所に対応する情報を持っていた場合、ブログを見たい参加者に情報を返す。持っていない場合、さらに周囲の参加者に、ある参加者がある住所の情報を欲していると伝える。このような伝言ゲームのような伝達の広がりにより、最終的に、目的の情報を持っている参加者にまで要求が届き、最初のブログを見たい参加者に情報が送信される(直接にせよ、間に別の参加者を挟むにせよ)。

中央管理ネットワークでは、悪意ある者は、サーバーさえ抑えてしまえば、そのサーバーという権威に依存するクライアントに対して、監視検閲攻撃と何でも一方的にやりたい放題だ。非中央管理ネットワークでは、すべての参加者は等しいので、少数の抑えるべき権威が存在しない。悪意ある者も参加者の一人になるにすぎない。非中央管理ネットワークは、ネットワークを構成する参加者のうちの少数が悪意ある者であったとしても、不公平な権力の差が発生しないように設計されている。たとえブログを検閲するために一部の参加者を抑えたとしても、すでにブログを構成する情報の複製物がネットワークにより保存され、検閲は失敗する。

たとえ一旦は、全ノードを侵略したとしても、我々が自由の精神を放擲せず、汎用コンピューターが存在する限り、非中央管理ネットワークは再び立ち上げることができる。ただし最近、ゲーム用コンソールやiPhoneやAndroidなどの悪の勢力の興隆により、汎用コンピューターを使う人間が減りつつあるのは心配だ。これらの制限コンピューターは、利用者所有者の自由を認めず、ハードウェアの製造者に、利用者に対して一方的な権力を振るえるように設計されている、極めて邪悪で非人道的な制限コンピューターである。我々はこのような制限コンピューターを使ってはならないことはもちろんである。

もちろん、共通の悪意ある者が参加者の大半を占めるような場合はどうにもならない。ただし、ネットワーク全体に比して影響力のあるほどのコンピューター資源を用意しなければならない。

非中央管理ネットワークでは、コンピューター資源の強い存在は正義なのだ。

非中央管理ネットワークは、単なる机上の空論ではない。すでに多くのネットワークが設計され、実装され、実際に使われている。ここからは、そのような先例をいくつか考察しよう。

Freenet

The Freenet Project - /index
Freenet - Wikipedia, the free encyclopedia

Freenetは、インターネット上に非中央管理ネットワークを実装し、汎用的な通信を実現している。ただし、高級なアプリケーションを記述するためのAPIとしては、独自のものが使わているため、既存のTCPやUDPを使うアプリケーションは流用できない。Freenetでは、ユーザーへのUIとして、ローカルhttpサーバーとして動作し、独自APIで実装した機能へのUIを、HTML/CSS/JavaScriptで提供しているため、通常のブラウザーから利用することができる。

Freenetは、実際に使われている。Webページやフォーラムやチャットやファイル共有といった一通りの機能が実装され、UIはローカルhttpサーバーからブラウザー経由で提供されるため、使い勝手も悪くない。問題は、非効率的だという事だ。

たとえばこのブログを実現するためのサーバーは、Bloggerが提供している。筆者が文章をアップロードすると、ほぼ一瞬で反映され、全世界から閲覧できる。Freenetはどうか。筆者が全世界に公開したい文章は、周りのノードによって複製されていく。他人が筆者の文章を読みたい場合、筆者のノードか、文章の複製を保有している他のノードから受け取ることになる。他のノードによって複製され続ければ、たとえ筆者のノードが表現の自由を憎む抑圧者によってオフラインにされたとしても、筆者の文章は、他のノードが複製する価値を認めれば、依然としてFreenet上に生き残ることになる。

問題は、これがとても非効率的だという事だ。このBloggerでは数秒もかからない全世界への文章の公開が、Freenetとなると、コンピューター資源次第だが、何時間もかかることすらある。チャットのリアルタイム性は損なわれる。ファイル共有はとてつもなく遅い。

結果として、そのような非効率的な非中央管理ネットワークは、多くの利用者を得られない。なぜならば、その土台であるインターネットを直接使ったほうが、たしかに検閲されているとはいえ、はるかに便利だからだ。どんなに机上では素晴らしい技術も、利便性が悪ければ使われない。非中央管理ネットワークにとっては、悪意ある一部のノードの企みを防ぐためにも、多くの利用者が存在しなければならないのに、その利用者が得られない。結果として、Freenetは、あまり一般的ではない。一般的の定義は、オマエのカーチャンでも使っているという事だ。

中央管理ネットワークであるインターネット上に、非中央管理ネットワークを実装する試みは、Freenetだけではなく、実に多く考案され、そして実際に実装されてきた。いちいち挙げるとキリがない。たとえば、GNU傘下のプロジェクト、GNUnet | GNU's Framework for Secure Peer-to-Peer Networkingもそうだ。しかし、こちらは、Freenetよりもさらに利用者が少ない。

このような非中央管理ネットワークの問題は、実装が難しいとか、実装に労力がかかるというものではない。それは根本的な問題からすれば枝葉でしかない。根本的な問題は、十分に利用者を集めることの困難性だ。

では、汎用性を求めず、特定の機能だけに特化した、非中央管理ネットワークはどうだろうか。

分野特化の非中央管理ネットワーク

まだP2Pという略語がなく、Peer-To-Peerという言葉自体も、一般人(=オマエのカーチャン)は知らなかった時代、ゲームはP2P通信を使っていた。FPSゲームは、早くからオンライン対戦に対応していた。当時のオンラインFPSでは、数人から数十人のプレイヤーが集まって対戦ゲームをしていた。その際、通信はプレイヤーそれぞれが、同じゲームに参加するすべてのプレイヤーに送信していた。

もちろん、これはあまりにも限定的すぎる。しかし、一旦中央管理のサーバーを経由しない、参加者それぞれが独立して情報をやり取りするという仕組みは、何も最近始まったものではない。P2Pという略語を有名にした分野に、ファイル共有がある。

ファイルとは、でかい情報の塊である。ビット列である。ファイルをファイルのまま、他人と共有したいという需要は当然のものだ。ブログが文章を共有するように、Twitterが140文字を共有するように、ファイルを共有したいのだ。非中央管理ネットワークで実装されたファイル共有システムは、その悪用可能性だけが注目されるが、情報の共有は、自然なことだ。

従来の中央管理ネットワークでファイル共有を実現するには、共有したいファイルを持っているものが、ビット列で表現された情報の塊であるファイルをサーバーにアップロードし、しかる後に、共有されたファイルを求める者が、サーバーに問い合わせて、ファイルをダウンロードする。中央の権威であるサーバーは、ファイルを保存し、送信者と受信者を管理する。ここに、サーバーの一方的な権力が発生する。しかも、サーバーには、多大な計算力、ストレージ容量、ネットワーク帯域が要求される。とても非効率的である。

この非効率性は、ファイルの送信者と受信者が、直接にやり取りをすれば低減できる。サーバーは、ファイルの情報と、ファイル所有者と、ファイルを求めている者という、少ない情報量だけ管理すればいい。これはサーバーに必要な計算力、ストレージ容量、ネットワーク帯域を低減する。

Napsterは、このような発想から生まれた。

しかし、まだこれでは、ファイル共有機能は、サーバーという中央権威に依存している。完全に非中央管理ネットワークにするには、Freenetのように、すべての管理を個々のネットワークの参加者が行わなければならない。しかし、ファイル共有を実現するだけであれば、Freenetのように汎用的な設計である必要はない。ファイル共有にだけ特化したプロトコルは、ファイル共有に対しては、より効率的に機能する。

Winnyで使われているプロトコルをはじめとする、実に多くの非互換のファイル共有用のプロトコルは、インターネット上に、ファイル共有に特化した非中央管理ネットワークを構築している。

非中央管理ネットワークによるファイル共有は、中央管理ネットワークよりも効率的であった。たしかに、全体で見れば、ネットワーク帯域がより多く発生するのだが、強い計算力、ストレージ容量、ネットワーク帯域を持つ、中央管理用のサーバーを用意しなくてもいいという点で、圧倒的に、個人には負担が少なかった。しかも、もし欲しいファイルを複数の参加者が持っていた場合、複数の参加者からファイルの別々の箇所を同時にダウンロードできるといった利点もあった。中央管理のサーバーは、そのサーバーのネットワーク帯域に制限されるが、すべての参加者が協調するネットワークでは、そのようなボトルネックが存在しないのだ。

数ある非中央管理ネットワークプロトコルの中でも、特に成功したのが、BitTorrentだ。

BitTorrent

BitTorrent - Wikipedia, the free encyclopedia

BitTorrentプロトコルは、当初、完全な非中央管理ネットワークではなかった。また、匿名性については、昔も今も、それほどは考慮されていない。ピアとよばれるネットワークの参加者の情報はトラッカーと呼ばれるサーバーで管理しなければならなかったし、ファイル情報は.torrentファイルとして配布しなければならなかった。しかし、BitTorrentプロトコルは、面白いことに、プロトコル仕様が公開され、独立した実装がいくつも作られ、どんどん改良されていった。他のファイル共有用の非中央管理ネットワークにはみられなかった傾向だ。他のファイル共有プロトコルは、プロトコル仕様が公開されず、仕様の考案者が提供する実装が唯一の実装であることが多かったのだ。

仕様が公開されていて、独立した実装が作れること、匿名性ではなく、効率を重視したこと。最初はノードやファイル上の管理を別に行った手軽さなどが、BitTorrentの成功の秘訣だろう。

そうして、当初はNapsterのようにハイブリッドだったBitTorrentプロトコルは、完全な非中央管理ネットワークを実現するプロトコルへの機能を拡張していった。参加者であるピア情報は、トラッカーとよばれる中央管理のサーバーに依存しない方法でも得られるようになった(DHTとローカルピア交換)。ファイル情報は、.torrentファイルのハッシュ値だけになり、ファイル情報を格納する.torrentファイルは、他の参加者から、ハッシュ値をもとに得るようになった。これにより、BitTorrentは完全に非中央管理ネットワークとして機能するようになった。しかも、中央管理ネットワークとしての機能も残している。

このような特徴により、BitTorrentプロトコルは、純粋なファイル共有以外の目的でも使われるようになった。

たとえば、いくつかの不自由なゲームは、アップデートパッチの配布にBitTorrentプロトコルを用いている。.torrentファイルへのハッシュ値さえ信頼できる方法で知らせれば、悪意ある参加者による、悪意あるコードへの差し替えも防ぐことができる。

あるデータセンターでは、大量のサーバーのソフトウェア更新に、BitTorrentプロトコルを用いている。これにより、中央の一箇所へのアクセス集中を避けることができる。

もちろん、依然としてファイルのような巨大な情報の塊をやり取りするのは変わっていないのだが、その使われかたは、単純なファイル共有よりは、少し別の目的にも使われるようになってきたのだ。

たとえば、動画をストリーミング再生するのに、BitTorrentプロトコルを使う実装がでてきた。

あるいは、BitTorrentプロトコルを使い、オンラインストレージを、参加者達がお互いにファイルを保存しあう、分散型の実装もでてきた。ファイルは暗号化するので、他人に自分のデータを読まれる心配はない。この実装は、BitTorrent Syncという名前の不自由なソフトウェアで、BitTorrentの原案者の起こした会社のプロプライエタリな製品である。

自由ソフトウェア財団は、BitTorrent Syncに自由なソフトウェアによる実装が存在するべきだと考え、高優先度自由ソフトウェアプロジェクトに指定して、開発者を募っている。

High Priority Free Software Projects — Free Software Foundation — working together for free software

更に良くわからないのは、最近BitTorrent社によって発表された、BitTorrent Chatだ。

Now in Labs: Building Secure, Server-less Messaging With BitTorrent Chat | The Official BitTorrent Blog
BitTorrent Labs - BitTorrent Chat

このソフトウェアは、名前通り、チャットなどの対話機能を提供するようだ。最近のNSAの邪悪な試みがリークされたのを受けてのことだろう。実際にBitTorrentプロトコルを利用しているのか、あるいは単にBitTorrentというブランド名を使っただけなのかは分からない。曰く、監視検閲を防ぐとしているが、不自由ソフトウェアであるので、一切信用してはならない。その実装を検証できない不自由ソフトウェアで、セキュアだとか安心を実現できるわけがないのだ。

もともと分野特化の非中央管理ネットワークが、一般的に使われるようになるにつれ、より汎用的な機能を提供できるように、どんどん改良されていくのは興味深いことだ。最初から汎用性を求めたFreenetやGNUnetは、利用者が増えず、結果として改良速度が遅く、あまり使われていない。BitTorrentは使われている。

似たようなことは、ソフトウェア史で何度も起こっている。例えば、HTMLは当初、Webページを記述するために作られたフォーマットだった。JavaScriptは、Webページにちょっとしたエフェクトを付け加える程度の簡易的なプログラミング言語だった。それが、HTMLは今や、Webページの構造や意味を記述するためのフォーマットとなり、HTMLに従来付随していた表現方法は、CSSといった形で分離され、JavaScriptは本物のプログラムを書くためのプログラミング言語として使われている。

HTMLもJavaScriptも、技術的に最高の設計ではない。HTMLのパースには寛容でハックの塊のような汚いパーサーが必要だし、JavaScriptは元から高速な実行を念頭に設計されていなかったので、全世界から指折りの才能あるプログラマーをかき集めて、とてつもない労力をかけて、相当にパフォーマンスのいいJavaScriptの実装を作り上げている。もし、我々がもっと文法的に厳格な言語や、実行時パフォーマンスのよい言語を設計して使っていれば・・・と思いたくなるが、いまさらどうしようもない。もし、そのような、技術的にはすばらしいフォーマットや言語を当時作ったとしても、広く受け入れられなかっただろう。寛容で文法違反を許すHTMLだからこそ広まったのだし、とりあえず手軽(全然手軽ではないのだが)に書けるJavaScriptだからこそ、広まったのだ。そして改良され、技術的には劣るところもありながらも、力技で、なんとかまともに使えるようになっている。

ソフトウェア史は、そういう技術ばかりだ。BitTorrentも、そのような広く一般に使われるようになったがために、より改良されるという正のスパイラルに、うまくハマった技術なのだ。技術的に優れていても、利用されにくい技術は、発展しづらいのだ。

最後に、もうひとつだけ、そのような利用されやすい設計のために、広く使われるようになった技術を紹介しよう。Bitcoinだ。

Bitcoin

Bitcoin - Wikipedia, the free encyclopedia

Bitcoinとは、非中央管理ネットワークで実装された貨幣である。

貨幣が貨幣であるためには、信頼されなければならない。2013年10月1日現在、日本人は日本円を信頼している。日本中どこに言っても、金銭のやり取りは日本円で行われている。逆に米ドルのような貨幣は、日本では、観光客向けなどのごく一部の場所でしか通用しない。これは、実はかなり珍しいことなのだ。多くの国では、自国民は自国の貨幣をそれほど信用しておらず、米ドルのような他国の貨幣をより信頼したり、国際的な為替の交換率よりも多くの自国貨幣と米ドルを交換したりする。日本では、日本円と米ドルとの交換に、手数料を取るというのに、一部の国では逆に自国貨幣を多く払うという現象まで起きている。これは、自国貨幣に十分な信頼がないがためである。

従来、この貨幣の信用は、金や銀といった偽造困難な貴金属が用いられてきた。貨幣は一定の交換率で、額面の数字の価値に等しい重さの金と交換できる、といった具合だ。そして、国家政府のような貨幣の発行者は、信頼を実行で示すために、いつでも金と交換できるように、大量の金を保有していた。

いろいろあって、今では、貨幣の信頼に、貴金属との交換は使われなくなっている。強力な権力を持つ国家政府という存在そのものが、貨幣の価値を保証するのだ。貨幣は国が責任持って製造し、偽造困難にし、価値を保証する。貨幣の価値は、国家の信頼に依存している。2013年10月1日現在、日本人は日本国を十分に信用しているため、日本全国どこに言っても、金銭のやり取りには日本円を使うことができる。

しかし、残念ながら、貨幣は中央の権威によって管理されている。物理的な現金はまだしも、ネットワーク上で日本円のやり取りは、監視され、検閲される。それが犯罪を防ぐ目的であったとしても、犯罪の定義も、結局は貨幣を管理するのと同じ、国家によって決定されるため、ふさわしくない。

しかし、貨幣はどうやって非中央管理ネットワークで実装すればいいのだろうか。中央で管理する者がいなければ、誰もかもが大金を持っていると主張するだろうし、そんな貨幣に信頼は生まれない。

3年前、Satoshi Nakamotoと名乗る自称日本人が、偽造困難な非中央管理ネットワークで実装された貨幣の設計を公開し、続いて実装を公開した。Bitcoinである。

Bitcoinは、既存の暗号技術、特にハッシュ関数と公開鍵暗号によるデジタル署名により、偽造不可能な金銭のやり取りの積み重ねを作り上げた。Bitcoinを得たり、Bitcoinをやり取りするには、結構な計算力が必要になる。Bitcoinを偽造したり、Bitcoinのやり取りを偽造したりするには、今までにかかった計算力よりさらに高い計算力が必要になる。あるいは、一般的に使われている既存の暗号技術の脆弱性を突くしかない。

Bitcoinは、偽造防止に、計算力を使った。Bitcoinの得たりやり取りしたりするには計算力が必要で、偽造にはそれを上回る計算力が必要となる。したがって、悪意あるものがBitcoinを攻撃したい場合、あるBitcoinの生成とやり取りに費やされたそれまでの計算力より大きな計算力を注ぎ込まなければならない。そのような計算力は、とても膨大なものになる。

計算力の高い奴は正義なのだ。Bitcoinを得るのに計算力が必要なこと、Bitcoinを偽造するのにはさらに計算力が必要なことは、既存の暗号技術に保証されているのだ。

Bitcoinを管理する中央の権威は存在しない。そのため、1 Bitcoinがどの程度の価値を持つかは、人それぞれである。なにしろ、中央銀行は存在せず、従って価値を一定に保つための努力もしようがないのだから。ただし、偽造できず、中央管理できないという貨幣は、それ自体が信用となる。信用さえあれば、貨幣は通用する。信用さえあれば、他の信用ある貨幣である、米ドルや日本円と交換できる。Bitcoinはその信用と期待から、現実の貨幣と交換したいと思う者が大勢いるので、現実の貨幣と交換できる。ただし、その交換レートは人によりまちまちで、不安定なのだが。Bitcoinは利用者が大勢いるので、さらに人をひきつけている。

しかし、Bitcoinは何故流行ったのか。いくら偽造できず中央管理する権威が存在しないからといって、それだけの信用で、今のように大勢の者がBitcoinに関わるようにはならない。実は、Bitcoinの設計には、とても興味深い、社会学的な仕掛けが施されていたのだ。

Bitcoinを得るには、設計上、計算が必要になる。Bitcoinの総量は、2100万(単位はBitcoin)になるように設計されている。Bitcoinは、その設計上、当初は、さほど計算力を必要とせずに、多くのBitcoinを得られるが、Bitcoinが割り当てられるにつれ、残りの未割り当てのBitcoinを得るために必要な計算力が上がっていく。つまり、早く参入して計算すれば、簡単に多くのBitcoinを得られるという、アーリーアダプター優遇の設計になっているのだ。急げ急げ、早くしないと乗り遅れるぞ、の心境だ。

これにより、ゴールドラッシュならぬBitcoinラッシュが発生した。Bitcoinを生成するための計算は、文字通り、「Bitcoinを掘る」と呼ばれ、Bitcoinを得る競争が白熱した。極端な並列化実行を実現できるGPUを使い、また専用に回路を設計したFPGAを使い、Bitcoinを掘るのには、途方もない必要な計算力がつぎ込まれた。そのため、一時期GPUの需要にすら影響を及ぼした。

Bitcoinを得る理由は様々だ。実際に貨幣として使うものもいる。特に、その匿名性や中央管理する権威がいないことから、非合法なブツのやり取りにも使われているようだ。また、自国の貨幣の信用が落ちてきている国でも、Bitcoinは注目され始めている。アメリカ合衆国では、広告を見て得られる一日数十セント相当の価値のBitcoinを糧に生活しているホームレスがいるそうだ。単に数値が上がっていくのを眺めるのが楽しいという人間もいる。新しい面白そうな技術は、たとえ現実的な利益がないにしても、手を出してみる人間もいる。目的は様々だが、Bitcoinは多くの人間の心理を惹きつけ、大勢をネットワークに参加させることに成功した。もちろん設計も公開されていたので、Satoshi Nakamotoの実装によらない、独立した実装も多数出てきた。この事情はBitTorrentとよく似ている。

大勢がネットワークに参加したのだから、Bitcoinには価値が生まれる。現物やサービスとBitcoinのやり取りが行われる。Bitcoinと現実の通貨と交換するところが出てくる。Bitcoinは、十分な利用者を集めるという、非中央管理ネットワークや貨幣の成功にとって、とても重要なことを、人の心理を利用して、うまくやりぬいたのだ。一度、十分な利用者を集めてしまえば、それ自体に価値が生まれるのだ。

まとめ

以上、この記事では、SaaSSを打ち破るための、非中央管理ネットワークで実装された同等品の先例をみてきた。ここで上げた先例は、実際に存在していて、実装されていて、実際に使われている。オマエのカーチャンが使うほど一般的ではないかもしれないにせよ、だ。

我々は、文章などの公開の目的でのWebページや、フォラームやチャット、音声や動画のような巨大なファイルにも対応したファイル共有、ついには貨幣まで、非中央管理ネットワークで実装してきた。いずれも中央管理ネットワークによる実装を完全に置き換えるとまでは言わないものの、SaaSSのような中央管理ネットワーク実装では実現できない利点もある。その利点により、あるいは、将来、既存のSaaSSを打ち破るかもしれない

我々は自由を決して放擲してはならないのだ。自由は人間が等しく持つ天から与えられた権利なのだ。自由のない世界では、人間は監視され、検閲され、迫害され、監禁、拷問され、そして人知れずベイポライズ(消去)されてしまう。

ハッピーハッキング

No comments: