bitcoin P2SHとは?

技術メモ

Mastering bitcoin本より

https://www.bitcoinbook.info/translations/ja/book.pdf

以下mastering bitcoin より pay-to-script-hashの利点

pay-to-script-hashはlocking scriptを複雑なまま直接扱うことに比べて以下の利点があります。
• より短いフィンガープリントで複雑なscriptを置き換えることで、トランザクションのデータサイズを小 さくする
• scriptがアドレスとして実装されることで、送り主と送り主のウォレットはP2SHに関する複雑な実装をす る必要がない
• P2SHは、scriptを構成する負担を送り手ではなく受け手側に移している
• P2SHは、アウトプットが持つ長いscript(これはUTXOセットに含まれるためメモリを圧迫する)をインプ
ット側(ブロックチェーン上にのみ保存される)に移すことでデータストレージの負担をインプット側に移 している
• P2SHは、支払い時点に生じる長いscriptを資金が使われる時点で生じるようにすることで、データストレ ージの負担が生じる時刻を移している
• P2SHは、送り手が長いscriptを伴って資金を送るときに負担するトランザクション手数料を、受け手がre deem scriptを使って資金を使うときに負担するように変更している

各トランザクションscriptの特徴

1. P2PKH (Pay to Pubkey Hash)
 scriptSig (unlocking script)
  <署名><公開鍵>
 scriptPubKey (locking script)
  OP_DUP OP_HASH160 <アドレスPKH> OP_EQUAL OP_CHECKSIG
 検証Script
  <署名><公開鍵> OP_DUP OP_HASH160 <アドレスPKH> OP_EQUAL OP_CHECKSIG
 bitcoin上で多く取引されているのがこの形式

2. P2PK (Pay to Pubkey)  * あまり使われないらしい
 scriptSig (unlocking script)
  <署名>
 scriptPubKey (locking script)
  <公開鍵> <OP_CHECKSIG>
 検証Script
  <署名> <公開鍵> <OP_CHECKSIG>

3. multi-signature
 N個の公開鍵 & M個の署名
 scriptSig (unlocking script)
  OP_0 <Signature 1> <Signature 2> ・・・ <Signature M>
 scriptPubKey (locking script)
  M <Public Key 1> <Public Key 2> ... <Public Key N> N OP_CHECKMULTISIG
 検証Script
  OP_0 <Signature 1> <Signature 2> ・・・ <Signature M> M <Public Key 1> <Public Key 2> ... <Public Key N> N OP_CHECKMULTISIG

4. data output (OP_RETURN)
 scriptSig (unlocking script)
  なし
 scriptPubKey (locking script)
  OP_RETURN <data>

5. P2SH (Pay to Script Hash)
 P2SHは、scriptからaddressを生成する
 もっとも一般的なP2SHの実装方法は multisigになる。
 scriptSig (unlocking script)
  OP_0 <Signature 1> <Signature 2> ・・・ <Signature M> <Redeem Script>
 scriptPubKey (locking script)
   OP_HASH160 <20-byte hash of redeem script> OP_EQUAL
 Redeem Script
   M <Public Key 1> <Public Key 2> ... <Public Key N> N OP_CHECKMULTISIG

pycoinの実装

ScriptPayToScript.py

Sponsored Link
コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


仮想通貨全般
TendermintをDocker使って起動してみる

以前、勉強会に行ってきた際にTendermintの事を聞いて ブロックチェーンプロトコルが実装できる …

仮想通貨全般
Bitcoinのdifficultyを決めるnBitsを理解する

マイニングする際の理解を深めようと思い、マイニング難易度(difficulty)を決めるnBitsに …

仮想通貨全般
EOS Night Meetupにいってきた

今回は、以前からEOSに興味があったので EOS Night Meetupにいってきました。 暗号通 …