精华内容
下载资源
问答
  • 2021-11-16 06:00:06

    本文环境:

              区块链版本:以太坊POA联盟链

              节点版本: geth 1.9.19

              操作系统:windows 64

              合约版本:solidity ^0.8.5

    本文介绍一种基于以太坊的多重签名智能合约;

    本篇合约与前两篇文档合约有类似的地方,也有独到的地方,本文主要讲解其中的不同点,部分内容可能较简略,如果有兴趣,请参考前两篇文档;

    1. 合约源码

    // SPDX-License-Identifier: Unlicensed
    pragma solidity 0.8.5;
    
    contract multiSigWallet {
    
        address[] public owners;
        mapping(address => bool) public isOwner;
        uint256 public confirmationsReq;
        mapping(uint256 => mapping(address => bool)) public confirms;
    	
        struct Transaction {
            address requester;
            address to;
            uint256 amount;
            bytes data;
            uint8 signatureCount;
            bool executed;
        }
    	
        Transaction[] public transactions;
    
        modifier Owner() {
            require(isOwner[msg.sender], "Not authorized owner");
            _;
        }
    	
       
    更多相关内容
  • 针对分布式环境下信任建模中信任链上推荐信息的认证问题,研究了无证书有序多重签名方案的安全模型,进而基于椭圆曲线密码和双线性映射提出一个无证书有序多重签名方案,并在随机预言机模型下,证明方案的安全性建立...
  • 摘 要:提出了一种基于离散对数型的有序多重签名方案,该方案无需增设第三方信任机构,减少了通信和计算工作量。同时他的安全性基于求解离散对数难题,因此是一种安全有效的有序多重签名方案。关键词:多重签名;...
  • 在电子商务和电子政务领域中,针对多人联合签署同一文件以及追究签名者责任的需求,提出了一种可追踪身份的基于属性的多重签名方案。采用基于属性的多重签名(AttributebasedMulti-signature,ABMS),解决了多人联合签署...
  • 广义指定多个验证者签名允许签名持有者指定多个签名验证者,有序多重签名则可满足多个签名者以严格的次序进行签名的要求。根据上述特性,提出一种基于身份的广义指定多个验证者有序多重签名方案,采用类短签名的形式...
  • 为了设计出一种更成熟、更有效的代理签名方案和代理多重签名,通过引入MUO代理数字签名及椭圆曲线DSA算法,将ECDSA应用于MUO方案,得到了一种新的代理数字签名方案,它满足6种代理数字签名所必须的性质,并且在此基础上...
  • 为了满足多个人对同一份文件签名的高效性,将无证书密码体制与多重签名方案相结合,提出一种高效的无证书多重签名方案。该方案有效地削弱了可信第三方的权力,并且被证明了在适应性选择消息攻击下是存在性不可伪造的...
  • 随着电子公文应用的发展,多重签名算法的安全性成为研究热点。针对XML格式的电文公文多重数字签名的特点,提出了一种安全的多重数字签名算法。该算法在多重签名的产生阶段加入新的计算公式来生成多个签名,签名收集...
  • 对罗等人提出的前向安全的ElGamal型多重数字签名方案进行了安全性分析,指出该方案不具有前向安全性。当某个签名人的签名密钥...新方案能够抵抗伪造攻击和联合攻击,是一个安全、高效、实用的前向安全的多重签名方案。
  • 比特币多重签名地址创建和签名脚本 v0.2。 通过 OutCast3k。 此存储库不再维护,请参阅: : 或以获取更高级的最新版本!
  • 基于椭圆曲线的盲代理多重签名方案,杜春粉,周梦,为了实现一个盲代理签名能够同时代表多个原始签名人签名,人们提出了盲代理多重签名这一概念,克服了一个盲代理签名只能代表一个
  • #资源达人分享计划#
  • 多重签名

    2019-09-11 20:59:02
    在数字签名应用中,有时需要多个用户对同一个文件进行签名和认证。比如,一个公司发布的声明中涉及财务部、开发部、销售部、售后服务部等部门,需要的到这些部门签名认可,那么,就需要这些部门对这个... 多重签名...

    多重签名1
      在数字签名应用中,有时需要多个用户对同一个文件进行签名和认证。比如,一个公司发布的声明中涉及财务部、开发部、销售部、售后服务部等部门,需要的到这些部门签名认可,那么,就需要这些部门对这个声明文件进行签名。能够实现多个用户对同一文件进行签名的数字签名方案称作多重数字签名方案。
      多重签名就是多个用户对同一个消息进行数字签名。
      多重签名,可以简单的理解为一个数字资产的多个签名。签名标定的是数字资产所属和权限,多重签名预示着数字资产可由多人支配和管理。在加密货币领域,如果要动用一个加密货币地址的资金,通常需要该地址的所有人使用他的私钥(由用户专属保护)进行签名。那么,多重签名,就是动用这笔资金需要多个私钥签名,通常这笔资金或数字资产会保存在一个多重签名的地址或帐号里(就比特币而言,多重签名地址通常以3开头)。
    多重签名2
      Alice和Bob怎么对同一个数字文件签名呢?不用单向散列函数,有两种选择:
      第一种选择是Alice和Bob分别对文件的副本签名,结果签名的消息是原文的两倍;
      第二种就是Alice首先签名,然后Bob对Alice的签名再进行签名。这是可行的,但是在不验证Bob签名的情况下就验证Alice的签名是不可能的。
      采用单向散列函数,很容易实现多重签名:
      (1)Alice对文件的散列签名。
      (2)Bob对文件的散列签名。
      (3)Bob将他的签名交给Alice。
      (4)Alice把文件、她的签名和Bob的签名发给Carol。
      (5)Carol验证Alice和Bob的签名。
      Alice和Bob能同时或顺序地完成第(1)步和第(2)步;在第(5)步中Carol可以只验证其中一人的签名而不用验证另一人的签名。

      关于 MultiSig(多重签名),从原理角度上讲,多重签名本身并不复杂,简单来说,一句话就够了:“用 m 把钥匙生成一个多重签名的地址,需要其中的 n 把钥匙才能花费这个地址上的比特币,m >= n,这就是 n/m 的多重签名”
      在实际的操作过程中,一个多重签名地址可以关联n个私钥,在需要转账等操作时,只要其中的m个私钥签名就可以把资金转移了,其中m要小于等于n,也就是说m/n小于1,可以是2/3, 3/5等等,是要在建立这个多重签名地址的时候确定好的。
    相关图片

      多重签名给了加密货币腾飞的翅膀,让它单一单项支付的能力更具吸引力,让加密货币技术应用到各行各业成为可能。这里简单的罗列几个应用场景,供探索和思考:

    • 电子商务。比较常见的是2/3的模式。上面电子商务网站的例子,就是最典型的场景之一,目前已经有成功的案例了。延伸一下,这类应用本质就是中介,所以还可用在各类中介机构性质的服务上。
    • 财产分割。比如夫妻双方共有财产,可以使用1/2的模式,一个账户谁都可以使用,跟各自拥有帐号一样,好处是系统忠实记录了每个人的花销,闹掰的时候很容易清算。扩展到公司合伙经营,可以使用1/n模式,n个人合伙人,都可以直接支配共有资金,具体清算时,一目了然。
    • 资金监管。其实,这是多重签名的最直接作用,一笔钱需要多个人签名才能使用,任何一个人都无法直接动用资金,这在生活中太常见了,只要灵活设置多重签名的比重模式,就能解决生活中很多问题。比如,接着上面夫妻的例子,夫妻要储备一笔资金,供孩子上大学使用,在这之前谁都不能动,那么把模式改为2/2,不仅限制了夫妻双方,也给黑客攻击增加了难度。

      多重签名的设计,让各种业务去中心化充满无限可能。

    http://www.frankyang.cn/2017/09/30/multisignature/

    转载于:https://my.oschina.net/yangjiannr/blog/1546347

    展开全文
  • MultiSigWallet
  • 比特币多重签名

    2022-06-08 23:08:21
    在“浅析比特币脚本”一文中,曾经提到过比特币脚本的一个应用是多重签名(Multi-Signature)。顾名思义,多重签名(以下简称多签)是指一笔交易需要多个私钥签名才能被执行。在大多数情况下,交易都是一对一进行的,...


    概述

    在“浅析比特币脚本”一文中,曾经提到过比特币脚本的一个应用是多重签名(Multi-Signature)。顾名思义,多重签名(以下简称多签)是指一笔交易需要多个私钥签名才能被执行。

    在大多数情况下,交易都是一对一进行的,买家向卖家给出的地址(即卖家的公钥哈希)支付比特币,卖家要使用该比特币的时候提供自己的数字签名并验证自己的数字签名有效即可。但也会有这样一类场景:一个钱包被多个人共同持有。比如,某公司有5个合伙人,公司钱包相应就有5个私钥,每个合伙人持有其中1个私钥。为了防止其中某一个合伙人想中饱私囊或者肆意挥霍,必须有5个人中的3人同时签名才可以把钱包中的币取走,这类情况就需要使用“多重签名”。

    在比特币中,多签的含义是:一个钱包如果有m个私钥,交易的时候,需要其中n(1≤n≤m) 个私钥的签名,交易才能被执行。对应到现实里,可以想象为这样一个场景:m个人共同管理一笔资金(比特币),他们各自持有一把私钥,要花费这笔资金需要取得其中至少n个人的同意(签名) 才能进行。对应到这个场景的话,m就是5,n就是3。

    使用多签有这些优点:

    • 一个钱包可以由多人共同管理
    • 避免单点故障,防止某一个私钥被盗影响整个钱包
    • 多个私钥可以起备份作用,防止单一私钥在丢失的情况下导致大量属于该私钥持有者的资金损失

    多签主要有两种实现方式:

    • CHECKMULTISIG实现多签
    • P2SH实现多签

    下面将对这两种实现方式进行介绍。

    CHECKMULTISIG实现多签

    用CHECKMULTISIG实现多签,输出脚本(也叫锁定脚本)的形式如下:

    n
    OP_PUSHDATA(publicKey_1)
    OP_PUSHDATA(publicKey_2)
    ...
    OP_PUSHDATA(publicKey_m)
    m
    OP_CHECKMULTSIG
    

    如果输出脚本是这种形式的话,这笔交易就是一笔付款到多重签名(P2MS,Pay to Multi Signature)的交易,也常用multisig表示。其中m表示一共有m个人,每个人各自有一把公钥,共有m把公钥,这笔钱将会付给这m个人,由他们共同持有;n表示需要当这m个人想要使用这笔钱的时候,需要其中n个人的数字签名(即获得n个人的同意)才能使用这笔钱。

    解锁UTXO(可理解为输出脚本所支付的比特币的ID)时,需要提供输入脚本(也叫解锁脚本),其形式如下:

    OP_PUSHDATA(sig_1)
    OP_PUSHDATA(sig_2)
    ...
    OP_PUSHDATA(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)
    m
    OP_CHECKMULTSIG
    

    其执行过程如图:

    可见,OP_CHECKMULTISIG一条语句就能完成整个多签的验证。

    但是这种验证方式也有不足,它需要付款人(输出脚本)提供所有收款人的公钥。换句话说,要给有5个合伙人的公司打款,需要付款人先去获得每个合伙人的公钥,这样很不方便。

    如果5个合伙人能提供单一的收款地址,不需要付款人把他们的公钥一一列出来,那样是最简便的,而这可以通过P2SH来实现。

    P2SH实现单签

    P2SH(Pay to Script Hash)是除P2K(Pay to public key)、P2KH(Pay to public key hash)之外的另一种付款方式。在P2SH的输入脚本中需要提供一个被称为RedeemScript的脚本,在P2SH的输出脚本则需要提供RedeemScript的哈希。在讨论P2SH实现多签之前,先讨论P2SH实现单签这种简单的情况。

    P2SH的输出脚本格式如下:

    OP_HASH160
    OP_PUSHDATA(redeemScriptHash)
    OP_EQUALVERIFY
    

    输入脚本格式如下:

    OP_PUSHDATA(sig)
    OP_PUSHDATA(redeemScript)
    

    拼接后的脚本如下:

    OP_PUSHDATA(sig)
    OP_PUSHDATA(redeemScript)
    OP_HASH160
    OP_PUSHDATA(redeemScriptHash)
    OP_EQUALVERIFY
    

    使用P2SH方式付款时,收款人只需要向付款人提供一个地址,付款人往这个地址支付比特币即可,这个地址就是收款人的Redeem Script的哈希;当收款人要花这笔钱的时候,需要提供相应的Redeem Script,以及收款人的数字签名。如果Redeem Script执行后,栈顶等于TRUE,那么表示整个付款的验证通过。

    执行拼接后的脚本,执行过程如下图所示:
    在这里插入图片描述
    在上图中,如果OP_EQUALVERIFY执行结果为TRUE,那么接下来会执行redeemScript,而redeemScript是收款人自定义的,我们也可以通过它来实现多签。

    P2SH实现多签

    使用P2SH的支付方式,可以通过Redeem Script来实现多签。

    P2SH实现多签时的输出脚本格式如下:

    OP_HASH160
    OP_PUSHDATA(redeemScriptHash)
    OP_EQUALVERIFY
    

    可以看到,P2SH的输出脚本格式在实现多签和单签时是一样的。

    输入脚本格式如下:

    OP_PUSHDATA(sig_1)
    OP_PUSHDATA(sig_2)
    ...
    OP_PUSHDATA(sig_n)
    OP_PUSHDATA(redeemScript)
    

    可以看到,在实现多签时,输入脚本与单签时的格式略微有所不同,此时需要提供的数字签名不再只有一个,而是多个。

    拼接后的脚本如下:

    OP_PUSHDATA(sig_1)
    OP_PUSHDATA(sig_2)
    ...
    OP_PUSHDATA(sig_n)
    OP_PUSHDATA(redeemScript)
    OP_HASH160
    OP_PUSHDATA(redeemScriptHash)
    OP_EQUALVERIFY
    

    执行拼接后的脚本,如果OP_EQUALVERIFY等于TRUE,将开始执行redeemScript,redeemScript的格式如下:

    n
    OP_PUSHDATA(publicKey_1)
    OP_PUSHDATA(publicKey_2)
    ...
    OP_PUSHDATA(publicKey_m)
    m
    OP_CHECKMULTISIG
    

    此时,执行redeemScript的过程将和前面"CHECKMULTISIG实现多签"一节的过程一样。

    以上就是通过redeemScript来实现多签的过程,整个过程如下图所示。
    在这里插入图片描述

    参考文献

    [1]比特币脚本是如何实现多签的?
    [2]“付款到多重签名” 和 “付款到脚本哈希”
    [3]多重签名
    [4]Bitcoin and Cryptocurrency Technologies by Arvind Narayanan, Joseph Bonneau etl. Section 3.2

    展开全文
  • 多重签名技术实践

    2021-01-08 07:16:13
    本文将介绍比特币多重签名技术的原理及使用方式,希望读者能将多重签名用于实际生活之中。比特币多重签名技术的出现,是比特币发展史上的一个里程碑。简单地说,比特币多重签名使得花费比特币时需要用多个私钥来签名...
  • 有序多重签名是多个用户按一定顺序对同一消息文件进行的签名和认证。许艳等提出一个在随机预言机模型下可证明安全的无证书有序多重签名方案,该方案生成的多重签名有固定长度,且验证签名的双线性对运算是固定的。...
  • 为了满足在司法行政、电子政务等领域的应用需求,提出了无证书强指定验证者多重签名的概念和敌手模型,利用双线性对构造了第一个无证书强指定验证者多重签名方案,在计算双线性Diffie-Hellman问题和计算Diffie-...
  • 无证书有序多重签名可用于解决信任链推荐信息的认证问题。秦艳琳等提出一个高效的无证书有序多重签名方案,并在随机语言机模型下证明方案的安全性可归约为 CDH(computational Diffie-Hellman)困难问题。对该方案的...
  • 多重签名要求同一文档必须经过多人的签名才有效,该技术在云安全领域有着一定的应用。Burmester提出的结构化多重签名规定不同的签名者所处的位置不同其签名权限也不同,相比普通的有序多重签名,该方案安全性更高。...
  • 什么是多重签名?多重签名的概念

    万次阅读 2019-05-14 10:15:41
    多重签名,就是多个用户对同一个消息进行数字签名,可以简单地理解为一个数字资产的多个签名。 签名标定的是数字资产所属及权限,多重签名表示该数字资产可由多人支配与管理。在加密货币领域,如果要动用一个加密...

    多重签名,就是多个用户对同一个消息进行数字签名,可以简单地理解为一个数字资产的多个签名。

    签名标定的是数字资产所属及权限,多重签名表示该数字资产可由多人支配与管理。在加密货币领域,如果要动用一个加密货币地址的资金,通常需要该地址的所有人使用他的私钥(由用户专属保护)进行签名。由此,动用这笔资金就需要多个私钥签名,通常这笔资金或数字资产会保存在一个多重签名的地址或账号里。

    blob.png

    A和B两人怎么对同一个数字文件进行签名呢?

    (1)不用单向散列函数,

    ①A和B分别对文件的副本签名,签名消息的数据大小是原文的两倍。

    ②A先签名,然后B在A的签名基础上再进行签名。这是可行的,但是在不验证B签名的情况下就验证A的签名是不可能的。

    (2)采用单向散列函数,可以很简单地实现多重签名

    ①A对文件的散列签名。

    ②B对文件的散列签名。

    ③B将他的签名交给A。

    ④A把文件及其签名和B的签名发给C。

    ⑤C验证A和B的签名。

    在采用单向散列函数的情况下,A和B是能同时或顺序地完成第①步和第②步的,且在第⑤步中,C可以只验证A、B其中一人的签名而不用验证另一人的签名。

    在实际操作过程中,一个多重签名地址可以关联N个私钥,在需要转账等操作时,只需要M个私钥签名就可以把资金转移了。其中M要小于或等于N,也就是说M/N小于1,可以是2/3、3/5等,需要在建立这个多重签名地址的时候确定好M/N的具体模式。

    从原理上讲,多重签名本身并不复杂,用一句话就可以说明:“用W把钥匙生成一个多重签名的地址,需要其中的从把钥匙才能花费这个地址上的比特币,N≥M,这就是M/N的多重签名。”

    多重签名实现第三方的适当介人保障,也增加了数字货币的信任度,多重签名地址允许多个用户使用一个公钥单独发送部分地址。当一些人想要使用比特币时,他们需要除他们本人以外其他一部分人的签名,且需要签名用户的数量在最初创建地址的时候就已经商定。使用资金前需要的多个签名,除了本人以外,其他的签名可以是你的商业伙伴,或与你关系密切的人,甚至是你所拥有的另一个设备,由此来为你成功使用比特币增加一个可控因素,使比特币交易过程接近绝对安全。

    相关参考文章:

    多重签名——典型的数字签名技术

    NEM链上多重签名功能——NEM功能介绍

    NEM的多重签名

    展开全文
  • 为了克服已有方案存在的计算开销大的缺陷,利用双线性对在广播性质上构造了一种新的无证书多重签名方案,并给出了无证书广播多重签名的形式化定义及安全模型。在计算性Diffie-Hellman困难性假设下,证明了新方案在...
  • 多重签名(Multisig)

    千次阅读 2021-07-21 09:43:23
    2.1 有序多重签名 签名者之间的签名次序是一种串行的顺序 eg. 2.2 广播多重签名 即签名者之间的签名次序是一种并行的顺序,互不干涉。 eg. 3. 用途 1-2,两人只要有一人同意即可使用资金; 2-2,两人必须都同意才...
  • 第86篇 多重签名智能合约(0.4.24)

    千次阅读 2021-11-13 22:38:46
    本文环境: 区块链版本:以太坊POA联盟链 节点版本: geth 1.9.19 操作系统:windows 64 合约版本:solidity ^0.4.24 本文介绍一种基于以太坊的多重签名智能合约; 1. 合约源码 pragma solidity ^0.4.24; contract ...
  • EOS多重签名.pdf

    2021-04-15 13:16:06
    EOS两个账户多签转账实例操作
  • 改进的无证书有序多重签名方案 有序多重签名是多个用户按一定顺序对同一消息文件进行的签名和认证。提出一个在随机预言机模型 下可证 明安全 的无证书有序多重签名方案 ,该方案生成的多重签 名有 固定长度 ,且验证...
  • 该文基于离散对数问题的困难性,在DSA变体盲代理签名的基础上,结合代理多重签名两种体制的优点,分别提出了具有盲代理签名和代理多重签名双重性质的第一类盲代理多重签名方案和第二类盲代理多重签名方案,并对两种...
  • 提出了一种不含双线性对的无证书有序多重签名方案,即结合不含双线对运算的无证书签名和有序多重签名的思想。与一般无证书数字签名体制不同的是,不含双线性对运算的无证书密码体制没有复杂的双线性对运算,且在计算...
  • 区块链教程之Bitcoin多重签名

    千次阅读 2021-12-20 10:36:18
    由比特币的签名机制可知,如果丢失了私钥,没有任何办法可以花费对应地址的资金。...多重签名地址实际上是一个Script Hash,以2-3类型的多重签名为例,它的创建过程如下: const pubkeys = [ '026477115981fe9

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,997
精华内容 7,198
关键字:

多重签名

友情链接: picture.zip