本文へスキップ
buybitcoinsmart

用語集 / プロトコルとアップグレード

Covenant

Covenantとは?
Covenant(コベナント)は、ビットコインを次にどこへ動かせるかを制限する支出ルールであり、誰が動かせるかだけを制限するものではありません。現在のビットコインのスクリプトには、これを強制できるオペコードはありません。

チェーン上のすべてのスクリプトは1つの問いに答えます。この支出は承認されているのか、という問いです。Covenantがあれば、スクリプトはそれを支出するトランザクションについて2つ目の問いを立てられますが、それを可能にする提案(BIP-119、BIP-118、BIP-345、BIP-347)はいずれも何年も未発動のままです。現在お持ちのものに影響はありませんが、よく要望の上がる金庫(vault)製品や相続製品はこの機能を待っています。

仕組み

状態: ビットコインのメインネットで有効なCovenantのオペコードはありません。以下に示す設計はいずれも提案であり、有効化のパラメータがBitcoin Coreにマージされたものは1つもありません。

欠けている機能には正確な名前があります。イントロスペクション(内省)です。ノードがスクリプトを実行するとき、スクリプトは署名、ハッシュ、タイムロック、スタックを参照できますが、そのコインを支出するトランザクションの出力を読むことはできません。この1つの盲点があるために、ビットコインでは「この3人のうち2人の合意が必要」は表現できても、「この資金はあのアドレスにしか動かせない」は表現できないのです。

提案はこの隔たりを2つの異なる方法で埋めようとしており、その違いが議論の核心です。

テンプレート方式は、支出トランザクション全体のハッシュに事前にコミットします。OP_CHECKTEMPLATEVERIFYはこの方式です。出力が32バイトのハッシュを保持し、トランザクションのハッシュが同じ値にならない限り支出は失敗します。範囲が狭く、検証のコストも低く、またコミットメントは別のコミットメントを記述できないため、制限が無期限に繰り返されることはありません。

イントロスペクション方式は、スクリプトに部品を渡し、演算をさせます。OP_CATと署名検証を組み合わせる、またはOP_CHECKSIGFROMSTACKを追加することで、スクリプトはスタック上の部品からトランザクションの署名ハッシュを再構築して検証でき、そうなれば出力について望むことを何でも要求できます。これは汎用的であり、再帰的です。Covenantは次の出力が同じCovenantを伴うことを要求できるのです。

再帰性こそが、すべてを遅らせてきた反対意見です。自己を永続させるルールにロックされたコインは、原理上は永久に制約を負い続ける可能性があり、代替可能性や、そのルールを義務づける可能性のある発行者について疑問を生じさせます。これに対する反論は、許される唯一の支出に事前署名し鍵を破棄することで、人々の集団はすでにCovenantを模倣できるというものです。つまりこの機能は実務上すでに存在しており、コンセンサスによる強制は主に、鍵が本当に破棄されたことを信頼する必要を取り除くものだ、というものです。

どこで見られるか

Covenantは、ビットコインのスクリプトエンジンをコピーしたチェーンですでに導入されており、それがその働きを最も安く確かめる方法です。

ElementsベースのサイドチェーンであるLiquidは、支出トランザクションの出力を直接読むイントロスペクションのオペコードを持つtapscriptを実行しており、そのフェデレーションがペグのためにこれらを使っています。誰でも、提案されているビットコインのオペコードをカスタムsignetで試し、メインネットで使いたいかどうかを判断できます。

メインネットでは、代わりとなるのは、鍵を削除した事前署名済みトランザクションです。金庫(vault)プロバイダーは入金用の鍵を生成し、今後許可する唯一の出金に署名し、その後鍵を破棄して、他の支出を作成できないようにします。これはネットワークではなく約束によって強制されるCovenantであり、その約束こそ、本物のCovenantのオペコードがあれば不要になるものです。サービスが金庫を販売する場合は知っておく価値があります。どちらなのかを尋ねてください。

Covenant vsエスクロー契約

Covenantは送金先を制限し、エスクロー契約は署名者を制限します。両者は同じ懸念の異なる半分を解決するものであり、利用できるのは片方だけです。

エスクロー契約は、定足数に第三者を加えた通常のマルチシグで、ふつうは3人のうち2人であり、現在のビットコインで機能します。マーケットプレイスが鍵を1つ保持し、買い手と売り手はそれなしで決済でき、紛争を解決するためにそれを呼び出すこともできます。エスクローにできないのは、結果を制約することです。支出の定足数が形成された瞬間に、コインは仲裁者への送金を含め、どこへでも移動できます。Covenantが実現すれば、送金先を事前に固定し、仲裁者の裁量を設計から完全に排除できます。

混同しやすい用語

よくある質問

今、ビットコインでCovenantを使えますか?

いいえ。メインネットで有効なCovenantのオペコードはありません。現在、金庫(vault)の動作をうたう製品は、事前署名済みトランザクションと破棄された鍵に依拠しており、これはネットワークが強制するルールではなく約束です。

Covenantはなぜ議論を呼ぶのですか?

汎用的な方式が再帰的であり、つまりコインが将来のすべての支出に自ら再び付着する制限を伴い得るからです。批判者は永久に制約を負ったコインを懸念し、賛成派は事前署名済みトランザクションがすでに同じ効果を模倣していると指摘します。

次に読む

関連用語

プロトコルとアップグレードのその他の用語

このページを英語で読む