P2PKH、P2SH、多签名之间的关系

区块链 比特币

地址

比特币的术语定义中,地址(Address)指的是P2PKH地址或P2SH地址,并没有多签名地址。

Address 
A 20-byte hash formatted using base58check to produce either a P2PKH or P2SH Bitcoin address. 
Currently the most common way users exchange payment information.

Multisig(多签名) 
A pubkey script that provides n number of pubkeys and requires the corresponding signature script provide m minimum number signatures corresponding to the provided pubkeys.

P2PKH、P2SH、Multisig之间的关系

比特币实现花钱的方式:

  • 假设B要花A转给他的钱

  • A在交易M的输出中,写一个脚本(输出脚本),请写明金额,表示把钱转给A。

  • B在交易N的输入中,也写一个脚本(签名脚本),意思是要花A在交易M中转给他的钱。

  • 当交易M在网上传播时,比特币节点验证交易M,只要签名脚本符合输出脚本的要求,节点就认可B能够执行这个花费。

P2PKH 
验证的一种方法是,输出脚本中包含B的公钥,签名脚本包含B用私钥所作的签名。 
这样,节点就可以用公钥验证签名。 
A在交易M中的这种支付,就是支付给某人的公钥,也就是支付给P2PKH地址。

Multisig 
后来,有人想到了高级的玩法: 
在输出脚本中包含M个公钥,签名脚本中至少要包含N个私钥的签名,比特币节点才能验证通过,允许花费。这个就是多签名脚本(Multisig)。

P2SH 
后来,又有人想到了更高级的玩法,是这样: 
B对A说,你别管怎么验证,我给你一个哈希值,我在签名脚本中提供输出脚本,只要我提供的输出脚本的哈希值与给你的哈希值对得上,你就用我提供的输出脚本进行验证。 
这样,B就可以随意定义自己希望的输出脚本,这就是P2SH地址,以数字3开头的比特币地址是P2SH地址。 
P2SH也可以实现P2PKH地址和Multisig的功能。

发表评论