在区块链中,详细解析多重签名

大家好,这里是链客区块链技术问答社区。

链客,专为技术开发者而生,有问必答!

多重签名

多重签名脚本设置了一个条件,N个公钥记录在脚本中,并且需要其中至少M个提供签名才能解锁资金。这也被称为M-of-N方案,其中N是密钥的总数,M是验证所需签名个数的阈值。例如,一个2-of-3的多重签名是三个公钥被列为潜在签名者并且其中至少两个必须被用来创建签名,从而创建有效的交易花费资金。

目前,标准的多重签名脚本最多只能列出3个公钥,这意味着你可以执行从1-of-1到1-of-3之间的任意组合的多重签名。本书出版时,列出3个公钥的限制可能已经解除,因此请检查IsStandard()函数以查看网络当前接受的操作。请注意,3键的限制仅适用于标准多重签名脚本,而不适用于包含在支付到脚本哈希中的多重签名脚本。P2SH多重签名脚本限于15个键,最多允许15-of-15的多重签名。我们将在支付到脚本哈希Pay-to-Script-Hash(P2SH)中学习P2SH。

以太坊核心开发者会议确认伦敦升级不会推迟,仍将在区块12,965,000进行:以太坊开发者trent表示,以太坊核心开发者会议正在进行中,与会人员都坚持伦敦网络升级的区块12,965,000进行。[2021/7/24 1:12:21]

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

M<PublicKey1><PublicKey2>……<PublicKeyN>NCHECKMULTISIG

其中N是列出的公钥数量,M是花费这笔支出所需的签名个数。

一个2-of-3多重签名条件的锁定脚本设置如下:

2<PublicKeyA><PublicKeyB><PublicKeyC>3CHECKMULTISIG

茅友公社与京东达成战略合作,加强在区块链等领域的合作:1月20日,茅台老酒鉴藏交易零售平台茅友公社与京东达成战略合作,宣布成立以科技鉴藏为基础的老酒交易平台——搜茅网。茅友公社将在京东的技术与商业生态支持下,加强京东区块链、金融、物流行业解决方案在老酒消费领域的落地和全面赋能,共同推进老酒交易市场的数字化、平台化和秩序化。(环球资讯网)[2021/1/21 16:40:48]

上面的锁定脚本可以被包含签名和公钥对儿的解锁脚本满足:

<SignatureB><SignatureC>

或者3个公钥中的任意两个对应的私钥生成的签名的组合

两个脚本组合起来形成下面的验证脚本

甘肃第84次常务会议:发挥科技创新在区块链技术应用等方面作用:3月26日,甘肃省长唐仁健主持召开十三届省政府第84次常务会议,研究改善优化甘肃科技生态环境工作。会议强调,要发挥科学家和广大科研人员的作用,落实更加有力有效的人才政策,高看一眼、厚爱三分,创造心无旁骛做学问、搞研发、育人才的最优环境,解决“后顾之忧”,实现“名利双收”。要紧盯“新基建”重点领域,更好发挥科技创新在5G网络建设、区块链技术应用、“智慧政务”等方面的作用,加快培育经济增长新动能,推动我省由科技大省向科技强省迈进。(中国甘肃网)[2020/3/27]

<SignatureB><SignatureC>2<PublicKeyA><PublicKeyB><PublicKeyC>3CHECKMULTISIG

金色财经现场报道,火币研究院院长袁煜明:并不是所有通证必须落在区块链上:金色财经现场报道,火币研究院院长袁煜明在GoldenBlock 共识·链上未来论坛上在通证经济是否必须落在区块链的问题上表示,并不是所有通证必须落在区块链上,但社会已经对任何商业化公司的公信力丧失信心,只有区块链可以提供通证运行的系统基石。[2018/4/10]

执行时,只有在解锁脚本与锁定脚本设置的条件匹配时,此组合脚本才会评估为TRUE。在这种情况下,条件是解锁脚本是否具有来自3个公钥中的两个对应私钥的有效签名。

CHECKMULTISIG执行中的一个错误

在CHECKMULTISIG的执行过程中有一个错误,需要稍微解决一下。当CHECKMULTISIG执行时,它应该消耗堆栈中的M+N+2个项目作为参数。但是,由于该错误,CHECKMULTISIG会弹出额外的值或超出预期的值。

让我们用前面的验证示例更详细地看一下:

<SignatureB><SignatureC>2<PublicKeyA><PublicKeyB><PublicKeyC>3CHECKMULTISIG

首先,CHECKMULTISIG+弹出顶部元素,它是+N。然后它弹出N个元素,这是可签名的公钥。在这个例子中,是公钥A,B和C。然后,它弹出一个项目,即M,仲裁数。这里M=2。此时,CHECKMULTISIG应该弹出最后的M个元素,这是签名,并查看它们是否有效。然而,不幸的是,实现中的一个错误会导致CHECKMULTISIG弹出另一个元素。额外的项目在检查签名时被忽略,因此它对CHECKMULTISIG本身没有直接影响。但是,必须存在额外的值,因为如果它不存在,当CHECKMULTISIG试图弹出空堆栈时,它将导致堆栈错误和脚本失败。由于额外的项目被忽略,它可以是任何东西,但通常使用0。

由于这个bug成为了共识规则的一部分,现在必须永久复制。因此,正确的脚本验证将如下所示:

0<SignatureB><SignatureC>2<PublicKeyA><PublicKeyB><PublicKeyC>3CHECKMULTISIG

所以,正确的解锁脚本不是

<SignatureB><SignatureC>

而是:

0<SignatureB><SignatureC>

从现在起,如果你看到一个multisig解锁脚本,你应该在开始时看到一个额外的0,其唯一目的是修正意外成为共识规则的错误。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

银河链

波场区块链中的公钥私钥到底怎么回事?

大家好,这里是链客区块链技术问答社区。链客,专为开发者而生,有问必答! 加密方法包括对称密钥加密和非对称密钥加密。 加密和解密方式: ·加密:更改原始消息文本,使其仅对特定主题可识别.

[0:0ms0-1:516ms