Develop with pleasure!

福岡でCloudとかBlockchainとか。

BIP-13 Address Format for pay-to-script-hash (訳)

P2SH(pay to script hash)のアドレスフォーマットを定義した仕様BIP-13についてざっと意訳。

bips/bip-0013.mediawiki at master · bitcoin/bips · GitHub

概要

このBIPでは、任意の複雑なトランザクションをサポートするためのアドレスについて説明する。通常のBitcoinトランザクションが単一の楕円曲線暗号秘密鍵を必要とするのに対し、P2SHを使ったトランザクションでは受信者がコインを受け取るためにどんな情報が必要か定義する。

この仕様によってエンコードされたアドレスは、通常のBitcoinトランザクションで利用される楕円曲線暗号の公開鍵のハッシュをエンコードしたものと異なり、スクリプトのハッシュをエンコードしたものになる。

動機

End to Endのセキュアなウォレット及び支払いによって、仲介トランザクションやその他の複雑なトランザクションサードパーティウォレットによるセキュリティサービスを可能にする。

仕様

新しいBitcoinアドレスタイプ(P2SHアドレス)は、既存のBitcoinアドレスと同様(Base58エンコーディング)に構成される。

base58-encode: [one-byte version][20-byte hash][4-byte checksum]

MainNetのバージョンバイトは5、TestNetのバージョンバイトは196となる。(このためMainNetではP2SHアドレスは3から始まり、TestNetでは2から始まるアドレスになる。)
[20-byte hash]はコインを入手するために使われるスクリプトのハッシュ。
[4-byte checksum]はバージョンバイトとスクリプトのハッシュをSHA-256でダブルハッシュした最初の4バイト。

論拠

Bitcoinアドレスはよりユーザフレンドリーな支払いのため廃止されるべきだという批判がある。これは単に設計が不十分な仕組みを継続利用しているだけだと。
別の批判は、Bitcoinアドレスがなんらアイデンティティ情報と関連付けられていないので本質的に安全ではないというものだ。
更に、SHA-256を切り捨てるのは最適なチェックサムではないという批判もある。

これは、より安全なBitcoinのインフラストラクチャへの最も簡単な方法の1ピースだ。この仕様は、Bitcoinユーザビリティとセキュリティの問題の全てをいっきに解決するためのものではない。将来のBIPによって、支払いを作成するためのよりユーザフレンドリーなメカニズムなどは提案されるべきだろう。
手動でBitcoinアドレスを入力することは稀になるだろうと考えると、Bitcoinアドレスのためのチェックサムは現状で充分な動作をしていると考えられ、チェックサムアルゴリズムの変更は必要ないと考えている。

後方互換

この提案には後方互換性は無い。古い実装では、P2SHのアドレスが渡されたら、そのアドレスは無効と判断してトランザクションを作成するのを拒否するだけだ。