bcc币(bcc币中文叫什么币)
oppa oppa比特币电子签名
文章目录
概述
在《分析比特币脚本》一文中提到,比特币脚本的一个应用就是多重签名。顾名思义比特币闪电交易不能开通。多重签名(以下简称多重签名)是指一个交易需要多个私钥签名才能执行。
大多数情况下,交易是一对一的,买家将比特币支付到卖家给出的地址(即卖家的公钥hash)。如果卖家使用比特币,你可以提供自己的数字签名,并验证你的数字签名是否有效。但也会出现这样的场景:一个钱包由多人共同持有。例如,如果一家公司有五个合伙人,公司钱包有五个私钥,每个合伙人持有一个私钥。为防止其中一方试图中饱私囊或挥霍,必须有五分之三的人同时签字,才能拿出钱包里的硬币。在这种情况下,需要“多重签名”。
在比特币中,多重签名是指:如果一个钱包有M个私钥,需要N (1≤n≤m)个私钥的签名才能进行交易。实施。对应现实,可以想象这样一个场景:M个人共同管理一个基金(比特币),每个人持有一个私钥。要使用这笔资金,你必须获得他们中至少N人的同意(签名)。执行。对应这个场景,m是5,n是3。
使用多个签名有以下优点:
实现多重签名有两种主要方式:
下面将描述这两种实现方式。
多重签名实现
用于实现多重签名,输出脚本(也称为锁定脚本)如下:
n
OP _ push data(public key _ 1)
OP _ push data(public 比特币 key _ 2)
...
OP _ push data(public key _ m)
m
OP _ CHECKMULTSIG
如果输出脚本是这种形式,则交易是多对多(P2MS)交易,这也是一个常见的表达式。其中,M表示总共有M个人,每个人有一个公钥,总共有M个公钥。这笔钱将支付给M个人,由他们共同持有;N是指当M个人想用钱赚钱时,需要N个人的数字签名(即N个人的同意)才能使用这笔钱。
解锁UTXO(可以理解为输出脚本支付的比特币的ID)时,需要提供如下格式的输入脚本(也叫解锁脚本):
OP _ push data(SIG _ 1)
OP _ push data(SIG _ 2)
...
OP _ push data(SIG _ n)
可以理解为需要N个签名(即N个人的同意)才能使用这笔钱。需要用钱的时候,n个人提供输入脚本,把输入脚本和输出脚本拼接在一起,得到一个完整的执行脚本,然后执行脚本。拼接脚本的形式如下:
OP_PUSHDATA(sig_1)
OP_PUSHDATA(sig_2)
...
OP_PUSHDATA(sig_n)
n
OP_PUSHDATA(publicKey_1)
OP_PUSHDATA(publicKey_2)
...
OP_PUSHDATA(publicKey_m)
OP _ push data(SIG _ 1)
OP _ push data(SIG _ 2)
...
OP _ PUSHDATA(SIG _ n)
n
OP _ PUSHDATA(public key _ 1)
OP _ PUSHDATA(public key _ 2)
...
OP _ push data(public key _ m)
m
OP_CHECKMULTSIG
执行过程如图所示:
可以看出,一个语句就可以完成整个多重签名的验证。
然而,这种验证方法也有一些缺点。它要求付款人(输出脚本)提供所有收款人的公钥。也就是说,向有五个合伙人的公司支付,支付方需要先获取每个合伙人的公钥,不方便。
如果5个合作伙伴可以提供一个支付地址,而不需要支付方一一列出他们的公钥,这是最简单的,可以通过P2SH实现。
P2SH实现单一签名。
P2SH(支付给脚本哈希)是除P2K(支付给公钥)和P2KH(支付给公钥哈希)之外的另一种支付方式。方法。P2SH的输入脚本需要提供被调用的脚本,P2SH的输出脚本需要提供hash。在讨论P2SH中多重签名的实现之前,我们先讨论一下P2SH中单一签名的一个简单情况。
P2SH的输出脚本格式如下:
OP _ hash 160
OP _ push data(resumescripthash)
OP _ equal verify
输入脚本格式如下:
OP _ push data(SIG)
OP _ push data(rede script)
拼接后的脚本如下:
OP _ push data(SIG)
OP _ push data(reduce script)
OP _ hash 160
OP _ push data(reduce script hash)
OP _ equal verify
P2SH支付时,收款人只需向付款人提供地址即可。付款人可以支付比特币到这个地址,这个地址是收款人赎回脚本的哈希值;收款人要花钱的时候,需要提供相应的兑换脚本和收款人的数字签名。如果执行redempt脚本后栈顶等于TRUE,则意味着整个支付的验证通过。
执行拼接后的脚本后,执行过程如下图所示:
上图中,如果执行结果为真,那么接下来就会执行,不过是收款人自定义的。我们也可以用它来实现多重签名。
P2SH实现多重签名。
使用P2SH支付方式比特币闪电交易无法开通,使用redempt脚本可以实现多重签名。
P2SH实现多重签名时的输出脚本格式如下:
可以看出,实现多签和单点时,P2SH的输出脚本格式是相同的。
输入脚本的格式如下:
OP _ push data(SIG _ 1)
OP _ push data(SIG _ 2)
...
OP _ push data(SIG _ n)
OP _ push data(rede script)
可以看出,实现多签时,输入脚本的格式与单签略有不同。不同之处在于,不再只提供一个数字签名,而是提供多个数字签名。
拼接后的脚本如下:
OP_PUSHDATA(sig_1)
OP_PUSHDATA(sig_2)
...
OP_PUSHDATA(sig_n)
OP_PUSHDATA(redeemScript)
OP_HASH160
OP_PUSHDATA(redeemScriptHash)
OP_EQUALVERIFY
OP _ push data(SIG _ 1)
OP _ push data(SIG _ 2)
...
OP _ PUSHDATA(SIG _ n)
OP _ PUSHDATA(reduce script)
OP _ hash 160
OP _ PUSHDATA(reduce script hash)
OP _ equal verify
拼接后执行脚本。如果等于真,开始执行。格式如下:
n
OP _ push data(public key _ 1)
OP _ push data(public key _ 2)
...
OP _ push data(public key _ m)
m
OP _ check multisig
此时,执行过程将与上一节“实现多重签名”相同。
以上是实现多重签名的过程。整个过程如下图所示。
参考
[1]比特币脚本如何实现多重签名?
[2]“支付给多重签名”和“支付给脚本哈希”
[3]多个签名
[4]比特币与Arvind,Joseph Bonneau等。第3.2节
节日
Ethos是一个简单易用的矿业系统,为矿业提供教程软件和矿机评估及交易信息,以数字货币比较计算各种矿业利润,介绍矿业工具,矿业网站最新消息。http://www.ethospool.com/
我们可以为您服务,为您提供大量的情报,我们为您提供快捷准确的报价,并为您提供放心的服务和安全的交易服务。同时,我们的官方社区包括货币圈不同领域的名人和高级专业玩家,内容涵盖全球、股市、汇市、债市等金融市场,为您提供权威、专业、全面的金融信息服务。
您还可以根据您的投资目标和市场变化,随时免费进行账户转换。如果您有任何疑问都可以回复公众号,理财顾问每天都会为您解答!如果你们在交易中遇到了什么问题,可以联系我们,我们会尽最大的努力为客户解决问题。
本文来自网络,不代表币圈之家立场,如有侵权请联系我们删除,转载请注明出处:http://btc.dongyuegg.com/web/13150.html