ハードフォークとは何ですか? ソフトフォークとは何ですか? コンセンサスとは何ですか?

ハードフォークとは何ですか? ソフトフォークとは何ですか? コンセンサスとは何ですか?

第0章 はじめに

ビットコインはソフトウェアのセットです。ソフトウェア コードの変更とアップグレードには、多くの場合、ハード フォークとソフト フォークという 2 つの概念が関係します。これはどういう意味ですか?コミュニティ内で最も一般的な定義は、コンセンサスの修正です。しかし、「コンセンサス」が具体的に何を指しているのか理解するのは困難です。コードを変更して定義を確認してみましょう。

第1章 ビットコインの取引形式と取引履歴

ハードフォークとソフトフォークが何であるかを理解する前に、まずそれらが何を変更するのかを知る必要があります。

ビットコインの取引は中国語では二重の意味を持っており、これがハードフォークとソフトフォークが誤解されやすい重要なポイントです。

ビットコイントランザクションの意味の 1 つは、ビットコインを送信するために使用する統一されたデータ構造を指します。これは一連のルールです。ビットコインを送信する私たち全員は、使用するウォレット ソフトウェアに関係なく、この一連のルールを遵守する必要があります。各フィールドが何かを表すデータ構造として定義されます。すべてのウォレット ソフトウェアはこの意味を理解できます。

ビットコイン取引のもう一つの意味は、ビットコインを使用する人々が互いにビットコインを送信するイベントを指します。たとえば、0.12345 BTC を送信する場合、これはトランザクションです。ビットコインを送信するこれらのイベントはすべて、ビットコイン取引履歴を構成します。これは、現在ビットコイン フルノードを構成している 80G を超えるデータの主な内容です。これらの記録はすべてブロックチェーンブラウザで確認できます。すべての取引記録を確認するには、ブロックチェーン ブラウザに Bitcoin アドレスを入力するだけです。

例え話で説明しましょう。取引の形式は、銀行に行って他の人に送金するときに記入する送金フォームに似ています。送金フォームには、送金人の氏名、身分証明書、携帯電話番号、口座番号、金額、受取人の氏名、口座番号などの情報が明記されています。ビットコインの取引フォーマットでは送金者と受取人の情報も指定されますが、この情報は個人の身元情報とは一切関係ありません。ビットコイン取引に必要な具体的な情報については、次の章を参照してください。

第2章 ビットコインのトランザクションフォーマットとブロックフォーマット

ビットコインの取引履歴記録の概念は誰にとっても理解しやすいので、詳しく説明しません。言うことはあまりありません。しかし、ビットコインの取引形式、つまり取引のデータ構造を詳しく説明しないと、ハードフォークとソフトフォークが何なのか理解できません。

ビットコインのトランザクションは、入力値と出力値を含むデータ構造であり、初期ポイント(入力値)からターゲットアドレス(出力値)に資金を転送するためのコード情報が含まれています。このデータ構造にはいくつかのフィールドが含まれています。 『Mastering Bitcoin』の第 5 章から抜粋したこれらのフィールドを詳しく見てみましょう。

すべての Bitcoin ウォレットは、この表に指定された方法で Bitcoin を送信する必要があります。そうしないと、Bitcoin ネットワーク上で認識されず、トランザクションが無効になります。銀行に送金しに行ったのに、送金用紙を指示通りに記入しないと銀行がそれを受け付けないのと同じです。

ビットコイン ネットワークは、各ノードから平均 10 分以内に送信されたトランザクションを収集し、ブロックと呼ばれるパッケージにまとめ、タイムスタンプを付与して、ブロックチェーンに追加します。ブロックとは何ですか?

ブロックは、トランザクション情報 (つまり、ネットワーク上の各ノードが 10 分以内に発行したビットコイン トランザクションの平均) を集約するコンテナ データ構造です。メタデータを含むブロック ヘッダーと、それに続くブロック本体を構成するトランザクションの長いリストで構成されます。ブロックのデータ構造は次のように定義されます。

すべてのマイニング ノード ウォレットは、この表で指定された方法でブロックをパッケージ化する必要があります。そうしないと、Bitcoin ネットワーク上の他の完全なノード (SPV ノードはカウントされません) によって認識されず、無効なトランザクションと見なされます。

第3章 ハードフォークとソフトフォークの「公式」定義

ハードフォークとソフトフォークは両方とも bitcoin.org で定義されていますが、実際の定義は非常に曖昧です。ナンセンスな話をしないように(bitcoin.org の定義に疑問を抱くのは本当に不安です)、元のテキストを引用します。

ハードフォークは次のように定義されます。

ブロック チェーンの永続的な相違は、通常、アップグレードされていないノードが、新しいコンセンサス ルールに従うアップグレードされたノードによって作成されたブロックを検証できない場合に発生します。

https://bitcoin.org/en/glossary/ハードフォーク

ブロックチェーンに永久的な相違が発生します。新しいコンセンサス ルールがリリースされた後、アップグレードされていない一部のノードは、アップグレードされたノードによって生成されたブロックを検証できず、通常はハード フォークが発生します。

ソフトフォークの定義は次のとおりです。

ブロック チェーンの一時的なフォーク。これは通常、アップグレードされていないノードを使用するマイナーが、そのノードが認識していない新しいコンセンサス ルールに違反した場合に発生します。

https://bitcoin.org/en/glossary/ソフトフォーク

新しいコンセンサス ルールがリリースされると、アップグレードされていないノードは新しいコンセンサス ルールを認識していないため不正なブロックを生成し、一時的なフォークが発生します。

ブロック サイズの拡張にハード フォークとソフト フォークのどちらを実装するかをめぐるコミュニティの論争は、bitcoin.org の 2 つの曖昧な定義が主な原因であると思われます。最大の非難は、原文における「コンセンサスルール」の定義が明確でないことである。 bitcoin.org で「コンセンサスルール」の意味を調べると、元のテキストは次のようになります。

フルノードが他のノードとの合意を維持するために従うブロック検証ルール。

https://bitcoin.org/en/glossary/コンセンサスルール

他のノードとの合意を維持するためにフルノードが従うブロック検証ルール。

このコンセンサスの定義は、論理的に循環認証の誤りを犯しています。この定義によれば、「コンセンサスは合意を維持するためのルールである」とされています。これは徐三多が言ったことと同じです。「有意義に生きることは、良い人生を送ることです。」 「では、よく生きるとはどういうことか?」 「よく生きるということは、意味のあることをすることです。」実際のところ、彼は、よく生きるとはどういうことか、そして、何が有意義なことなのかという問いに答えなかった。

さらに、これら 2 つの定義では、ハードフォークを「永続的な分岐」、ソフトフォークを「一時的なフォーク」と定義しています。ほとんど言葉遊びのようなこの定義方法により、コミュニティの多くの人々がハードフォークを恐れるようになります。ハードフォークというのは非常に恐ろしいことだと考えます。

正直に言うと、この記事の概要は長い間頭の中にあったのですが、聖地bitcoin.orgでの定義に疑問があったため、これまで敢えて書けませんでした。私は、bitcoin.org で Bitcoin プロトコル アップグレードの定義を苦労して読みましたが、疑問を解決できるような説明を見つけることができませんでした。中国の大手Vにたくさん質問しましたが、完全な回答は得られませんでした。最近、コミュニティ内のソフトフォーク愛好家は、ソフトフォークを促進し、ハードフォークへの抵抗を呼びかける記事を多数公開しています。私の知識体系の範囲内で読んで推論した結果、私はそれらが間違っていると確信しました。彼らの誤りの根源は、幻想的な説明である「コンセンサス」の理解から来ています。彼らはそれが具体的に何を指しているのか全く分かっていません。 「コンセンサス」という言葉が出てくる限り、それは神聖かつ不可侵であり、すべての論理と推論は「コンセンサス」で止まるようです。

ソフトフォークとハードフォークには抽象的な定義がないので、まずは実際に何をするのかを分析してみましょう。

第4章: ビットコインブロックチェーンにおけるソフトフォークアップグレードの具体例

ビットコイン ブロックチェーンは数か月前にソフトフォーク アップグレードを実行し、BIP68/112/113 がビットコイン プロトコルで正式に有効になり、コミュニティでは CSV ソフトフォークと呼ばれました。アップグレードは 2016 年 6 月頃に完了しました。このソフトフォークによってビットコインのコードは具体的にどこで変更されたのでしょうか?この質問に答えるには、ビットコインのトランザクションデータ構造で答えを探す必要があります。

CSV ソフトフォークの前後で、ビットコインのトランザクションデータ構造にはどのような変化がありましたか?

図の太字の赤色のフィールドは、CSV ソフトフォークが主に変更する場所です。 CSV ソフトフォーク以前は、このフィールドは以下に示すように「シーケンス番号 (現在使用されていないトランザクション置換機能)」でした。

オリジナルのビットコイン取引データ構造ではこのフィールドが使用されていなかったか、当時は漠然と定義されていたため、再定義することが可能です。この明確に定義されていないフィールドは、古いバージョンの Bitcoin フルノードでは慎重に検証されません。新しいバージョンのノードは、定義されたルールに従って新しいブロックを生成し、そのブロックは古いバージョンのノードによって検証され、受け入れられることもできます。これがソフトフォークの具体的なプロセスです。

しかし、このような分野は 1 つしかないため、これは明らかに長期的な解決策ではありません。一度使用すると、将来は使用できなくなります。

ビットコインは2012年にP2SHと呼ばれる重要なアップグレードも実施しました。これはコミュニティによってマルチ署名ソフトフォークと呼ばれていました。これは、ビットコイン トランザクション署名スクリプトの修正版であり、複数の署名を介してビットコイン トランザクションを簡単に送信できるようになります。その時何が変更されたのですか?

図の太字の赤色のフィールドは、マルチ署名ソフトフォークによって主な変更が行われる場所です。 Satoshi Nakamoto は当初、この分野を P2PKH (Pay-to-Public-Key-Hash) として定義しました。現在、このフィールドには 5 つのスクリプトを含めることができます。

マルチ署名ソフトフォーク後、アップグレードされていないノードがアップグレードされたノードによって生成されたブロックを検証するときに、この新しい P2SH ロックスクリプトも検証できるため、これもソフトフォークになります。

上記の 2 つのソフトフォークは、ビットコインのトランザクションデータ構造に対する変更です。ソフトフォークはビットコインの取引履歴を偽装して変更することもできます。

2010 年 8 月 15 日、ハッカーがビットコイン コードの脆弱性を悪用し、ブロック高 74638 で 1844 億ビットコインを含むトランザクションを作成しました。その後、開発者が半日以内にこれを発見し、トランザクションの出力を無効にするパッチがリリースされました。ただし、これは単にトランザクション自体を無効と定義するのではなく、「ネガティブ出力」と呼ばれるトランザクションの種類を無効と定義します。先ほどのトランザクションは、ビットコインがこれまで負の出力値を禁止しておらず、総出力量が総入力量よりも高くできないとのみ定義していたという抜け穴を利用しました。この脆弱性はパッチ(おそらく Satoshi Nakamoto によってリリースされた)で修正されました。具体的に何が変更されたのでしょうか?

画像内の太字の赤色のフィールドが、この脆弱性パッチによって主に変更される場所です。変更前のルールでは、「合計金額」は「取引」より高くすることはできないとされていましたが、変更後は、「合計金額」が負の値になることはできないというルールになりました。この変更により、アップグレードされていないノードはアップグレードされたノードによって生成されたブロックを検証できるようになるため、これはソフトフォークでもあります。

ここで、これら 3 つのケースを抽象化して、ソフト フォークの定義を示しましょう。ソフト フォークとは、ビットコイン トランザクションのデータ構造 (これは広く流通している「コンセンサス」です) が変更された場合、アップグレードされていないノードはアップグレードされたノードによって生成されたブロックを検証でき、アップグレードされたノードはアップグレードされていないノードによって生成されたブロックも検証できることを意味します。

ソフトフォークによってもたらされる「コンセンサス」の変更には、もちろんブロック形式の変更も含まれますが、ここで挙げた 3 つのケースはすべてトランザクション形式の変更です。

以下のハードフォークのケースを見てみましょう。

第5章: ビットコインブロックチェーンにおけるハードフォークの具体例

2013 年 3 月 12 日に Bitcoin Qt 0.8.0 がリリースされました。バージョン 0.8 では、新しいデータベース レベル db が採用されました。一部のマイナーノードは Bitcoin QT 0.8 にアップグレードしましたが、一部のマイナーは引き続き Bitcoin QT 0.7 を使用しています。両者ともブロックを生成しましたが、ビットコイン QT 0.8 で使用される新しいデータベースによって生成されたブロックは、QT0.7 バージョンのノードによって拒否されました。具体的な理由は、古いデータベースでは 800Kb を超えるブロックを受け入れられない場合があるためです。そのため、ブロック高 225430 で、ビットコイン ブロックチェーンは 2 つのチェーンに分割され、ビットコイン ブロックチェーンに 2 つのチェーンが生成されました。1 つは 800kb を超えるブロックを含み、もう 1 つはより大きなブロックを含むこれらのチェーンを認識せず、ハードフォークが発生しました。

当時、ビットコイン QT バージョン 0.8 を使用していたマイナーは、マイニングしていたチェーンを放棄し、ビットコイン QT バージョン 0.7 に戻ってマイニングを続行しました。

このハードフォークは事故でした。これは、ビットコイン QT 0.8 バージョンのソフトウェアのバグが原因で発生し、古いソフトウェアを使用しているノードが、新しいソフトウェアを使用しているノードによって生成されたブロックの検証を拒否する原因となっていました。しかし、ハードフォークの原因は、古いソフトウェア バージョンを使用しているノードが、新しいソフトウェア バージョンを使用しているノードによって生成されたブロックの検証を拒否し、その後、両者が独自にマイニングを行うことです。

2015 年 7 月 4 日、ビットコイン ブロックチェーンのブロック高 363731 でハードフォークが発生しました。その時点で、Bitcoin Core 開発者は、BIP 66 を新しいバージョンの Bitcoin Core 0.10.0 に追加しました。これはもともとソフトフォークの修正でした。ビットコイン ネットワーク上の主要なマイニング プールがソフトウェアのバージョン 0.10 を使用していたとき、マイニング プールの 1 つである BTC Nuggets がアップグレードしなかったため、BTC Nuggets によってマイニングされた 2 つのブロックが他のマイナーによって拒否されました。その後、両者はそれぞれが正しいと信じたブロックチェーンを継続するために独自にマイニングを行い、その結果、ハードフォークが発生し、2つのチェーンに分裂しました。

その後、bitcoin.org は、フォークを排除するためにマイナーにビットコイン コア バージョン 0.10.2 にアップグレードするよう求める発表を行いました。

これも事故でした。ハードフォークの原因は、新しいソフトウェアバージョンを使用しているノードが、古いソフトウェアバージョンを使用しているノードによって生成されたブロックの検証を拒否し、両側が別々にマイニングを行ったことです。

これまでのところ、両方のハードフォークは偶発的なものでしたが、ハードフォークの原因は、最初のケースでは異なるノード上で新しく生成されたブロックのフォーマットに関する不一致であり、2 番目のケースでは異なるノード上でのトランザクション フォーマットに関する不一致でした。しかし、これは事故だったため、コミュニティでは十分な情報が議論されず、ブロックまたはトランザクションのどのフィールドが変更されてフォークが発生したのかを突き止めることができませんでした。

この時点で、これら 2 つのケースを抽象化して、ハード フォークの定義を行うことができます。ハード フォークとは、ビットコインのブロック形式またはトランザクション形式 (これは広く流通している「コンセンサス」です) が変更され、アップグレードされていないノードはアップグレードされたノードによって生成されたブロックの検証を拒否しますが、アップグレードされたノードはアップグレードされていないノードによって生成されたブロックを検証でき、その後、誰もが正しいと考えるチェーンを継続するため、チェーンが 2 つに分割されることを意味します。

次に、コミュニティが計画しているがまだ有効化されていないソフトフォークとハードフォークを見てみましょう。

第6章: 計画されているブロックサイズ増加ハードフォーク

現在のブロックにはトランザクションが満載されているため、ビットコインコミュニティは現在ハードフォークを計画しています。 10 分ごとにブロック内のトランザクションを増やすには、ブロックのデータ構造を変更する必要があります。まずはブロックのデータ構造を見てみましょう。

現在、ビットコイン ネットワークの主要な完全なノード ソフトウェアは、ビットコイン コア 0.12 です。このソフトウェアでは、表 6 の「ブロック サイズ」フィールドの最大値が 1M であると規定されています。この結果、最後のフィールド「トランザクション」には、限られた量の Bitcoin トランザクション データを保持できるようになります。トランザクションは少なくとも 250 バイトで、1 MB には 4,000 件を超えるトランザクションしか保存できず、平均では 1 秒あたり最大 7 件のトランザクションしか処理できません。ただし、実際のトランザクションのサイズは 500 バイトに達することが多いため、平均して 1 秒あたり 3 つのトランザクションしか処理できません。

そこで、このフィールドの最大値を増やすことを提案する人もいました。たとえば、Bitcoin Classic ソフトウェアはこのフィールドの最大値を 2M に設定しており、最初の 2016 個のブロックのサイズの中央値に合意された倍数を掛けて、次のブロック バッチのサイズの上限を決定する計画があります。 Bitcoin XT はこの値を 20M に変更し、上限が 8.3G に達するまで 2 年ごとに 2 倍にします。 Bitcoin Unlimited はこのフィールドを直接変更し、マイニング プールがパッケージのサイズを決定できるようにします。

問題は、このフィールドを変更するソフトウェアを使用するノードによって生成されたブロックが、アップグレードされていないノードと互換性がなくなり、アップグレードされていないノードがこれらの新しいノードによって生成されたブロックの検証を拒否することです。これにより、ハードフォークが発生します。

この時点で、ハードフォークで変更する必要があるいわゆる「コンセンサス」とは、ブロック データ構造形式またはトランザクション データ構造形式の変更を指すことが基本的にわかっています。

第7章 分離証人ソフトフォーク

ブロックのもう一つの偽装拡張計画は、Segregated Witness です。この計画は、ビットコインのトランザクションデータ構造を変更します。写真を見てみましょう。

図の赤いフィールドは、分離された証人が主に機能する場所であり、トランザクションによって定義されたデータ構造から、またブロックによって定義されたデータ構造から、この部分のデータを移動します。したがって、トランザクションに含まれるデータが少なくなり、各トランザクションのサイズが小さくなり、ブロック全体の 1M のスペースにさらに多くのトランザクションを収容できるようになります。

ただし、このフィールドを削除すると、アップグレードされていないノードは、アップグレードされたノードによって生成されたブロックの検証を拒否することになります。しかし、拒否しないようにする方法はありますが、コードを書くのは非常に複雑です。とにかく、私は1年以上コードを書いてきましたが、まだ完成していません。コードが複雑になるほど、潜在的な脆弱性も増えます。 Bip 66 がソフトフォークによって引き起こされたハードフォークであったこと、そしてこの孤立した証人はさらに複雑であることを考えてみましょう。

この時点で、いわゆるソフトフォークで変更する必要がある「コンセンサス」とは、ブロックデータ構造形式の変更、またはトランザクションデータ構造形式の変更を指すことが改めて検証されました。

第8章 ソフトフォークとハードフォークによって変更される「コンセンサス」はデータ構造の変更である

ここで、不正確に定義された「コンセンサス」に混乱しないように、ソフトフォークとハードフォークが実際に何を行うのか、特にソフトフォークとハードフォークの違いは何かをまとめます。

ソフトフォークによって変更される「コンセンサス」とは、具体的には、ビットコインのトランザクションデータ構造の変更、またはビットコインのブロックデータ構造の変更を指します。

ハードフォークによって変更される「コンセンサス」とは、具体的には、ビットコインのトランザクションデータ構造の変更、またはビットコインのブロックデータ構造の変更を指します。

特定の変更されたオブジェクトのレベルでは、ソフトフォークとハードフォークの間に違いはまったくありません。これまで発生したフォーク、および今後発生する予定のフォークはすべてこのようになっています。これらはすべて、トランザクション データ構造またはブロック データ構造を変更するか、変更しようとします。

現在または計画中のハードフォークやソフトフォークでは、トランザクション履歴は変更されません。 2010 年 8 月 15 日に大量のコインが盗まれる原因となった抜け穴の場合も、トランザクション データ構造は変更されましたが、その副作用として、新しいトランザクション データ構造の定義ではそのトランザクションが違法であったため、ブロック内のトランザクションが無効になりました。

したがって、「コンセンサス」レベルの変更という点では、ソフトフォークとハードフォークの間には本質的に違いはありません。

では、ソフトフォークとハードフォークの違いは何でしょうか?

第9章 ソフトフォークとハードフォークの主な違いは、新旧ノード間の互換性である

違いは、古いノードと新しいノード間の互換性です。ソフトフォークによってデータ構造が変更されると、新しいノードによって生成されたトランザクションとブロックは古いノードによって検証され、受け入れられますが、ハードフォークではそれができません。

ハードフォークはデータ構造を変更するため、新しいノードによって生成されたブロックは古いノードによって拒否されます。古いノードがソフトウェアのアップグレードを拒否し、古いデータ構造に従ってマイニングを継続することを主張する場合、ビットコインは 2 つのチェーンを生成します。

ソフトフォークでは、アップグレードされたノードは新しいノードによって生成された新しいデータを受け入れることができないため、2 つのチェーンは存在しません。しかし、データ構造が本質的に異なり、全員がお互いを認識する必要があるため、ソフトフォークでは、新しいノードと古いノードによって生成されたデータに完全な互換性を持たせることは非常に困難です。ノードが異なるトランザクションまたはブロックの検証を拒否すると、ハードフォークになります。これが、Bip 66 ソフトフォークが最終的にハードフォークになった理由です。

第 4 章から、ソフトフォークを変更する具体的な方法は、マルチ署名ソフトフォークなどの元々定義されたフィールドを再定義することであることがわかります。または、CSV ソフトフォークなど、元々保持されていたフィールドを定義します。

しかし、今では、トランザクション データ構造から判断すると、すべてのフィールドが占有され、正確かつ詳細に定義されています。再度ソフトフォークを実行する場合は、一部のフィールドの元の定義を消去して再定義することしかできません。本来の機能が失われる可能性があります。この機能が不可欠である場合、新しいノードと古いノードが互いに拒否し合うハードフォークが発生します。したがって、ソフトフォークには特に注意してください。これが SegWit が行うことです。分離された証人は特定のフィールドを直接削除しますが、新しいノードと古いノード間の互換性を確保するためには、それは労力の無駄です。

ハードフォークでは、アップグレードされていないノードがアップグレードされたノードによって生成されたデータとコードを拒否するかどうかは考慮されないため、はるかに単純になります。

ソフトフォークとハードフォークを実現するために必要な互換性の違いを見てみましょう。

ソフトフォークとハードフォークを実現するために、新旧のノードによって生成される新旧のデータには、次の 6 つの大きな変更があります。

1. アップグレードされていない古いノード。

2. 新しいノードをアップグレードしました。

3. 古いノードで発生した古いトランザクション形式のトランザクション。

4. 新しいノード上で発生する新しいトランザクション形式のトランザクション。

5. 古いノードによって生成された古いブロックには、古いブロック形式のみが含まれます。

6. 新しいノードによって生成された新しいブロック形式を含む新しいブロック。

実際には、フルノードを含む他のより複雑な要素を考慮する必要があります。 SPV ノード。新旧ノードの計算能力の比率。 SPV マイニング ノード。未確認取引および複数の確認済み取引。 CSV トランザクション。 RBF トランザクション...これらはすべて互換性に関する考慮事項です。しかし、簡単にするために、ここでは上記の 6 つの主要な変更点についてのみ検討します。まずは表を作ってみましょう。

完全な互換性を確保するために、ソフトフォークには次の 2 つの条件が必要です。

1. アップグレードされたノードは、アップグレードされていないノードによって生成されたトランザクションとブロックを受け入れます(下位互換性)。

2. アップグレードされていないノードは、アップグレードされたノードによって生成されたトランザクションとブロックを受け入れます (前方互換性)。

ハードフォークで確保する必要がある互換性は、上記の最初の状況を満たすだけで済みます。つまり、新しいノードは、高さ 0 のブロックから始まるブロックチェーン全体を検証する必要があります。

これら 2 つの互換性を説明するために、例え話を使ってみましょう。

下位互換性は、実際には私たちにとって最も理解しやすいものです。つまり、Word 2013 を使用して Word 2010 バージョンのファイルを開くことができます。前方互換性とは、古いバージョンのソフトウェアでは、新しいバージョンのソフトウェアによって生成された、理解できないデータを無条件に受け入れる必要があることを意味します。これは、Word 2010 を使用して Word 2013 バージョンのファイルを開くようなものです。これがどれほど難しいことか分かりません。古いバージョンのソフトウェアは、まだ定義されていないデータをどのようにして認識できるのでしょうか?唯一できることは、これらの新機能を無視することです。

ハードフォークでは、このような複雑な互換性は考慮されておらず、まず第一に、前方互換性を拒否します。ハードフォークでは、アップグレードされていないノードがアップグレードされたノードによって生成されたブロックの検証を拒否するという問題は無視されます。認証されたくない場合は、アップグレードしない限り、私はあなたと一緒にプレイしません。

第10章 ソフトフォークとハードフォークの長所と短所の比較

ソフトフォークにより、アップグレードを望まないユーザーがアップグレードしないようにすることができます。アップグレードしたくないという要求は、実生活では非常に一般的です。

ハードフォークでは、すべての古いノードをアップグレードする必要があります。そうしないと、古いノードは新しいノードによって生成されたトランザクションとブロックを認識できず、ブロックチェーンが 2 つのチェーンに分割されます。

現在のビットコインのトランザクションデータ構造とブロックデータ構造のすべてのフィールドが詳細に定義されているため、ソフトフォークのアップグレードスペースは限られています。前方互換性を確保したい場合は、新しいフィールドを追加することはできません。そうしないと、古いノードによって拒否されます。したがって、ソフトフォークのアップグレードスペースは、主に既存のフィールドの再定義に限定されます。これには、ソフトフォークがブロックデータ構造内の「ブロックサイズ」フィールドを再定義できないという事実が含まれます。つまり、ソフトフォークは 100 万ブロックの突破を達成することは決してできません。さらに、この非常に複雑な互換性に少しでも誤りがあると、古いノードと新しいノードの互換性がなくなり、ハードフォークが発生します。これはすでに一度起こっています。

ハードフォークでは、古いノードによって生成されたトランザクションとブロックが受け入れられるかどうかのみを考慮する必要があるため、ハードフォークのアップグレードスペースははるかに大きくなります。ハードフォークでは、古いノードが新しいノードによって生成されたトランザクションとブロックを受け入れるかどうかを考慮する必要はありません。その後、ハードフォークにより、トランザクション データ構造とブロック データ構造にさらに大胆な変更を加えることができます。

最後に、ビットコインのトランザクション データ構造とブロック データ構造の両方に「バージョン番号」と呼ばれるフィールドがあり、これは「このトランザクションまたはブロックが参照するルールを明確にする」ことを意味します。これは、サトシ・ナカモトがハードフォークを使用してこれらのルールを変更したいということを意味し、ルールを変更する場合はバージョン番号を再定義する必要があります。ただし、ソフトフォークでは「バージョン番号」を変更せずにルールを変更します。

第11章 結論

「コンセンサス」という言葉は多くの人を騙してきました。実際、「コンセンサスを破壊しない」とパッケージ化されたソフトフォークは、本質的にはハードフォークと同じオブジェクトを変更しますが、さらに恐ろしいコストは前方互換性であり、アップグレードされていないソフトウェアは、アップグレードされたソフトウェアによって生成されたデータとコードを無視する必要があります。このリスクを負うことの利点は、ソフトウェアをアップグレードするのが面倒になることだけです。合理的な人なら誰でも、このリスクとリターンの比率を受け入れたくないと思うだろう。

(このテーマについてずっと書きたかったのですが、うまく書けないのではないかと不安でした。今日は勇気を出して書きました。書くのに丸一日かかりました。ぜひご覧ください。間違いがあれば指摘してください。役に立つと思ったら、コインで報酬をください。)


<<:  マスターカード幹部:ビットコインは気にしない、ブロックチェーン技術だけを気にする

>>:  ロボット取引はどのようにして高速ビットコイン取引を促進するのでしょうか?

推薦する

中国初のビットコインATMが上海張江にオープン

新華網、北京、4月15日(黄丹雷)ビットコインを受け取るには、ビットコインアドレスのQRコードを機械...

Ethereum マイニングの必読本です!グラフィックカードの計算能力の比較とマイニング収入計算リソースコレクション

最近、イーサリアムのマイニングが非常に人気になってきており、多くのマイナーがグラフィック カードのマ...

ブルームバーグ:ベネズエラ、仮想通貨を国際準備通貨として利用することを検討

ブルームバーグによると、事情に詳しい関係者が、ベネズエラ中央銀行が仮想通貨を内部で留保できるかどうか...

Provenenance はブロックチェーンを使用して消費者の信頼を回復します

国際貿易における偽造品や粗悪品の割合は劇的に増加している。国際商業会議所は、偽造品および海賊版の総額...

イーサリアムのガス料金は本当に高いのか?

文:郭新塵制作:ジャイロファイナンスイーサリアムのガス料金は本当に高いのでしょうか?ガス料金がこんな...

ブルームバーグが「暗号通貨」で先手を打ったが、トランプは抑えきれなかった!

【原文:Shilian Finance】 「大統領候補指名を勝ち取るかどうかに関わらず、トランプを...

70人以上のマカオ住民が鉱山会社に2000万香港ドルを騙し取られた

CoinJournalによると、8月4日、マカオ住民70人以上が騙されて、eスポーツおよびITサプラ...

BitTorrentのWebTorrentプロジェクトはビットコインとブロックチェーン技術を探求する

宝蔵時報コメント:BitTorrentは、ピアツーピアネットワークでのファイル共有に使用されるネット...

ビットコインは29,000ドルまで急落、イーサリアムは下落

暗号通貨市場全体は過去24時間で下落しました。ビットコインは日中に大きなV字反転を見せ、29,000...

イーサリアムがロンドンアップグレードを完了、「デフレ」の新時代を告げる

午後8時33分北京時間今夜、イーサリアムネットワークは確立されたブロック高12,965,000に到達...

データによると、ビットコイン価格が12,000ドルを突破したにもかかわらず、プロのトレーダーはショートポジションを増やしている

ビットコイン(BTC)が12,000ドルの抵抗を突破したため、デリバティブ市場は過度に強気になってい...

鉱業市場は崩壊しているのか?

はい!ビットコインのマイナーは停止しました。いいえ!これは「死のスパイラル」にはつながらないこの記事...

カナンクリエイティブの第3​​四半期の総収益は6億7000万人民元で、マイニングマシンの収益が98.3%を占めた。

米証券取引委員会(SEC)の公式サイトによると、マイニングマシンメーカーのカナンクリエイティブは10...