ブロックチェーンを語る(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 つあります。政府と銀行はビットコインを新たな高みへと押し上げている

推薦する

Nervos DAO はどのような DAO ですか?

編集者注: この記事は Tuoluo Finance (ID: tuoluocaijing) からの...

5大マイニングプールが「強制寄付」を要求、BCHマイナーは4200万元を支払う決意か?

テキスト |黄雪嬌制作 |オデイリープラネットデイリー1月22日、BTC.TOP CEOの江卓爾氏は...

デビッド・リー氏が正式にビットコイン・チャイナのCEOに就任

12月1日、中国ビットコイン(CHBTC.COM)は、デビッド・リー氏が今後正式に中国ビットコインの...

男が会社からビットコインを盗み、起訴を待つ間に紛失

マイニングは難しく、既製のビットコインを購入する余裕もないため、ビットコインを盗もうと考える人もいま...

消費者金融モデルの革新とビッグデータのセキュリティ - 第 8 回 Fintech and Payment Innovation 2016 年次会議ですべて紹介

第8回フィンテックおよび決済イノベーション2016年次イベントが11月16日から18日まで上海で開催...

CCTVニュース放送:「仮想通貨」の名を騙った違法な資金調達にご注意

今夜、CCTVニュースネットワークは「『仮想通貨』の名による違法な資金調達の防止」というニュースを放...

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

取引量は減少し、様子見ムードが高まっている1. 市場動向<br/>今日は2017年1月2...

Filamentはブロックチェーンを使用してIoTシステム全体をアップグレードします

クレイジーな解説:米国のブロックチェーンスタートアップであるFilamentは、ブロックチェーン技術...

ビットコインスタートアップのBitPesaがケニアのモバイル決済大手Safaricomを訴える

ケニアのメディア「デイリー・ネーション」によると、火曜日、ビットコイン新興企業ビットペサとそのパート...

ベトナム、仮想通貨マイニング機器の輸入停止を確認

ホーチミン市(HCM)税関は、国内の企業および個人が7月初旬から仮想通貨マイニング機器の輸入を完全に...

雲翔ブロックチェーンは300万人民元の資金調達により、アライアンスチェーンとプライベートチェーンの応用を加速

2016年7月12日、雲翔ブロックチェーンは杭州林潮資産管理有限公司から300万人民元のエンジェルラ...

中央銀行は「中国金融業界の情報技術発展のための第13次5カ年計画」を発表した。

中国人民銀行は6月27日、「中国金融業情報化発展第13次5カ年計画」(以下、「計画」という)を発表し...

ビットコインは本当に2030年までの準備通貨になれるのか?

2015年にマジスター・アドバイザーズが発表した調査レポートによると、ビットコインは2030年まで...