もしもあなたが無人島に取り残されてしまったとして、分散型の合意を行う方法を知っていたら。

別の言葉で言うと、非常にシンプルなブロックチェーンを手作業で行うとすれば。

とても役に立つことが証明されるでしょう。

あなたに必要なのは数人の生き残った仲間、この記事、そしてペンと紙切れ数枚です。

このスキルがサバイバルに役立つか疑問に思う場合は、私が前回書いた「ブロックチェーンが島での生活を大きく改善する」という記事をぜひ読んでください。


さて、当初のお話に戻ってそのプロセスを勇敢な主人公たち、たった今、南太平洋のどこかの無人島に行きついた、ヒューゴ、ソーヤー、ケイト、ジャックの4人のケースを見てみましょう。

下記は短い要約です。

彼らが IslandCoin という革命的に新しい通貨を発行し、島の無能な物々交換経済を終わりにしようとしています。

彼らは各アイテムが100コインから始まれば公平だと同意しました。

実物のコインを作る金属がないため、数枚の紙からこの方式をなんとかしなければなりません。

信用問題の関係で、この中の一人がバランスを管理するということに同意出来ていません。

彼らにある選択肢は、ただ一つ、一緒にバランスを管理することだけです。

この島のケースには、おそらく一番シンプルな形のブロックチェーンを最初に実行します。

今後の記事で他の実施方法を試し、プルーフ・オブ・ワークやプルーフ・オブ・ステークといったコンセプトと結びつけても良いでしょう。

そうすれば、きっとそれぞれの利点と欠点を見ることもできます。

しかし今は、一番シンプルな形でやってみましょう。


私たちが何をしようとしているかって?

実際には非常に簡単なことです。

やろうとしていることはただ、紙の上でシンプルなバランス表を管理することです。

この表で、それぞれの主人公たちがどれくらいコインを持っているか見ることができます。

真実を握っている1枚の紙というものはないので、その秘訣は全てを公平にして彼らがそれぞれ自分のバージョンを管理するということになります。

これが分散型となるところです。

そして自然と、4枚の紙が次第に同じ内容になることを期待しています。

これが同意部分です。

さて、では紙にはどのようなことが書かれているでしょうか?

1日目 ヒューゴは100コイン、ソーヤーは100コイン、ケイトは100コイン、ジャックは100コイン持っている。 ヒューゴのサイン ソーヤーのサイン ケイトのサイン ジャックのサイン

この紙が最初の同意内容です。

だから1日目と書かれています。

このバランスはどこから来たかって?

事前にそれぞれが100コインから始めれば公平だと同意したからです。

そして、生存者の一人がこの紙を書く必要があります。

誰でもいいのですが、とりあえずヒューゴとしましょう。

彼がこの紙を発行し、全員がそのコピーを必ず持つこととします。(そうそう、この島には素晴らしいコピー機があるんです、言うのを忘れてました。)

コインバランスは変わるはずなので、一日の最後に必ずアップデートした紙を作ります。

それを発行するのは必ずしもヒューゴではないかもしれません。

全てのことができる限り公平になるように保っていきたいと思います。

もう一つ大事なことは、グループの相互信頼関係が成り立っていないため、それぞれがステータスの更新を確認することにあります。

その簡単な方法は、生存者一人一人がその紙にサインすることです。ただし、その内容に同意すれば、です。

では何人がサインすれば承認されたと考えて良いのでしょうか?

同意を得なければならないので、多数派ということになります。

4人いるので、多数派は少なくとも3人です。

上記の紙は4人全員にサインされたので、確実に最終形です。

なぜ必ず4人全員のサインを求めないのか?

そうすると、一人の人がこのプロセス全てを危機にさらすことができてしまうからです。

もしソーヤーが釣りに数日出かけてしまったとしたら、このグループでは彼が戻るまでバランスをアップデートできません。

これでは一人の人に大きな権力が与えられてしまいます。

ではなぜ多数決が必要なのか?

4人中2人で十分なのでは?

しかし、4人中2人だとすると、2人(例えばヒューゴとソーヤー)が1つのバージョンにサインし、他の2人(ケイトとジャック)が内容の違う別のバージョンにサインするということができてしまうからです。

2つの違うバージョンが最終として認められるわけにはいかないのです。


2日目の朝、ケイトはトマトを買いたいと思いました。

ヒューゴはトマトを1個2コインで売っています。

ケイトはヒューゴに2コイン送りたいと思います。

ケイトは新しい紙を取り、それを書きます。

ケイトのアクション1: 2コインをヒューゴに送る ケイトのサイン

これがケイトの最初のアクションなので、そのように書きます。

さらに、ケイトがこの紙にサインします。

他の人が誰も彼女のアカウントの送金リクエストを偽造しないように、彼女のサインが必要になります。

2日目の終わりが近付いており、バランスのアップデートを発行したいと思っています。

ヒューゴが1日目の紙を発行し、全員のサインを集めました。

順番にやることにした方が納得できるでしょう。

というわけで、彼らは簡単に順番を決めました。

ヒューゴ、ソーヤー、ケイト、ジャックの順です。

つまり、2日目の紙を発行するのはソーヤーの責任です。

彼が発行した紙にはケイトの送金が反映されています。

2日目 ケイトのアクション1: 2コインをヒューゴに送る ケイトのサイン ヒューゴは102コイン、ソーヤーは100コイン、ケイトは98コイン、ジャックは100コイン持っている。 ソーヤーのサイン

ソーヤーが書いたこの紙はソーヤーしかサインしていないため、まだ決定とされていません。

もっとサインを集めなければなりません。

ソーヤーはそれぞれの仲間を周り、確認してサインをしてください、と聞かなければなりません。

この紙の確認はとても簡単です。

まず、確認者は自分が持っている紙の中から、昨日(今回の場合は1日目)のバランスが書いてあるステータスペーパーを探します。

そして、確認者は新しい送金リストを確認します。

今回はケイトの1件のみです。

この送金の確認は簡単で、確かにケイトによってサインされ、ケイトはヒューゴに送金する額に足りるコインを持っています。

島の住人がその確認プロセスを終え、紙にサインすれば、ソーヤーは全員に発行できる2日目最終版の紙を手に入れます。

全員がコピーを持ち、幸せに満足して眠りにつくことができるでしょう。

2日目
ケイトのアクション1: 2コインをヒューゴに送る ケイトのサイン
ヒューゴは102コイン、ソーヤーは100コイン、ケイトは98コイン、ジャックは100コイン持っている。
ソーヤーのサイン ヒューゴのサイン ケイトのサイン ジャックのサイン

さて、3日目がやってきました。

システムは上手くいっていて、全員自分のコインを使うことにワクワクしています。

ヒューゴはソーヤーから薪を10コインで買いたいと思っています。

ソーヤーはジャックから25コインで薬を少々買いたいと思っており、ジャックはお腹が空いてトマトが欲しいので、ヒューゴに2コイン払って買いたいと思っています。

彼らはそれぞれ送金の詳細を書いた紙を発行しました。

ヒューゴのアクション1: 10コインをソーヤーに送る ヒューゴのサイン
ソーヤーのアクション1: 25コインをジャックに送る ソーヤーのサイン
ジャックのアクション1: 2コインをヒューゴに送る ジャックのサイン

夕方が近付き、今日のバランスシート発行係はケイトです。

ケイトが確実にこれらの送金履歴を記載するように、彼らはそれぞれ彼女にこの送金リクエストのコピーを渡さなければなりません。

全員にコピーを配るのは実は理にかなっていて、今日の当番は誰だったかということをわざわざ覚えなくて良いのです。

ジャックが送金リクエストのコピーをケイトに渡すのをもたもたしていたら、ケイトに持っていった時点ですでに彼女はバランスシートを書き終えてしまっていました。

3日目
ソーヤーのアクション1: 25コインをジャックに送る ソーヤーのサイン
ヒューゴのアクション1: 10コインをソーヤーに送る ヒューゴのサイン
ヒューゴは92コイン、ソーヤーは85コイン、ケイトは98コイン、ジャックは125コイン持っている。
ケイトのサイン

ジャックは自分の送金リクエストが載っていないことにショックを受けました。

つまり、ヒューゴはジャックからトマトの代金を受け取れないので、ジャックに夕食のトマトを渡さないということになります。

ジャックは今夜お腹を空かせたまま寝ることになります。

彼は怒って外へ飛び出し、ケイトの発行した紙にサインしないまま、何か別の食べ物を探しに行ってしまいました。

しかし、ケイトは幸運にも他の人たちから十分な数のサインをもらえました。

3日目
ソーヤーのアクション1: 25コインをジャックに送る ソーヤーのサイン
ヒューゴのアクション1: 10コインをソーヤーに送る ヒューゴのサイン
ヒューゴは92コイン、ソーヤーは85コイン、ケイトは98コイン、ジャックは125コイン持っている。
ケイトのサイン ソーヤーのサイン ヒューゴのサイン

ケイトは紙に3人分のサインをもらえ、昨日のバランスと送金結果は一致します。

多数派となったので、このステータスシートは最終版として決定しました。


4日目ですが、ジャックがどこへ行ったのか、誰も知りません。

彼は昨夜魚釣りに出かけ、嵐に巻き込まれてキャンプに戻ってきませんでした。

今日のバランスシートを発行するのはジャックの番なので、もしかしたら問題になるかもしれません。

ケイトは今日2つの送金をしたいと思っています。

それを紙に書き、全員にコピーを渡しました。

ケイトのアクション2: 10コインをソーヤーに送る ケイトのサイン
ケイトのアクション3: 2コインをヒューゴに送る ケイトのサイン

夕方になりましたがジャックはまだ戻ってきません。彼らは以前、今日の当番はジャックだと同意していますが、見つからないので、今日のアップデートは飛ばされました。


5日目、今日の発行責任者はヒューゴです。

今日まで数日雨が降っており、ヒューゴは眠るのに暖かい場所が欲しいと思っています。

ソーヤーに木の小屋を建ててくれないかと頼みます。

ソーヤーはその仕事に対して200コインを要求します。

しかし、ヒューゴは98コインしか持っていないので、少々問題です。

ここでヒューゴは狂ったアイディアを思いつきます。

今日バランスシートを発行するのは自分なのだから、ソーヤーに送金をでっちあげてしまえばいいのでは?

ヒューゴのアクション2: 200コインをソーヤーに送る ヒューゴのサイン

今日、他の送金はありませんでした。

しかし、昨日のケイトの送金と、その前日にジャックが失敗した送金リクエストもあります。

自分のでっち上げも含め、それらを全部書き足しました。

5日目(4日目はスキップ)
ケイトのアクション2: 10コインをソーヤーに送る ケイトのサイン
ケイトのアクション3: 2コインをヒューゴに送る ケイトのサイン
ヒューゴのアクション2: 200コインをソーヤーに送る ヒューゴのサイン
ジャックのアクション1: 2コインをヒューゴに送る ジャックのサイン
ヒューゴは0コイン、ソーヤーは295コイン、ケイトは86コイン、ジャックは123コイン持っている。
ヒューゴのサイン

ヒューゴは自分の送金が理にかなっていないのをわかっていながらも、このアップデートにサインしました。

これを最終版とするにはあと2人のサインが必要です。

ソーヤーとケイトに持っていくと、彼らは前回の最終版(3日目)にヒューゴが92コインしか持っていないことに気付きます。

どうやって200コインもソーヤーに送るというのか?

この間違いが修正されるまでサインはしないと2人に拒否され、彼はしぶしぶ正しく新しいバランスシートを発行しました。

そして、下記の内容でサインされました。

5日目(4日目はスキップ)
ケイトのアクション2: 10コインをソーヤーに送る ケイトのサイン
ケイトのアクション3: 2コインをヒューゴに送る ケイトのサイン
ジャックのアクション1: 2コインをヒューゴに送る ジャックのサイン
ヒューゴは96コイン、ソーヤーは95コイン、ケイトは86コイン、ジャックは123コイン持っている。
ヒューゴのサイン ケイトのサイン ソーヤーのサイン

上記のアップデートは3人のサインが載ったため、最終版となりました。


6日目の朝です。

ジャックがようやくキャンプに戻ってきました。

彼は嵐やその他色々のことで大変な数日間を過ごしたようです。

2日間、彼は話し合いに参加しておらず、新しい送金履歴とバランスシートのアップデートを見ていませんでした。

彼は今、自分が一体コインをどれだけ持っているか定かではありません。

生存者仲間を一人探し、アップデートの最終版を要求しました。

ジャックは5日目の最終アップデートと、ケイトが3日目に発行し、承認されたアップデートを受け取りました。

ジャックが他の人たちに追いつくのは簡単です。

少なくとも3人にサインされたバランスアップデートを見て、比較的安心だと確認しました。

また、自分が持っている最終版(2日目)に基づき、自分で計算して確認することもできます。

今日からジャックは何事もなかったのように、また送金に参加することができます。


システムはなかなかうまくいっているように見えます。

だいぶシンプルな形ではありますが、この島民たちが必要なものとしては十分です。

しかし、ホワイトペーパーがなければブロックチェーンは機能しません!

彼らはこの達成を祝して、この素晴らしい一枚を発行しました。

IslandCoin ホワイトペーパー

ヒューゴ、ソーヤー、ケイト、ジャックによる

  1. 動機

ブロックチェーンは私たちの周りにある世界を変え、公平に分散化した形で価値を再分配します。島の物々交換経済は発展を妨げています。私たちは IslandCoin という新しい暗号通貨を導入することで今までの経済を壊したいと思っています。

  1. 同意

IslandCoin の同意アルゴリズムは4人のメンバー(H, S, K, J)の組合に基づきます。リーダーベースの認可型アルゴリズムで、ネットワーク全体の1/3のビザンチン行動 [1] に耐えうる方式です。ブロックを承認するためには50%以上の投票多数を要求します。メンバー全員が平等に投票権利を持っています。

  1. 送金とブロックの詳細

送金フォーマット

[送信者アドレス、ナンス、受取人アドレス、額、サイン]

ブロックフォーマット

[ブロックナンバー、送金履歴 1~N、バランス 1~4、サイン 1~4]

開始ブロック

[ 1, [ ], [100, 100, 100, 100], [H, S, K, J] ]

  1. 参照

[1] L.ランポート、R.E.ショスタック、M.C.ピーズ著 「ビザンチン将軍問題」より ACM, 4(3): 382-401, 1982


これがなぜブロックチェーンと考えられるか?毎日発行される紙がブロックを表します。

各ブロックはナンバリングされ、一つ前のものを指し示します。

ブロックがチェーン状に繋がっていくのです。

現在のバランス状況を確認するには、全員がチェーンの最初(1日目、ブロックの始まり)から見ていかなければなりません。

そして、一つ一つ継承されていることを確認します。

バランスシートはどんどん増加していきます。

これが理想的なブロックチェーンの実施か?

と言われればそうではないでしょう。

もっと改善する方法が色々とあります。

この例では4人しか住民をサポートしていません。

もし、もう一人この島に遭難してきたら?

このプロトコルは果たして彼らを受け入れることができるのか?

また、このプロトコルは現在承認制だけれども、パーミッションレスにするにはどうしたら良いのか?

プルーフ・オブ・ワークやプルーフ・オブ・ステークを適用させたいと思ったら?

これらのアイディアは、このシリーズ次回以降の記事でまた試してみましょう。

Source : How to Run a Blockchain on a Deserted Island with Pen and Paper

※ 原著者に翻訳及び転載の許諾を得ています。