ハードフォークとソフトフォークの説明
目次
はじめに
ブロックチェーンネットワークでは誰が意思決定をしているのか?
フォークとは?
ハードフォーク vs ソフトフォーク
ハードフォークとソフトフォーク、どちらが良いか?
まとめ
ハードフォークとソフトフォークの説明
ホーム記事
ハードフォークとソフトフォークの説明

ハードフォークとソフトフォークの説明

中級者
Published Nov 29, 2018Updated Aug 24, 2021
8m


コンテンツ


はじめに

スマートフォンのデジタルバンキングアプリのアップデートを促された場合、疑う余地なくアップデートを自身で行うか、自動アップデートを選択している可能性があります。これは必要なプロセスであり、ソフトウェアの最新バージョンをインストールしない場合、サービスへのアクセスが拒否される危険性があります。

オープンソース仮想通貨では、状況は大きく異なります。ビットコインを使用するために、ビットコインを支えるコードをすべて読む必要はありませんが、そうするかしないかを選択することは重要です。ここには階層構造がなく、アップデートをプッシュして思うように変更が可能な銀行もありません。その結果、ブロックチェーンネットワークに新しい機能を実装することは困難なことになります。
この記事では、中央機関がないにもかかわらず、なぜ仮想通貨ネットワークのアップグレードが可能なのか、その方法について説明していきます。そのためには、ハードフォークソフトフォークという2つの異なるメカニズムを使用します。 


ブロックチェーンネットワークでは誰が意思決定をしているのか?

フォークの仕組みを理解するには、まずネットワークの意思決定プロセス(またはガバナンス)に関わる参加者を理解することが重要です。
ビットコインでは、開発者、マイナー、フルノードユーザーの3つのサブセットに区別することができます。これらは実際にネットワークに貢献している当事者です。ライトノード(すなわち、携帯電話やラップトップなどのウォレット)は広範囲に使用されていますが、ネットワークに関する限り、実際には“参加者”ではありません。


開発者

開発者はコードの作成と更新を担当します。一般的な仮想通貨については、誰でもこのプロセスに貢献できます。コードは公開されているので、他の開発者がレビューできるように変更点を提出することが可能です。


マイナー

マイナーとは、ネットワークを保護するものです。彼らは仮想通貨のコードを実行し、ブロックチェーンに新しいブロックを追加するためにリソースを割り当てます。 例えば、ビットコインのネットワークでは、プルーフ・オブ・ワーク(作業証明)を介して使用しています。その努力に対してブロック報酬という形で彼らは収益を得ます。


フルノードユーザー

フルノードは仮想通貨ネットワークのバックボーンです。彼らは、ブロックとトランザクションを検証し、送受信を行い、ブロックチェーンのコピーを保持します。


これらのカテゴリーは重複していることがよくあります。例えば、開発者でフルノードユーザーになることも可能で、マイナーでフルノードユーザになることも可能です。3つすべてになることもあれば、どれにもならないこともあります。実際、仮想通貨の多くのユーザーは、これらの役割のどちらにも就いていません。その代わりに、ライトノードまたは中央集権型サービスを使用することを選択します。

上記の説明を見ると、開発者とマイナーがネットワークの意思決定を行うための強力なケースを作成することができます。開発者がコードを作成しなければ、実行するソフトウェアも、バグを修正したり新機能を追加する人もいないでしょう。マイナーがネットワークを保護し、 健全なマイニング競争がなければ、チェーンは乗っ取られるか、粉砕されて停止するかもしれません。
もし、この2つのカテゴリーがネットワークの他の部分を彼らの意志に従うように強制したとしても、良い結果にはならないでしょう。多くユーザーにとって、真の力はフルノードに集中しています。これは主に、ネットワークがオプトイン方式であり、ユーザーは自身が使用しているソフトウェアを選択できるからです。 
開発者はあなたの家に侵入して、ビットコインコアのバイナリをダウンロードするよう強要しているわけではありません。もしマイナーがユーザーに望まない変更を強要し、“マイウェイかハイウェイか”という態度をした場合、ユーザーはハイウェイを利用するだけです。 
これらの当事者は強力な支配者ではなく、サービス提供者です。もし人々がネットワークを使用しないと決意したら、仮想通貨の価値は低下します。価値の損失はマイナーに直接影響を与えます(ドル表示の場合、報酬の価値が下がります)。開発者に関しては、ユーザーから無視されるだけです。
ソフトウェアがプロプライエタリというわけではありません。思うように編集することが可能で、変更したソフトウェアを他ユーザーが実行していれば、全員でコミュニケーションを取ることができます。その場合、ソフトウェアをフォークして、新しいネットワークを作成します。


フォークとは?

ソフトウェアのフォークは、ソフトウェアがコピーおよび変更された時点で発生します。元のプロジェクトは存続しますが、新しいプロジェクトとは別の方向性を持つものになります。あなたが気に入っている仮想通貨のコンテンツウェブサイトチームの方向性で大きな意見の相違があった場合、チームの一部は、別のドメインでサイトを複製するかもしれません。しかし、今後は、オリジナルとは異なるタイプのコンテンツを投稿することになるでしょう。

プロジェクトには共通の基盤があり、歴史を共有しています。後に2つに分割される1本の道路のように、現在ではそれらの経路に永続的な分岐があります。

この種のことはオープンソースプロジェクトでよく起こり、ビットコインイーサリアムが登場する以前から起こっていたことに注意してください。しかし、ハードフォークとソフトフォークの区別は、ブロックチェーン空間に限定されたことではありません。それらについてもう少し議論してみましょう。



ハードフォーク vs ソフトフォーク

ハードフォークとソフトフォークは、似たような名前を持ち、最終目的は同様にもかかわらず、大きく異なります。それぞれについて見ていきましょう。


ハードフォークとは?

ハードフォークとは、後方互換性のないソフトウェアアップデートのことです。一般的には、ノードが古いノードのルールと競合する方法で新ルールを追加した場合に発生します。新しいノードは、新しいバージョンを操作する他のノードとのみ通信できます。その結果、ブロックチェーンは分割され、古いルールと新しいルールの2つのネットワークが作成されます。


ノードは更新されると青色に変化します。古い黄色のノードはそれらを拒否し、青色のノード同士接続します。


要するに、現在2つのネットワークが並行し稼働しているということです。どちらもブロックとトランザクションを伝搬し続けますが、同じブロックチェーン上では動作していません。フォークの時点まではすべてのノードが同一のブロックチェーンを保持していましたが(履歴は残っています)、その後は異なるブロックとトランザクションを保持することになります。



共有していた履歴があるので、フォークの前に仮想通貨を保有していた場合、両方のネットワーク上で仮想通貨を保有することになります。ブロック600,000でフォークが発生したときに5BTCを持っていたとします。その5BTCをブロック600,001の古いチェーンに使用することは可能ですが、新しいブロックチェーンのブロック600,001には使用できません。暗号方式が変更されていないと仮定すると、あなたの秘密鍵はまだフォークしたネットワーク上で5コインを保持しています。 
ハードフォークの例として、2017年のフォークで、ビットコインが2つの別々のチェーン、オリジナルのビットコイン (BTC)と新しいビットコインキャッシュ(BCH)に分裂しました。このフォークは、スケーリングへ最善のアプローチをめぐって多くの議論が行われた後に発生しました。ビットコインキャッシュの支持者たちはブロックサイズの拡大を望んでいましたが、ビットコインの支持者たちはこの変更に反対しました。
ブロックサイズの増加にはルールの変更が必要です。これはSegWitのソフトフォーク以前のことで、ノードは1MB以下のブロックしか受け付けませんでした。2MBのブロックを作成し有効でも、他のノードは拒否していました。

サイズが1MB以上のブロックを許可するようにソフトウェアを変更したノードだけが、それらのブロックを受け入れることができます。もちろん、これは以前のバージョンとは互換性がなく、同じプロトコルの変更を行ったノードだけが通信可能となります。


ソフトフォークとは?

ソフトフォークは後方互換性のあるアップグレードであり、アップグレードされたノードがアップグレードされていないノードと通信できることを意味します。通常、ソフトフォークには、古いルールと衝突しない新ルールが追加されています。
例えば、ブロックサイズの縮小はソフトフォークで実装できます。ブロックの大きさには制限がありますが、小さいブロックには制限がありません。一定のサイズ以下のブロックだけを受け入れたい場合、大きいブロックを拒否する必要があります。

ただし、自動的にネットワークから切断されるわけではありません。このれらのルールを実装していないノードとの通信は継続しますが、渡された情報の一部は除外されます。

ソフトフォークの良い実例は、前述のSegWitフォークで、ビットコインとビットコインキャッシュの分裂直後に発生しました。SegWitはブロックとトランザクションの形式を変更するアップデートでしたが、巧妙に細工されていました。古いノードでもブロックとトランザクションを検証することは可能でしたが(形式はルールを破ることはありませんでした)、理解できませんでした。一部のフィールドは、ノードが新しいソフトウェアに切り替えたときにだけ読み取り可能で、追加データが解析できるようになっています。



SegWitの起動から2年経っても、すべてのノードがアップグレードされているわけではありません。メリットはありますが、ネットワークを破壊するような変更ではないため、緊急性がありません。


ハードフォークとソフトフォーク、どちらが良いか?

基本的に、上記のようなタイプのフォークはどちらも異なる目的を持っています。議論の多いハードフォークはコミュニティを分裂させる可能性がありますが、計画的なフォークは、全員が同意した上でソフトウェアを自由に変更することができます。

ソフトフォークの方が優しい選択肢です。一般的に言えば、新しい変更が古いルールと衝突しないよう、できることはより制限されています。ただし、互換性を維持できるような方法でアップデートが作成される場合、ネットワークの分裂化を心配する必要はありません。


まとめ

ハードフォークとソフトフォークは、ブロックチェーンネットワークの長期的な成功にとって極めて重要です。中央権威がないにもかかわらず、分散型システムでの変更やアップグレードを行うことを可能にしてくれます。

フォークは、ブロックチェーンや仮想通貨が開発される際に、新機能を統合することを可能にします。このようなメカニズムが存在しなければ、トップダウンで制御できる中央集権型システムが必要になります。そうでなければ、プロトコルの存続期間中、全く同じルールに縛られることになってしまいます。