4日目:一人がどこかに行ってしまった
4日目。Jackがどこに行ってしまったのか、誰も見当がつかない。実は彼は釣りに出かけて、嵐に巻き込まれてキャンプ場に戻れなかったのだ。しかし、今日の書類担当はJackだ、どうすればよいだろうか。
Kateは今日2つの送金を行いたかったので、その送金情報を書類に書いて、コピーを全員に渡した。
夕方になったが、Jackは戻ってこない。残りの3人はあらかじめ「Jackが戻ってこない場合、送金情報と残高のアップデートは次の日に持ち越しにする」と決めていたので、今日の書類アップデートはスキップする。
5日目:悪いアイデアを一人が思いつく
5日目。今日はHugoが書類の担当だ。ここ最近雨が続いているので、HugoはSawyerに頼んで木造の小屋を作ってもらうことにした。Hugoは98コインしか持っていないが、Sawyerはその仕事に200コインを要求した。Hugoは払えるはずがなかったが、ワルいアイディアを思いついた。どうせ自分が書類アップデートの担当だし、送金は書類上で行われるので、コインを持っていなくても、書類に送金情報を書き込んでサインしてしまったらいいではないか。
今日はこれ以外の送金は発生しなかった。前日に発生したKateによる2つの送金と、前々日にJackが行いたかった送金の情報を加えて、5日目の書類とした。
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)」にするにはどうすればいいだろうか。
この辺りの話は、次回以降にカバーするとしよう。