無人島で紙とペンだけでブロックチェーンを体験する方法

特集 もしも無人島にブロックチェーンがあったなら

飯田 諒

ブロックチェーンを紙とペンのみで実現してみよう

前回の記事(「なぜビジネスに分散型合意システム(ブロックチェーン)が必要なのか」)で、ブロックチェーンの必要性が理解できたかと思います。

本記事では、前回の前提に基づいて、無人島で実際にブロックチェーンのようなシステムを紙とペンのみで実現する方法を紹介します。

もちろんこの記事でブロックチェーンを理解するのに必要な概念を全てカバーできているわけではありません。しかし、ブロックチェーンをできるだけやさしく実生活に寄り添いながら説明しているので、初心者にとっては理解を大きく促進するものであると確信しています。

原文を書いたのはOrbs(既存の事業者に対して分散型ビジネスモデルを構築するためのコンサルティングを行うイスラエル企業。複数の巨大ICOプロジェクトのコンサルを務めた。)のCEO Tal Kol氏です。本人からの許可を得て翻訳しています。

何人かと一緒に無人島で生活することを想像してみよう。そんな時に、分散型コンセンサス(またの名を「ブロックチェーン」)の仕組みを理解していれば、とても役立つことだろう。必要なのは無人島でともに生活する何人かの仲間、この記事、ペン、そして何枚かの紙のみだ。

無人島生活で分散型コンセンサスの仕組みがいかに重要かまだわかっていない場合は、前回の記事をまず呼んでみてほしい。分散型コンセンサスでない場合にどんな課題が起きるかがわかるだろう。

登場人物を紹介する。飛行機事故によって無人島に漂着した4人-Hugo、Sawyer、Kate、Jackだ。

軽く概要を説明すると、4人のメンバーはIslandCoinという通貨で経済システムを構築しようとしている。それまでは物々交換で乗り切っていたが、自分が欲しい時に欲しいものを買えないという問題があるため、価値を媒介する通貨が必要であった。4人はそれぞれが100コインを手元にもつ状態でスタートし、通貨を鋳造する貴金属がないため、各メンバーの入出金を紙に記録することで各メンバーの残額を計算できるようにする。誰か1人が全員分の入出金を管理する方法を試したが、それでは管理人の都合のいいように不正が働きかねないので、全員で管理する方法をとることにした。

この記事では考えうる最もシンプルなブロックチェーン技術の実現方法を無人島生活のケースで紹介する。今後の記事ではそれに肉付けする形で「Proof of Work」や「Proof of Stake」などの概念を紹介し、利益や不利益を考察していきたい。とりあえず今回は一番シンプルな説明をしていく。

1日目:そもそもなぜブロックチェーンを導入するか

そもそも、ブロックチェーンを導入する目的はなんなのだろうか?

答えはとてもシンプルで「メンバーが持つコインの残高を不正なく管理する」ということである。

この仕組みの大きなポイントは、1枚の紙で管理するのでなく4人全員が自分の紙を管理し(”分散型”の部分)、後々4枚の紙を照らし合わせて一致することを確認する(”コンセンサス(合意)”の部分)というところである。

下に示したのが、残高を管理する紙だ。

初日、全員に100コインが配られた(もちろん実際のコインではなく書類上だが)。 その下にはそれぞれのサインが書かれている。

この紙は、一番最初にメンバー全員が同意するものである。それぞれが持つ100コインの残高は、事前に全員の同意を持って決定された額だ。この紙を全員がコピーして、それぞれが自分の紙を管理していくことにする。

当然、入出金があればメンバーが持つコインの残高は変化していくので、一日の終わりにこの書類をアップデートするとしよう。

そしてもう一つ重要なことがある。このメンバー内には信頼関係がほとんどないため、それぞれが個別に残高書類のアップデートを行う。書かれている内容に同意できる場合、自分の名前をサインしてもらう。これにより、メンバーの残高に毎日全員が同意することができる。

何人が同意すれば「承認」となるだろうか。合意形成(コンセンサス)をする必要があるので、「過半数」以上が必要だ。今回の話では4人で行うので、3人以上の同意があれば合意形成ができる。

上に添付した画像だと、4人が同意しているので間違いなく合意形成がされたということになる。

ところで、なぜ私たちは全ての紙に対して4人全員の同意は必要ないのだろうか。もし全会一致で合意形成をしなければいけない場合、悪意の有無に関わらず1人でこのプロセスを台無しにすることができるからである。もしSawyerが数日間釣りに出かけてしまったら、その間残された3人は残高の管理をすることができない。つまり全会一致にすると、1人に対する力が偏り過ぎてしまうのだ。

では逆に、そもそも過半数である必要はあるのか?

4人中2人が同意すれば合意形成されたということでいいのではないか?

結論から言うとそれではダメで、なぜなら、書類のバージョン1(HugoとSawyerが同意し成立)とそれにマッチしないバージョン2(KateとJack)が共存してしまう可能性があるからだ。相反するバージョンが2つ認められてしまうというのはあってはならないのだ。だから過半数が同意する1つの書類が必要なのだ。

2日目:1つの取引を紙に記録

2日目。KateはHugoから2コインでトマトを買った。彼女は2コインをHugoに送金する記録を紙に書いた。

自分が行ったアクションの番号、内容を記載し、一番右に自分のサインを記す。

Kateにとって最初のアクションだったので「#1」というラベルをつけて、自分でサインもした。他の人が彼女が送金したかのように偽造することを不可能にするために、直筆のサインが必要である。

2日目が終わる前に、書類を最終化して残高をアップデートしなければいけない。書類をアップデートする担当は4人で日毎に担当を回すことになった。1日目はHugoが担当したので次はSawyerが担当する番だ。2日目の書類はKateの送金を反映した以下のような書類になるはずだ。

この書類が最終化されるためには過半数(3人以上)のサインが必要である。

しかし、上に添付した書類だと未完成である。なぜなら過半数のサインが得られていないからだ。Sawyerは他のメンバーを訪ねてその書類にサインを求める。

この書類の検証プロセスは簡単である。まずサインを求められたメンバーは自分の書類を確認し、前日の残高を確認する。次に送金履歴を確認する。今回の場合はKateの送金履歴のみ。この検証プロセスは簡単で、Kateの直筆サインがあり、前日Kateには残高に余裕があるのでHugoへの送金は承認ということになる。

全員の検証が終了してサインをもらったら、2日目の確定した書類を全員に発表する。全員はそのコピーを取ってから眠りにつく。

4人からの承認を得たので、送金と残高がアップデートされた。

3日目:安心してコインを使える土壌が整って取引が活発に

3日目がやってきた。システムはちゃんと動いていて、みんなが安心してコインを使える土壌が整ったようだ。HugoはSawyerから10コインで薪を買い、SawyerはJackか25コインで錠剤を買い、JackはHugoから2コインでトマトを買った。彼らはそれぞれ自分の送金を自分の書類に付け加えた。

1日が終わろうとしている。今日の書類のアップデート担当はKateだ。

Kateが上に添付した3つの送金情報を間違いなく追加するために、メンバー各自は自分の送金情報をコピーしてKateに渡さなければいけない。

しかし、Jackは送金情報のコピーを取るのが遅くなって、Kateにコピーを手渡す時にはもうすでにKateは書き終えてしまっていた。

SawyerとHugoの送金情報は記載されたが、Jackはコピーが間に合わなかったため、3日目の書類には記載することができなかった。送金が間に合わなかったJackはトマトを手に入れることができない。

これではJackからHugoへの送金が完了せず、Jackはトマトを手に入れることができない。Jackはお腹をすかせたまま寝なければいけない。お腹が空きすぎたJackは、Kateの書類にサインせずに何か食べるものを見つけるためにキャンプ場の外に出かけてしまった。もっとも、KateはJack以外の2人からサインをもらい、それぞれの送金情報と残高は承認されたが。

分散型合意システムであれば、Jackの行方が分からなくても3人のサインで書類が承認される。

→次ページ「4日目:一人がどこかに行ってしまった」へつづく

4日目:一人がどこかに行ってしまった

4日目。Jackがどこに行ってしまったのか、誰も見当がつかない。実は彼は釣りに出かけて、嵐に巻き込まれてキャンプ場に戻れなかったのだ。しかし、今日の書類担当はJackだ、どうすればよいだろうか。

Kateは今日2つの送金を行いたかったので、その送金情報を書類に書いて、コピーを全員に渡した。

夕方になったが、Jackは戻ってこない。残りの3人はあらかじめ「Jackが戻ってこない場合、送金情報と残高のアップデートは次の日に持ち越しにする」と決めていたので、今日の書類アップデートはスキップする。

5日目:悪いアイデアを一人が思いつく

5日目。今日はHugoが書類の担当だ。ここ最近雨が続いているので、HugoはSawyerに頼んで木造の小屋を作ってもらうことにした。Hugoは98コインしか持っていないが、Sawyerはその仕事に200コインを要求した。Hugoは払えるはずがなかったが、ワルいアイディアを思いついた。どうせ自分が書類アップデートの担当だし、送金は書類上で行われるので、コインを持っていなくても、書類に送金情報を書き込んでサインしてしまったらいいではないか。

今日の書類担当はHugoなので、自分の送金情報を偽装してもバレないのではないか、という企み。

今日はこれ以外の送金は発生しなかった。前日に発生したKateによる2つの送金と、前々日にJackが行いたかった送金の情報を加えて、5日目の書類とした。

Hugoの不正送金情報を含んだ書類。Hugoが書類担当なので自分のサインはするが、あと2人以上のサインがないと承認されない。

Hugoの嘘の送金情報が入った書類にまずはHugoがサインして、過半数のサインを得て書類を最終化するために、残る2人にサインを求めた。しかし、KateとSawyerは書類に不正な送金情報が入っていることに気づいた(3日目の最終化された各メンバーの残高を見ればHugoが200コインを持っていないのは明らか)。不正な送金情報を承認するわけにいかないので、その情報を修正するまではサインしないと2人は主張した。Hugoは不正な送金情報を消して2人からサインを得て、書類が承認された。

結局不正送金の情報は削除して書類は承認された。

6日目:行方不明だったJackが戻ってきた、取引は遡れるか?

6日目の朝。Jackがついにキャンプ場に戻ってきた。ひどい雨に巻き込まれてここ数日帰ることができず、4日目と5日目の送金や残高アップデートを逃してしまった。実際に自分が何コイン持っているのかも定かではない。そこで最新の書類(5日目の書類)を見せてもらい、彼がギリギリ逃してしまった3日目の書類も確認した。

Jackが逃した日の分をキャッチアップするのは非常に簡単である。なぜならどの書類も過半数である3人のサインが入っているためその書類の確実性には自信が持てるからだ。さらに、Jackなしに承認された書類の情報に基づいて計算を行えば自分が持つコインの残高も確認でき、今日からは何事もなかったかのようにまた書類のアップデートに参加することがでいる。

無人島でのブロックチェーンのホワイトペーパーも作る

さて、今まで見てきたシステムは上手く稼働している。少し簡素化されすぎている感は否めないが、無人島で過ごす人にとっては十分である。しかし、ホワイトペーパーなしにブロックチェーンが稼働するわけにはいかないので、4人は集まってホワイトペーパーを作成した。

そもそも、なぜこれがブロックチェーンと言えるのだろうか。

まず、毎日アップデートされる書類が「ブロック」である。さらに、ブロックは前日までの取引情報が含まれているため、「チェーン状に繋がれている」と言える。最新の情報が正しいか検証するためには、一番最初のブロックに戻る必要がある(ブロックチェーンでいう「ジェネシスブロック」)。最初から最新までの連続するブロックの取引情報を確認することで、最新の情報が正しいか検証することができる。

では、これがブロックチェーンを実行するための最適解なのだろうか?

そうではない。まだまだ改善の余地がある。例えば、このブロックチェーンは4人で稼働するが、もし参加者が増えたらどうなるだろうか。現在は参加者が誰かわかるし、一応メンバーから許可されないと参加者にはなれない仕組みになっている。それを「誰でも参加できる」ようにするにはどうすればいいだろうか。さらに、取引承認のアルゴリズムを「Proof of Work(PoW)」もしくは「Proof of Stake(PoS)」にするにはどうすればいいだろうか。

この辺りの話は、次回以降にカバーするとしよう。

この記事の著者・インタビューイ

飯田 諒

あたらしい経済編集部。 ブロックチェーンをはじめとするテクノロジーが今後の経済をどう変えるのかを考えています。 インタビューを通して人の想いをメディアで伝えるのが好きです。 英語が得意なので、海外コンテンツの配信や外国人インタビューをします。Twitterにてお気軽にご連絡ください。