2017年4月18日火曜日

"MasteringBitcoin"から読み解くP2SH

前回の記事でごちゃごちゃと勉強して見たもののこちらの章に入ってから何をやっているのかよくわからなくなってきた。なのでもう一度勉強内容を整理するためにMasteringBitcoinで復習したのでその内容を記す。

P2SH(Pay to Script Hash)とは

マルチシグネチャをサポートする機能の一つ。元々のマルチシグネチャは複雑で扱いづらいことは前回も触れたがこの問題を解決するために開発された技術。

P2SH以前の問題


  • 例えばマルチシグでサポートされたウォレットを使って顧客に対して支払いをするシーンを考える
    • このときに我々は顧客にこのscriptについて説明する手間が発生する
    • 顧客はscriptを作ることができる特別なウォレットを使う必要がある(単純に顧客の使用しているウォレットがこの機能をサポートしてなかった場合)
    • 特別なscriptを使ったトランザクションの作り方を理解する必要がある
    • 複数の公開鍵情報を含んでおり単純な支払いトランザクションより高い手数料を取られる

以上のように問題が山積みであったわけだ。

P2SHのアプローチ

簡単に言えば複雑なlocking scriptをハッシュに置き換えて簡素化しようというわけだ。
P2SHは「このハッシュとマッチするscriptに対して支払い、このscriptはのちほどこのアウトプットが使用されるときに与えられます」という意味です。  
Mastering Bitcoin 第5章 P142 
もう少し別の解釈をするとlocking scriptの意味は以下のようになるだろう。
今まで:「M個のキーに対応するマルチシグネチャscriptに対する支払い」
P2SH:「このハッシュを持ったscriptに対する支払い」

 
P2SHとredeem script

P2SHを使用しないscriptと使用するscriptとではredeem scriptの有無が違いとなる。
redeem scriptの中身はハッシュに置き換えられるlocking scriptである。しかしlocking scriptにはそれのハッシュのみしかなく、redeem script本体は実際にアウトプットが使用される時のunlocking scriptの一部として出てくるのみだ。

P2SHアドレス

scriptの20バイトハッシュをBase58Checkエンコードしたものでこれはビットコインアドレスのように使うことができる。ちなみにビットコインアドレスは公開鍵ハッシュのBase58Checkエンコードしたものである。
P2SHアドレスではversion prefixで「5」が使われておりアドレスは「3」から始まる。
こうしてできたP2SHアドレスは顧客に送られ、通常の支払いと同様にウォレットを使うことができるという。

0 件のコメント:

コメントを投稿