31 / 736M-of-N

Multisig

複数の鍵で支払いを承認する仕組み

支払いの承認を1つの鍵だけに任せる必要はありません。Multisigでは、独立した3つの鍵のうち、どの2つでも署名すればよい、といった条件を設定できます。

Multisigは、指定した複数の鍵による署名がなければ使えないようにビットコインを保護する仕組みです。3つのうち2つを使うルールなら、異なる3つの鍵のどの2つでも足ります。そのため1つを失っても資金を失うとは限らず、盗まれた鍵が1つだけなら、それだけで資金を使われることもありません。ただし、適切なバックアップと、鍵を実際に分けて管理することが前提です。

Multisig:署名しきい値シミュレーターm-of-n モデルで残りの鍵が署名しきい値を満たすか確認します。結果は署名の利用可能性を示すもので、ウォレットの安全性や完全な復元を保証しません。

Aliceは、すべての貯蓄を1台の機器に依存させたくありません。そこで独立した鍵A、B、Cを使い、3つのうち2つを必要とするウォレットを作ります。支払いを承認できる組み合わせはA + B、A + C、B + Cです。署名はそれぞれの秘密鍵で作る、数学的に検証できる承認であり、秘密鍵そのものをネットワークに送るわけではありません。Aを失っても、必要なウォレット情報があればBとCを使えます。Aだけを盗んだ人は、単独では資金を送れません。ビットコインが3つの山に分けられるのでもありません。共通のルールが対象資金全体を守ります。3人が鍵を持つことも、1人が別々の機器で管理することもできます。同じSeed Phrase、つまり同じ復元用の単語を3部コピーしても、独立した3つの鍵にはなりません。 [1] [2]

Aliceはアプリに送金先アドレスと金額を入力します。アプリは調整役として取引案を作り、署名機器へ渡します。このときよく使われるのがPSBTです。支払いの情報と、順次追加する署名を受け渡すための形式です。機器を同時に接続したり、同じ場所に集めたりする必要はなく、秘密鍵は分離したままです。署名前にAliceは、使用する各機器の信頼できる画面で送金先、金額、手数料を確認します。機器は検証済みのウォレットルールに基づき、残額をAliceへ戻すおつりの出力も識別する必要があります。改ざんされた支払いに2つの署名を付けても保護にはなりません。調整役は不足する署名を作り出せませんが、不正な取引案を提示することはできます。必要な署名を集めて取引を完成させてから、アプリがネットワークへ送信します。 [5]

独立した鍵には、それぞれ安全なバックアップが必要です。しかしウォレット全体の復元に、単語の組が2つあれば必ず足りるわけではありません。必要な署名数、3つすべての鍵の公開情報、鍵の順序、アドレスの生成方法といった共通設定も必要です。これらはOutput Descriptorという正確な技術的記述や、同等の設定エクスポートとして保存できます。秘密鍵を含まない公開用のdescriptorだけでは支払いに署名できませんが、アドレスや資金の動きを知られる可能性があるため、これも非公開で保管すべきです。Aliceはまず少額で受取、送金、復元を試します。その後Aを失ったり、漏えいを疑ったりした場合、アプリから機器を削除するだけでは古いルールは変わりません。残る鍵を使って、新しい鍵の組で作った検証済みのアドレスへ資金を移す必要があります。 [4] [6]

3つのうち2つのルールなら1つの鍵を失っても対応できますが、2つのうち2つなら、どちらも失えません。また前者では、どの2つでも資金を使えるため、3人目に相談せず合意した2人でも支出できます。適切な構成は、誰の資金を何から守るかによって変わります。Aliceが機器とバックアップをすべて同じ引き出しに入れれば、一度の盗難や火災で分離の利点が失われるかもしれません。支払いの確認、ウォレットの互換性、復元にも手間が増えます。ここで支出条件を記述するのが、スクリプトと呼ばれる短いプログラムです。通常のスクリプト型マルチシグ取引は、同等の単一署名取引よりデータ量が多くなることが一般的で、同じ手数料率なら費用も増えます。初心者には、理解できない複雑な構成より、十分に使い方を把握したシンプルなウォレットの方が安全な場合があります。 [1] [2]

一般的なm-of-nという表記は、指定したn個の鍵のうちm個の有効な署名が必要だという意味です。従来のスクリプト型Multisigでは、公開鍵とこの必要数が支出条件に含まれます。取引の出力は条件を直接定めるか、対応するスクリプトと暗号学的に結び付きます。支出時には、Bitcoinのルールを検証するコンピューターであるノードが必要な署名とスクリプトデータを検証するため、アプリが許可するだけでは使えません。descriptorのmultiは指定された公開鍵の順序を保ち、sortedmultiは決められた規則で並べ替えます。導出経路は、元になる鍵の情報からどの鍵を計算するかをウォレットに指定します。順序が違ったり、鍵の導出経路が違ったりすると、別のアドレスになる可能性があります。descriptorはウォレットがこの条件を再構成するためのものであり、設定ファイルとしてそれ自体をブロックチェーンに保存するわけではありません。ここで説明したのは従来のスクリプト型Multisigです。複数の参加者で1つの共同署名を作る別の構成もあり、それぞれ独自のルールがあります。 [3] [4] [7]

例 · M-of-N

3つのうち2つを使うルール

異なる3つの鍵を使う Multisig は、任意の2つの有効な署名を要求します。1つの鍵が盗まれただけでは不十分です。1つを失っても、必要なスクリプトデータがあれば残る2つで使えます。鍵とバックアップを分け、完全な Output Descriptor または同等のウォレットポリシーを保存してください。

理解を深めるには、この項目とあわせて次もお読みください Private Key, ウォレット, PSBT. 次の項目からも参照されています HD Wallet, Cold Storage, Watch-only Wallet, Change Address.

01Multisig は1つの Hardware Wallet より必ず安全ですか?

いいえ。適切に分離した鍵とバックアップは単一障害点を減らせますが、参加者が増えると運用も複雑になります。確認済みのウォレットポリシーとテストした復元手順が必要です。共通のコーディネーターが侵害されると全員に同じ誤った支払いを提示できます。

02署名時にすべての Multisig の鍵を同じ場所に集める必要がありますか?

ありません。PSBT は秘密鍵を集めずにデータと署名を個別に受け渡せます。各署名者は受取人、金額、手数料を確認してください。ネットワークへの送信前に必要な有効署名でトランザクションを完成させ、入力のその他の条件もすべて満たす必要があります。

DOC · 001Bitcoin Developer Guide — P2SH Multisig文書 DOC · 002BIP 11 — M-of-N Standard Transactions一次資料 DOC · 003BIP 67 — Deterministic key sorting一次資料 DOC · 004BIP 383 — Multisig output descriptors一次資料 DOC · 005BIP 174 — Partially Signed Bitcoin Transaction Format一次資料 DOC · 006BIP 380 — Output Script Descriptors一次資料 DOC · 007BIP 327 — MuSig2一次資料
改訂日: 一次資料を優先 · 投資助言ではありません