Crypto OS
Non-Technical Crypto OS第1段階 · Crypto が生まれた理由

第 3 章 · 記帳する人を信頼できなければ

信頼し合わない人たちが、同じ状態を共同で維持するには?

この章を 3D で体験する →
練習する能力
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 が必要かを判断するとき、覚えておいてください。

モデルを作る

四層を連鎖にします。各取引は、左から右へ進みます。

  1. 身元:誰の発言か
  2. 有効性:ルールに合うか
  3. 順序:どちらが先か
  4. 確定:これで決まり
最初の二層は自分で確認でき、後の二層はネットワーク全体の合意が必要です。Blockchain の難しさは右の二つにあります。

二つ目は尺度です。分散型を名乗るシステムを、まだ誰に信頼しているかで測れます。

段階信頼するもの問題の形
一人を信頼記帳者の品行と能力改ざん、失踪、誤り
組織を信頼免許、監査、規制、司法破産、規制の不全、国際的な回収の困難
集団を信頼結託せず、同時に破られないこと結託、同時の強制、名簿の操作
ルールと検証を信頼コードのルールを自分で検証できることルールの脆弱性、検証していないこと

この尺度には、見落としやすい二つの点があります。

第一に、右端も信頼が不要という意味ではありません。 人の善意への信頼を、自分で確認できるルールへの信頼に移します。信頼は消えず、形を変えます。コースで繰り返し実践を求めるのは、結論を覚えるだけで終わらせないためです。

第二に、右ほど優れているとは限りません。 効率が下がり、費用が上がり、誤りの救済も減ります。バドミントンの会計は右端まで進む必要がありません。皆が信頼する人に記帳を頼むのが、その場面の最適解です。

最後に、何人の悪い参加者を許容できるかのモデルです。大きな違いがあります。

  • 切断や停止だけで、嘘をつかないなら、障害への許容条件は比較的緩くなります。
  • 意図的に嘘をつき、人ごとに違う話をするなら厳しくなります。通常は悪意ある側の割合が三分の一か二分の一未満でなければ、正直な側が最後に同じ記録を見られる保証はありません。具体的な値は設計によります。

この章は後者を扱います。停止に対応できても、裏切りに対応できるとは限りません。 開発上の難しさが大きく違います。

何と呼ぶか

前の現象に名前を付けます。

状態State

共同で維持する記録の、ある時点での全体像です。誰がどれだけ持ち、何が誰に属するかを示します。

十冊は同じ状態を持つべきです。取引は状態を一つの版から次の版へ進めます。

検証Verification

誰かの説明に依存せず、自分で成立を確認することです。

本人の印や残高の確認が該当します。結論は誰を信頼するかと無関係です。伝聞との根本的な違いです。

チェーンの価値の多くがここにあります。権威に聞かず、誰もが自分で実行して確かめられます。

信頼Trust

自分で検証できない部分で、誰かや組織が期待どおりに行動すると考えることです。

検証できたことは信頼が不要で、検証していないことには信頼があります。 信頼不要のシステムを使っているつもりでも、実際にはウェブページ、ダッシュボード、投稿へ信頼を移しただけかもしれません。

コンセンサスConsensus

互いを信頼しない参加者が、順序と確定に合意する仕組みです。

3 番の二つの発言には、探せる真実がありません。正直な参加者全員が、最後に同じ発言を選ぶためのものです。

ビザンチン障害Byzantine Fault

単なる誤りや切断ではなく、意図的な嘘や、人ごとに違う話をする行動です。

三つ目の問題が典型です。対応できる仕組みをビザンチン耐性システムと呼び、パブリックチェーンが該当します。

名前は 1982 年の論文の比喩に由来します。城を囲む軍隊が伝令だけで連絡し、裏切り者の矛盾する命令があるとき、忠実な将軍がどう行動をそろえるかという問題です。

シビル攻撃Sybil Attack

一人が多数の身元を作り、人数や票数に基づくルールを操作することです。

四つ目の問題が該当します。すべての開かれたネットワークの根本的な難題です。自由に参加できることは、何度も参加できることでもあります。

対処には、各身元を、無から複製できないものと結びつける必要があります。第 4 章で計算資源を、その後に預ける資産を学びます。

ファイナリティFinality

取引が、いつから覆されなくなるかという性質です。

設計によっては、後になるほど安全になる確率ですが、リスクが完全にゼロになるわけではありません。別の設計では、特定の回のあとに固定される明確な時点です。

二種類の違いは、チェーンを比較する鍵です。第 6 章で詳しく分解します。

一文にまとめます。

コンセンサスは、管理者なしで順序と確定を決めるルールです。単なるデータベースの技術ではありません。

チェーンを判断するときは、チェーンを除いても実行できるかを最初に問います。できるなら、必要ありません。

実践

実践三人と三枚の紙で、記録の不一致を作る三人、三枚の紙、ペン一本0 元。実際の資産は扱わない

コンピューターは使いません。友人二人と二十分行うと、説明を理解するだけでなく、手元で感じられます。

準備する。 三人が一枚ずつ紙を持ち、同じ初期状態を写します。

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

AI LabAI に記帳者を信頼しない仕組みを設計させ、攻撃するLevel 2 · AI Copilot

二つの手順で進みます。重要なのは後半です。

最初に設計を依頼します。

自由に参加、退出できる記帳方式を設計してください。
参加者は信頼し合わず、誰もが嘘をつき、相手ごとに違う発言をする可能性があります。
全員が信頼しなければならない役割を置いてはいけません。

四つを説明してください。
1. 送金が本人のものだと、どう確認するか
2. 送金の有効性を、どう判断するか
3. 矛盾する二つの送金のうち、どちらを有効にするかを、どのルールで決めるか
4. いつから送金が覆されなくなるか

ブロックチェーン、コンセンサスアルゴリズムという言葉を使わず、仕組み自体で説明してください。

次に一つずつ攻撃します。 提案をそのまま貼り、一回に一つの場面を質問します。

場面一(二重支払い):5 枚しかない人が、ネットワークの両半分へ、それぞれ 5 枚の送金を出します。
どちらも有効な署名があります。どちらが有効になりますか? 誰が、いつまでに決めますか?

場面二(シビル):一人が一万の身元を作って参加します。
どこが機能しなくなりますか? 身元一つを作る費用はいくらですか?

場面三(結託):一部の参加者が結託し、同じ嘘を外に伝えます。
最大で何割まで許容できますか? その割合を超えると何が起きますか?
その割合は、どう計算しましたか?

多くのモデルは、最初に完全そうな案を出し、最初か二つ目の場面で弱点を見せます。よくある弱点は、中心役を隠して導入することです。順序ノード、時刻サービス、信頼する初期ノードなどです。

その役を見つけると、案の本当の信頼先が分かります。

三回の攻撃と回答を記録してください。定義を覚えただけでなく、何を防ぐ仕組みかを理解している証拠として、ステージ成果物の重要なページになります。

AI の回答後、自分で必ず検証すること

  • 二重支払いで、両方が有効な発言から一つを選ぶ基準に答えているか。無効な取引を拒否するとだけ述べていないか
  • 多数のノードや票に頼るなら、身元一つの費用を示しているか。費用のない身元の数は安全性にならない
  • 結託の許容割合は導出したものか、既存の結論か。どの障害モデルの条件か
  • 調整者、順序を決める人、時刻サービス、信頼できる初期ノードなどの中心役を隠していないか
  • ファイナリティを、強まる確率か、ある回以降の固定かで明確にしているか
  • 具体的なしきい値と数値の根拠を説明できるか。できなければ未検証と記す

実例

嘘をモデルにした論文1982 年

城を囲む軍隊が伝令で連絡し、全員で攻撃するか撤退する必要があります。将軍に裏切り者がいると、相手ごとに反対の命令を出します。

論文の貢献は、参加者の意図的な嘘を、厳密に議論できる数学の問題にしたことです。正直な側が合意するために必要な割合の条件も示しました。

それ以前の分散システムは、主に機械の故障を考えました。その後は、機械による欺瞞を別の前提として扱う必要が生まれました。現在のパブリックチェーンの安全性も、この前提に基づきます。

会社に依存するデジタル現金1990 年代複数の国

この時期にデジタル現金の試みが複数ありました。技術的に巧妙で、匿名決済と偽造防止を解決したものもありました。

共通した構造は、発行と清算を担当する中心機関が必要なことです。その機関が二重支払いを防いでいました。

会社が停止するとシステムも消え、残高もゼロになります。検証は解決しても、順序を決める層を会社に任せたという、構造の結果です。

次章を理解する前提です。Bitcoin が解決するのは、これらの案が避けた層です。

ルールが書き換わったとき2016 年

Ethereum で大量の資金を持つコントラクトの脆弱性が使われ、資産が引き出され続けました。激しい議論のあと、クライアントを変更して攻撃前の状態へ戻し、資金を回収しました。

一部は変更を受け入れず、元のルールを動かし続けました。チェーンは二つに分かれ、現在まで続いています。

この章のモデルでは、改ざんされない性質は物理法則ではなく、十分な人が同じルールを動かす事実に基づきます。多くが変更を選べば変わり、反対する人は旧ルールで別の道を進めます。

分散型システムの脆さであり、本質でもあります。第 24 章で、この事件の別の面に戻ります。

変数を一つ変える

もし全員が正直で、時々切断するだけ

必要な条件が大きく緩みます。メッセージの紛失や聞き逃しだけを扱い、相手ごとの嘘を考える必要がありません。

この種類は開発手法が成熟し、速く動きます。インターネット企業の多くのデータベースクラスターが該当します。

Blockchain がデータベースより遅いという比較に、意味がない理由でもあります。 一方は故障、もう一方は嘘を前提にしており、別の問題を扱います。

もし四人だけで、全員が互いを知り、現実の身元を持つ

新しい人が現れれば分かるため、シビル攻撃はほぼ消えます。多数決を使え、速くできます。

一方、四人が結託したり、同じ外部圧力を受けたりすると全体が破られます。誰を部屋に入れるかも、誰かが持つ権限になります。

コンソーシアムチェーンの構造です。企業で適する場合もありますが、互いを知る前提を使って効率を得る選択です。パブリックチェーンは、その前提を置きません。

もし発言の前に、皆の前でろうそくを一本燃やす

不器用に見えても、シビル攻撃に正確に対処します。ろうそくは実際に消費し、帽子二十個から二十本は生まれません。

副作用は三つあります。通常の利用者も費用を負います。多く持つ人ほど影響が強くなり、富と影響力が結びつきます。さらに、借りることもできます。攻撃者は所有せず、一時的に資源を借りるだけでよい場合があります。

次章では、ろうそくを電力に置き換えて、同じ副作用を学びます。

もししばらく待ってから、有効と決めてもよい

四つの変数で、最も直感に反し、重要なものです。

これまでの案は即時判断を求めました。待てば、矛盾する版を一時的に両方残し、後続の記録が増えるにつれて、捨てた版が逆転しにくくなります。

時間と引き換えに確実性を得ます。 0 秒で完全な答えを出すのではなく、誤った答えを維持する費用を増やします。

代償は、有効かどうかが二択から曲線になることです。第 6 章で、その形と、途中まで待てばよい場面を学びます。

持ち帰る問い

十八の問いから三つを選び、この章に当てはめます。

2
なぜブロックチェーンが必要なのか?

この章が直接答える問いです。答えは両刃でもあります。

基準は、全員が受け入れる管理者がいるかです。いれば速く安いデータベースを使います。国境、競合関係、知らない参加者などでいなければ、コンセンサスを考えます。

どのプロジェクトでも最初に試してください。Blockchain と他の業界を組み合わせる案の多くは、この条件を満たしません。すでに全員が受け入れる中心役がいるためです。

5
誰が支払っているか?

コンセンサスは無料ではありません。ろうそく、ノードの電力と通信、待つ時間は、実際の費用です。

誰が支払うかを問います。利用手数料、追加発行、初期投資家の補助金のどれかで、持続性が大きく変わります。第 7 章で計算します。

11
トークン価格がゼロになっても、プロダクトは動くか?

この章では、特に具体的な意味があります。

多くの設計で、維持者は Token で報酬を受け、安全を保つ費用も Token 建てです。価格が大きく下がると攻撃費用も下がりますが、攻撃の利益が同じように下がるとは限りません。

Token がゼロでも動くかは、パブリックチェーンでは財務ではなく安全の問いです。小さなチェーンの攻撃の多くは、ここにたどれます。第 4 章で実例を示します。

章末チェック

要点

ブロックチェーンが解決するのはデータベースの速度ではなく、管理者なしで状態を維持することだ。

この章の実践課題を終えたらチェックしてください進捗をすべて見る

このページの内容