ビットコインとブロックチェーンの誕生には、二重支出問題とビザンチン将軍問題というデジタル通貨の2つの長年の問題が含まれます。
日常生活における物理的な通貨と比較して、電子マネーを開発する上で最大の困難は、「信頼問題」をどのように克服するかです。 初期の貝殻と貴金属が一般的な同等物として使用できる理由は、それらが一定の希少性を持っていること、そして後の物理的な紙幣が信頼問題を解決するために国家の信頼性に依存しているためです。
これらの物理的な通貨には価値があり、価値の移転を即座に完了することができました。 デジタル時代では、コンテンツは本質的に0と1のコードの組み合わせであり、デジタルマネーは2つのコピーにコピーされ、2つの異なる受信者に同時にリリースされる可能性があり、これはいわゆる「二重支払い問題」です。 インターネット自体には価値を表現する能力がないため、以前はクレジットカードやその他の種類の電子マネーを使用するために、銀行などの集中型サーバーを備えた集中型アカウントシステムを使用する必要がありました。
しかし、本当に信頼できる第三者がいるかどうかは問題です。 集中型サーバーへの攻撃などの単一障害点のリスクがあり、政府でさえ、お金を過剰に発行することで「シニョレッジ」を収集する可能性があります。 ビットコインが提案する解決策は、サードパーティの仲介業者を放棄し、全員が元帳の中心にいる分散型台帳を構築することです。
台帳の保管を担当する「首長」が1人しかおらず、村員の経費はすべて台帳システムのハブである村長に登録されている村を考えてみましょう。 村長が信頼できる場合、システムはうまく機能します。ただし、システムの中心であるチーフが泥棒である場合、他の人に見分けるのは難しいかもしれません。
各メンバーが同一の元帳を保持している「分散型」の村を考えてみましょう。 メンバーが元帳を変更したい場合は、他のメンバーに「ブロードキャスト」で通知し、エントリを確認して自分の元帳にコピーできるようにする必要があります。 すべてのメンバーが元帳を確認して更新するまで、トランザクションプロセスは完了しません。 これは基本的にビットコインネットワークの動作方法です。
ビットコイン、分散型台帳として知られる資産の取引を記録するための新しいタイプのデジタルシステムを発明しました。 データが集中型サーバーに保存される集中型記録とは対照的に、ブロックチェーンは分散型データベースであり、ネットワーク内の各ノードがデータベースの所有者およびメンテナーとして機能します。
ビットコインブロックチェーンの最初の大規模なアプリケーションであり、ブロックチェーンはビットコインの基礎となる基盤です。
ビットコインシステムは、データ層、プロトコル層、アプリケーション層の3つの層に分けることができます。 まずは、各ビットコインシステムメンバーが持つ「台帳」(データレイヤー)から始めましょう。
ブロックチェーンは基本的に、ネットワーク内のすべてのノードによって維持される分散型台帳であり、各ノードはブロックチェーンデータ全体を保存します。 ノードによって格納されるブロック「チェーン」は、互いに接続されたブロックの順序付けられたチェーンであり、ブロック自体は、暗号化ハッシュアルゴリズムによって維持される変更不可能なデータ構造です。
ハッシュ関数 (SHA-256 および RipeMD160) は、ビットコインの重要な暗号化アルゴリズムであり、任意の長さの入力値を、ランダム性で衝突のない機能を備えた固定長の値の出力に変換できます。また、ハッシュ関数の入力値をその出力から推測することは困難です。 入力を少し変えると、出力が大幅に異なる可能性があります。 ハッシュ関数の出力は入力から簡単に導き出すことができますが、出力から入力を推測するにはブルートフォース列挙が必要であり、これにはかなりの時間と計算能力が必要です。 ハッシュ関数を繰り返し使用すると、ビットコインのデータ構造が簡素化および定義されます。
ビットコインブロックは、ブロック本体とブロックヘッダーの2つの部分で構成されます。 ブロック本体には、そのブロックのすべてのトランザクション情報が含まれており、数回ハッシュされて、ブロック本体を構成するマークルツリーと呼ばれる構造が形成されます。 これらの各ブロックの最初のトランザクションメッセージはコインベーストランザクションとも呼ばれ、新しいビットコインを生成してマイナーに報酬を与えるトランザクションですが、他のすべてのトランザクションはユーザー間で相互に転送されます。
これらのトランザクションは、複数のハッシュ操作を経て、最終的にすべてのトランザクションデータの合計であるマークルハッシュと呼ばれる値に到達します。 マークルハッシュは、ナンス、タイムスタンプ、親ブロックハッシュ、およびその他のデータとともにブロックヘッダーを構成し、ブロックヘッダーのハッシュ値を計算すると、このブロックのブロックハッシュを取得できます。 各ブロックのブロックヘッダーには親ブロックのハッシュ値が含まれているため、すべてのブロックがチェーンに接続されます。 ブロックはインターロックされており、ブロックデータを変更するとブロックハッシュが変更され、チェーンが壊れます。
各ノードが保有する「台帳」(データレイヤー)を紹介した後、ネットワークセキュリティを担うビットコインコンセンサスレイヤーに移りましょう。
分散コンセンサスを掘り下げる前に、「ビザンチン将軍」の問題を理解することが重要です。
ビザンチン将軍の問題は、ビザンチン軍がビザンチウムの広大な領土のために情報を送信するためにメッセンジャーに依存していた中世にまでさかのぼります。 裏切り者が上層部の作戦情報を故意に虚偽表示した場合、それは一貫性のない作戦計画につながり、「ビザンチン将軍問題」を引き起こします。
ビットコインネットワークは多数の分散型ノードで構成されており、それぞれが独立した自律的で同等の「軍団」です。 ネットワーク内のすべてのノードにはブロックチェーンデータの独自のコピーがあり、それらはすべて、トランザクションを最初にパッケージ化してビットコインの報酬を獲得したいと考えています。 では、どのノードが台帳の権利を取得し、ネットワーク全体にブロックチェーンデータを変更するためのコンセンサスに達するよう説得することに成功しますか?
ビットコインの答えは、一般に「マイニング」として知られているプルーフオブワーク(PoW)コンセンサスメカニズムであり、ノードによって実行されるデジタルコンピューティングプロセスであり、「答え」を最初に見つけたノードが台帳の権利を取得します。 具体的には、ノードはブロックヘッダーのNunceを変更し、ブロックハッシュを計算し、最終的に最初の数ビットがゼロのブロックハッシュを取得する必要があります。
この時点で、Nunce 値が質問に対する答えです。 答えを見つけた後、ノードはそれを他のネットワークノードにブロードキャストし、答えを確認した後、他のノードはすぐにブロックを新しい親ノードとして受け取り、次のラウンドのマイニング操作を続行します。
これは、データがノード間でブロードキャストするのに時間がかかるという点で問題を提示し、コミュニティ全体が合意に達する前に、2つ以上のノードが同時にパズルの答えを発見した可能性が十分にあります。 ただし、2つのノードが異なるコインベーストランザクションをパックするため、2つの異なる有効なブロックになります。 シグナリングシーケンスが異なるため、マイナーノードは両方のフォークチェーンで動作します。 この時点で、ビットコインネットワークは「最長連鎖律」に従い、ブロックが最も多いフォークチェーンを唯一の認識されたブロックチェーンとして扱います。 このフォークコンペティションは通常6ブロック未満で完了し、他の放棄されたチェーンのすべてのトランザクションは無効になります。
ビットコインノードは、マイニングと最長の連鎖律によって分散台帳への更新を同期してコンセンサスに達することができます。 このコンセンサスベースの分散型台帳は、ビットコインのようなピアツーピアのデジタル通貨も可能にします。
従来の電子通貨は、中央サーバー上のユーザーごとにアカウントが作成され、すべてのアカウントの残高データが保存される集中アカウントシステムを使用しています。 各取引の後、口座残高は時系列で増減します。 一方、ビットコインは、未使用のトランザクションの出力を表すUXTOモデルを使用します。
非対称暗号化は、ビットコイントランザクションを保護するために使用されます。 各ビットコインユーザーには、アカウントとパスワードと同様に、公開キーと秘密キーのペアが必要です。 ユーザーは、秘密キーを使用してトランザクション データに署名し、トランザクション データ、署名、および公開キーを一緒に公開する必要があります。 ただし、各トランザクションでは、ユーザーは口座残高を直接転送するのではなく、以前の複数のトランザクションの「未使用金額」を使用します。 UTXO.
ビットコインシステムでは、口座または口座残高の概念はなく、履歴レコード内のすべてのトランザクションのUTXOのみがあります。 ビットコインウォレットは、以前のすべてのトランザクションのデータをスキャンし、特定のアドレス(つまり、公開鍵)の合計UTXOを計算して、アカウントの残高を決定できます。 さらに、取引が開始されると、ビットコインウォレットは自動的にUTXOを正しい残高と照合して転送を完了することができます。
ビットコインとブロックチェーンの誕生には、二重支出問題とビザンチン将軍問題というデジタル通貨の2つの長年の問題が含まれます。
日常生活における物理的な通貨と比較して、電子マネーを開発する上で最大の困難は、「信頼問題」をどのように克服するかです。 初期の貝殻と貴金属が一般的な同等物として使用できる理由は、それらが一定の希少性を持っていること、そして後の物理的な紙幣が信頼問題を解決するために国家の信頼性に依存しているためです。
これらの物理的な通貨には価値があり、価値の移転を即座に完了することができました。 デジタル時代では、コンテンツは本質的に0と1のコードの組み合わせであり、デジタルマネーは2つのコピーにコピーされ、2つの異なる受信者に同時にリリースされる可能性があり、これはいわゆる「二重支払い問題」です。 インターネット自体には価値を表現する能力がないため、以前はクレジットカードやその他の種類の電子マネーを使用するために、銀行などの集中型サーバーを備えた集中型アカウントシステムを使用する必要がありました。
しかし、本当に信頼できる第三者がいるかどうかは問題です。 集中型サーバーへの攻撃などの単一障害点のリスクがあり、政府でさえ、お金を過剰に発行することで「シニョレッジ」を収集する可能性があります。 ビットコインが提案する解決策は、サードパーティの仲介業者を放棄し、全員が元帳の中心にいる分散型台帳を構築することです。
台帳の保管を担当する「首長」が1人しかおらず、村員の経費はすべて台帳システムのハブである村長に登録されている村を考えてみましょう。 村長が信頼できる場合、システムはうまく機能します。ただし、システムの中心であるチーフが泥棒である場合、他の人に見分けるのは難しいかもしれません。
各メンバーが同一の元帳を保持している「分散型」の村を考えてみましょう。 メンバーが元帳を変更したい場合は、他のメンバーに「ブロードキャスト」で通知し、エントリを確認して自分の元帳にコピーできるようにする必要があります。 すべてのメンバーが元帳を確認して更新するまで、トランザクションプロセスは完了しません。 これは基本的にビットコインネットワークの動作方法です。
ビットコイン、分散型台帳として知られる資産の取引を記録するための新しいタイプのデジタルシステムを発明しました。 データが集中型サーバーに保存される集中型記録とは対照的に、ブロックチェーンは分散型データベースであり、ネットワーク内の各ノードがデータベースの所有者およびメンテナーとして機能します。
ビットコインブロックチェーンの最初の大規模なアプリケーションであり、ブロックチェーンはビットコインの基礎となる基盤です。
ビットコインシステムは、データ層、プロトコル層、アプリケーション層の3つの層に分けることができます。 まずは、各ビットコインシステムメンバーが持つ「台帳」(データレイヤー)から始めましょう。
ブロックチェーンは基本的に、ネットワーク内のすべてのノードによって維持される分散型台帳であり、各ノードはブロックチェーンデータ全体を保存します。 ノードによって格納されるブロック「チェーン」は、互いに接続されたブロックの順序付けられたチェーンであり、ブロック自体は、暗号化ハッシュアルゴリズムによって維持される変更不可能なデータ構造です。
ハッシュ関数 (SHA-256 および RipeMD160) は、ビットコインの重要な暗号化アルゴリズムであり、任意の長さの入力値を、ランダム性で衝突のない機能を備えた固定長の値の出力に変換できます。また、ハッシュ関数の入力値をその出力から推測することは困難です。 入力を少し変えると、出力が大幅に異なる可能性があります。 ハッシュ関数の出力は入力から簡単に導き出すことができますが、出力から入力を推測するにはブルートフォース列挙が必要であり、これにはかなりの時間と計算能力が必要です。 ハッシュ関数を繰り返し使用すると、ビットコインのデータ構造が簡素化および定義されます。
ビットコインブロックは、ブロック本体とブロックヘッダーの2つの部分で構成されます。 ブロック本体には、そのブロックのすべてのトランザクション情報が含まれており、数回ハッシュされて、ブロック本体を構成するマークルツリーと呼ばれる構造が形成されます。 これらの各ブロックの最初のトランザクションメッセージはコインベーストランザクションとも呼ばれ、新しいビットコインを生成してマイナーに報酬を与えるトランザクションですが、他のすべてのトランザクションはユーザー間で相互に転送されます。
これらのトランザクションは、複数のハッシュ操作を経て、最終的にすべてのトランザクションデータの合計であるマークルハッシュと呼ばれる値に到達します。 マークルハッシュは、ナンス、タイムスタンプ、親ブロックハッシュ、およびその他のデータとともにブロックヘッダーを構成し、ブロックヘッダーのハッシュ値を計算すると、このブロックのブロックハッシュを取得できます。 各ブロックのブロックヘッダーには親ブロックのハッシュ値が含まれているため、すべてのブロックがチェーンに接続されます。 ブロックはインターロックされており、ブロックデータを変更するとブロックハッシュが変更され、チェーンが壊れます。
各ノードが保有する「台帳」(データレイヤー)を紹介した後、ネットワークセキュリティを担うビットコインコンセンサスレイヤーに移りましょう。
分散コンセンサスを掘り下げる前に、「ビザンチン将軍」の問題を理解することが重要です。
ビザンチン将軍の問題は、ビザンチン軍がビザンチウムの広大な領土のために情報を送信するためにメッセンジャーに依存していた中世にまでさかのぼります。 裏切り者が上層部の作戦情報を故意に虚偽表示した場合、それは一貫性のない作戦計画につながり、「ビザンチン将軍問題」を引き起こします。
ビットコインネットワークは多数の分散型ノードで構成されており、それぞれが独立した自律的で同等の「軍団」です。 ネットワーク内のすべてのノードにはブロックチェーンデータの独自のコピーがあり、それらはすべて、トランザクションを最初にパッケージ化してビットコインの報酬を獲得したいと考えています。 では、どのノードが台帳の権利を取得し、ネットワーク全体にブロックチェーンデータを変更するためのコンセンサスに達するよう説得することに成功しますか?
ビットコインの答えは、一般に「マイニング」として知られているプルーフオブワーク(PoW)コンセンサスメカニズムであり、ノードによって実行されるデジタルコンピューティングプロセスであり、「答え」を最初に見つけたノードが台帳の権利を取得します。 具体的には、ノードはブロックヘッダーのNunceを変更し、ブロックハッシュを計算し、最終的に最初の数ビットがゼロのブロックハッシュを取得する必要があります。
この時点で、Nunce 値が質問に対する答えです。 答えを見つけた後、ノードはそれを他のネットワークノードにブロードキャストし、答えを確認した後、他のノードはすぐにブロックを新しい親ノードとして受け取り、次のラウンドのマイニング操作を続行します。
これは、データがノード間でブロードキャストするのに時間がかかるという点で問題を提示し、コミュニティ全体が合意に達する前に、2つ以上のノードが同時にパズルの答えを発見した可能性が十分にあります。 ただし、2つのノードが異なるコインベーストランザクションをパックするため、2つの異なる有効なブロックになります。 シグナリングシーケンスが異なるため、マイナーノードは両方のフォークチェーンで動作します。 この時点で、ビットコインネットワークは「最長連鎖律」に従い、ブロックが最も多いフォークチェーンを唯一の認識されたブロックチェーンとして扱います。 このフォークコンペティションは通常6ブロック未満で完了し、他の放棄されたチェーンのすべてのトランザクションは無効になります。
ビットコインノードは、マイニングと最長の連鎖律によって分散台帳への更新を同期してコンセンサスに達することができます。 このコンセンサスベースの分散型台帳は、ビットコインのようなピアツーピアのデジタル通貨も可能にします。
従来の電子通貨は、中央サーバー上のユーザーごとにアカウントが作成され、すべてのアカウントの残高データが保存される集中アカウントシステムを使用しています。 各取引の後、口座残高は時系列で増減します。 一方、ビットコインは、未使用のトランザクションの出力を表すUXTOモデルを使用します。
非対称暗号化は、ビットコイントランザクションを保護するために使用されます。 各ビットコインユーザーには、アカウントとパスワードと同様に、公開キーと秘密キーのペアが必要です。 ユーザーは、秘密キーを使用してトランザクション データに署名し、トランザクション データ、署名、および公開キーを一緒に公開する必要があります。 ただし、各トランザクションでは、ユーザーは口座残高を直接転送するのではなく、以前の複数のトランザクションの「未使用金額」を使用します。 UTXO.
ビットコインシステムでは、口座または口座残高の概念はなく、履歴レコード内のすべてのトランザクションのUTXOのみがあります。 ビットコインウォレットは、以前のすべてのトランザクションのデータをスキャンし、特定のアドレス(つまり、公開鍵)の合計UTXOを計算して、アカウントの残高を決定できます。 さらに、取引が開始されると、ビットコインウォレットは自動的にUTXOを正しい残高と照合して転送を完了することができます。