転載元: 古いヤッピー
米国大統領候補のミット・ロムニーは、企業は個人で構成されているということを私たちに思い出させてくれます。あなたが彼の意見に同意するかどうかは別として、その言葉には多くの真実が含まれています。結局のところ、なぜ特定のルールの下で一緒に働く人々の集団ではなく、会社と呼ばれるのでしょうか?企業が財産を所有する場合、法的契約には、その財産は取締役会の管理下にのみ存在できると記載されています。企業が何かを行う場合、それは取締役会がそれを行うべきであることに同意したからです。企業が従業員を雇用するということは、特に支払いが関係する場合には、その従業員が特定の一連のルールに従って企業の顧客にサービスを提供することに同意することを意味します。企業が有限責任を負うということは、特定の人々に行動するための追加の特権が与えられ、政府による法的訴追の恐怖が軽減されることを意味します。人々のグループは、単独で行動する平均的な人よりも多くの権利を持っていますが、最終的には個人です。いずれにせよ、最後まで人と契約に過ぎません。
しかし、ここで非常に興味深い疑問が生じます: 私たちは本当に人を必要としているのでしょうか?一方では、答えはイエスです。特異点後の一部の未来の機械は単独で生き残ることができるでしょうが、予見可能な将来は人間の行動と物理世界との相互作用が必要となります。しかしその一方で、過去 200 年間にわたって、この質問に対する答えはますます「ノー」になることが増えてきました。産業革命により、私たちは人間の労働を初めて大規模に機械に置き換えることができ、現在では自動車などの複雑な製品を自分で生産できる高度なデジタルファクトリーとロボットアームが存在します。しかし、それは単に基礎部分の自動化にすぎません。通常の肉体労働の必要性を排除し、会社の経営はそのままに少数の専門家をロボットのメンテナンスに起用します。本当の問題は、この問題に別の方向からアプローチできないかということです。特定の特殊なタスクを実行するには依然として人間が必要であるとしても、管理を方程式から取り除くことはできるでしょうか?
ほとんどの企業には、何らかのミッション ステートメントがあり、通常は株主に利益をもたらすことが目的ですが、時には製品に関連した倫理的義務や、少なくとも理論上はコミュニティの参加を支援するなどのその他の目標が含まれることもあります。現在、その使命宣言は、取締役会、そして最終的には株主によって解釈される場合にのみ存在します。しかし、現代の情報技術の力を利用して、ミッションステートメントをコードにエンコードできたらどうなるでしょうか?つまり、人間によるトップダウンの指示なしに、収益を生み出し、特定の機能を実行するために人々に支払いをし、実行するハードウェアを自分自身で見つける不可侵の契約を作成するということですか?
『Let's Talk Bitcoin』のダニエル・ラーミエ氏が自身の概念の探究の中で指摘しているように、ある意味ではビットコイン自体がそのようなものの初期のプロトタイプと考えることができます。ビットコインには 2,100 万株があり、ビットコインの株主が所有しています。同社には従業員がおり、約 10 分ごとにランダムな従業員に 25 ビットコインを支払う契約を結んでいます。同社には独自のマーケティング部門もあり、そのスタッフのほとんどは株主自身が担当している。しかし、それは非常に限定的でもあり、世界についてほとんど何も知らず、困難以外の機能の側面を変更することはできず、それ自体には実際には何もなく、ただ存在し、世のために残されています。世界がそれを認識するように。問題は、もっと良くできるかどうかということです。
計算する
最初の課題は明白です。そのような企業は実際にどのように意思決定を行うのでしょうか?予測可能な環境があれば、指定された入力を受け取り、実行するアクションを計算するコードを書くのは簡単です。しかし、誰がコードを実行するのでしょうか?コードが特定のマシン上のコンピューター プログラムとしてのみ存在する場合、そのマシンの所有者がデバイス全体をシャットダウンしたり、すべての資金を自分に送金するためにコードを変更したりすることさえできないのはなぜでしょうか?この質問に対する有効な答えは 1 つだけです、それは分散コンピューティングです。
ただし、ここで求めている分散コンピューティングは、SETI@home や Folding@home などのプロジェクトと同じではありません。これらの場合でも、分散ノードからデータを収集し、リクエストを送信する中央サーバーが存在します。代わりに、ビットコインで見られるような種類の分散計算、つまり分散型の自己検証型計算のための一連のルールが必要です。ビットコインでは、これは単純な多数決で行われます。多数決のネットワークパワーでブロックチェーンの計算に貢献しない場合、ブロックは破棄され、ブロック報酬は受け取れません。理論的には、このメカニズムを破るのに十分な計算能力を持つ攻撃者はいないため、唯一実行可能な戦略は、「流れに身を任せ」、ネットワークをサポートして自分のブロック報酬を獲得するために正直に行動することです。
では、このメカニズムを分散コンピューティングに単純に適用することはできるのでしょうか?つまり、ネットワーク内のすべてのコンピュータにプログラムを評価するよう単純に依頼し、その答えが多数決と一致したコンピュータのみに報酬を与えることができるでしょうか?残念ながら、答えはノーです。ビットコインは単純であるため、ビットコインは特殊なケースです。ビットコインは、それ自体の財産や個人データを持たない単なる通貨です。一方、仮想企業は、ビットコイン ウォレットに秘密キーを保存する必要がある場合があります。このデータは、誰も完全に利用できないようにする必要があり、ビットコイン取引のように誰でも利用できるものでもありません。ただし、当然のことながら、秘密キーは引き続き使用できる必要があります。したがって、分散型の方法で計算でき、ビットコイン アドレスも生成できるトランザクション署名システムが必要です。幸いなことに、ビットコインを使用すると、まさにそれが可能になります。
すぐに思い浮かぶ最初の解決策は、マルチシグネチャ アドレスです。 1,000 台のコンピューターがあるとすると、それらのコンピューターが企業をサポートし、各企業に秘密キーを作成させ、企業間で 501/1000 のマルチ署名アドレスを生成する可能性があります。これらの資金を使用するには、任意の 501 ノードからの署名を使用してトランザクションを構築し、それをブロックチェーンにブロードキャストするだけです。ここでの問題は明らかです。トランザクション量が大きすぎるということです。各署名には約 70 バイトが含まれているため、そのうちの 501 は 35 KB のトランザクションになりますが、ビットコインはデフォルトで 10,000 バイトを超えるスクリプトを含むトランザクションを拒否するため、これをネットワークで受け入れるのは非常に困難です。企業が非財務目的で個人データを保存したい場合、複数署名スクリプトは役に立ちません。
マルチ署名アドレスが機能するのは、それらを評価するビットコイン ネットワークがあり、評価が成功したかどうかに基づいてトランザクションがブロックチェーンに入れられるためです。プライベート データの場合、同様のソリューションでは基本的に、データを保存し、リクエストに 1000 件中 501 件の署名がある場合にのみ、必要に応じてデータを送信するための分散権限が必要になります。最初の場所に戻ります。
しかし、別の解決策は依然として有望であり、暗号学者によって付けられた一般名は「安全なマルチパーティ計算」です。 Secure Multiparty Computation では、プログラムへの入力 (より正確には、Secure Multiparty Computation は「if」ステートメントと条件ループを処理できないため、シミュレートされた「回路」への入力) が、シャミールの秘密共有と呼ばれるアルゴリズムを使用して分割されます。各参加者に情報が与えられます。 Shamir の秘密分散を使用すると、任意のデータを N 個の部分に分割し、そのうちの任意の K (ただし K-1 は不可) で元のデータを復元できます。K と N が何であるかは、アルゴリズムを実行するときに選択します。 2/3、5/10、501/1000 はすべて可能です。データの断片は分散型で評価できるため、計算の最後には誰もが計算結果の断片を得ることができますが、計算中は何が起こっているのかを少しでも垣間見ることができません。
最後に、断片を組み合わせて結果を表示します。アルゴリズムの実行時間は O(n3) です。これは、評価計算に必要な計算ステップ数が参加者数の 3 乗にほぼ比例することを意味します。10 ノードでは 1000 計算ステップ、1000 ノードでは 1億歩。私自身のラップトップでは、単純な C++ 10 億ステップ ループに約 20 秒かかりますが、サーバーでは数分の 1 秒で実行できるため、現時点では 1000 ノードが計算上の実用性のほぼ限界に達しています。
安全なマルチパーティ計算を使用して、ビットコイン アドレスを生成し、トランザクションに署名できることが判明しました。アドレス生成のプロトコルは単純です。
公開キーは整数で加算、減算、乗算、さらには除算もできるため、驚くべきことに、このアルゴリズムは期待どおりに正確に機能します。全員が同じ方法で 1000 のうち 501 の秘密鍵をまとめた場合、その秘密鍵は、対応する公開鍵の支出に 1000 のうち 501 のアルゴリズムを適用することによって生成されたアドレスに送金できるようになります。これが機能するのは、シャミアの秘密分散が実際には単なる代数式であるためです。つまり、加算、減算、乗算、除算のみを使用し、アドレスと同じくらい簡単に公開鍵「によって」計算できるためです。秘密鍵から公開鍵への変換が代数の前に行われるか後に行われるかは重要です。トランザクションへの署名も同様の方法で行うことができますが、プロセスは若干複雑になります。
安全なマルチパーティ計算の利点は、ビットコインに限定されず、企業が実行に依存している人工知能アルゴリズムの実行に簡単に使用できることです。いわゆる「機械学習」は、現実世界のデータのパターンを検出し、人間の介入なしにコンピューターがそれらをモデル化できるようにする一連のアルゴリズムの総称であり、スパムフィルターや自動運転車などで使用されています。現場で。 「ジャスト代数」は、安全なマルチパーティ計算でも実装できます。実際、計算を入力の個々のビットの回路に分割すれば、どんな計算も可能です。当然のことながら、可能な複雑さにはいくつかの制限があります。複雑なアルゴリズムを回路に変換すると、さらに複雑になることが多く、前述したように、Shamir の秘密共有自体が高価になります。したがって、実際にはアルゴリズムの「コア」を実装するためにのみ使用する必要があり、より複雑で高レベルの思考タスクには外部請負業者が取り組むのが最適です。
ヴィタリック・ブテリン著 2013 年 9 月 19 日