P2SH(Pay-to-Script-Hash)とは?
P2SH(Pay-to-Script-Hash)は、公開鍵や公開鍵ハッシュに直接送金する代わりに、スクリプトのハッシュ宛てにビットコインを送れるBitcoinのトランザクション出力形式です。送金者が必要とするのは短いスクリプトハッシュだけです。受取人は後で資金を使用する際に完全なスクリプトを公開し、それを満たすために必要なデータを提供します。簡単に言えば、P2SHを使うと、送金者が複雑な使用条件を理解していなくても、Bitcoinアドレスに複雑な支出ルールを持たせられます。BitcoinメインネットのP2SHアドレスは、通常、数字
P2SHの技術標準はBIP16で導入されました。
P2SHのアドレス形式はBIP13で説明されています。
P2SHは、高度なBitcoinスクリプトを通常のウォレット決済で使いやすくしたため、重要な役割を果たしました。P2SH以前は、複雑なスクリプトに送金する場合、送金者がそのスクリプトをトランザクション出力に直接含める必要がありました。これは非効率で共有しにくく、一般的なウォレットでの対応も困難でした。P2SHでは、送金者は簡潔なハッシュ宛てに送金し、受取人が資金を使用する際に完全なスクリプトを公開して条件を満たします。この設計により、マルチシグウォレット、エスクロー形式のトランザクション、後のNested SegWitとの互換性がより実用的になりました。暗号資産ユーザーにとって、P2SHとは、受け取り時には複雑さを隠し、資金の使用時にのみそれを明らかにするBitcoinのアドレスおよびスクリプト設計と理解するとよいでしょう。P2SHの要点
- P2SHはPay-to-Script-Hashの略です。
- ビットコインを通常の公開鍵ハッシュではなく、スクリプトのハッシュにロックできます。
- メインネットのP2SHアドレスは、通常3で始まります。
- 送金者が完全な支出スクリプトを知っている必要はありません。
- 資金を使用する際、使用者はRedeem Scriptを公開し、その条件を満たす必要があります。
- P2SHはBIP16で標準化され、アドレス形式はBIP13で説明されています。
- P2SHにより、マルチシグウォレットが使いやすくなりました。
- P2SHは、初期のSegWit導入における互換性ラッパーとしても使われました。
- 対応している場合、現在のBitcoinユーザーはNative SegWitやTaprootのアドレス形式を選ぶことがあります。
P2SHが作られた理由
P2SHは、複雑なBitcoinスクリプトへの送金や受け取りを簡単にするために作られました。Bitcoin Scriptでは、支出条件を設定してコインをロックできます。簡単な支払いでは、1つの秘密鍵による有効な署名を1つ求める場合があります。より複雑な支払いでは、3つの鍵のうち2つによる署名、タイムロック、その他のスクリプトロジックが必要になる場合があります。P2SH以前は、こうした条件に基づいて送金する場合、送金者が完全なスクリプトをトランザクション出力に含める必要がありました。セキュリティルールを選ぶのは受取人であるにもかかわらず、送金者に複雑な処理を負わせていました。BIP16では、償還条件を提供する責任を送金者から償還者へ移すことがP2SHの目的とされています。送金者が短いスクリプトハッシュ宛てに送金するだけでよい点が、この設計の利点です。受取人は資金を使用するまで、実際のスクリプトを非公開で管理できます。そのため、ウォレットやユーザーにとって決済がより簡単になります。また、送金者が相手に送金する前に、あらゆるカスタムスクリプトに対応する必要もなくなります。送金者はP2SHアドレスを通常のアドレスと同じように扱い、受取人はその裏側で高度な支出ルールを利用できます。P2SHの仕組み
P2SHは、スクリプトのハッシュにビットコインをロックします。隠されたスクリプトはRedeem Scriptと呼ばれます。Redeem Scriptは、コインを使用する際に満たす必要がある実際の条件を定義します。トランザクション出力には、完全なRedeem Scriptは含まれません。代わりに、そのRedeem Scriptのハッシュが含まれます。後でコインを使用する際、使用者はRedeem Scriptと必要なアンロックデータを提供します。Bitcoinネットワークは、Redeem Scriptのハッシュが元の出力で使われたスクリプトハッシュと一致するか確認します。続いて、アンロックデータがRedeem Scriptの条件を満たしているか確認します。両方の確認に通れば、支出は有効です。提供されたスクリプトがハッシュと一致しなければ、支出は失敗します。スクリプトが一致しても、署名やその他の条件が満たされなければ、支出は失敗します。この2段階の処理がPay-to-Script-Hashの中核となる考え方です。P2SHの基本的なスクリプトパターン
標準的なP2SHロックスクリプトは、シンプルなパターンで表されます。一般的な表記は
これは、支出トランザクションで、出力に含まれる20バイトのスクリプトハッシュと
Bitcoin.orgの開発者向けガイドでは、P2SHはスクリプトハッシュ宛てのトランザクション送信に使用されると説明されています。
アンロックスクリプトは、Redeem Scriptが必要とするデータを提供します。Redeem Script自体も提供します。概念上の一般的な形式は
Redeem Scriptとは?
Redeem Scriptは、P2SHアドレスの裏側にあるスクリプトです。そのアドレスにロックされたコインを使用するための実際のルールを定義します。たとえば、指定された3つの公開鍵のうち2つから有効な署名が必要である、と定めることができます。これは2-of-3のマルチシグ構成になります。資金を使用する前に、P2SHアドレスから完全なスクリプトを確認することはできません。アドレスが表すのは、Redeem Scriptのハッシュだけです。資金を使用する際、ユーザーはRedeem Scriptを公開し、ハッシュと一致することを証明します。さらに、Redeem Scriptが求める署名、公開鍵、その他のデータを提供する必要があります。そのため、Redeem ScriptはP2SH出力における実際のセキュリティポリシーです。Redeem Scriptを紛失すると、資金を使用できなくなる可能性があります。Redeem Scriptが誤っていると、満たせないルールに資金がロックされる可能性があります。したがって、P2SHウォレットでは秘密鍵だけでなく、資金の使用に必要なスクリプトもバックアップする必要があります。P2SHアドレス形式
P2SHでは、スクリプトハッシュ宛ての送金先を共有しやすくするため、新しいBitcoinアドレス形式が導入されました。BIP13では、公開鍵のハッシュをエンコードするのではなく、スクリプトのエンコード済みハッシュを表すPay-to-Script-Hash用のアドレス形式が説明されています。
BitcoinメインネットのP2SHアドレスは、通常
通常
Bitcoin.orgのトランザクションリファレンスによると、一般的なアドレスエンコードではP2SHアドレスにバージョンバイト
P2SHとマルチシグウォレット
P2SHが広く知られている理由の一つは、マルチシグウォレットを使いやすくしたことです。マルチシグウォレットでは、資金の使用に複数の秘密鍵が必要です。たとえば2-of-3のマルチシグウォレットでは、承認済みの3つの鍵のうちいずれか2つが署名すると、資金を使用できます。企業、家族、トレジャリーアカウント、エスクロー、個人のコールドストレージなどで役立ちます。P2SHがなければ、マルチシグスクリプト宛てに送金する際、送金者が完全なスクリプトを出力に含める必要がありました。P2SHでは、送金者は短いP2SHアドレス宛てに送金するだけです。受取人のウォレットが、後で資金を使用するときにマルチシグのRedeem Scriptを処理します。この仕組みにより、通常の決済でマルチシグを実用的に利用できるようになりました。送金者にはマルチシグアドレスが通常のアドレスのように見えるため、ウォレットの画面もシンプルになりました。送金者は、受取人が1つの鍵、複数の鍵、あるいはさらに複雑な構成を使っているか知る必要がありません。受取人は送金者の操作を複雑にすることなく、セキュリティを高められます。P2SHとP2PKHの比較
P2PKHはPay-to-Public-Key-Hashの略です。公開鍵のハッシュに資金をロックする、Bitcoinの従来型の決済形式です。P2PKH出力を使用するには、使用者が公開鍵と、それに対応する秘密鍵による有効な署名を提供します。P2SHでは、資金はスクリプトのハッシュにロックされます。そのスクリプトには、1つの署名、複数の署名、時間条件、その他Bitcoin Scriptで許可されたロジックを設定できます。P2PKHはよりシンプルです。P2SHはより柔軟です。BitcoinメインネットのP2PKHアドレスは、通常
BitcoinメインネットのP2SHアドレスは、通常
P2SHとBare Multisigの比較
Bare Multisigとは、マルチシグスクリプトをトランザクション出力に直接配置する方式です。P2SHが広く使われるようになる前から、Bitcoinではこの方式が可能でした。しかし、Bare Multisigでは出力サイズが大きくなり、送金者が完全なスクリプトを扱う必要がありました。P2SHは、完全な出力スクリプトを簡潔なスクリプトハッシュに置き換えることで、この問題を改善しました。完全なマルチシグスクリプトは、資金を使用する際にのみ公開されます。これにより、データの一部が資金を送るトランザクションから、資金を使用するトランザクションへ移されます。支出ポリシーを選び、後で条件を満たすのは受取人であるため、より便利です。ユーザーにとっての実際の利点は明確でした。通常のアドレスのように見える送金先で、マルチシグ構成のビットコインを受け取れます。これにより、Bitcoinのカストディにおいてマルチシグが一般的なセキュリティ手段になるのを後押ししました。P2SHとSegWit
SegWitの導入時、P2SHは再び重要な役割を果たしました。BIP141で定義されたSegWitでは、WitnessデータとP2WPKH、P2WSHなどの新しい出力形式が導入されました。
初期のSegWit導入では互換性の問題がありました。一部のウォレットやサービスは、Native SegWitアドレスへすぐに送金できませんでした。そこでP2SHが橋渡しの役割を果たしました。SegWitスクリプトをP2SHアドレスの中にラップすると、旧式の送金ウォレットからでも
Bitcoin CoreのSegregated Witnessウォレット開発ガイドでは、SegWit対応ウォレットはP2SHとそのBIP13アドレス形式をサポートする必要があるとされています。
これにより、P2SHはBitcoinウォレットの互換性を移行させる重要な手段となりました。Nested SegWitはNative SegWitより効率が劣りますが、ユーザーやサービスが段階的にSegWitを導入するのに役立ちました。P2SH-P2WPKH
P2SH-P2WPKHは、Pay-to-Witness-Public-Key-HashをP2SHの中にラップした形式です。一般にNested SegWitと呼ばれます。BIP49では、階層的決定性ウォレット向けにP2SHにネストされたP2WPKHの導出方式が定義されています。
これにより、ウォレットでNested SegWitアカウントを標準的な方法で管理できるようになりました。Native SegWitへの対応が普及していなかった移行期に、P2SH-P2WPKHは特に役立ちました。現在、多くのウォレットはNative SegWitアドレスへ直接送金できます。Native SegWitに対応している場合、通常はNested SegWitより効率的です。P2SH-P2WSH
P2SH-P2WSHは、Pay-to-Witness-Script-HashをP2SHの中にラップした形式です。考え方はP2SH-P2WPKHと似ていますが、より複雑なWitness Scriptに対応します。P2WSHスクリプトでは、SegWitのWitness構造の中でマルチシグポリシーなどの高度な条件を表現できます。それをP2SHでラップすることで、旧式の送金ウォレットからも、見慣れた
P2SHとP2WSHの比較
P2SHとP2WSHはいずれも資金をスクリプトハッシュにロックできますが、同じものではありません。P2SHはBIP16で定められた、より古いスクリプトハッシュ方式です。P2WSHはSegWit版で、スクリプトと署名データをWitness構造に格納します。BitcoinのWeightルールではWitnessデータの扱いが割り引かれるため、複雑なスクリプトの多くでP2WSHのほうが効率的です。P2WSHはSegWitによるトランザクション構造の変更の恩恵も受けます。一方、P2SHは旧式のシステムとの互換性や歴史的な普及という点で引き続き重要です。P2SHアドレスは
BitcoinメインネットのNative SegWit P2WSHアドレスは、通常
P2SHとTaprootの比較
Taprootは、一部の支出ポリシーにおいてプライバシーと効率を向上させる新しいBitcoin出力形式です。Taproot出力はP2SH出力とは異なります。P2SHでは、ロジックの一部しか使わない場合でも、資金を使用すると完全なRedeem Scriptが公開されます。Taprootでは、協調条件が満たされると、複雑なポリシーの一部を単純なKey Pathによる支出のように見せられます。使われなかったスクリプト条件を第三者に見られずに済む場合があり、プライバシーの向上につながります。Taprootは、一部の高度なウォレットポリシーの効率も高められます。ただし、P2SHはBitcoinの歴史、ウォレット互換性、既存のコイン群の一部として、今も重要です。古いアドレスや出力の多くは、現在もP2SHを使用しています。手数料とトランザクションサイズ
P2SHでは、資金を使用するときにスクリプトデータが公開されるため、トランザクション手数料に影響する場合があります。単純なP2SHの支出は比較的小さいことがあります。複雑なマルチシグP2SHの支出では、Redeem Scriptと複数の署名を含めるため、サイズが大きくなる可能性があります。Bitcoinの手数料は、状況やトランザクションの種類に応じて、トランザクションのWeightまたはサイズに基づいて決まります。手数料率が高いときは、サイズの大きい支出ほど一般に費用がかかります。Native SegWitやTaprootが一部の用途で魅力的になった理由の一つは、この点にあります。特定の支出パターンでは、コストを抑えたり効率を高めたりできます。それでもP2SHは、複雑なスクリプトを出力に直接配置する方式を大きく改善しました。資金を送るトランザクションを簡潔に保ち、複雑さを支出側へ移したためです。特にマルチシグウォレットなどの複雑なP2SHウォレットから資金を使用する前に、ウォレットの手数料見積もりを確認してください。P2SHのプライバシー特性
P2SHでは、コインを使用するまでRedeem Scriptが隠されます。そのため、コインを受け取る時点では、第三者は完全な支出ポリシーを確認できません。見えるのはスクリプトハッシュだけです。コインを使用すると、Redeem Scriptがオンチェーンで公開されます。その時点で第三者は、出力がマルチシグ、Nested SegWit、その他のスクリプトパターンを使っていたか特定できる場合があります。これは部分的なプライバシーであり、完全なプライバシーではありません。P2SHは支出前の複雑さを隠せますが、スクリプトを永久に隠すわけではありません。また、アドレス形式自体から出力がP2SHであることがわかる場合があります。オンチェーン分析によって、ウォレットの利用状況、アドレスの再利用、支出パターン、トランザクション間の関係が特定される可能性もあります。P2SHだけでプライバシーが確保されると考えてはいけません。P2SHのセキュリティ上の利点
P2SHの大きなセキュリティ上の利点の一つは、マルチシグによるカストディで資金を受け取りやすくしたことです。資金を使用するために複数の鍵が必要となるため、攻撃者が複数の鍵を必要とする可能性があり、単一鍵の盗難リスクを抑えられる場合があります。2つ目の利点は、送金者が複雑なスクリプトを扱う必要性を減らせることです。これにより、送金者が誤って間違った出力スクリプトを作成する可能性を減らせます。3つ目の利点は、受取人が独自のセキュリティポリシーを選べることです。企業は、顧客全員に社内ウォレットの構成を理解してもらわなくても、マルチシグを利用できます。4つ目の利点は、アップグレードの柔軟性です。Native SegWitへの送金対応がまだ一様でなかった時期に、P2SHはNested SegWitの導入を支えました。5つ目の利点は、スクリプトハッシュによってデータを簡潔にできることです。完全なRedeem Scriptより、短いハッシュのほうがアドレスにエンコードしやすくなります。こうした利点により、P2SHはBitcoinのスクリプト史上、重要なユーザビリティ改善の一つとなりました。P2SHのセキュリティリスク
大きなリスクの一つは、Redeem Scriptの紛失です。秘密鍵を持っていても、資金の使用に必要なスクリプトがなければ、資金にアクセスできなくなる可能性があります。マルチシグウォレットでは特に重要です。2つ目のリスクは、誤ったRedeem Scriptを作成することです。誰も条件を満たせないスクリプトのハッシュ宛てに資金を送ると、資金が永久にロックされる可能性があります。3つ目は、アドレス形式を誤解するリスクです。P2SHとウォレットのバックアップ
P2SHウォレットでは、単一鍵のシンプルなウォレットより慎重なバックアップが必要になることがあります。標準的な導出パスを使うシンプルなP2PKHウォレットなら、シードフレーズのバックアップだけで十分な場合があります。P2SHマルチシグウォレットでは、シードフレーズ、公開鍵、導出パス、ウォレットポリシー、Redeem Scriptの情報が必要になる場合があります。必要な情報の一部が欠けると、復元が困難になる可能性があります。現在のマルチシグウォレットでは、この問題を解決するためにウォレットディスクリプターや設定ファイルをエクスポートできることがよくあります。ディスクリプターは、アドレスやスクリプトの生成方法を記述できます。その情報がなければ、どの鍵やスクリプトが資金を管理しているのか判断できない場合があります。そのため、マルチシグの利用者は大きな金額を入金する前に、復元をテストする必要があります。P2SHアドレスはシンプルに見えても、その裏側のウォレットポリシーは複雑な場合があります。適切なバックアップでは、その複雑さを復元できる形で保存する必要があります。P2SHと開発者
P2SHを扱う開発者は、アドレスエンコードとスクリプト検証の両方を理解する必要があります。Redeem Scriptを正しく作成しなければなりません。Redeem Scriptを正しくハッシュ化する必要があります。アドレスを正しくエンコードする必要があります。支出トランザクションでは、適切なアンロックデータとRedeem Scriptを提供する必要があります。さらに、マルチシグの順序、署名エンコード、ダスト制限、手数料見積もり、トランザクションWeight、ウォレット復元などのエッジケースをテストする必要があります。旧式のP2SHとNested SegWitのP2SHを区別することも必要です。どちらも
P2SHとユーザー
多くのユーザーは、P2SHスクリプトを自分で作成する必要はありません。ウォレットアドレス、マルチシグ保管庫、カストディ構成、旧式のSegWit対応ウォレットなどを通じてP2SHに触れます。ウォレットに
P2SHの一般的なユースケース
P2SHの最もよく知られた用途は、マルチシグによるカストディです。家族、企業、トレジャリーでは、資金を移動する前に複数の鍵を要求できます。もう一つの用途はエスクローです。スクリプトにより、合意された当事者の署名を特定の条件下で要求できます。旧式のシステムと互換性のあるSegWit受け取りにも使われます。ウォレットはP2SHでラップすることで、古い送金者からSegWit対応ウォレットへ送金を受けられます。スクリプトベースのアクセス制御も用途の一つです。1つの鍵と1つの署名より高度なスクリプトルールにコインをロックできます。過去のウォレットの復元にも役立ちます。古いBitcoinウォレットやアドレスの多くがP2SHを使用していたため、古い資金の復元ではP2SHの理解が重要です。新しい出力形式が普及しても、P2SHはBitcoinの現在のトランザクション履歴の一部です。P2SHに関するよくある誤解
よくある誤解の一つは、
P2SHを使う際のベストプラクティス
P2SHスクリプトを正しく処理できる、信頼できるウォレットソフトウェアを使ってください。Bitcoin Scriptを十分に理解していない限り、Redeem Scriptを手動で作成しないでください。シードフレーズだけでなく、必要なウォレットポリシー情報もすべてバックアップしてください。マルチシグウォレットでは、共同署名者の情報と導出パスを安全に保管してください。大きな残高を使う前に、少額で復元をテストしてください。対応しており、用途に適している場合はNative SegWitまたはTaprootを選んでください。実際にウォレットのサポート上の問題を解決する場合に限り、P2SH互換形式を使ってください。資金を送る前に、アドレス全体を確認してください。プライバシーが重要な場合は、アドレスの再利用を避けてください。複雑なP2SH出力から資金を使用する前に、手数料見積もりを確認してください。古いP2SH出力を正しく認識して使用できるよう、ウォレットソフトウェアを最新の状態に保ってください。旧式のP2SHマルチシグとNested SegWitのP2SHアドレスの違いを理解してください。P2SHを一言で表すと
P2SH(Pay-to-Script-Hash)は、Redeem ScriptのハッシュにコインをロックするBitcoin出力形式です。送金者は簡潔なアドレス宛てに送金でき、資金の使用時に使用者が完全なスクリプトを公開して条件を満たします。よくある質問
P2SHは何の略ですか?
P2SHはPay-to-Script-Hashの略です。P2SHは何に使われますか?
P2SHはビットコインをスクリプトのハッシュにロックし、通常のアドレスのように見える形式で複雑な支出ルールへの送金を受けやすくします。P2SHアドレスは何で始まりますか?
BitcoinメインネットのP2SHアドレスは、通常
P2SHを導入したのは誰ですか?
P2SHは、Gavin Andresenが作成したBIP16を通じて標準化されました。P2SHの目的は何ですか?
複雑な支出条件を提供する責任を送金者から使用者へ移すことです。Redeem Scriptとは何ですか?
Redeem Scriptは、P2SH出力にロックされたコインをどのように使用できるかを定める完全なスクリプトです。送金者はRedeem Scriptを知る必要がありますか?
いいえ。送金者に必要なのは、スクリプトハッシュを表すP2SHアドレスだけです。Redeem Scriptはいつ公開されますか?
P2SH出力から資金を使用する際に公開されます。P2SHはマルチシグと同じですか?
いいえ。P2SHとマルチシグは同じではありませんが、マルチシグウォレットで送金を受けやすくするためにP2SHがよく使われます。3で始まるアドレスはすべてマルチシグですか?
いいえ。
P2SHは現在も使われていますか?
はい。互換性や旧式のウォレットを中心に、P2SHは現在もBitcoinトランザクションで使われています。ただし、対応している場合はNative SegWitやTaprootを選ぶユーザーも多くいます。P2SHの最大のリスクは何ですか?
Redeem Scriptやウォレットポリシーを紛失したり、誤って作成したりすると、資金を使用できなくなる可能性があります。まとめ
P2SH(Pay-to-Script-Hash)は、Bitcoinのスクリプト史上、特に重要なアップグレードの一つです。簡潔なスクリプトハッシュアドレスでビットコインを受け取れるようにし、複雑な支出ルールを実用的なものにしました。送金者は完全なスクリプトを理解する必要がありません。使用者は資金を使う際にのみRedeem Scriptを公開し、その条件を満たします。この設計により、マルチシグウォレットが使いやすくなり、Bitcoinでより強固なカストディモデルを実現できました。また、Nested SegWit形式を通じて、BitcoinのSegWitへの移行を支援しました。P2SHは、あらゆる状況で最も新しく効率的なBitcoin出力形式というわけではありません。対応している場合、Native SegWitやTaprootは、手数料、プライバシー、スクリプト設計の面で利点をもたらすことがあります。それでもP2SHは、Bitcoinウォレットによる高度なスクリプトの扱い方を形作り、現在も多くの既存出力で使われているため重要です。ユーザーにとっての主な教訓は、シンプルなアドレスの裏に複雑な支出ポリシーが隠れている場合があることです。開発者にとっては、スクリプトの正確性、バックアップ、ウォレット復元情報が極めて重要です。BitcoinエコシステムにとってP2SHは、分散性と互換性を保ちながら、プロトコルのアップグレードで使いやすさを改善できることを示しました。P2SHを理解すると、マルチシグ、Nested SegWit、スクリプトハッシュ、Redeem Script、そしてBitcoinのアップグレードにおける慎重な設計思想への理解が深まります。関連コンテンツ
WhatsMiner M30S++
Web3ドメイン
Web3プロジェクト
ホット
現在、市場で大きな注目を集めているトレンドの暗号資産
トップ取引高
取引高が最も多い暗号資産

