基于可变策略的联盟链投票管理方法及系统
文献发布时间:2023-06-19 12:19:35
技术领域
本发明涉及区块链技术领域,具体涉及一种基于可变策略的联盟链投票管理方法及系统。
背景技术
区块链的“去中心化”特性,保证了所有的信息记录均是公开透明、不可篡改的。“去中心化”意味着所有参与者信息共享,任何“暗箱操作”都将不复存在,虚假舞弊的可能性大幅度降低。投票策略是确保“去中心化”中非常关键的一环,由参与者投票来决定某个行为是否可以被网络接受。
现有的Fabric联盟网络中,通道在创建时都是默认同一种投票策略,也就是说无法针对不同通道来制定不同的投票策略。这其实并不利于联盟的治理,缺乏一定的灵活性和便利性。
所以在此基础上,我们针对这个问题,开发了不同的通道可以拥有不同的投票策略的功能。不同通道的可变投票策略可以灵活应对联盟内组织的要求,以此给联盟的治理提供灵活和便利。
发明内容
基于背景技术中提出的问题,本发明提出了一种基于可变策略的联盟链投票管理方法及系统。
一种基于可变策略的联盟链投票管理方法,具体包括:
响应于用户发起的修改策略的提案请求;
若待修改成的策略为隐式策略,则无需检测,提案发起成功;
若待修改成的策略为基于签名的策略,则检测待修改成的策略内容是否满足格式要求,若满足,提案发起成功;否则,发起失败;
根据当前策略向需审核的组织发送投票邀请或签名邀请,若当前策略为隐式策略,则根据当前策略发送投票邀请;若当前策略为基于签名的策略,则根据当前策略发送签名邀请;
获取投票或签名结果,基于投票或签名结果分析是否满足当前通道策略的要求;
若满足,则将当前通道策略进行修改。
进一步地,所述隐式策略分为ALL、ANY、MAJORITY三种类型。
进一步地,所述ALL策略表示需要通道中的所有组织都投票通过,所述ANY 策略表示只需通道中的一家组织投票通过即可,所述MAJORITY策略表示需要通道中投票通过的组织数量超过一半。
进一步地,所述通道的初始策略均默认为MAJORITY,即需要通道内超过一半的组织投票通过。
进一步地,所述策略内容为当前通道策略类型对投票结果或签名信息的要求,对于不同通道的策略类型,策略内容存储在通道上。
每次对策略类型进行修改时,需先获取通道当前的通道策略,根据投票或签名信息与通道策略内容作比对。
若投票结果满足当前通道策略对投票结果的要求,或签名信息满足当前通道策略对签名结果的要求,则修改当前的通道策略,并更新公共链中存储的当前通道策略内容;
若不满足,则修改失败。
基于签名的策略可自由指定投票组织、投票策略,根据指定的投票策略,获取相应投票组织的签名即可。
进一步地,所述基于签名的策略包括AND策略类型、OR策略类型和OutOf 策略类型中的一种或几种:
AND策略类型,对于指定的所有组织,组织个数为N,需要N个组织的签名;
OR策略类型,对于指定的所有组织,组织个数为N,需要最少一个组织的签名;
OutOf策略类型,对于指定的所有组织,组织个数为N,以及指定的需要投票通过的组织个数最少为M个,最少需要M个组织的签名,其中,M<=N;
也可以使用以上三种策略类型中任意两种类型的组合,以及三种类型的组合。
进一步地,所述基于签名的策略的参考格式如下:
(1)AND("baas1.admin","baas2.admin"),指定组织baas1和baas2,需要两个组织的共同签名;
(2)OR("baas1.admin","baas2.admin"),指定组织baas1和baas2,需要最少其中一个组织的签名;
(3)OutOf(2,"baas1.admin","baas2.admin","baas3.admin"),指定组织baas1、baas2和baas3,需要最少其中两个组织的签名;
一种基于可变策略的联盟链投票管理系统,包括请求响应模块、格式检测模块、发送邀请模块、获取结果模块及修改完成模块;
所述请求响应模块,用于响应于用户发起的待修改策略的提案请求;
所述格式检测模块,若待修改成的策略为隐式策略,则无需检测,提案发起成功,若待修改成的策略为基于签名的策略,则检测待修改成的策略内容是否满足格式要求,若满足,提案发起成功,否则,发起失败;
所述发送邀请模块,根据当前策略向需审核的组织发送投票邀请或签名邀请,若当前策略为隐式策略,则根据当前策略发送投票邀请;若当前策略为基于签名的策略,则根据当前策略发送签名邀请;
所述获取结果模块,用于获取投票或签名结果,基于投票或签名结果分析是否满足当前通道策略的要求;
所述修改完成模块被设置为:若满足,则将当前通道策略进行修改。
作为一种可实施方式,还包括:每次对策略类型进行修改时,需先获取通道当前的通道策略,根据投票或签名信息与通道策略内容作比对;
若投票结果满足当前通道策略对投票结果的要求,或签名信息满足当前通道策略对签名信息的要求,则修改当前的通道策略,并更新公共链中存储的当前通道策略内容;
若不满足,则修改失败。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下所述的方法步骤:
响应于用户发起的修改策略的提案请求;
若待修改成的策略为隐式策略,则无需检测,提案发起成功;
若待修改成的策略为基于签名的策略,则检测待修改成的策略内容是否满足格式要求,若满足,提案发起成功;否则,发起失败;
根据当前策略向需审核的组织发送投票邀请或签名邀请,若当前策略为隐式策略,则根据当前策略发送投票邀请;若当前策略为基于签名的策略,则根据当前策略发送签名邀请;
获取投票或签名结果,基于投票或签名结果分析是否满足当前通道策略的要求;
若满足,则将当前通道策略进行修改。
一种基于可变策略的联盟链投票管理装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下所述的方法步骤:
响应于用户发起的修改策略的提案请求;
若待修改成的策略为隐式策略,则无需检测,提案发起成功;
若待修改成的策略为基于签名的策略,则检测待修改成的策略内容是否满足格式要求,若满足,提案发起成功;否则,发起失败;
根据当前策略向需审核的组织发送投票邀请或签名邀请,若当前策略为隐式策略,则根据当前策略发送投票邀请;若当前策略为基于签名的策略,则根据当前策略发送签名邀请;
获取投票或签名结果,基于投票或签名结果分析是否满足当前通道策略的要求;
若满足,则将当前通道策略进行修改。
与现有技术相比,本发明采用了可变策略机制,通道中的策略可以灵活改变。当联盟链内部需要改变通道策略时,只需联盟链内的组织自发进行通道策略的修改即可,而无需创建新的通道去指定新的策略。通道的可变策略可以灵活应对联盟链内组织的要求,给联盟链的治理提供灵活、便利。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为某一具体实施例中联盟链创建时的投票策略初始化的流程图;
图2为某一具体实施例中修改投票策略的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本说明书的描述中,参考术语“一实施例”、“一具体实施例”、“一实施例方式”、“例如”的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本申请的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
某一具体实施例中,可变策略共有两大类,包括隐式策略和基于签名的策略:
所述隐式策略分为ALL、ANY、MAJORITY三种类型。所述ANY策略表示只需通道中的一家组织投票通过即可,所述MAJORITY策略表示需要通道中投票通过的组织数量超过一半。
所述基于签名的策略,包括AND策略类型、OR策略类型和OutOf策略类型中的一种或几种,也可以使用以上三种策略类型中任意两种类型的组合,以及三种类型的组合。
某一具体实施例中,基于签名的策略有:
(1)AND("baas1.admin","baas2.admin"),指定组织baas1和baas2,需要两个组织的共同签名;
(2)OR("baas1.admin","baas2.admin"),指定组织baas1和baas2,需要最少其中一个组织的签名;
(3)OutOf(2,"baas1.admin","baas2.admin","baas3.admin"),指定组织baas1、baas2和baas3,需要最少其中两个组织的签名;
(4)AND("baas1.admin",OR("baas2.admin","baas3.admin")),指定组织 baas1、baas2和baas3,需要baas1的签名,以及baas2和baas3中最少一个组织的签名。
(5)OutOf(1,AND("baas1.admin","baas2.admin"),"baas3.admin")),指定组织baas1、baas2和baas3,需要baas1、baas2的共同签名,或baas3的签名。
(6)OR(AND("baas1.admin",OutOf(1,"baas2.admin",
"baas3.admin")),"baas4.admin"),指定组织baas1、baas2、baas3和baas4,需要需要baas1的签名以及baas2和baas3中最少一个组织的签名,或baas4的签名。
某一具体实施例中,基于可变策略的联盟链投票管理系统包括请求响应模块、格式检测模块、发送邀请模块、获取结果模块及修改完成模块;
所述请求响应模块,用于响应于用户发起的待修改策略的提案请求;
所述格式检测模块,若待修改成的策略为隐式策略,则无需检测,提案发起成功,若待修改成的策略为基于签名的策略,则检测待修改成的策略内容是否满足格式要求,若满足,提案发起成功,否则,发起失败;
所述发送邀请模块,根据当前策略向需审核的组织发送投票邀请或签名邀请,若当前策略为隐式策略,则根据当前策略发送投票邀请;若当前策略为基于签名的策略,则根据当前策略发送签名邀请;
所述获取结果模块,用于获取投票或签名结果,基于投票或签名结果分析是否满足当前通道策略的要求;
所述修改完成模块被设置为:若满足,则将当前通道策略进行修改。
通道建立初始,Strategy的值为2,即策略类型为2(MAJORITY),表示需要超过一半的组织投票才可以。通道初始策略也可以设定为其他类型,需要通过修改公共链码的方式来实现。
如图1所示,本发明某一具体实施例中联盟链创建时的投票策略初始化的流程示意图,流程具体包括:
步骤1,创建网络,创建公共通道,安装公共链码;
步骤2,对于公共通道以及后续新创建的通道,其初始时投票策略均默认为2(MAJORITY);
步骤3,公共通道中的策略即为网络策略,其余新创建的通道中的策略则为通道策略。
具体实现如下所示:
1."doc":{
2."_id":"\u0000StrategyDetail\u0000publicchain\u0000",
3."_rev":"1-4ed0fc8a3f4a149627f399b76f6fbad8",
4."ChannelName":"publicchain",
5."CreateTime":"2021-05-07 10:02:58",
6."Detail":"",
7."Strategy":2,//初始时策略类型设置为2(MAJORITY)
8."StrategyNature":0,
9."StrategyType":1,
10."UpdateTime":"2021-05-07 10:02:58",
11."~version":"\u0000CgMBAQA="
12.}
如图2所示,本发明某一具体实施例中修改策略时的流程示意图,流程具体包括:
步骤1,用户针对网络或者通道发起修改策略的提案;
步骤2,若待修改成的策略为基于签名的策略,则检测策略内容是否满足格式要求,满足要求才可继续,否则提案发起失败;
步骤3,根据通道或者网络的当前策略,给需要审核的组织发送投票邀请或签名邀请;
步骤4,收到邀请的组织开始投票或签名;
步骤5,投票结束后,解析结果看是否满足当前通道策略的要求;
步骤6,若投票结果满足当前通道策略对投票结果的要求,或签名信息满足当前通道策略对签名信息的要求,即修改当前通道策略为要改成的通道策略;否则,修改失败。
某一具体实施例中的通道当前策略为2(MAJORITY),要修改成的策略为1 (ALL),present_strategy是通道publicchain(公共链)的当前的策略,strategy 即为要修改成的策略。
具体实现如下所示:
1.{
2."present_strategy":"2",//当前的策略类型
3."proposal_id":"63816937242624",
4."sign_status":null,
5."status":"init",
6."strategy":"1",//要修改成的策略类型
7."~version":"\u0000CgMBAwA="
8.}
修改后的公共链的通道策略,其Strategy字段已经变成之前要修改成的类型,即证明通道策略已修改成功。
某一具体实施例中的Strategy字段已经被修改为1(ALL),具体实现如下所示:
其他通道修改投票策略类型同理。通道为公共通道时为网络策略,其他的通道即为通道策略,其流程原理是相同的。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
- 基于可变策略的联盟链投票管理方法及系统
- 一种基于可变二维码的中奖策略动态管理方法及系统