基于区块链的供应链多重签名方法及系统、设备、存储介质

文档序号:28206744发布日期:2021-12-28 18:48阅读:89来源:国知局
基于区块链的供应链多重签名方法及系统、设备、存储介质

1.本发明涉及区块链技术领域,特别地,涉及一种基于区块链的供应链多重签名方法及系统、设备、计算机可读取的存储介质。


背景技术:

2.供应链是指生产及流通过程中涉及将产品或服务提供给最终用户活动的上游与下游企业所形成的网链结构。而区块链技术,也被称之为分布式账本技术,是一种由若干台计算机设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算机设备都可以参与数据库记录,并且各计算机设备之间可以快速的进行数据同步等特性,使得区块链技术在众多领域中具有广泛的应用。目前,基于区块链的供应链系统中,在供应链的每个环节都需要相关节点对数据或者单据进行签名确认,而每次签名均需要消耗一定的存储空间和通信资源,签名的次数越多,消耗的存储空间和通信资源越多,而且在验证时也需要逐个对多个签名进行验证,也需要消耗大量的计算资源,降低了系统效率。


技术实现要素:

3.本发明提供了一种基于区块链的供应链多重签名方法及系统、设备、计算机可读取的存储介质,以解决现有的基于区块链的供应链系统存在的上述缺点。
4.根据本发明的一个方面,提供一种基于区块链的供应链多重签名方法,包括以下内容:
5.购货方节点、生产商节点、物流商节点和银行节点达成一致协议,并将协议以智能合约的形式部署到区块链中;
6.对多重签名机制进行初始化,为购货方节点、生产商节点、物流商节点分别生成公私密钥,并计算聚合公钥,然后银行节点生成一个临时的专用账户,该账户作为购货方节点打款的临时账户;
7.购货方节点向生产商节点下产品订单并向专用账户中转入订单预付款,然后将相关信息上传到区块链中;
8.生产商节点将产品交予物流商节点并使用多重签名机制产生的私钥对聚合公钥签名,然后将相关信息上传到区块链中;
9.物流商节点将产品交付购货方节点并使用多重签名机制产生的私钥对聚合公钥签名,然后将相关信息上传到区块链中;
10.购货方节点验货后向专用账户转入订单尾款并使用多重签名机制产生的私钥对聚合公钥签名,然后将相关信息上传到区块链中;
11.智能合约系统检测到多重签名完成后对多重签名进行聚合,并验证聚合签名通过后,自动从专用账户转出资金到生产商账户和物流商账户。
12.进一步地,所述对多重签名机制进行初始化的过程具体包括以下内容:
13.选定椭圆曲线e
p
(a,b),其中,p是素数,gf(p)表示一个素域,a,b∈gf(p),则gf(p)上的椭圆曲线e
p
(a,b)是由满足gf(p)上的方程y2=x3+ax+b的所有点g和一个无穷远点o构成的集合,g={(x,y)∈gf(p)
×
gf(p):y2=x3+ax+b};
14.确定待签名数据m;
15.选定哈希函数h;
16.确定签名者数量n。
17.进一步地,所述为购货方节点、生产商节点、物流商节点分别生成公私密钥的过程具体包括以下内容:
18.选取e
p
(a,b)上的一个点g作为基点,z为g的阶,为购货方节点、生产商节点、物流商节点各自随机选择一个整数sk
i
作为私钥,0<sk
i
<z,然后计算其公钥pk
i
,计算公式为:pk
i
=sk
i
*g,i=1,2,

,n。
19.进一步地,具体采用以下公式来计算聚合公钥:
[0020][0021]
其中,pk表示聚合公钥,l=h(pk1,pk2,...,pk
n
),l表示多个节点的公钥利用哈希函数计算得到的哈希值。
[0022]
进一步地,所述使用多重签名机制产生的私钥对聚合公钥签名的过程包括以下内容:
[0023]
每个签名者选择一个随机数r
i
并将其共享给其它签名者,然后计算离散对数点r为多重签名的第一部分;
[0024]
然后每个签名者对待签名数据m进行签名,即计算s
i
=r
i
+h(pk,r,m)h(l,pk
i
)*sk
i

[0025]
进一步地,所述对多重签名进行聚合的过程具体为:
[0026]
计算s为多重签名的第二部分,则聚合后的最终签名为(r,s)。
[0027]
进一步地,对聚合签名进行验证的过程具体为:
[0028]
构造等式s*g=r+h(x,r,m)*pk,x表示离散对数点的横坐标,并验证该等式是否成立,若等式成立,则签名验证通过,否则验证不通过。
[0029]
另外,本发明还提供一种基于区块链的供应链多重签名系统,采用如上所述的供应链多重签名方法,包括:
[0030]
智能合约部署模块,用于在购货方节点、生产商节点、物流商节点和银行节点达成一致协议后,将协议以智能合约的形式部署到区块链中;
[0031]
密钥管理模块,用于对多重签名机制进行初始化,为购货方节点、生产商节点、物流商节点分别生成公私密钥,并计算聚合公钥,然后银行节点生成一个临时的专用账户,该账户作为购货方节点打款的临时账户;
[0032]
订单管理模块,用于供购货方节点向生产商节点下产品订单并向专用账户中转入订单预付款,然后将相关信息上传到区块链中;
[0033]
发货管理模块,用于供生产商节点将产品交予物流商节点并使用多重签名机制产
生的私钥对聚合公钥签名,然后将相关信息上传到区块链中;
[0034]
收货管理模块,用于供物流商节点将产品交付购货方节点并使用多重签名机制产生的私钥对聚合公钥签名,然后将相关信息上传到区块链中;
[0035]
货款管理模块,用于供购货方节点验货后向专用账户转入订单尾款并使用多重签名机制产生的私钥对聚合公钥签名,然后将相关信息上传到区块链中;
[0036]
多重签名验证模块,用于在智能合约系统检测到多重签名完成后对多重签名进行聚合,并验证聚合签名通过后,自动从专用账户转出资金到生产商账户和物流商账户。
[0037]
另外,本发明还提供一种设备,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,用于执行如上所述的方法的步骤。
[0038]
另外,本发明还提供一种计算机可读取的存储介质,用于存储基于区块链进行供应链多重签名的计算机程序,所述计算机程序在计算机上运行时执行如上所述的方法的步骤。
[0039]
本发明具有以下效果:
[0040]
本发明的基于区块链的供应链多重签名方法,利用多重签名机制为供应链的各方节点分别生成公钥和私钥,并对多个节点的公钥进行聚合以得到聚合公钥,在进行签名时各方节点利用多重签名机制产生的私钥分别对聚合公钥进行签名,最后,对多重签名进行聚合以得到聚合签名,将多个签名聚合为一个,大大节省了存储空间和通信资源,而且在进行签名验证时只需要验证一个聚合签名即可,无需对每个节点的签名分别进行验证,大大提高了签名验证的效率,进而提高了供应链的工作效率。另外,多重签名不具有可延展性,可以有效避免可延展性供给,而且多重签名将多密钥聚合为单密钥,对交易的多重签名仅展示聚合后的单个密钥,使签名更加简洁,隐私保护性更好。
[0041]
另外,本发明的基于区块链的供应链多重签名系统、设备、计算机可读取的存储介质同样具有上述优点。
[0042]
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照图,对本发明作进一步详细的说明。
附图说明
[0043]
构成本技术的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0044]
图1是本发明优选实施例的基于区块链的供应链多重签名方法的流程示意图。
[0045]
图2是本发明另一实施例的基于区块链的供应链多重签名系统的模块结构示意图。
具体实施方式
[0046]
以下结合附图对本发明的实施例进行详细说明,但是本发明可以由下述所限定和覆盖的多种不同方式实施。
[0047]
如图1所示,本发明的优选实施例提供一种基于区块链的供应链多重签名方法,包括以下内容:
[0048]
步骤s1:购货方节点、生产商节点、物流商节点和银行节点达成一致协议,并将协议以智能合约的形式部署到区块链中;
[0049]
步骤s2:对多重签名机制进行初始化,为购货方节点、生产商节点、物流商节点分别生成公私密钥,并计算聚合公钥,然后银行节点生成一个临时的专用账户,该账户作为购货方节点打款的临时账户;
[0050]
步骤s3:购货方节点向生产商节点下产品订单并向专用账户中转入订单预付款,然后将相关信息上传到区块链中;
[0051]
步骤s4:生产商节点将产品交予物流商节点并使用多重签名机制产生的私钥对聚合公钥签名,然后将相关信息上传到区块链中;
[0052]
步骤s5:物流商节点将产品交付购货方节点并使用多重签名机制产生的私钥对聚合公钥签名,然后将相关信息上传到区块链中;
[0053]
步骤s6:购货方节点验货后向专用账户转入订单尾款并使用多重签名机制产生的私钥对聚合公钥签名,然后将相关信息上传到区块链中;
[0054]
步骤s7:智能合约系统检测到多重签名完成后对多重签名进行聚合,并验证聚合签名通过后,自动从专用账户转出资金到生产商账户和物流商账户。
[0055]
可以理解,本实施例的基于区块链的供应链多重签名方法,利用多重签名机制为供应链的各方节点分别生成公钥和私钥,并对多个节点的公钥进行聚合以得到聚合公钥,在进行签名时各方节点利用多重签名机制产生的私钥分别对聚合公钥进行签名,最后,对多重签名进行聚合以得到聚合签名,将多个签名聚合为一个,大大节省了存储空间和通信资源,而且在进行签名验证时只需要验证一个聚合签名即可,无需对每个节点的签名分别进行验证,大大提高了签名验证的效率,进而提高了供应链的工作效率。另外,多重签名不具有可延展性,可以有效避免可延展性供给,而且多重签名将多密钥聚合为单密钥,对交易的多重签名仅展示聚合后的单个密钥,使签名更加简洁,隐私保护性更好。
[0056]
可以理解,所述步骤s2中对多重签名机制进行初始化的过程具体包括以下内容:
[0057]
选定椭圆曲线e
p
(a,b),其中,p是素数,gf(p)表示一个素域,a,b∈gf(p),则gf(p)上的椭圆曲线e
p
(a,b)是由满足gf(p)上的方程y2=x3+ax+b的所有点g和一个无穷远点o构成的集合,g={(x,y)∈gf(p)
×
gf(p):y2=x3+ax+b};
[0058]
确定待签名数据m,在本实施例中,待签名数据m在供应链的不同环节对应不同的数据,例如在产品订单阶段为订单数据、预付款支付数据等,例如订单类型、产品数量、预付款数额等,在生产商节点向物流商节点交付产品阶段为产品数据,例如产品数量、交货单据等,在物流商节点将产品交付给购货方节点阶段为物流数据,而在购货方节点验货支付尾款阶段为产品数据、尾款支付数据等;
[0059]
选定哈希函数h;
[0060]
确定签名者数量n,在本优选实施例中,签名者数量为3个。
[0061]
可以理解,所述步骤s2中为购货方节点、生产商节点、物流商节点分别生成公私密钥的过程具体包括以下内容:
[0062]
选取e
p
(a,b)上的一个点g作为基点,z为g的阶,即z*g=o,为购货方节点、生产商节点、物流商节点各自随机选择一个整数sk
i
作为私钥,0<sk
i
<z,然后计算其公钥pk
i
,计算公式为:pk
i
=sk
i
*g,i=1,2,

,n。
[0063]
可以理解,所述步骤s2中具体采用以下公式来计算聚合公钥:
[0064][0065]
其中,pk表示聚合公钥,l=h(pk1,pk2,...,pk
n
),l表示多个节点的公钥利用哈希函数计算得到的哈希值。通过在计算聚合公钥时引入了多个节点的公钥计算得到的哈希值l,确保了签名成员的唯一性,防止替换攻击。
[0066]
可以理解,购货方节点、生产商节点和物流商节点使用多重签名机制产生的私钥对聚合公钥签名的过程包括以下内容:
[0067]
每个签名者选择一个随机数r
i
并将其共享给其它签名者,然后计算离散对数点r为多重签名的第一部分;
[0068]
然后每个签名者对待签名数据m进行签名,即计算s
i
=r
i
+h(pk,r,m)h(l,pk
i
)*sk
i

[0069]
可以理解,所述步骤s7中对多重签名进行聚合的过程具体为:
[0070]
计算s为多重签名的第二部分,则聚合后的最终签名为(r,s)。
[0071]
可以理解,所述步骤s7中对聚合签名进行验证的过程具体为:
[0072]
构造等式s*g=r+h(x,r,m)*pk,x表示离散对数点的横坐标,并验证该等式是否成立,若等式成立,则签名验证通过,否则验证不通过。
[0073]
可以理解,所述步骤s3中购货方节点上传的相关信息包括产品订单信息、订单预付款支付信息和签名结果等,所述步骤s4中生产商节点上传的相关信息包括货物交付信息、签名结果等,所述步骤s5中物流商节点上传的相关信息包括物流信息、签名结果等,所述步骤s6中购货方节点上传的相关信息包括货物接收信息、尾款支付信息、签名结果等。
[0074]
另外,如图2所示,本发明的另一实施例还提供一种基于区块链的供应链多重签名系统,优选采用上述实施例的方法,所述系统包括:
[0075]
智能合约部署模块,用于在购货方节点、生产商节点、物流商节点和银行节点达成一致协议后,将协议以智能合约的形式部署到区块链中;
[0076]
密钥管理模块,用于对多重签名机制进行初始化,为购货方节点、生产商节点、物流商节点分别生成公私密钥,并计算聚合公钥,然后银行节点生成一个临时的专用账户,该账户作为购货方节点打款的临时账户;
[0077]
订单管理模块,用于供购货方节点向生产商节点下产品订单并向专用账户中转入订单预付款,然后将相关信息上传到区块链中;
[0078]
发货管理模块,用于供生产商节点将产品交予物流商节点并使用多重签名机制产生的私钥对聚合公钥签名,然后将相关信息上传到区块链中;
[0079]
收货管理模块,用于供物流商节点将产品交付购货方节点并使用多重签名机制产生的私钥对聚合公钥签名,然后将相关信息上传到区块链中;
[0080]
货款管理模块,用于供购货方节点验货后向专用账户转入订单尾款并使用多重签名机制产生的私钥对聚合公钥签名,然后将相关信息上传到区块链中;
[0081]
多重签名验证模块,用于在智能合约系统检测到多重签名完成后对多重签名进行
聚合,并验证聚合签名通过后,自动从专用账户转出资金到生产商账户和物流商账户。
[0082]
可以理解,本实施例的基于区块链的供应链多重签名系统,利用多重签名机制为供应链的各方节点分别生成公钥和私钥,并对多个节点的公钥进行聚合以得到聚合公钥,在进行签名时各方节点利用多重签名机制产生的私钥分别对聚合公钥进行签名,最后,对多重签名进行聚合以得到聚合签名,将多个签名聚合为一个,大大节省了存储空间和通信资源,而且在进行签名验证时只需要验证一个聚合签名即可,无需对每个节点的签名分别进行验证,大大提高了签名验证的效率,进而提高了供应链的工作效率。另外,多重签名不具有可延展性,可以有效避免可延展性供给,而且多重签名将多密钥聚合为单密钥,对交易的多重签名仅展示聚合后的单个密钥,使签名更加简洁,隐私保护性更好。
[0083]
另外,本发明的另一实施例还提供一种设备,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,用于执行如上所述的方法的步骤。
[0084]
另外,本发明的另一实施例还提供一种计算机可读取的存储介质,用于存储基于区块链进行供应链多重签名的计算机程序,所述计算机程序在计算机上运行时执行如上所述的方法的步骤。
[0085]
一般计算机可读取存储介质的形式包括:软盘(floppy disk)、可挠性盘片(flexible disk)、硬盘、磁带、任何其与的磁性介质、cd

rom、任何其余的光学介质、打孔卡片(punch cards)、纸带(paper tape)、任何其余的带有洞的图案的物理介质、随机存取存储器(ram)、可编程只读存储器(prom)、可抹除可编程只读存储器(eprom)、快闪可抹除可编程只读存储器(flash

eprom)、其余任何存储器芯片或卡匣、或任何其余可让计算机读取的介质。指令可进一步被一传输介质所传送或接收。传输介质这一术语可包含任何有形或无形的介质,其可用来存储、编码或承载用来给机器执行的指令,并且包含数字或模拟通信信号或其与促进上述指令的通信的无形介质。传输介质包含同轴电缆、铜线以及光纤,其包含了用来传输一计算机数据信号的总线的导线。
[0086]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1