ビットコイン対ブロックチェーンの議論を終わらせる

ソースノード: 1849174

暗号通貨なしのブロックチェーンに価値はありますか?

議論はしばらく続いていますが、このXNUMXか月で深刻な上昇が見られました。 尋ねられる質問は:

暗号通貨なしのブロックチェーンに価値はありますか? そして、これらの「トークンレス共有元帳」は、ブロックチェーンと呼ばれることができるのでしょうか?

だから私は読んだ ベイリーの記事、見ました ティムのビデオ読み取り、 このナスダックの投稿、リチャードの あらゆる 単語、そして私自身の 元気な議論 (コメントを参照)Counterparty FoundationのChris DeRose。 とても熱くなった。

クリスが得意とすることのXNUMXつは、それを問題に要約することです。 つまり、ブロックチェーンが純粋に経済的なイノベーションである場合、暗号通貨なしでブロックチェーンを使用する意味はありません。 最初に私の立場を述べさせてください。

ビットコインブロックチェーンは経済的でした および コンピュータサイエンスの革新.

ここに「イノベーション」を含めることを許可します 既存の技術の新しい組み合わせ、前例のないものではなく。 この定義により、ハイパーテキストといくつかの既存のインターネットプロトコルのひねりを組み合わせるだけであったとしても、ワールドワイドウェブをイノベーションと見なすことができます。 より厳密なイノベーションの定義を採用したい場合は、私のゲストになってください。しかし、真の「イノベーション」がほとんど残っていないことに驚かれることでしょう。 言い換えると 教師、太陽の下で少し新しいです。

正確には、私はその主張をしている トークンなしのブロックチェーンは目的を果たします、しかしそれは 別の目的 オリジナルのビットコインブロックチェーンと比較して。 暗号の頭はトークンフリーのブロックチェーンを笑います。彼らは検閲を通じて検閲への抵抗と分散型のセキュリティを提供できないからです。 フィンテックヘッドは公共のブロックチェーンを笑っています。低速で高価であり、従来の金融には不向きだからです。 ええと、皆を笑わせてください。あなたはどちらも正しいと思います。

トークンフリーのブロックチェーンは、分散型データベースの同期を維持するのに役立つと主張します。 完全な信頼がある単一の組織でも。 次に、ブロックチェーンが提供する他の機能を確認します。これにより、ブロックチェーンがコンセンサスを作成するのに適したものになります。 特定のタイプのトランザクション 限られた不完全な信頼しかない組織間。

残念ながら、議論に従うには、ビットコイントランザクションモデル、データベースマルチバージョン同時実行制御(MVCC)、およびマルチマスターデータベースレプリケーションでの競合解決の問題について、私と一緒にオタクを探す必要があります。 私は最善を尽くして英語にこだわるつもりですが、それでも、これは技術的なものであり、回避することはできません。

ビットコインのトランザクションモデル

ビットコインのトランザクションモデルはシンプルですが強力です。 すべてのビットコイントランザクションには、一連の入力と一連の出力があります。 各入力は、前のトランザクションのXNUMXつの出力を「消費」します。 トランザクションの入力内のすべてのビットコインはそのトランザクションに流れ込み、その中に書き込まれた数量に従ってその出力全体に分配されます。 このようにして、トランザクションは多方向接続チェーンを形成し、新しいビットコインが作成される「coinbase」トランザクションで終了します。

ビットコインには、ネットワーク内のすべてのノードによって適用される一連の追加ルールがあります。

  • トランザクションのすべての入力は、接続されている以前の出力を使用する権利があることを証明する必要があります。 その権利は、前の出力内にエンコードされた条件によって制限されます。
  • トランザクションは、出力に書き込まれた合計をカバーするために、入力に十分な合計ビットコインを持っている必要があります。 唯一の例外は、通貨の新しい単位を作成するコインベーストランザクションです。
  • 各出力はXNUMX回だけ使用できます。つまり、後続のXNUMXつのトランザクションでXNUMXつの入力にのみ接続できます。

この最後のルールのために、ネットワークには、どのトランザクションが有効であるかについてコンセンサスに達するためのメカニズムが必要であり、これがブロックチェーンが行うことです。 具体的には:

XNUMXつのトランザクションが同じ出力を使用しようとすると、最終的にはそれらのトランザクションのXNUMXつだけが受け入れられます。 ブロックチェーンは、ネットワーク全体でこれらの競合を検出および防止するための統合メカニズムとして機能します。

ブロックチェーンは一連のリンクされたブロックとして構成され、各ブロックには、2009年に作成された最初のブロックから開始して、互いにまたは前のブロックと競合しない一連のトランザクションが含まれます。理論的には、チェーンには一連の個別のトランザクションですが、トランザクションをブロックにグループ化することで、スキームをより実用的なものにするいくつかの効率が得られます。

それでは、これらすべての暗号通貨の目的は何ですか? それは、チェーンを形成するブロックを誰が決定するかという問題に帰着します。 ビットコインは分散化されており、この決定を行う権限がないため、コンセンサスに到達する他の方法を見つける必要があります。

ネットワーク内のノードがブロックに投票し、大多数が勝つという民主的なアプローチを使用したいと思うかもしれません。 残念ながら、あらゆるインターネット世論調査で実証されているように、なりすましの問題(別名 シビルの攻撃)。 XNUMX人がXNUMX万台を超えるコンピューターを乗っ取り、投票方法を決定できるため、ネットワークのコンセンサスを掌握できます。 これが起こったことを誰も知らないでしょう。

これを解決するために、ビットコインは「マイニング」と呼ばれるプロセスを介してチェーンにブロックを追加することを意図的に困難にします。 ブロックを作成するには、多くの計算(したがって電気とお金)を必要とする、難しいが無意味な数学的問題を解決する必要があります。 また、世界中の他の多くのブロックマイナーと競争しているので、運が必要です。 ネットワークは問題の難易度を定期的に調整して、10分ごとにXNUMXブロックの安定したグローバルレートを維持するため、より強力なマイニングコンピューターを購入しても長く先に進むことはできません。

ブロックを作成するのが非常に困難でコストがかかる場合、なぜ誰かがわざわざするのでしょうか。 答えはブロック報酬にあります。 ブロックの成功したマイナーは、25ビットコインを授与するコインベーストランザクションを制御します(この合計は7,000年ごとに半分になります)。 彼らはこれらのビットコインを公開市場でXNUMXドル(今日のレートで)で販売し、電気代を支払い、うまくいけばいくらかの利益をポケットに入れることができます。 鉱山労働者はまた、取引に付随する料金から少し余分に徴収しますが、今のところこれらの料金は小さな役割を果たしています。

したがって、ビットコインはプルーフオブワークを介してコンセンサスを生成し、ビットコインヘッドの議論の核心はこれです: 暗号通貨なしでは、ブロックの分散型マイニングを奨励する方法はありません。 したがって、なりすまし攻撃からオープンブロックチェーンを保護する方法はありません。 したがって、誰でもネットワークのコンセンサスを独占して、すべてを役に立たなくすることができます。 それについては議論しません。

多重化並行性制御

その間、私はまったく無関係に思われるかもしれない何かについて話したいと思います。

データベースは、構造化された情報のリポジトリであり、テーブルと呼ばれるスプレッドシートのようなエンティティにグループ化されています。 このようなテーブルの簡単な例は、銀行口座のリストです。各行には、口座番号とその口座の残高が含まれています。 アカウントが$ 900の残高で750日を開始するとします。 今日、400ドルの自動住宅ローン支払いが予定されており、ATMからXNUMXドルを引き出す必要もあります。 残念ながら、当座貸越機能がないため、これらの操作のXNUMXつが失敗するように設定されています。

住宅ローンの支払いとATMの引き出しのプロセスは別々のシステムで実行され、どちらもこの単一のアカウントデータベースにアクセスします。 各プロセスは、アカウントの残高を読み取り、操作に十分かどうかを確認し、その操作を開始し、操作が完了したことを確認し、新しい残高を計算して、最後にデータベースに書き込むことで機能するとします。

住宅ローンの支払いとATMの引き出しが重ならない限り、このロジックは問題なく機能します。 最初の操作は正常に実行され、アカウントの資金が不足しているため、XNUMX番目の操作は中止されます。 注文によっては、銀行からの怒りの電話やATM画面に失礼なメッセージが表示されます。

しかし、150つのプロセスが同時に開始した場合はどうなりますか? この場合、それぞれがアカウントの残高を読み取り、続行するのに十分であると見なします。 住宅ローンの支払いが完了すると、新しい残高は$ 500として計算され、データベースに書き込まれます。 ATMの引き出しが完了すると、$ 750の新しい残高も同様に書き込まれます。 これらの書き込み操作の400つが他の書き込み操作を上書きし、運によっては、銀行から$ XNUMXまたは$ XNUMXのボーナスを受け取ります。 間違いなくあなたはすぐに住宅ローンの日のあなたのATM訪問の時間を計ることを学ぶでしょう。

もちろん、これは実際には起こりません。 同時実行制御。 同時実行制御は、データ(特に財務)を適切かつ安全に保ち、さまざまな形式で提供されます。 しかし、すべてがデータベース操作を「トランザクション」にグループ化するという原則を共有しています。これは、アトミックに処理されます。つまり、全体として成功または失敗します。 同時実行性は、XNUMXつのトランザクションで使用されているデータベースの一部をロックまたはフリーズすることで一貫性を維持し、他のトランザクションが競合する方法で同じ情報を操作するのを防ぎます。

トランザクションを並行して実行する必要がない場合は、すべての単一トランザクションの期間全体にわたってデータベース全体をロックできます。 ただし、これはほとんどの実際のアプリケーションでは実用的ではありません。 優れた同時実行制御スキームにより、可能な限り少ないデータを可能な限り短時間でロックすることにより、並列操作が可能になります。 上記の例では、アカウントに対応するデータベース行のみがロックされ、最終チェックと控除が行われた一瞬だけロックされます。 並行して動作する競合するトランザクションは、このロックが解放されるまで待つ必要があります。

一般的な同時実行制御手法のXNUMXつは、 マルチバージョン同時実行制御、または略してMVCC。 MVCCでは、データの一部がXNUMX番目の同時トランザクションによって更新されている場合でも、各トランザクションは特定の時点でデータの一貫したスナップショットを確認します。 この スナップショット分離 プロパティは、たとえば、一部の資金がXNUMXつのアカウントから別のアカウントに移動する過程にある場合でも、複数のアカウントの合計残高を示すステートメントが常に正しいことを保証します。 XNUMXつのトランザクションは、最初のすべての変更が正常に適用された後にXNUMX番目のトランザクションが開始された場合にのみ、XNUMX番目のトランザクションによって表示されるデータに影響を与えます。

MVCCは舞台裏で、各バージョンの最終変更日を表すタイムスタンプとともに、行の複数のバージョンを同時に維持できるようにすることで機能します。 MVCCでデータベース行を変更すると、その行の現在のバージョンが削除対象としてマークされ、変更が その行のコピー タイムスタンプが更新されます。 データベースのストレージレイヤーの観点からは、行を変更するようなことはありません。 各トランザクションは、開始時刻を正確に認識しており、タイムスタンプがその時刻より前のバージョンの行のみを表示します。 古いバージョンの行は、それらにアクセスする必要のある進行中のトランザクションがなくなったら、ストレージから削除できます。

ここで非常に重要なのは、MVCCが書き込み操作間の競合を防ぐことです。 具体的には:

XNUMXつのトランザクションが同じ行バージョンを削除しようとすると、これらのトランザクションのXNUMXつだけが最終的に受け入れられます。 マルチバージョン同時実行制御は、データベース内のこれらの競合を検出して防止するための統合メカニズムとして機能します。

ベルを鳴らす? 議論する必要がある背景がもうXNUMXつあります。

マルチマスターデータベースのレプリケーション

次に、データベースが複数のコピーに存在するデータベースレプリケーションについて説明します。 データベースを複製する理由はいくつかあります。

  • 信頼性を向上させるため、データベースのXNUMXつのコピーが失われた場合(ディスク障害などにより)、すぐにXNUMX番目のコピーに切り替えることができます。
  • 処理量を増やすために、操作の量が単一のデータベースサーバーの容量を超えた場合。
  • レイテンシを削減して、シンガポールオフィスで実行されているプロセスがトロントにあるデータベースからの応答を待つ必要がないようにします。

になると 読書 データベースからのデータの場合、すべてのレプリカに同じ情報が含まれているため、レプリケーションは理想的な手法です。 ただし、書き込み操作に関しては、これらの書き込み操作が実行される場所と、それらがデータベースの他のコピーに転送される方法を決定する必要があるため、状況はさらに厳しくなります。

最も一般的な答えは、マスタースレーブレプリケーションを使用することです。このレプリケーションでは、単一のデータベース(「マスター」)が信頼できると見なされます。 データへの変更はすべてマスターでのみ実行され、トランザクションログを介して他のすべての「スレーブ」データベースに細流化されます。 これにより、すべてのデータベースコピー(多かれ少なかれ)が即座に同期されます。

残念ながら、書き込み操作が頻繁に行われる場合、マスタースレーブレプリケーションは、レプリケーションが解決するように設計された問題にすぐに戻ります。 マスターデータベースは、すべての書き込み操作が単独で実行されるため、信頼性、スループット、および遅延の点でボトルネックになります。

より複雑な戦略はマルチマスターレプリケーションと呼ばれ、単一のマスターではなく、任意のデータベースコピーに対して書き込みを実行できます。 この場合、コピーは同期を維持するためにピアツーピア方式で相互に更新を共有します。

これは理論的には簡単に聞こえますが、競合が発生する可能性があるため、マルチマスターレプリケーションでは新しい問題が発生します。 データベースのXNUMXつのコピーが同じ行を同時に更新した場合、これらの更新を相互に交換しようとするとどうなるでしょうか。 両方のデータベースは、競合する更新が行われたことに気付き、これらの競合を解決するためにいくつかの合意された戦略を適用する必要があります。 そしてここで物事は かなり複雑 –のドキュメントを参照 MySQL, SQLサーバー or オラクル 紛争解決戦略のいくつかの例については。 (私は同期またはいわゆる「熱心な」マルチマスターレプリケーションを無視しています。このレプリケーションでは、すべてのレプリカが書き込み操作を実行する前にコミットする必要があります。 あらゆる データベースをボトルネックにコピーします。)

したがって、このすべての背景がリードしているのは次のとおりです。

マルチマスターレプリケーションで発生する競合を防ぐために、分散型マルチバージョン同時実行制御ができたらいいのではないでしょうか。

ええ、そうです、それは確かにとてもいいことだと思います。 そして、私はこれがまさにブロックチェーンが行うことであると信じています。

分散MVCCとしてのブロックチェーン

上記の太字で書いたいくつかの文を書き留めましょう。

XNUMXつのトランザクションが 過ごす 同じ 出力、その後、それらのトランザクションのXNUMXつだけが最終的に受け入れられます。 ブロックチェーン これらの競合を検出して防止するための統合メカニズムとして機能します ネットワーク全体.

XNUMXつのトランザクションが 削除 同じ 行バージョン、これらのトランザクションのXNUMXつだけが最終的に受け入れられます。 多重化並行性制御 これらの競合を検出して防止するための統合メカニズムとして機能します データベース内.

これらの文は、太字の用語を除いて同じです。 だからこれが私が主張しようとしていることです:

ブロックチェーンは、分散MVCCを提供します(追加のベルとホイッスル付き)。

比較をもう少し具体化してみましょう。 ブロックチェーンノードの観点から、未使用のビットコイントランザクション出力の現在のセットはデータベースを形成し、各行は単一の未使用の出力です。 これは、前に説明した銀行口座のデータベースに似ていますが、各口座の残高を複数の行に分割でき、各行に同じ口座番号が付けられている点がわずかに異なります。

ビットコイントランザクションは、これらの出力のXNUMXつ以上を消費し、結果としてXNUMXつ以上の新しい出力を作成します。 これは、XNUMXつ以上の行バージョンを削除し、結果としてXNUMXつ以上の新しい行を作成するデータベーストランザクションとまったく同じです(MVCCでは、行を変更するようなことはないことを思い出してください)。 ビットコインブロックチェーンは、単一の出力が複数のトランザクションによって費やされないことを保証します。 これは、XNUMXつの行バージョンを複数のデータベーストランザクションで削除できないようにすることと同じです。

夢中になる前に、私はブロックチェーンが完全に信頼された環境での分散データベース同期のための優れた汎用テクノロジーであることを主張していません。 他にもたくさんの技術があります パクシ, Raft および XNUMXフェーズコミット 非常にうまく仕事をします。 しかし、ブロックチェーンにはスイートスポットがあると私は信じています。これは、次のようなアプリケーションとして特徴付けることができます。

  • 取引がおそらく受け入れられてから確実に受け入れられるまでの短い遅延を受け入れることができます。 (この遅延は、ビットコインのように10分ではなく、数秒で発生する可能性があります。)
  • 全員が正直であり、システムが適切に機能している場合、競合するトランザクションが発生することはありません。
  • 各トランザクションは、数行のみを同時に変更します(それ以外の場合、ブロックチェーントランザクションには扱いにくい数の入力が含まれます)。
  • 各データベース行のサイズはかなり小さいです(これも、ブロックチェーントランザクションのサイズが膨らむのを防ぐためです)。

これらの基準はすべて、金融アプリケーションによって満たされます。 金融業界は、取引の実行から最終的な決済までの遅延(最大3日!)にすでに慣れています。 紛争防止の観点から、詐欺を検出するための契約や規制があり、その結果は深刻なものになる可能性があります。 また、各トランザクションに関連するデータの量は非常に少ないです。上記の銀行口座の例を考えてみてください。

これまでのところ、私が示したのは、ブロックチェーンが分散データベースのさらに別の同期メカニズムであることだけです。 大きなすごい。 ブロックチェーンが提供する追加機能を検討する場合にのみ、物事は本当に興味深いものになります。

MVCCを超えたブロックチェーン

ビットコイントランザクションは、以前のトランザクション出力を指し示し、代わりに新しいトランザクション出力を作成するだけではありません。 最も単純なビットコイントランザクションでさえ、XNUMXつの追加の目的を果たします。

まず、有効なトランザクションに関するルールには、アカウントデータベースのアプリケーションロジックの一部が含まれています。 トランザクションの入力のビットコインの合計量は、出力の合計量をカバーする必要があることを思い出してください。 これは、データベースアプリケーションロジックに変換され、データベーストランザクション(コインベースを除く)がデータベース内のビットコインの総量を増やすことを許可されないことを示すルールです。 この種の制約は通常のデータベースを超えています ストアドプロシージャ それはいかなる状況でも回避できないからです。

次に、各ビットコイントランザクション出力は、それを使用できる条件をエンコードしていることを思い出してください。 通常のビットコイン出力の場合、この条件は公開鍵暗号化に基づいています。 パブリックアドレスは出力「スクリプト」内に埋め込まれているため、そのパブリックアドレスに対応する秘密鍵を使用してのみ使用できます。 この出力をデータベース行と見なすと、公開鍵暗号化に基づく行ごとのアクセス許可を持つデータベースが得られます。 さらに、すべてのトランザクションは、その作成者が前の行を削除/変更する権利を持っていたという公的に監査可能な証拠を提示します。 これは(私が信じる)データベース技術の真の目新しさです。

繰り返しになりますが、これらの機能の両方が金融アプリケーションに非常に役立つことがあります。 私たちのデータベースは、可能な限り低いレベルで、薄い空気からお金を生み出すことができないことを保証しているという事実が好きです。 そして、すべての取引が移動した資金の所有者によって承認されたことを示す、議論の余地のない監査証跡があるのが好きです。 なので ここで詳細に議論、カウンターパーティの身元さえ知らなくても、安全なアトミックピアツーピア交換トランザクション(ファイナンストークでの配信と支払い)を実行したい場合もあります。

トークンはどこにありますか?

もちろん、これは偶然ではありません。ビットコイン自体が美しいピアツーピアの金融アプリケーションだからです。 それでも、ブロックチェーンの上記の特性はいずれもトークンにまったく依存していません。 「データベース」スキーマを変更して、各行がブロックチェーンのネイティブ通貨ではなく複数のアセットを表すことができるようにすると、その通貨を完全に取り除くことができます。 これにより、ピアツーピアの金融アプリケーションでコンセンサスとセキュリティを実現する方法として、ブロックチェーンが残ります。 あらゆる種類の資産.

ただし、XNUMXつだけ質問があります。 このコンセンサスを生成するためにマイニングを行うのは誰ですか? ビットコインでは、匿名のマイナーは高価で役に立たない計算を実行する必要があり、ブロックチェーンのネイティブ通貨またはトークンで表されるブロック報酬(および取引手数料)によって実行するように奨励されます。 他に選択肢はありますか?

私たちがすることがわかりました。 私たちは許可された鉱山労働者の閉じたリストを持つことができ、彼らは彼らが作成するブロックに署名することによって自分自身を識別します。 分散型コンセンサス(または「マイニングの多様性」と呼ぶ) マルチチェーン)ブロックチェーンの少数派の制御を防ぐ別の方法を提供し、 鉱夫が事前承認されていることを受け入れることができる限り。 もちろん、ビットコインの場合、これは受け入れられません。なぜなら、ポイントの一部は匿名マイニングを許可することであり、トランザクションを一元的に検閲する方法がないからです。 しかし、たとえば、ビットコインのモデルが適用できない高度に規制された金融システムがあった場合、結局、事前に承認された鉱夫のリストを受け入れることができるでしょうか? 私たちがそれらを十分に持っていて、それらを機関間で十分に広げ、それらすべてと法的な契約を結んでいた場合、彼らは本当に団結して彼らが依存するネットワークを弱体化させる可能性があります、そうするとき彼らは刑務所に入れられますか?

エピローグ

トークンのないブロックチェーンには、ビットコインのブロックチェーンとは大きく異なる場合でも、いくつかの便利なアプリケーションがあることを示したことを願っています。 それにもかかわらず、XNUMXつの質問が残っています:

これらの許可された、トークンフリーの共有台帳システムは、「ブロックチェーン」という名前に本当に値するのですか?

簡単に言えば、誰が気にするのか? 言葉の意味について議論する価値はほとんどありません。 正しい答えはない.

しかし、もう少し詳しく説明すると、ビットコインブロックチェーンは典型的なブロックチェーンであるという前提を受け入れます。 その場合、私たちが実際に尋ねるべきことは次のとおりです。

これらの共有元帳は、「ブロックチェーン」という名前に値するほどビットコインに似ていますか?

ここでの私自身の個人的な見解は はい。 許可モデルや経済的インセンティブが異なっていても、技術的な類似点が多数あるためです。 そして最も重要なのは、どちらも分散データベースでコンセンサスを生成するためです。 ブロックのチェーン.

読んでくれてありがとう。

また、ご購読はいつでも停止することが可能です Twitterで私に従ってください。 参照: ブロックチェーンでの配達と支払い.

ここに、この主題について読む価値のある他のいくつかのピースがあります ピョートル・ピアセッキ および ダグ・キャンベル.

タイムスタンプ:

より多くの マルチチェーン