区块链-多重签名(比特币“退款”)

目录:http://www.javashuo.com/article/p-nitsjfvy-ey.html浏览器

思考一个问题,若是在使用比特币消费时,发生退款怎么办?你买东西,把比特币转给了卖家,可是反悔了怎么办?比特币支持退款吗?安全

咱们知道传统的电商有第三方平台的,好比支付宝。可是比特币呢?网络

比特币交易流程.net

比特币交易流程通常有以下两种形式:code

一、买家直接转帐给商家的比特币地址,这个时候发生纠纷,须要考验双方的人品。blog

二、一个中心化的托管服务,把交易的币打入中心化托管的帐户,这个时候,本质上讲,这个中心托管的服务是彻底拥有这笔比特币的全部权的,或者说,平台的私钥是能够控制这笔钱的。若是平台发生道德危机,或者黑客事件,交易资金的安全就得不到保证。事件

能够看出上面两种方式都不是很好,在比特币中提出了一种交易机制,这就是多重签名。支付宝

多重签名

多重签名脚本设置了一个条件,其中N个公钥被记录在脚本中,而且至少有M个必须提供签名来解锁资金。这也称为M-N 方案,其中N是密钥的总数,M是验证所需的签名的数量。get

例如,2/3 的多重签名是三个公钥被列为潜在签名人,至少有2个有效的签名才能花费资金。电商

设置 M-N 多重签名条件的锁定脚本的通常形式是:

M <Public Key 1> <Public Key 2> ... <Public Key N> N CHECKMULTISIG

M 是花费输出所需的签名的数量,N 是列出的公钥的总数。  设置 2 到 3 多重签 名条件的锁定脚本以下所示:

2 <Public Key A> <Public Key B> <Public Key C> 3 CHECKMULTISIG

上述锁定脚本可由含有签名和公钥的脚本予以解锁: 或者由3个存档公钥中的任意2个相一致的私钥签名组合予以解锁。

两个脚本组合将造成一个验证脚本:

<Signature B> <Signature C> 2 <Public Key A> <Public Key B> <Public Key C> 3 CHECKMULTISIG

当执行时,只有当未解锁版脚本与解锁脚本设置条件相匹配时,组合脚本才显示获得结果为真(Ture)。上述例子中相应的设置条件即为:未解锁脚本是否含有3个公钥中的任意2个相对应的私钥的有效签名。

引入多重签名技术以后的退款流程

一、正常的退款流程。 买家申请退款,输入退款地址浏览器中运行的代码会对从交易Multisig地址到退款地址的这笔交易,利用买家的私钥进行签名。卖家赞成退款,浏览器中运行的代码会利用卖家的私钥,对这笔退款交易进行签名。这样三方中有两方签名成功,这笔交易能够广播到比特币网络,用户也会受到退款了。

二、纠纷的退款流程。 买家申请退款,商家不一样意退款,这个时候币须网会利用双方提供的快递单等申述信息,进行仲裁,若是仲裁决定退款经过,会利用币须网的私钥签名,加上买家的签名,这样三方中有两方签名成功,这笔交易能够广播到比特币网络,用户也会受到退款了。

多重签名有着非凡的意义。在平时即便可以保证咱们的比特币是很是安全的,可是却不能保证的本身的私钥是安全的,若是黑客盗取的了私钥,你的帐户也就不在安全,可是多重签名可以多多少少的避免这种事情,即便丢失一个私钥也没用,必需要多个私钥共同签名才能使用帐户的钱。