スペースチェーン:この新しいビットコインサイドチェーンの提案はどのように機能するか

ソースノード: 1544330

Spacechains は、ブラインド マージ マイン設計を利用した一方向のペグ メカニズムを提供する提案された Bitcoin サイドチェーンです。

ビットコインのスケーリングおよび機能拡張メカニズムとしてのサイドチェーンのアイデアは、非常に古い概念です。 サイドチェーンの一種の基本的な「祖先」のアイデア、 採掘されたチェーンをマージする、サトシがいなくなる前にまでさかのぼります。

その提案は、チェーン間で何かを移動する能力を持たずに、同じグループのマイナーによって採掘されている XNUMX つの完全に分離した関連のないチェーンの単純なアイデアでした。 の オリジナルのサイドチェーンの提案 2014 年に、論文が発表されてから文字通り XNUMX 週間ほど後に Blockstream を見つけた多くの人々によって作成されました。 基本的なアイデアは、メインのビットコイン ブロックチェーンと他のサイドチェーンの間でコインを行き来できるようにすることでした。単純な支払い検証 (SPV) 証明を使用して、あるチェーンから別のチェーンにコインを送信する際に有効であることを証明します。 これは、チェーンの再編成に関する実装の複雑さ、盗難の可能性、およびマイニングの集中化のリスクのために実現することはありませんでした (これらすべてについては、 Bitcoin白紙).

サイドチェーンのペグ メカニズムには、XNUMX 方向と XNUMX 方向の XNUMX 種類があります。 意味は明らかです。双方向ペグでは、コインは親チェーンとサイドチェーンの間で前後に移動でき、一方向ペグでは、親チェーンからサイドチェーンにのみ移動でき、戻ることはありません。 現在、Bitcoin に実装されている双方向のサイドチェーン ペグの唯一の形式は、フェデレーション コンセンサスによるものです。つまり、ペグは、マルチシグ ウォレットのサイドチェーンにペグされた資金が引き出されるまで管理を維持する、信頼できる一連の「カストディアン」によって保証されます。

しかし、人々は連携していないサイドチェーンペグの他のデザインに取り組み続けてきました. ここでは、一例として、Ruben Somsen の Spacechain の提案について説明します。 これは、ブラインドマージ鉱山の設計を使用した一方向のペグメカニズムであり、 ポール・シュトークの。 これは、コインはサイドチェーンにのみ入ることができ、決して出ることはなく、マイナーはサイドチェーンをマイニングするための報酬を得るために新しいソフトウェアを実行する必要がないことを意味します (ただし、後で説明するように、そうすることでより多くの利益を得ることができます)。

スペースチェーンの提案

マージ マイニングでは、マイナーがビットコイン チェーンとマイニングしている他のチェーンの両方のノードを実行して、両方のチェーンのブロックをコンパイルし、マイニングしているビットコイン ブロック ヘッダーでそれらにコミットする必要があります。 ブラインド マージ マイニングは、実際には、Bitcoin マイナーは他のチェーンのブロック ヘッダーを自分の Bitcoin ブロックにコミットする必要があるだけであり、他の誰かが実際に他のチェーンのブロックをまとめる手間をかけることができるという事実を利用しています。

これに対して Somsen が提案したメカニズムを利用することができます。 なし (APO) は、Bitcoin メイン チェーン ブロックごとに XNUMX つのブロックのみをコミットできることを保証しながら、誰もが次のサイドチェーン ブロックを構築するために競争できるようにするためのオープンな競争を許可します。 ルーベンの提案のもう XNUMX つの利点は、スペースチェーンの展開を可能にするために特定のソフト フォークを必要としないことです。 Eltoo/ANYPREVOUT は、柔軟なステートチェーンとチャネル ファクトリを可能にする Lightning ネットワークの利点として提案されています。 スペースチェーンは、ANYPREVOUT を有効にすることで道が開かれる多くのことの単なる別の可能性です。

彼のブラインド マージ マイニングの提案の一般的な考え方は、APO を利用することで、同じ最初の UTXO が供給され、常にそれを再作成することをコミットするトランザクションの長いセットを事前に定義できるということです。 したがって、単一の satoshi UTXO を想像してみてください。事前に作成された各トランザクションは、確認時に同じ UTXO が出力として再作成されることを保証します。 これはマーカーのようなものだと考えてください。この特別な UTXO は、メインのビットコイン ブロックチェーンを見ている人なら誰でも、「ここで X のブロックをサイドチェーンするコミットメントを見つけることができます」と知ることができる識別子です。 ただし、これには未解決の問題が XNUMX つあります。それは、マイナー料金です。 そのUTXOを同じ金額で作り直さなければならない場合、手数料を支払う資金がありません。

を活用することで対処できます。 SIGHASH_SINGLE (入力からの署名は、その単一の入力と対応する出力のみに署名します)および SIGHASH_誰でも支払うことができます (署名を無効にしないために、SIGHASH_SINGLEを使用した入出力がそのまま残されている限り、署名を無効にすることなく、人々は自由に追加の入力と出力を追加できます)。 その後、誰でも入力を追加し、出力を変更して、トランザクションのマイナー料金を支払うことができます。

これは、サイドチェーン ブロックのブロック ヘッダーにコミットするために使用されるメカニズムでもあります。 ツリーのマークル ルートを使用して通常の公開鍵を調整することにより、Taproot がさまざまな支出条件のツリーにコミットするのと同じ方法で、サイドチェーン ブロックのブロック ヘッダー ハッシュを使用して通常の公開鍵を調整できます。 次に、サイドチェーン ノードは、そのブロック ヘッダーを明らかにし、メイン チェーン内のトランザクションへのポインターを使用してリレーして、実際にマイニングされたことを証明できます。 そこから、サイドチェーン ノードは通常の検証をすべて実行して、サイドチェーン ブロックが適切なコンセンサス ルールに従っていることを確認し、メイン チェーンと同様にサイドチェーン ネットワーク全体で実際のブロックをリレーします。

メイン チェーンのサイドチェーン ブロックへのコミットに使用されたトランザクションの XNUMX つが無効なブロックへのコミットに使用された場合、または完全にガベージ データでさえある場合、サイドチェーン ノードがチェーンで使用されたコミットメント トランザクションを確認すると、次の XNUMX つのことが発生する可能性があります。無効なブロックはサイドチェーン ネットワーク全体に伝播され、検証チェックに失敗すると孤立します。 その場合、次のサイドチェーン ブロックは、実際に公開された最後のブロックの上に構築されてコミットされ、未公開のコミットメントは無視されます。 この XNUMX 番目の可能性は、メイン チェーンと同じ種類の最長チェーン ロジックに従います。そのため、何かが後で明らかになったとしても、その上に構築されなかった将来のブロックのために孤立したままになります。

しかし、二重支出の問題は依然として残っています。 マーカー UTXO を生成するために使用される秘密鍵を持っている人は、サイドチェーン ブロックにコミットするために使用される事前定義されたトランザクションのいずれかを二重に使用し、その時点からセット全体を無効にする可能性があります。

これは、実際に UTXO 自体のロック スクリプトに署名を挿入することで解決されます。 これにより、入力と出力の署名がロックされ、それを使用する次のトランザクションで UTXO マーカーの再生成が保証されます。 その署名は UTXO が使用されるときに自動的に渡されてチェックされるため、単純に別の署名に置き換えて別の目的地に使用することはできません。

これにより、最後の未解決の問題が残ります。 理論的には、複数のトランザクションをすべて XNUMX つのビットコイン ブロックに連続して送信することは可能です。その結果、膨大な数のサイドチェーン ブロックがすべて XNUMX つのメイン チェーン ブロックでマイナーによって確認されます。 これは、サイドチェーン ネットワークに対するサービス拒否攻撃に悪用される可能性があります。

この問題を解決するために、CHECKSEQUENCEVERIFY (CSV) 相対時間ロックをマーカー UTXO スクリプトに挿入して、マーカー UTXO を使用する XNUMX つのトランザクションのみが特定のメイン チェーン ブロック内で確認できるようにすることができます。

全体として、次のようになります。 

ソース

CHECKTEMPLATEVERIFY (CTV) を使用して、またはまったく変更せずに、この設計の XNUMX つのバリアントを実装できることも注目に値します。 これら XNUMX つの設計バリアントには、次善のトレードオフがあります。

CTV の亜種は、その機能を使用して、UTXO ロック スクリプト内の署名を含むハックで、APO の代わりに CTV を使用してトランザクション チェーンにコミットします。 CTV は、CTV UTXO を消費するトランザクションのすべての出力にコミットしますが、それ自体以外の入力にはコミットしません。

これは、CTV トランザクションに入力を追加できますが、出力を追加できないことを意味します。 そのため、APO の設計と同様に料金を自分で持ち込むことはできますが、サイドチェーン ブロック ヘッダーにコミットメントを追加することはできません。

したがって、ここで行う必要があるのは、CTV トランザクションの手数料を支払うのにちょうど十分な UTXO を作成するサイドチェーン コミットメントのために、CTV トランザクションのチェーンの完全に外側にトランザクションを作成することです (新しい変更出力を作成することはできないため)。そのトランザクションでは、追加した入力の 100% が手数料になります)、手数料を準備するトランザクション内の UTXO は、サイドチェーン ブロック ヘッダーにコミットする場所です。 したがって、最初のステップ: 手数料を支払う出力を作成するトランザクションと、サイドチェーン ブロック ヘッダーへのコミットメント。 XNUMX 番目のステップ: 手数料の出力を受け取り、それを CTV トランザクションへの入力として追加します。これが確認されると、特定のサイドチェーン ブロックが「マイニング」されます。 このバリアントは次のようになります。

ソース

次の亜種は、署名済みのトランザクションを使用するだけです。 すぐに展開することもできますが、スクリプトでできることには制限があるため、スペースチェーンを作成する人がトランザクションのすべての料金を前払いする必要があります。

一連のトランザクションは単一の UTXO から始まり、チェーン内で XNUMX つの出力が作成されます。 最初の出力はマーカー UTXO で、これは一連のトランザクションが特定のスペースチェーンに関連していることを示します。XNUMX 番目の出力は小さな値の UTXO であり、誰でもオープンに使用でき、別の入力/出力を接続できます。 この XNUMX 番目のトランザクションは、誰もがスペースチェーン トランザクション チェーンからの XNUMX 番目の出力を最初に使用することを公然とコミットし、それを使用してサイドチェーン ブロック ヘッダーにコミットできる場所です。

CTV バリアントでは、サイドチェーン ブロックはセカンダリ トランザクションでコミットする必要がありました。CTV は、CTV によってロックされた入力を消費するトランザクションに新しい出力を追加することを許可しないためです。 署名済みチェーンに新しい入力または出力を追加すると、トランザクションの TXID が変更され、その後のすべての署名付きトランザクションが無効になるため、このバリアントではセカンダリ トランザクションを使用する必要があります。 このバリアントは次のようになります。 

ソース

この最後のバリアントの XNUMX つの欠点は、サイドチェーン ブロック コミットメントに使用するすべてのトランザクションに事前署名した人が、削除に使用した秘密鍵を削除しない場合、現在のマーカー UTXO をいつでも XNUMX 倍消費することでチェーンを効果的に停止できることです。時間。

そして、あなたはそれを持っています。 これは、Bitcoin のサイドチェーン設計に関する最新の提案であり、XNUMX つの異なる方法で実装できますが、現在実行できる実装パスには、秘密鍵を削除する必要があるという問題があることは明らかです。

この記事は、2014 年の最初の設計以降、Bitcoin 向けに公開された主要なサイドチェーン設計案に関するシリーズの最初の記事にすぎません。 残りに注意してください。

忍によるゲスト投稿です。 表明された意見は完全に独自のものであり、必ずしもBTCIncまたはBitcoinMagazineの意見を反映しているわけではありません。

タイムスタンプ:

より多くの Bitcoin Magazine