第11课 账号被黑客盗取怎么办? -- 多重签名(MultiSig)与P2SH

有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。
或扫描如下二维码:
第11课 账号被黑客盗取怎么办? -- 多重签名(MultiSig)与P2SH_第1张图片

多重签名 - 1个保险箱多把钥匙
在第8课 账号相关概念:公钥/私钥/Public Key Hash/P2PKH我们知道了,1个账号对应1对公钥/私钥,公钥是公开的,私钥你私自保存。

但是如果私钥被黑客盗了呢,那怎么办呢???前面我们说过,比特币的账号是没有实名认证的,不像现实中丢了账号,还可以拿身份证去银行挂失。

在比特币的世界里面,只认私钥不认人!除了私钥,你没有别的证件,可以证明这个账号是你的。

就像1个保险箱,只有1把钥匙,并且钥匙被盗,还找不回来。那我们觉得不安全,怎么办呢?

答案:为这个保险箱准备多把钥匙,或者说多道开关。就像你在电影中看到的,要开启某个宝藏的大门,需要多个密码拼接在一起,才能打开。

在比特币网络中,最常用的1种是 2-3 多重签名。什么意思呢?
为你的钱包准备3道开关(也就是3对公钥/私钥),3个公钥当然是公开的(也就是Public Key Hash,别人给你转账的时候要用),3个私钥呢?

私钥1:你藏起来,备份,平常不用。
私钥2:你日常使用
私钥3:放在钱包服务商那。

别人给你打钱的时候,要用3个公钥(3个Public Key Hash);
你用钱的时候,需要私钥2 + 私钥3 2把钥匙来解密。

所谓的2-3,就是加密是3个公钥,解密至少需要2把私钥。

2-3多重签名,会达到这样几个目的:
(1)钱包服务商只有1把私钥,不可能私自用你的钱
(2)你自己拥有2把钥匙,即使钱包服务商不配合,你可以在不经过钱包服务商同意的情况下,把钱转走。
(3)黑客要盗用你的账号,至少要盗用2把钥匙。而这2把钥匙,分别存在你和钱包服务商那,难度肯定加大。

通过这个机制,我们就巧妙的提高了一个账号的安全度。

多重签名的缺点
对于多重签名,付款人要付给多个公钥,所以其scriptPubKey就变的很长,如下所示:需要A,B,C 3把公钥,每1部分,都是上1节课所提到的,很长的那1串。

收款人花这笔钱的时候,对应的签名是2个,如下所示:

这种办法最大的缺点是:收款不方便。收款地址太复杂,每1个给我打钱的人,我都需要告诉他们3把公钥,他们要拼出很复杂的scriptPubKey,才能给我转账。

怎么解决这个问题呢?
把很长的这个3把公钥组成的Pub Key,做1次Hash,生成1个短的字符串,其外表看起来,和我们前面所说的Public Key Hash一样。

这也是,为什么我们前面说,Bitcoin Address是一个抽象的表达。
如果是只有1把钥匙,Bitcoin Address对应的是Public Key Hash;
如果是多把钥匙,Bitcoin Address对应的其实是Script Hash。

但无论是Public Key Hash,还是Script Hash,对付款人来说,格式一样的。这样,就对付款人屏蔽了这个内部的复杂性。

P2SH
有了Script Hash,因此就多了1种交易类型:P2SH,也就是Pay To Script Hash,与之对应的是前面的P2PKH。

所以,P2SH的出现,既解决了账户的安全性问题(多重签名),又解决了支付的便利性(虽然有多重公钥,但是对付款人来说,看到的是个Hash值,也就是通常的Bitcoin Address)。

相关链接:
《第10课 交易安全性如何保证? – scriptSig/scriptPubKey/Script Engine》
《第9课 Transaction数据结构、UTXO、钱包 – 详解》

你可能感兴趣的:(区块链技术)