ブロックチェーンを語る(22):ソフトフォークとハードフォークの深い理解

ブロックチェーンを語る(22):ソフトフォークとハードフォークの深い理解

ビットコインコミュニティは、Segregated Witness (SegWit) をアップグレードするためにソフトフォークを使用することを議論しています。現在多くの論争が起きています。一方では、Segregated Witness 自体をめぐる論争があり、他方では、ソフトフォークによって引き起こされた論争があります (Segregated Witness はハードフォークを使用してアップグレードされるべきだと考える人もいます)。本日は技術的な観点から総合的に分析してみたいと思います。

ハードフォークとソフトフォークに関連する問題は、分散ノードソフトウェア、プロトコル、およびバージョンアップグレードです。それは非常に重要な問題であり、議論する価値があります。

最初は、すべてのノードが同じソフトウェアを実行し、同じコンセンサス プロトコルに従い、同じブロックチェーンを維持します。現時点では、一部のノードはソフトウェアの新しいバージョンにアップグレードされ、新しいコンセンサス プロトコルを備えています。次の 4 つの状況が発生します。

  1. 新しいノードは、古いノードによって発行されたブロック/トランザクションを正当なものとみなします。

  2. 新しいノードは、古いノードによって発行されたブロック/トランザクションが不正であると判断します。

  3. 古いノードは、新しいノードによって発行されたブロック/トランザクションが正当であると信じます(変更に気付かずに)。

  4. 古いノードは、新しいノードによって発行されたブロック/トランザクションが不正であると信じています(変更を検出しました)。

注:違法性は、すべての取引の違法性と一部の取引の違法性に分けられます。モデルを簡素化するために、何らかの違法性があるすべての取引は違法取引として分類されます。

実際の状況は、上記の 4 つの状況が組み合わさったものです。さらに、新しいノードと古いノードの計算能力の比率という別の次元を追加する必要があります。これは、次の 2 つのタイプに分けられます。

  1. 新しいノードの計算能力 > 50%;

  2. 新しいノードの計算能力 <50%;

現在ウェブサイトで見られるソフトフォークとハードフォークに関するすべての情報は、新しいノードの計算能力が 50% を超える状況に基づいて説明されていることに注意してください。ここでは、50% を超える新しいノードのコンピューティング能力についてのみ説明します。別のケース、つまり新しいノードの計算能力が 50% 未満の場合は、状況がまったく異なることに注意してください。

ソフトフォークは後から登場した用語であり、それ以前には存在しませんでした。まず、ハードフォークとは何かについて説明しましょう。

ハードフォークとは何ですか?

ハードフォークとは、新しいバージョンのソフトウェア (またはプロトコル) がシステムに登場し、以前のバージョンのソフトウェアと互換性がない場合、古いノードは新しいノードによってマイニングされたブロックの全部または一部を受け入れることができず (違法とみなされる)、同時に 2 つのチェーンが出現することを意味します。新しいノードの計算能力が優れていても、たとえば、計算能力の 99% が新しいノードに属していても、古いノードの 1% は依然として別のチェーンを維持します。これは、古いノードは新しいノードによって生成されたブロックを受け入れることができないためです (ネットワーク上のノードの 99% がブロックを受け入れたことがわかっていても)。これをハードフォークといいます。

注: 上記の状況は、新しいノードの計算能力が 50% を超えることを前提としています。

ハードフォークが必要な場合は、すべてのノードに同時にソフトウェアをアップグレードすることを要求する必要があり、アップグレードされていないノードは正常に動作しません。多くの古いノードがアップグレードを望まない場合、それらは完全に異なるチェーンで動作します (これが私たちの ETC です)。

下の図は、ハードフォークの理由を示しています。新しいノードの要件は、古いノードよりもはるかに緩和されています。

ソフトフォークとは何ですか?

ソフトフォークとは、新しいバージョンのソフトウェア (またはプロトコル) がシステムに登場し、以前のバージョンのソフトウェアと互換性がない場合、新しいノードは古いノードによってマイニングされたブロックのすべてまたは一部を受け入れることができない (違法とみなす) ことを意味します。新しいノードの計算能力が優れているため、古いノードによってマイニングされたブロックは認識される機会がありません。新しい当事者と古い当事者の両方が最初から最後まで同じチェーン上で作業します。これはソフトフォークと呼ばれます。

注: 上記の状況は、新しいノードの計算能力が 50% を超えることを前提としています。

下の図はソフトフォークの理由を示しています。新しいノードの要件は古いノードよりもはるかに厳しいのです。

ソフトフォークとハードフォークの長所と短所

上記の定義から、ソフトフォークとハードフォークにはそれぞれ長所と短所があることがわかります。まず、ソフトフォークにはハードフォークに比べて次のような利点があります。

  1. ソフトフォークには常に 1 つのチェーンのみがあり、2 つのチェーンに分割されるリスクはありません。

  2. ソフトフォークでは、すべてのノードを同時にアップグレードする必要はなく、段階的なアップグレードが可能であり、ソフトフォークプロセス中のシステムの安定性と有効性に影響を与えません。

しかし、ソフトフォークには欠点もあります。

  1. ソフトフォークの前提は、古いノードが常に新しいノードからのブロックを受け入れることができるということであり、そのためにはシステムが前方互換性を持つように設計される必要があります。

  2. ソフトフォークは常に古いノードを欺くことに基づいており、古いノードが実際に行われた変更に気付くのを妨げます。これは、ある意味では、単一ポイントの完全な検証の原則に違反しています。

上位互換性

前方互換性は非常に興味深い用語であり、ソフトウェア設計における後方互換性について通常語る方法とは異なります。新たなブロック形式や合意形成メカニズムの可能性について事前に判断する必要があり、古いシステムに余地やバックドアが残されます。新しいノードがデプロイされると、古いノードは新しいノードによって生成されたブロックを受け入れることができます。

では、ビットコインでは前方互換性はどのように実現されるのでしょうか?

答えは、「非標準トランザクション」です

ビットコインでは以下のルールが設定されています。

  1. すべてのトランザクションを、標準トランザクション、非標準トランザクション、無効なトランザクションの 3 つのタイプに分類します。

  2. 違法な取引が発見された場合は拒否されます。不正なトランザクションがブロック内にある場合、ブロック全体が拒否されます。

  3. 標準構成では、すべてのノードは非標準トランザクションに対して次の態度をとります。

    1. 転送しない

    2. 受け入れられない

    3. 包装なし

  4. ブロックに入った非標準トランザクションに対しては、次の処理が行われます。

    1. ブロックを受け入れます。

    2. 非標準トランザクションを含むブロック内のすべてのトランザクションは、既存のルールに従って検証されます。

以下では、2 つの例を使用して、ビットコインがソフトフォークのアップグレードに非標準のトランザクションを使用する方法を説明します。

1. P2SHソフトフォークアップグレード

P2SH は BIP16 に含まれており、ソフトフォークを通じてビットコイン システムをアップグレードし、ビットコインが P2PKH のサポートに基づいて P2SH と呼ばれる標準トランザクション タイプをサポートできるようにします。

これに先立ち、ビットコインはすでに次のスクリプトをサポートしていました:「OP_HASH160 [20バイトのハッシュ値] OP_EQUAL」。このようなスクリプトを使用するには、ハッシュ値の原画像をスタックにプッシュするだけです。

P2SH は上記の条件に対してより厳しい制限を課します。 P2SH モード (新しいノード) では、ハッシュ値の元のデータを提供するだけでなく、次の点も確認する必要があります。

  1. メタデータは実行可能なスクリプトです。

  2. スクリプトの実行結果は true を返します。

  3. スクリプトには「データのプッシュ」操作を含めることはできません。

  4. その他の制限事項:

P2SH をサポートする新しいノードが展開され、新しいノードの計算能力が 50% を超える場合 (P2SH のアップグレードには 55% 以上が必要)、システムは次の動作状態になります。

  • P2SH トランザクションが古いノードに転送されると、古いノードによって非標準トランザクション (新しいまたは理解できない OP_CODE を持つ) として識別され、古いノードはそれを受け入れたり、パッケージ化したり、転送したりしません。

  • P2SH トランザクションを含むブロックが古いノードにブロードキャストされると、古いノードはブロックを受け入れ、元のルールに従って P2SH トランザクションを検証します。古いルールでは元のデータのハッシュが等しいかどうかのみを検証する必要があるため、結果は合格になります (明らかに等しいです)。

  • 古いノードは、元のデータ 123456 を使用してスクリプト出力を作成し、その出力を使用しました。古いノードはそれを受け入れることができます。ただし、新しいノードにブロードキャストする場合、新しいルールに従って通過しません (スクリプトである必要があります...)、新しいノードはそれを受け入れることを拒否し、違法であると見なし、トランザクションをパッケージ化しません。トランザクションが古いノードによってパッケージ化された場合でも、新しいノードによって拒否されます。新しいノードがコンピューティング能力の大部分を制御するため、このようなトランザクションは決して有効になりません。

  • システムは一度に 1 つのチェーンを維持します。

P2SH アップグレードの詳細:

  1. P2SH をサポートするマイナーに、コインベース取引に「/P2SH/」を含めることを義務付ける。

  2. 2012年2月1日、前週の全ブロック(約1,000個)をチェックし、550個以上(約55%)含まれていた場合、P2SHが有効化されました。

2. SegWitソフトフォークアップグレード

SegWit は主に BIP141-144 に含まれており、ソフトフォークを通じてビットコイン システムをアップグレードし、ビットコインが一連の SegWit 機能セットをサポートできるようにします。 Segregated Witnessの詳細については、「ブロックチェーンを語る(21):ビットコインのSegregated Witness」を参照してください。

ソフトフォークによるアップグレードでは、古いノードが新しいトランザクションを非標準のトランザクションとして認識する必要がありますが、同時に合法である必要があります。 Segregated Witness はこれをどのように行うのでしょうか?答えは、誰でも使用できる出力トランザクションです。

誰でも使える:

誰でも使える例を次に示します。

 scriptPubKey: (空)

このような出力を使用するには、次のような署名スクリプトを提供する必要があります。

スクリプト署名: OP_TRUE

Segregated Witness は、スクリプトのバージョン管理と誰でも使用できる機能を完璧に組み合わせています。標準的な P2WPKH 出力は次のとおりです。

 scriptPubKey: 0 <20バイトのキーハッシュ>
                (0x0014{20バイトのキーハッシュ})

先頭の 0 は、新しいノードではスクリプトのバージョン番号となり、古いノードでは誰でも使用できる出力となります。

SegWit をサポートする新しいノードが展開され、新しいノードの計算能力が 50% を超える場合 (SegWit のアップグレードには 95% 以上が必要)、システムは次の動作状態になります。

  • SegWit トランザクションが古いノードに転送されると、古いノードによって非標準トランザクション (誰でも使用できるトランザクション) として識別され、古いノードはそれを受け入れたり、パッケージ化したり、転送したりしません。

  • SegWit トランザクションを含むブロックが古いノードにブロードキャストされると、古いノードはブロックを受け入れ、元のルールに従って SegWit トランザクションを検証し、結果が渡されます (誰でも使用できるため)。

  • 古いノードは、SegWit トランザクションは誰でも使用できるため、それを使用しようとします。古いノードはそれを受け入れることができます。ただし、新しいノードにブロードキャストする場合、新しいルール (分離された証人の検証ルール) は渡されません。新しいノードはそれを受け入れることを拒否し、違法とみなして、トランザクションをパッケージ化しません。トランザクションが古いノードによってパッケージ化された場合でも、新しいノードによって拒否されます。新しいノードがコンピューティング能力の大部分を制御するため、このようなトランザクションは決して有効になりません。

  • システムは一度に 1 つのチェーンを維持します。

SegWit アップグレードの詳細:

  1. SegWit をサポートするには、コア 0.13.1 以上にアップグレードしてください。

  2. 2017 年 11 月には、コンピューティング能力の 95% がサポートすれば、SegWit が有効になります。

1MB 制限に関する問題:

古いノードの場合、1MB を超えるブロックは非標準トランザクションではなく、不正なトランザクションです。この問題を解決するために、SegWit は古いノードを欺くというトリックを極限まで利用します。 Witness 部分全体を元のブロックの外側に配置します。古いノードは、受信したブロック全体の背後に監視構造があることを認識していません。

結論

分散型および分散型のシステムのアップグレードは、将来の主要な課題の 1 つになります。ソフトフォークとハードフォークの両方が重要な役割を果たします。ソフトフォークソリューションはよりスマートであり、ブロックチェーンフォークを効果的に防止できます。しかし、それはソフトウェアの前方互換性、古いノードの欺瞞、そして古いシステムに確保されている手段やバックドアに依存しています。

場合によっては、ソフトフォークを実装するために、単純に設計できたはずの機能をより複雑に設計する必要があり、バグのリスクが高まり、コストに見合わないことになります。

それにもかかわらず、ソフトフォークはハードフォークに比べて依然として大きな利点があり、よりスムーズなアップグレードが可能になり、コミュニティ分裂のリスクが軽減されます。

SegWit がソフトフォークであるべきかハードフォークであるべきかという議論については、すでにあなた自身の意見があると思います。 WeChat の公開アカウントで著者に返信して意見交換をしてください。

<<:  コインゾーントレンド: 今週のビッグデータに基づくビットコインの価格動向 (2017-02-20)

>>:  ビットコインの専門家: ビットコインの価値を押し上げている主な要因は 2 つあります。政府と銀行はビットコインを新たな高みへと押し上げている

推薦する

SEC議長、FTX再開は間近と発言?

11月9日、米国証券取引委員会(SEC)のゲイリー・ゲンスラー委員長は、法的枠組み内でFTXを再開...

バイナンスはシンガポールでSGD取引ペア、SGD決済方法、その他の暗号通貨サービスの提供を停止

Binanceの発表によると、同社は2021年9月10日午前4時(UTC)にシンガポールでのSGD取...

雇用の好調な兆候:Apple はついに暗号通貨に参入するのか?

Appleは現在、スマートフォン分野におけるブランドの優位性により、世界で最も価値のある企業の一つ...

イーサリアムの難易度爆弾が5度目の延期、POWの確定が再び延期される可能性

8月20日、イーサリアムのコア開発者ティム・ベイコ氏は開発チームの電話会議のレビューで、12月のディ...

2024 年の暗号通貨投資に関する 12 のホットな物語

強気相場が本格化している。ビットコインは史上最高値の7万ドルを突破し、イーサリアムの価格は再び一時4...

F2POOL Fishpond——Shenmao M10 マイナーレビュー

最近の暗号通貨市場の低迷により、マイニングマシンの価格が大幅に下落しました。現在、マイニングマシンの...

世界経済フォーラム: ブロックチェーンは金融取引のゲームのルールを変える

世界経済フォーラム(WEF)第10回ニューチャンピオン年次総会が6月26日から28日まで中国天津で開...

英国財務省はビットコインウォレットプロバイダーにマネーロンダリング防止規則を強制しない

クレイジー解説:昨年、デジタル通貨企業にマネーロンダリング防止規制(AML)を課すという最初の発表に...

ビットコインは新たな上昇サイクルに入り、コインのマイニングと貯蔵が第一の選択肢となる

12月以来、ビットコインの急騰は多くの主流メディアの注目を集めています。 CCTVファイナンスチャン...

ブロックチェーン技術DAppスタートアップ開発はブロックチェーン業界への投資の好機でもある

市場動向や金融プラットフォームが発表した情報によると、ブロックチェーン技術の応用プロジェクトや投資の...

国内裁判所が初めてビットコイン盗難事件を受理、取引プラットフォームのセキュリティは無視できない

7月25日、国内の裁判所は初めてビットコイン盗難事件を受理した。 Bibei.comのユーザーである...

サトシ・ナカモトは「2010年のクジラ」なのか? BTCを売っていましたか?

研究者たちは、ビットコインの創始者サトシ・ナカモトが休眠状態になったことはなく、それ以来ずっと初期の...

鄒俊:金融分野で障害に遭遇した場合、ブロックチェーンが最も突破できる可能性が高いのはどこですか?

著者: 鄒俊、浦東イノベーション研究所研究員メラニー・スワン氏は、「ブロックチェーン:新経済の青写...

鉱業は赤字状態にあるが、鉱業会社の数は急増している

2018年を通じて、暗号通貨市場は10年間の歴史の中で4番目にひどい調整を経験し、ビットコインの価値...

Coinw Exchangeにログインできず、資金を引き出すことができません。これは崩壊と脱出の兆候でしょうか?

現在の環境では、暗号通貨業界のほぼすべての取引所が内部および外部のトラブルのジレンマに直面しています...