第 3 章 · 記帳する人を信頼できなければ
信頼し合わない人たちが、同じ状態を共同で維持するには?
- 練習する能力
- Mental ModelProtocol Literacy
- 実践
- 3 人で紙とペンを使って記帳を模擬する。1 人が密かに帳簿を書き換え、残りの人がどう発見するか確かめる。
- AI Lab
- AI に「記帳係を信頼しなくてよい」仕組みを設計させ、二重支払い、シビル攻撃、共謀で順に攻撃する。
現実の問題
二十人ほどのバドミントンのグループが、毎週集まります。コート代とシャトル代を交代で立て替え、あとから送金します。
最初は王さんがグループのお知らせに会計を記録し、皆が満足していました。三か月後、初めて意見が食い違います。王さんは未払いが 180 と言いますが、自分の送金履歴では 120 に見えます。
誰も嘘をついていません。王さんの記録漏れか、自分が別の送金と混同したのかもしれません。二日議論した末に、双方が譲って 150 としました。
小さな出来事ですが、三つの変数を変えると性質が変わります。
人数を 20 から 200 にする。 記憶では確認できず、記録の数字を信じるしかありません。
金額を数百から数十万にする。 一件少なく記録する利益が、不正の誘因になります。
王さんが知人ではなく、知らない人になる。 自分をだますはずがない、という判断もできません。
全員が認める記帳者がいないとき、共同で記録を維持するにはどうするかという問いが生まれます。
より誠実な人や、よりよいソフトウェアを探すだけの問いではありません。第 2 章で、現実の台帳の信用は免許、監査、規制、司法に支えられると学びました。その制約がない場合も、別の方法があるかを考えます。
思考実験
村を一つの部屋に移します。
十人が一人ずつ帳面を持ち、記帳者も村長もいません。ルールは一つです。送金するときは立って、例えば「3 番に 5 枚送る」と叫びます。全員が聞き、自分の帳面に記録します。
理論上、十冊は同じになるはずです。実際には、問題が続きます。
一つ目:聞き取れない人がいる。 4 番はくしゃみをして、一件を聞き逃しました。三十分後に不一致を発見しても、どれが誤りか説明できません。
定期的に止めて照合し、多数派の記録に直せば、対処できます。
二つ目:なりすます人がいる。 7 番が声を変え、「自分は 3 番で、7 番に 50 枚送る」と叫びます。皆が記録し、戻った 3 番は 50 枚減っていると気づきます。
これも対処できます。本人だけが再現できる印を事前に壁へ掲示し、発言時にも示します。発言は誰でも聞けますが、本人の発言かは、全員がその場で検証できます。
三つ目:部屋の両端で違う発言をする。
3 番には 5 枚しかありません。左側の A、B、C に、A に 5 枚送ると叫びます。同時に仲間が右側の D、E、F に、F に 5 枚送ると叫びます。
どちらも 3 番の本物の印があり、単独では完全に有効です。左の三人の帳面では A のもの、右の三人の帳面では F のものになります。
照合で見つかるのは誤記ではなく、どちらも成立する二つの版です。人数が等しいため、多数決も使えません。
四つ目:人数を偽造できる。
多数決を提案すると、9 番は帽子を変え、一人で二十人を演じられると気づきます。部屋では、新しい別人かを確認できず、帽子が増えたことしか見えません。
多数決は一人一票を前提としますが、一人が一つの身元だけを持つと確認できません。
解決できたのは最初の二つだけです。三つ目と四つ目には、どう対処しますか?
あなたが決める
異なる帳面が三冊あります。どの版を有効とする基準を決めます。
結果を観察する
四つのルールは、同じ問題群に対応しています。信頼し合わない人が共同で記録する問題は、四層に分けられます。
| 層 | 答える問い | 破られたら何が起きるか |
|---|---|---|
| 身元 | 誰の発言か | 誰でも他人になりすませる |
| 有効性 | ルールに従っているか | 無から残高を作れる |
| 順序 | どの順に有効になるか | 同じお金を二回使える |
| 確定 | いつから変更できないか | 受け取ったお金が消える可能性が残る |
最初の二層は検証です。他人の意見を聞かず、一人で行えます。本人の印と残高を自分の帳面で確認すれば、ほかの人と同じ結論になります。
後の二層は異なります。順序と確定には、客観的な答えではなく、共同の合意があります。 3 番の二つの発言に、物理的な優先はありません。部屋で一つを選ばなければなりません。
コースで最も誤解されやすいところなので、立ち止まってください。
信頼し合わない人が同じ記録を持つとき、難しいのは保存ではなく、順序を決めることです。
通常のデータベースは毎秒数万件を書けて、速く信頼できます。ただし、書き手が一つで、嘘をつかないという前提があります。一人で並べるので、順序の問題がありません。
この前提をなくすと、処理量は中心の問題ではなくなります。毎秒百万件を処理するデータベースも、3 番のどちらを選ぶかは分かりません。性能ではなく、立場の問題です。
全員が受け入れる管理者がいるシステムには、この章の仕組みは必要ありません。 データベースを使う方が速く安いものです。プロジェクトになぜ Blockchain が必要かを判断するとき、覚えておいてください。
モデルを作る
四層を連鎖にします。各取引は、左から右へ進みます。
- 身元:誰の発言か
- 有効性:ルールに合うか
- 順序:どちらが先か
- 確定:これで決まり
二つ目は尺度です。分散型を名乗るシステムを、まだ誰に信頼しているかで測れます。
| 段階 | 信頼するもの | 問題の形 |
|---|---|---|
| 一人を信頼 | 記帳者の品行と能力 | 改ざん、失踪、誤り |
| 組織を信頼 | 免許、監査、規制、司法 | 破産、規制の不全、国際的な回収の困難 |
| 集団を信頼 | 結託せず、同時に破られないこと | 結託、同時の強制、名簿の操作 |
| ルールと検証を信頼 | コードのルールを自分で検証できること | ルールの脆弱性、検証していないこと |
この尺度には、見落としやすい二つの点があります。
第一に、右端も信頼が不要という意味ではありません。 人の善意への信頼を、自分で確認できるルールへの信頼に移します。信頼は消えず、形を変えます。コースで繰り返し実践を求めるのは、結論を覚えるだけで終わらせないためです。
第二に、右ほど優れているとは限りません。 効率が下がり、費用が上がり、誤りの救済も減ります。バドミントンの会計は右端まで進む必要がありません。皆が信頼する人に記帳を頼むのが、その場面の最適解です。
最後に、何人の悪い参加者を許容できるかのモデルです。大きな違いがあります。
- 切断や停止だけで、嘘をつかないなら、障害への許容条件は比較的緩くなります。
- 意図的に嘘をつき、人ごとに違う話をするなら厳しくなります。通常は悪意ある側の割合が三分の一か二分の一未満でなければ、正直な側が最後に同じ記録を見られる保証はありません。具体的な値は設計によります。
この章は後者を扱います。停止に対応できても、裏切りに対応できるとは限りません。 開発上の難しさが大きく違います。
何と呼ぶか
前の現象に名前を付けます。
共同で維持する記録の、ある時点での全体像です。誰がどれだけ持ち、何が誰に属するかを示します。
十冊は同じ状態を持つべきです。取引は状態を一つの版から次の版へ進めます。
誰かの説明に依存せず、自分で成立を確認することです。
本人の印や残高の確認が該当します。結論は誰を信頼するかと無関係です。伝聞との根本的な違いです。
チェーンの価値の多くがここにあります。権威に聞かず、誰もが自分で実行して確かめられます。
自分で検証できない部分で、誰かや組織が期待どおりに行動すると考えることです。
検証できたことは信頼が不要で、検証していないことには信頼があります。 信頼不要のシステムを使っているつもりでも、実際にはウェブページ、ダッシュボード、投稿へ信頼を移しただけかもしれません。
互いを信頼しない参加者が、順序と確定に合意する仕組みです。
3 番の二つの発言には、探せる真実がありません。正直な参加者全員が、最後に同じ発言を選ぶためのものです。
単なる誤りや切断ではなく、意図的な嘘や、人ごとに違う話をする行動です。
三つ目の問題が典型です。対応できる仕組みをビザンチン耐性システムと呼び、パブリックチェーンが該当します。
名前は 1982 年の論文の比喩に由来します。城を囲む軍隊が伝令だけで連絡し、裏切り者の矛盾する命令があるとき、忠実な将軍がどう行動をそろえるかという問題です。
一人が多数の身元を作り、人数や票数に基づくルールを操作することです。
四つ目の問題が該当します。すべての開かれたネットワークの根本的な難題です。自由に参加できることは、何度も参加できることでもあります。
対処には、各身元を、無から複製できないものと結びつける必要があります。第 4 章で計算資源を、その後に預ける資産を学びます。
取引が、いつから覆されなくなるかという性質です。
設計によっては、後になるほど安全になる確率ですが、リスクが完全にゼロになるわけではありません。別の設計では、特定の回のあとに固定される明確な時点です。
二種類の違いは、チェーンを比較する鍵です。第 6 章で詳しく分解します。
一文にまとめます。
コンセンサスは、管理者なしで順序と確定を決めるルールです。単なるデータベースの技術ではありません。
チェーンを判断するときは、チェーンを除いても実行できるかを最初に問います。できるなら、必要ありません。
実践
コンピューターは使いません。友人二人と二十分行うと、説明を理解するだけでなく、手元で感じられます。
準備する。 三人が一枚ずつ紙を持ち、同じ初期状態を写します。
A:10
B:10
C:10送金する人が声を出し、他の二人はそれぞれの紙を変更するルールにします。口頭だけで伝え、他の紙は見ません。
通常どおり五回実行する。 A から B に 3、C から A に 5 など、自由に送金します。そのあと三枚を並べます。
おそらく一致します。不一致なら、誰がどの回で間違えたかを探します。何を使って見つけたかを意識してください。その過程も答えの一部です。
不正をする人を一人加える。 C を不正役にし、他の二人には方法を知らせません。ある回のあと、C が自分の紙の数字を 5 増やします。
さらに五回続け、紙を並べます。
A と B は、何を使って C の誤りを見つけたでしょうか? 数量の比較か、履歴の確認でしょうか。最後の数字だけで、C が変更したのであって、A と B が同じ間違いをしたのではないと確定できますか?
最も重要な実験として、B に A と C へ違う発言をさせる。
B は 4 枚だけ持ちます。A に 4 枚送ると言い、次に C に 4 枚送ると言います。両方とも本人の発言で、残高以下です。
A と C の紙が違いますが、どちらも記録を間違えていません。
三人で五分議論し、どちらを有効にする方法を考えます。どの案も、誰が順序を決める資格を持つかに答える必要があります。
最後の案と、その弱点を記録する。
紙を残してください。第 4 章で、2008 年に示された答えを見て、自分たちの案との違いを比較できます。
AI Lab
二つの手順で進みます。重要なのは後半です。
最初に設計を依頼します。
自由に参加、退出できる記帳方式を設計してください。
参加者は信頼し合わず、誰もが嘘をつき、相手ごとに違う発言をする可能性があります。
全員が信頼しなければならない役割を置いてはいけません。
四つを説明してください。
1. 送金が本人のものだと、どう確認するか
2. 送金の有効性を、どう判断するか
3. 矛盾する二つの送金のうち、どちらを有効にするかを、どのルールで決めるか
4. いつから送金が覆されなくなるか
ブロックチェーン、コンセンサスアルゴリズムという言葉を使わず、仕組み自体で説明してください。次に一つずつ攻撃します。 提案をそのまま貼り、一回に一つの場面を質問します。
場面一(二重支払い):5 枚しかない人が、ネットワークの両半分へ、それぞれ 5 枚の送金を出します。
どちらも有効な署名があります。どちらが有効になりますか? 誰が、いつまでに決めますか?
場面二(シビル):一人が一万の身元を作って参加します。
どこが機能しなくなりますか? 身元一つを作る費用はいくらですか?
場面三(結託):一部の参加者が結託し、同じ嘘を外に伝えます。
最大で何割まで許容できますか? その割合を超えると何が起きますか?
その割合は、どう計算しましたか?多くのモデルは、最初に完全そうな案を出し、最初か二つ目の場面で弱点を見せます。よくある弱点は、中心役を隠して導入することです。順序ノード、時刻サービス、信頼する初期ノードなどです。
その役を見つけると、案の本当の信頼先が分かります。
三回の攻撃と回答を記録してください。定義を覚えただけでなく、何を防ぐ仕組みかを理解している証拠として、ステージ成果物の重要なページになります。
AI の回答後、自分で必ず検証すること
- 二重支払いで、両方が有効な発言から一つを選ぶ基準に答えているか。無効な取引を拒否するとだけ述べていないか
- 多数のノードや票に頼るなら、身元一つの費用を示しているか。費用のない身元の数は安全性にならない
- 結託の許容割合は導出したものか、既存の結論か。どの障害モデルの条件か
- 調整者、順序を決める人、時刻サービス、信頼できる初期ノードなどの中心役を隠していないか
- ファイナリティを、強まる確率か、ある回以降の固定かで明確にしているか
- 具体的なしきい値と数値の根拠を説明できるか。できなければ未検証と記す
実例
城を囲む軍隊が伝令で連絡し、全員で攻撃するか撤退する必要があります。将軍に裏切り者がいると、相手ごとに反対の命令を出します。
論文の貢献は、参加者の意図的な嘘を、厳密に議論できる数学の問題にしたことです。正直な側が合意するために必要な割合の条件も示しました。
それ以前の分散システムは、主に機械の故障を考えました。その後は、機械による欺瞞を別の前提として扱う必要が生まれました。現在のパブリックチェーンの安全性も、この前提に基づきます。
この時期にデジタル現金の試みが複数ありました。技術的に巧妙で、匿名決済と偽造防止を解決したものもありました。
共通した構造は、発行と清算を担当する中心機関が必要なことです。その機関が二重支払いを防いでいました。
会社が停止するとシステムも消え、残高もゼロになります。検証は解決しても、順序を決める層を会社に任せたという、構造の結果です。
次章を理解する前提です。Bitcoin が解決するのは、これらの案が避けた層です。
Ethereum で大量の資金を持つコントラクトの脆弱性が使われ、資産が引き出され続けました。激しい議論のあと、クライアントを変更して攻撃前の状態へ戻し、資金を回収しました。
一部は変更を受け入れず、元のルールを動かし続けました。チェーンは二つに分かれ、現在まで続いています。
この章のモデルでは、改ざんされない性質は物理法則ではなく、十分な人が同じルールを動かす事実に基づきます。多くが変更を選べば変わり、反対する人は旧ルールで別の道を進めます。
分散型システムの脆さであり、本質でもあります。第 24 章で、この事件の別の面に戻ります。
変数を一つ変える
必要な条件が大きく緩みます。メッセージの紛失や聞き逃しだけを扱い、相手ごとの嘘を考える必要がありません。
この種類は開発手法が成熟し、速く動きます。インターネット企業の多くのデータベースクラスターが該当します。
Blockchain がデータベースより遅いという比較に、意味がない理由でもあります。 一方は故障、もう一方は嘘を前提にしており、別の問題を扱います。
新しい人が現れれば分かるため、シビル攻撃はほぼ消えます。多数決を使え、速くできます。
一方、四人が結託したり、同じ外部圧力を受けたりすると全体が破られます。誰を部屋に入れるかも、誰かが持つ権限になります。
コンソーシアムチェーンの構造です。企業で適する場合もありますが、互いを知る前提を使って効率を得る選択です。パブリックチェーンは、その前提を置きません。
不器用に見えても、シビル攻撃に正確に対処します。ろうそくは実際に消費し、帽子二十個から二十本は生まれません。
副作用は三つあります。通常の利用者も費用を負います。多く持つ人ほど影響が強くなり、富と影響力が結びつきます。さらに、借りることもできます。攻撃者は所有せず、一時的に資源を借りるだけでよい場合があります。
次章では、ろうそくを電力に置き換えて、同じ副作用を学びます。
四つの変数で、最も直感に反し、重要なものです。
これまでの案は即時判断を求めました。待てば、矛盾する版を一時的に両方残し、後続の記録が増えるにつれて、捨てた版が逆転しにくくなります。
時間と引き換えに確実性を得ます。 0 秒で完全な答えを出すのではなく、誤った答えを維持する費用を増やします。
代償は、有効かどうかが二択から曲線になることです。第 6 章で、その形と、途中まで待てばよい場面を学びます。
持ち帰る問い
十八の問いから三つを選び、この章に当てはめます。
この章が直接答える問いです。答えは両刃でもあります。
基準は、全員が受け入れる管理者がいるかです。いれば速く安いデータベースを使います。国境、競合関係、知らない参加者などでいなければ、コンセンサスを考えます。
どのプロジェクトでも最初に試してください。Blockchain と他の業界を組み合わせる案の多くは、この条件を満たしません。すでに全員が受け入れる中心役がいるためです。
コンセンサスは無料ではありません。ろうそく、ノードの電力と通信、待つ時間は、実際の費用です。
誰が支払うかを問います。利用手数料、追加発行、初期投資家の補助金のどれかで、持続性が大きく変わります。第 7 章で計算します。
この章では、特に具体的な意味があります。
多くの設計で、維持者は Token で報酬を受け、安全を保つ費用も Token 建てです。価格が大きく下がると攻撃費用も下がりますが、攻撃の利益が同じように下がるとは限りません。
Token がゼロでも動くかは、パブリックチェーンでは財務ではなく安全の問いです。小さなチェーンの攻撃の多くは、ここにたどれます。第 4 章で実例を示します。
章末チェック
前提が違います。通常のデータベースは、嘘をつかない一人の書き手を前提とするため速く、順序の問題がありません。
Blockchain は、信頼し合わず、嘘もつく参加者が、順序にどう合意するかを扱います。客観的な答えがなく、共同で認める必要があるため、速いデータベースでも答えられません。
重要な帰結があります。全員が受け入れる管理者がいる場面では、チェーンを使わないでください。
独力で確認できるのが検証、他人の説明を受け入れるしかないのが信頼です。
署名、残高、ルールの遵守は自分で検証でき、信頼する相手に左右されません。
ただし、検証できることと、検証したことは違います。ページ、ダッシュボード、投稿を見るだけでは、信頼にとどまります。各章の実践は、その境界を検証の側へ動かすためにあります。
別々の人だと確認するには、身元を発行し判定する権威が必要です。すると第 2 章に戻り、全員が信頼する相手が生まれ、参加を決める権限も持ちます。
開かれたネットワークでは別の方法を使います。身元の真偽ではなく、各身元を、無から複製できないものに結びつけます。使った計算資源、預けた資産、消費した資源などです。
一万の身元は作れても、一万分の実際の費用は簡単に作れません。
確率型では、後続の記録が増えるほど覆る確率が下がりますが、厳密にはゼロになりません。
確定型では、ある回の終了後に明確に固定され、安全の前提が破られない限り戻りません。
同じ確認済みでも、チェーンごとに意味が異なります。待つ時間も異なります。第 6 章で短く待てる場面を、第 8 章で設計の違いを学びます。
唯一の正解はありませんが、三つを確認します。
第一に、全員が認める記帳者がいるか? いれば、すでに解決しており、変える必要はありません。
第二に、いなければ、不信が理由か、照合が面倒なだけか? 後者なら共有の表計算でよく、コンセンサスではありません。
第三に、金額と人数はいくつか? 実際の費用がかかります。数百のコート代に複雑なシステムを入れるのは、過剰な設計です。
チェーンが不要と説明する能力は、必要と説明する能力と同じくらい重要です。 第 25 章で、三十分の手順にまとめます。
要点
ブロックチェーンが解決するのはデータベースの速度ではなく、管理者なしで状態を維持することだ。