原作者: ヨハン
ブロックチェーンのフォークはソフトフォークとハードフォークに分けられます。この記事では、下位互換性をサポートしないソフトウェア アップグレードの方法であるハード フォークに焦点を当てます。ハードフォークとはコンセンサスの分割または変更です。コンセンサスとは、データの一貫性を達成するためのブロックチェーンシステム内の各ノードのアルゴリズムです。通常の状況では、各ノードは同じルールでアルゴリズムを実行する必要があります。たとえば、ビットコインはPoWに基づいて実行されます。 (workload Proof) コンセンサス、イーサリアムは以前は PoW コンセンサスでしたが、最近「The Merge」を通じて PoS コンセンサス アルゴリズムに切り替えられました。
分岐には多くの理由がありますが、これはブロックチェーンで非常に一般的な現象であり、通常はコンセンサス アルゴリズムに関連する短距離の分岐です。競合するブロックが同じ高さに現れることもありますが、最終的にはブロックが存在します。破棄され、1 つのブロックだけが保持されます。しかし、ハード フォークは異なります。この種のフォークは計画されており、目的があります。一部のノード クライアントは、元のネットワークとは異なるプログラム バージョンをデプロイしています。生成されたブロックはフォークされたチェーン上でのみ検証でき、元のネットワークでは検証できません。ネットワークは、元のネットワークからのブロックを受け入れるか受け入れません。たとえば、最近人気のある EthereumPoW (ETHW) フォークです。
最初のレベルのタイトル
ネットワーク層
フォークされたチェーンは元のネットワークから独立したブロックチェーンであるため、最初にネットワーク層 (P2P) で分離する必要があります。
1. シードノード
シード ノードはブートノードまたはシードノードとも呼ばれ、ブロックチェーンの開始時にネットワークが最初に接続を試みるノードです。フォークされたチェーンが開始されると、まずシード ノード リスト内のノードに接続して、ネットワーク内の他のピア ノードをさらに検出します。その後、ブロックをさらに同期して合意に達することができます。したがって、ノードが元のネットワークに接続できないようにシード ノードのリストを変更する必要があります。
2. エイリアンの攻撃
シード ノードのリストが変更されたとしても、フォークされたネットワークが元のネットワークに接続されなくなるわけではありません。ノードが誤って別のネットワークのノード接続を追加した場合、双方の P2P プロトコルは同じであるためです。 2 つのノードはハンドシェイクに成功し、相手がノード アドレス プールに追加されます。それだけでなく、双方のノードは自身のノードのアドレスを相互に共有することになり、双方向ネットワークのノード プールの相互汚染を引き起こすことになります。本件につきましては、スローミストにて別途開示させていただいております。「パブリックチェーンの衝突! P2P プロトコルによるエイリアン攻撃の脆弱性」。
アドレスプールの相互汚染の問題を解決するには、通信プロトコル上でネットワーク識別を行う必要があります。初期のイーサリアムはネットワーク分離をサポートしていませんでしたが、その後のバージョンでは、ネットワーク識別の記号として NetworkID がプロトコルに追加されました。NetworkID は通常、各チェーンの ChainID です。たとえば、イーサリアム メインネットの NetworkID と ChainID は両方とも 1、一方、ETHW の初期バージョンでは、NetworkID がフォークされておらず、エイリアン攻撃の脆弱性が存在する可能性があります。
最初のレベルのタイトル
コンセンサス層
1. トランザクションの分離
通常、ブロックチェーンと対話するときは、独自の秘密キーを使用してトランザクションに署名する必要があります。その後、トランザクションはネットワークにブロードキャストされ、マイナーまたはブロックプロデューサーによってブロックにパッケージ化されます。しかし、ブロックチェーンにフォークがある場合、トランザクションは 2 つのネットワークによって異なるブロックにパッケージ化される可能性があります。これが元のチェーン上の転送であると仮定すると、フォークされたチェーン上にも同じトランザクションが存在します。転送、明らかにこれは次のとおりです。予期しない動作により、資産の損失が発生する可能性があります。
このとき、トランザクションのリプレイを保護する必要があります。イーサリアムの初期バージョンでは、そのような保護はありませんでした。その後、EIP155 以降、ユーザーによって署名されたトランザクションが確実に署名されることを保証するために、トランザクション構造に ChainID が追加されました。現在のネットワークでのみ使用されます。 Ethereum がフォークされている場合、ChainID も再定義する必要があります。もちろん、フォークされたチェーンは古いブロックと互換性がある必要があるため、構成内の ChainID を変更するだけでは簡単ではありません。フォークの高さ 新しい ChainID を使用することによってのみ、フォークされたチェーンの正常な動作が保証されます。
ChainID はビットコインのトランザクション構造には存在しません。では、リプレイ保護はどのように行われるのでしょうか?ビットコインは UTXO と呼ばれるモデルを採用しています。簡単に言うと、アカウントではなくトランザクション (UTXO) を使用します。通常、新しく立ち上げられたネットワークには同じトランザクションが 2 つ存在せず、再生されるシーンもありません。
ただし、ハード フォークの場合は、2017 年の BCH フォークやその後の BSV フォークなど、トランザクション リプレイの問題が依然として残ります。 BCH のトランザクション データ署名に SIGHASH_FORKID (0x40) を追加することにより、BCH と BTC 上のトランザクションの互換性がなくなり、リプレイ保護の目的が達成されます。
2. 計算能力の調整
フォーク前は、元のチェーンがネットワーク全体の計算能力をすべて占有しているため、PoW コンセンサス アルゴリズムによれば、そのブロック生成の計算難易度は比較的高くなります。フォーク後、計算能力は異なるブロックチェーンに分散されますが、通常、フォークされたチェーンはコンセンサスが不十分なため、新しいブロックを生成するのに十分な計算能力を得ることができず、ブロックの成長が停滞します。このとき、フォーク後の初期計算の難易度を下げ、フォークチェーンの時間枠を獲得して計算能力を迅速に調整する必要があります。
3. 51% の攻撃を防ぐ
ネットワークとトランザクションは分離され、ブロックチェーンはフォークされ、新しいブロックはスムーズに生成され、すべてが正常であるように見えます。しかし、セキュリティ問題は依然として未解決であり、より一般的で防御が難しい攻撃、51% 攻撃が依然として存在します。
マイニングは利益を追求するものであり、フォーク コインが存在すると、マイニング収入が最も高い側のマイナーはそのネットワークに計算能力を切り替えますが、現実にはフォーク コインの通貨価格は低いことが多く、その結果、全体的な計算能力が非常に低い。 ETHW フォークを例にとると、2 マイナーの分析から、元の ETH ネットワークのピーク計算能力は 900TH/s を超えているのに対し、この記事の執筆時点では ETHW の計算能力はわずか約 30TH/s であることがわかります。大量の計算能力は良いことではなく、ETHW に対する 51% 攻撃がいつでも開始される可能性があります。
最初のレベルのタイトル
アプリケーション層
仮想マシンに基づくスマート コントラクトなど、トランザクションに基づくアプリケーションをアプリケーション層に分類します。ブロックチェーンがフォークされると、ブロックチェーン上で実行されているアプリケーションにも大きな影響を与えます。
1. 署名の再生
署名リプレイは、前述のトランザクション リプレイと同じです。Gnosis Safe などの一部のコントラクトでは、コントラクト内のユーザーの署名が各チェーンでリプレイされるため、資産が失われます。
2. 神託は失敗する
フォーク後のブロックチェーン内のスマート コントラクトのほとんどは、トークン コントラクトや AMM コントラクトなど、通常どおり実行できます。これらの自己実行システムは、オフチェーン データに依存せずに安定して実行できますが、MakerDAO のような融資システムは、オラクルデータの価格は、チェーンから価格フィードのサポートを失うと、動作を継続できなくなります。
3. 劇的な価格変動
ブロックチェーンはフォークされており、アプリケーションは 2 つのチェーンで同時に実行されます。ユーザーはどちらのチェーンを使用する必要がありますか?どちらが「正統派」なのでしょうか?この質問はコンセンサスに戻りますが、通常、どのブロックチェーンがオーソドックスなコンセンサスを持っていれば、そのブロック上の資産は元の価値のコンセンサスを保持しますが、他のブロックチェーン上の資産は瞬時にその価値を失います。
要約する
要約する
これまで、ブロックチェーンのフォークのセキュリティをネットワーク層、コンセンサス層、アプリケーション層から分析してきましたが、技術的なリスクが存在することがわかりました。さらに、多くのフォークの背後には、技術的な変化の必要性だけでなく、直接的な商業的利益を伴うものもあり、たとえば、開始者はフォークでフォークされた大量のコインを直接取得するため、ユーザーはこれらを正確に理解し、不当な必要損失を回避する必要があります。 。
ブロックチェーンは分散型システムであり、そのアップグレードが単一の個人や組織に依存しないため、ブロックチェーンにおけるフォークは避けられず、コミュニティのユーザーに混乱をもたらす一方で、社会により良いサービスを提供するためのシステムの開発を促進します。