用語集 / ウォレットとカストディ
マルチシグ
別名はMultisig、Multisignature、マルチシグネチャです。
- マルチシグとは?
- マルチシグはビットコインを複数の鍵で同時にロックし、使用にはあらかじめ決めた数の署名を必要とするため、いずれか1つの鍵を失ったり漏えいしたりしてもコインを失うことはありません。
BIP-11で規定されています。
マルチシグのアドレスは、複数の公開鍵としきい値を指定するスクリプトに結び付いています。多くの場合、三つのうち二つです。ビットコインは、BIP-11が2011年10月に書かれて以来、これを標準的なトランザクション種別として扱っており、それはハードウェアウォレットが存在するより何年も前のことです。10年間保有する予定の貯蓄では、一つのリカバリーフレーズが生む単一障害点を取り除きます。
仕組み
マルチシグのルールは出力のスクリプトの中にあり、ネットワークがそれを強制します。アプリケーションではありません。古典的な三つのうち二つ方式のredeem scriptは次のように書かれます。数2をプッシュし、三つの公開鍵をプッシュし、数3をプッシュし、次にOP_CHECKMULTISIGを実行します。ノードは有効な署名を列挙された鍵と照合して数え、少なくとも二つが一致しなければその支出を拒否します。その判断に企業も、サーバーも、ウォレットベンダーも関与しません。
同じ考え方の三つのエンコーディングが、それぞれ異なる時期に標準とされており、サイズの上限も異なります。
ベアマルチシグは鍵を出力に直接置きます。リレーポリシーは長年にわたりこれを三つの鍵に制限しており、また容量を無駄にするため、主にごく古いコインの中に残っています。
P2SHはスクリプトをハッシュの背後に隠し、支出時にそれを明かします。redeem scriptの520バイトの上限により、この方式では圧縮公開鍵15個が上限となります。
P2WSHはSegWit版であり、スクリプトをwitness(ウィットネス)へ移し、上限を3,600バイトのwitness scriptへ引き上げます。そこではオペコード自体の上限である20鍵のほうが先に制約となります。ネイティブSegWitのマルチシグアドレスはbc1qで始まり、現在のコーディネーターソフトウェアの多くが生成するのはこれです。
歴史的な奇妙な仕様が、いまもすべての支出に見られます。OP_CHECKMULTISIGは必要以上に一つの項目を多く取り出します。これは元の実装のバグで、ハードフォークなしには取り除けませんでした。BIP-147は、この余分な項目が空であることをコンセンサスルールとして必須とし、SegWitとともに2017年8月24日のブロック481,824で有効になりました。
Taprootは状況を再び変えました。BIP-342はtapscript内のOP_CHECKMULTISIGを無効にし、署名を鍵一つずつ集計して20鍵の上限を撤廃するOP_CHECKSIGADDを導入しました。また別に、MuSig2は複数の署名者が鍵を一つに統合できるようにし、n-of-nの支出はチェーン上では通常の単一署名のTaproot支払いとして現れ、区別がつかず、より安価になります。
ビットコインを購入するときにこれが重要な理由
マルチシグは取引所の代替ではありません。購入は当サイトに掲載しているプラットフォームのいずれかで行い、マルチシグはそこから出金する先です。したがって購入ガイドとこの判断は独立しています。
変わるのはリスクの形です。単一署名のウォレットは、一つの出来事で完全に機能を失います。フレーズの紛失、両方のコピーに達する住宅火災、強要による開示、あるベンダー製品のファームウェアのバックドアです。三つの異なるメーカーで組んだ三つのうち二つ方式は、それらすべてを乗り越えます。単一のシードも、単一の建物も、単一の企業も、それだけでは十分でないからです。当サイトのハードウェアレビューが、どの機器にセキュアエレメントがないかを指摘するのはそのためです。混在したクォーラムでは、一つの弱い機器があっても致命的ではなくなります。
コストは現実のものであり、正直に数えるべきです。支出は大きくなります。三つのうち二つ方式のネイティブSegWitのインプットは約105vbytesで、単一署名のものは約68vbytesなので、同じ支払いの手数料はおよそ5割増しでかかります。設定には三分ではなく一晩かかります。そして新たにバックアップすべき対象が増えます。すべての拡張公開鍵、導出パス、しきい値を列挙したウォレットディスクリプタで、共同署名者に連絡できない場合、手元のシードからは再現できません。
導入の正直な判断基準は、金銭面ではなく行動面です。書いた言葉から単一署名のウォレットを復元する訓練をすでに試しており、いま賭かっている金額が気になるのであれば、マルチシグが次の一歩です。その訓練をまだ行っていないのであれば、機器をあと二台加えることは、未検証のバックアップが期待を裏切る道を増やすことになります。
一つの鍵を失っても生き残る三つのうち二つ方式
ここでは、実際に人々が維持している三つのうち二つ方式のマルチシグ構成を、そのまま真似できる程度に具体的に説明します。
三つのベンダーから署名機器を三台購入し、できれば三つの異なる供給元から購入し、それぞれを独自のリカバリー用の言葉で個別に設定します。SparrowやNunchukなどのコーディネーターソフトウェアでそれらの拡張公開鍵を統合し、三つのうち二つ方式のポリシーを選び、できあがったディスクリプタをエクスポートします。
三つのシードのバックアップを、独立して失われる三か所に保管します。自宅の金庫、銀行の貸金庫または職場、そして別の町に住む信頼できる親族です。ディスクリプタのコピーをそのそれぞれと一緒に保管します。ディスクリプタは秘密ではなく、それだけを保有しても誰も何も支出できない一方、これがなければ、三つのシードすべてでなら復元できたはずのコインが行き場を失うことがあるからです。
少額を入金し、その後で障害を演習します。一台の機器が失われたと想定し、残りの二台から支出し、トランザクションが確定することを確認します。クォーラムに変更を加えた後にも同じ演習を行い、さらに年一回行います。
機器が本当に故障したとき、失ったものはありませんが、いまは二つのうち二つの署名が必要な構成で運用している状態です。失われた署名者を交換し、新しい鍵で新しいクォーラムを組み、縮小した余裕のまま暮らすのではなく、コインを新しいアドレスへ移します。
マルチシグvsマルチシグ保管庫
マルチシグは基盤となる方式であり、マルチシグ保管庫はその上に作られた製品です。サービスは管理されたクォーラムを販売し、プロバイダーが一つの鍵を持ち、利用者が一つまたは二つを持ち、復旧プロセスが残りをカバーします。チェーン上のスクリプトはどちらも同じに見えますが、信頼モデルは異なります。保管庫は、事業を終了したり、価格を変更したり、裁判所によって強制されたりしうる企業を介在させます。それはまさに、自己管理のマルチシグが取り除く依存関係です。どちらも正当な選択であり、両者を混同することは、コインを動かすために誰が存続していなければならないかを誤って判断することを意味します。
マルチシグvs P2SHマルチシグ
マルチシグは支出ポリシーであり、P2SHマルチシグはそのポリシーをアドレスに落とし込む一つの方法です。この区別が決定的になったのはSegWitとTaprootが登場したときで、同一の三つのうち二つ方式が、サイズ、アドレスの接頭辞、プライバシー特性の異なる少なくとも三つのオンチェーン形式を持つようになりました。ウォレットを復元するとき、「三つのうち二つ方式だった」という情報だけでは足りません。入金したアドレスをどのスクリプト種別が生成したのかも知る必要があります。