区块链研习社区块链大学区块链研究

《锋哥论道区块链》之四区块链1.0之比特币--多重签名(Mult

2019-04-24  本文已影响2人  7dfc697cf7a9

(1)多重签名(MultiSig)的提出
在P2PKH(pay to pub key hash)中我们知道一个公钥对应一个私钥,公钥是公开的,私钥是私有的。但是如果私钥被黑客盗了呢,那怎么办呢?
前面我们说过,比特币的账号是没有实名认证的,不像现实中丢了账号,还可以拿身份证去银行挂失。在比特币的世界里面,只认私钥不认人!除了私钥,你没有别的证件,可以证明这个账号是你的。就像1个保险箱,只有1把钥匙,并且钥匙被盗,还找不回来。那我们觉得不安全,怎么办呢?
答案:为这个保险箱准备多把钥匙,或者说多道开关。就像你在电影中看到的,要开启某个宝藏的大门,需要多个密码拼接在一起,才能打开。
(2)多重签名(MultiSig)
在比特币网络中,最常用的1种是 2-3 多重签名。什么意思呢?
为你的钱包准备3道开关(也就是3对公钥/私钥),3个公钥当然是公开的(也就是Public Key Hash,别人给你转账的时候要用),3个私钥呢?
私钥1:你藏起来,备份,平常不用。
私钥2:你日常使用
私钥3:放在钱包服务商那。
别人给你打钱的时候,要用3个公钥(3个Public Key Hash),你用钱的时候,需要使用两把私钥(一般使用私钥2 + 私钥3,私钥1在上述两把缺失的情况下使用)来解密。
所谓的2-3,就是加密是3个公钥,解密至少需要2把私钥。2-3多重签名,会达到这样几个目的:
1)钱包服务商只有1把私钥,不可能私自用你的钱
2)你自己拥有2把钥匙,即使钱包服务商不配合,你可以在不经过钱包服务商同意的情况下,把钱转走。
3)黑客要盗用你的账号,至少要盗用2把钥匙。而这2把钥匙,分别存在你和钱包服务商那,难度肯定加大。
通过这个机制,我们就巧妙的提高了一个账号的安全度。
(3)P2SH
对于多重签名,付款人要付给多个公钥,所以其scriptPubKey就变的很长,如下所示:需要A,B,C 这三把公钥。
2 <Public Key A> < Public Key B> < Public Key C> 3 CHECKMULTISIG
收款人花这笔钱的时候,对应的签名是2个,如下所示
<Signature B> <Signature C> 2 <Public Key A> < Public Key B> < Public Key C> 3 CHECKMULTISIG
这种办法最大的缺点是:收款不方便。收款地址太复杂,每一个给我打钱的人,我都需要告诉他们3把公钥,他们要拼出很复杂的scriptPubKey,才能给我转账。怎么解决这个问题呢?
把很长的3把公钥组成的Pub Key,做1次Hash,生成1个短的字符串,其外表看起来,和我们前面所说的Public Key Hash一样。这也是为什么我们说Bitcoin 钱包地址是一个抽象的表达。
如果是只有1把钥匙,Bitcoin Address对应的是Public Key Hash;
如果是多把钥匙,Bitcoin Address对应的其实是Script Hash。
但无论是Public Key Hash,还是Script Hash,对付款人来说,格式一样的。这样,就对付款人屏蔽了这个内部的复杂性。
有了Script Hash,因此就多了1种交易类型:P2SH,也就是Pay To Script Hash,与之对应的是前面的P2PKH。所以,P2SH的出现,既解决了账户的安全性问题(多重签名),又解决了支付的便利性(虽然有多重公钥,但是对付款人来说,看到的是个Hash值,也就是通常的Bitcoin Address)。

上一篇下一篇

猜你喜欢

热点阅读