CN117061089B - 一种投票管理方法、装置、设备及存储介质 - Google Patents
一种投票管理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117061089B CN117061089B CN202311317979.0A CN202311317979A CN117061089B CN 117061089 B CN117061089 B CN 117061089B CN 202311317979 A CN202311317979 A CN 202311317979A CN 117061089 B CN117061089 B CN 117061089B
- Authority
- CN
- China
- Prior art keywords
- voting
- target
- proposal
- chain
- target object
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003860 storage Methods 0.000 title claims abstract description 27
- 238000007726 management method Methods 0.000 title abstract description 90
- 230000007246 mechanism Effects 0.000 claims abstract description 46
- 230000008520 organization Effects 0.000 claims description 97
- 238000000034 method Methods 0.000 claims description 49
- 230000006870 function Effects 0.000 claims description 36
- 230000015654 memory Effects 0.000 claims description 32
- 238000004590 computer program Methods 0.000 claims description 29
- 238000012795 verification Methods 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000005315 distribution function Methods 0.000 claims description 10
- 238000010276 construction Methods 0.000 claims description 9
- 210000004899 c-terminal region Anatomy 0.000 claims description 6
- 230000006378 damage Effects 0.000 claims description 5
- 238000005304 joining Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 21
- 230000005540 biological transmission Effects 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 238000009826 distribution Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 235000006679 Mentha X verticillata Nutrition 0.000 description 2
- 235000002899 Mentha suaveolens Nutrition 0.000 description 2
- 235000001636 Mentha x rotundifolia Nutrition 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 206010063659 Aversion Diseases 0.000 description 1
- 101100391182 Dictyostelium discoideum forI gene Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/126—Applying verification of the received information the source of the received data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3252—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
- H04L2209/463—Electronic voting
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种投票管理方法、装置、设备及存储介质,应用于联盟链;包括:接收目标机构发送的投票消息,投票消息至少包括目标对象签发的投票数据,投票数据至少包括投票提案的提案标识和目标对象的投票结果,目标对象为在联盟连上进行身份注册获得链上身份标识的对象;基于链上身份标识以及目标对象在联盟链上拥有的总电子资产,确定目标对象针对投票提案拥有投票权限后,获取目标对象针对提案标识拥有的目标电子资产,目标电子资产是基于提案对象针对投票提案提交的目标请求,确定目标对象参与投票提案且具有链上身份标识后分配的;将目标电子资产,添加到投票结果对应的资产集合中,根据资产集合中的电子资产,确定投票结果被投比例。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种投票管理方法、装置、设备及存储介质。
背景技术
随着区块链技术的不断发展,因区块链技术的去中心化、数据公开透明等特性,区块链技术被应用到各个领域中,例如区块链技术被应用到投票管理中。
在基于区块链技术进行投票管理时,项目方会在公链的链上部署一个去中心化自治组织(Decentralized Autonomous Organization,DAO)投票合约,并创建一个投票提案,以及指定具备投票权限的目标对象,且设定目标对象的投票权重与该目标对象所拥有的电子资产成正比。
因此,在公链部署DAO投票合约的基础上,目标对象为了节约成本,用其私钥签署投票数据,并将投票数据发送至公链上;相应的,在公链上,基于中心化的服务器接收投票数据,并调用DAO投票合约,且在执行DAO投票合约时,进行签名验证,确定目标对象是否拥有投票权限,并在确定目标对象拥有投票权限后,进行跨合约调用,调用资产合约,获取目标对象所拥有的电子资产,进一步基于该电子资产确定目标对象所拥有的投票权重,最后根据投票数据中的投票结果,将目标对象的投票权重累加到相应的投票结果中,至此目标对象完成投票。
综上,目前仅支持在基于公私钥为账户体系的公链上进行投票管理,且在投票管理过程中,利用私钥签名即可完成,并没有上链操作,即投票操作和投票结果,均没有上链,存在中心化作恶的问题。
因此,如何扩展投票管理在区块链技术中的应用,以及保证投票管理的安全性和准确性是目前需要解决的技术问题。
发明内容
本申请实施例提供一种投票管理方法、装置、设备及存储介质,用以扩展投票管理方法在联盟链的应用,以及保证投票管理的安全性和准确性。
第一方面,本申请实施例提供一种投票管理方法,应用于联盟链的区块链节点,该方法包括:
接收目标机构发送的投票消息;投票消息至少包括:目标对象基于私钥签发的投票数据;投票数据至少包括:投票提案的提案标识和目标对象的投票结果;目标对象为通过公钥,在联盟链上进行身份注册,获得链上身份标识的对象;
当基于链上身份标识以及目标对象在联盟链上拥有的总电子资产,确定目标对象针对投票提案拥有投票权限后,获取目标对象针对提案标识拥有的目标电子资产;目标电子资产是基于提案对象针对投票提案提交的目标请求,确定目标对象参与投票提案,且具有链上身份标识后,为目标对象分配的;
将目标电子资产,添加到投票结果对应的资产集合中,并根据资产集合中的电子资产,确定投票结果在投票提案关联的投票选项中的被投比例。
第二方面,本申请实施例提供一种投票管理装置,应用于联盟链的区块链节点,该装置包括:
接收单元,用于接收目标机构发送的投票消息;投票消息至少包括:目标对象基于私钥签发的投票数据;投票数据至少包括:投票提案的提案标识和目标对象的投票结果;目标对象为通过公钥,在联盟链上进行身份注册,获得链上身份标识的对象;
获取单元,用于当基于链上身份标识以及目标对象在联盟链上拥有的总电子资产,确定目标对象针对投票提案拥有投票权限后,获取目标对象针对提案标识拥有的目标电子资产;目标电子资产是基于提案对象针对投票提案提交的目标请求,确定目标对象参与投票提案,且具有链上身份标识后,为目标对象分配的;
管理单元,用于将目标电子资产,添加到投票结果对应的资产集合中,并根据资产集合中的电子资产,确定投票结果在投票提案关联的投票选项中的被投比例。
在一种可能的实现方式中,投票数据中还包括第一签名信息;则获取单元还用于:
在基于链上身份标识以及目标对象在联盟链上拥有的总电子资产,确定目标对象针对投票提案拥有投票权限之前,对投票数据进行哈希计算,获得第一哈希值;
基于公钥,对第一签名信息进行解密处理,获得相应的第一解密值;公钥是目标对象在联盟链上进行身份注册时存储的;
在第一哈希值与第一解密值一致时,确定投票数据的合法性验证通过。
在一种可能的实现方式中,获取单元具体用于:
检测到链上身份标识在投票提案关联的投票者数组中,以及,检测到目标对象当前拥有的总电子资产中包含目标电子资产时,确定目标对象针对投票提案拥有投票权限。
在一种可能的实现方式中,管理单元还用于:
将目标电子资产,添加到投票结果对应的资产集合中后,调用资产合约的销毁函数,将目标对象针对投票提案拥有的目标电子资产销毁。
在一种可能的实现方式中,该装置还包括注册分配单元,注册分配单元通过公钥,在联盟链上进行身份注册,获得链上身份标识,包括:
接收目标机构发送的注册请求;注册请求至少包括:目标对象的公钥;
调用分布式标识(Decentralized Identifier,DID)合约,执行:基于哈希函数,对公钥进行哈希处理,并将获得的第二哈希值中的指定字节,作为目标对象的地址信息,根据地址信息,构建链上身份标识。
在一种可能的实现方式中,注册分配单元还用于:
获得链上身份标识后,在DID合约中,存储目标对象的链上身份标识与公钥的对应关系。
在一种可能的实现方式中,若目标对象为初始参与对象,目标请求为提案创建请求,则注册分配单元通过如下方式为目标对象分配目标电子资产:
接收目标机构发送的提案创建请求;提案创建请求至少包括:提案对象签发的提案数据;提案数据中至少包括:投票提案的初始参与对象和初始参与对象的第一投票权重;
调用基于投票合约为投票提案创建的资产合约的分发函数,根据针对投票提案设置的预设资产总量以及第一投票权重,为初始参与对象分配电子资产。
在一种可能的实现方式中,注册分配单元具体用于:
采用向上取整的方式,将预设资产总量以及第一投票权重的乘积结果,作为为初始参与对象分配的电子资产。
在一种可能的实现方式中,若目标对象为新增参与对象,目标请求为新增对象请求,则注册分配单元通过如下方式为目标对象分配电子资产:
接收目标机构发送的新增对象请求;新增对象请求至少包括:提案对象签发的新增数据;新增数据中至少包括:投票提案的新增参与对象和新增参与对象的第二投票权重;
调用基于投票合约为投票提案创建的资产合约的分发函数,根据投票提案的初始目标资产总量以及第二投票权重,为新增参与对象分配电子资产;初始目标资产总量是根据初始参与对象拥有的电子资产确定的。
在一种可能的实现方式中,注册分配单元具体用于:
基于第二投票权重,获得新增参与对象的目标投票权重;
采用向上取整的方式,将初始目标资产总量以及目标投票权重的乘积结果,作为为新增参与对象分配的电子资产。
在一种可能的实现方式中,注册分配单元还用于:
在为目标对象分配电子资产之前,接收目标机构发送的合约部署请求;合约部署请求中至少包括:提案对象设置的投票参与对象,以及投票合约的字节码;
调用DID合约,获得投票参与对象是否存在链上身份标识的验证结果;
当基于验证结果,确定投票参与对象拥有链上身份标识后,基于投票合约构造函数,根据投票合约的字节码以及投票参与对象构建投票合约。
第三方面,本申请实施例提供一种计算设备,包括:存储器和处理器,其中,存储器,用于存储计算机程序;处理器,用于执行计算机程序以实现本申请实施例提供的投票管理方法的步骤。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现本申请实施例提供的投票管理方法的步骤。
第五方面,本申请实施例提供一种计算机程序产品,其包括计算机程序,计算机程序存储在计算机可读存储介质中;当计算设备的处理器从计算机可读存储介质读取计算机程序时,处理器执行计算机程序,使得计算设备执行本申请实施例提供的投票管理方法的步骤。
本申请有益效果如下:
本申请实施例提供一种投票管理方法、装置、设备及存储介质,涉及计算机技术领域,尤其涉及区块链技术领域,应用于联盟链的区块链节点。
在本申请实施例中,联盟链的区块链节点首先会接收目标机构发送的投票消息,投票消息至少包括目标对象基于私钥签发的投票数据,投票数据至少包括投票提案的提案标识和目标对象的投票结果,目标对象为通过公钥在联盟连上进行身份注册获得链上身份标识的对象;可见,已在联盟链上进行身份注册的目标对象可通过目标机构对部署在联盟链上的投票提案发送投票数据进行投票操作。
联盟链的区块链节点在接收到投票消息后,基于目标对象的链上身份标识以及目标对象在联盟链上拥有的总电子资产,获得目标对象针对投票提案的投票权限的识别结果。当确定目标对象针对投票提案拥有投票权限后,获取目标对象针对提案标识拥有的目标电子资产;并将目标电子资产,添加到投票结果对应的资产集合中,表示目标对象针对投票提案中的某一投票选项进行了投票,此时可根据投票结果的资产集合中的电子资产,确定投票结果在投票提案关联的所有投票选项中的被投比例;其中,目标电子资产是基于投票对应针对投票提案提交的目标请求,确定目标对象参与投票提案且具有链上身份标识后,为目标对象分配的。在获得到目标对象的投票数据后,需要在链上对目标对象进行验证,确定目标对象是否具有投票权限,进而实现目标对象的投票操作。
综上,本申请提出的投票管理的实施方式,均是联盟链的区块链节点执行的,扩展了投票管理方法在联盟链的应用,即在联盟链上,单一对象可进行投票操作;同时,由于联盟链的区块链节点执行投票管理,即投票管理在链上执行,因此避免了中心化作恶的问题,保证了投票管理的安全性和准确性。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种区块机构示意图;
图2为本申请实施例提供的一种应用场景示意图;
图3为本申请实施例提供的一种机构与联盟链的区块链节点之间的交互示意图;
图4为本申请实施例提供的一种对象链上注册的方法流程图;
图5为本申请实施例提供的一种对象链上注册的示意图;
图6为本申请实施例提供的一种投票合约部署的方法流程图;
图7为本申请实施例提供的一种投票合约部署的示意图;
图8为本申请实施例提供的一种创建投票提案并分配电子资产的方法流程图;
图9为本申请实施例提供的一种创建投票提案并分配电子资产的示意图;
图10为本申请实施例提供的一种针对新增参与对象分配电子资产的方法流程图;
图11为本申请实施例提供的一种针对新增参与对象分配电子资产的示意图;
图12为本申请实施例提供的一种投票管理方法流程图;
图13为本申请实施例提供的一种投票管理的示意图;
图14为本申请实施例提供的一种投票管理装置的结构图;
图15为本申请实施例提供的一种计算设备的结构图。
具体实施方式
为了使本申请的目的、技术方案及有益效果更加清楚明白,以下将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
1、区块链(Blockchain):包括一系列按照产生的先后时间顺序相互连接的区块(Block),其中,新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。参见图1,示例性提供一种区块机构(Block Structure)示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链,本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括管理、基础服务、智能合约等处理模块。其中,管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及身份和区块链地址对应关系维护(权限管理)等;基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。
应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
区块链中又分为公链(Public Blockchain)、私链(Private Blockchain)和联盟链(Consortium Blockchain);这三种类型的区块链的核心区别在于访问权限的开放程度,或者叫去中心化程度不同。其中,公链为公有/公共的区块链,访问与编写的权限对所有使用者开放,即所有使用者都可以访问网络,无需中心化机构的授权;私链为私有的区块链,访问与编写的权限仅由某个机构/组织控制,即由机构/组织控制访问和使用,使用者必须先注册取得许可才可以使用;联盟链为机构联盟的区块链,访问与编写的权限仅对加入组织联盟的节点开放。
2、智能合约:计算机化的协议,指能够自动执行合约条款的计算机程序,具有事件驱动、价值转移、自动执行等特性。智能合约是存储在区块链上的程序,在满足预先确定的条件时会运行这些程序。它们通常用于自动执行协议,以便所有参与者都可以立即确定结果,而无需任何中间人参与,也不会浪费时间。它们还可以自动完成工作流程,在满足条件时触发下一个操作。即智能合约可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。在本申请实施例中,DID合约、资产合约等均属于智能合约。
3、去中心化自治组织(Decentralized Autonomous Organization,DAO):DAO的主要目的是超越传统组织形式,以分布式、透明和信任最小化的方式来进行集体决策。简而言之,DAO是一种新型的组织架构。人们可以独立验证组织的运行方式,并基于这样的共识朝着共同的目标努力。其独特之处在于利用了区块链智能合约,将部分或全部流程写入合约代码中,以执行决策并分配所有权。智能合约的出现为创新奠定了基础,因为智能合约可以让DAO的治理规则完全透明化,而且无法被任何DAO成员或外部方篡改。这是因为区块链(即智能合约)运行的代码可以被公开审计,并由去中心化的节点网络保障安全。
4、去中心化投票:即在区块链上执行投票操作或投票管理;一般来讲,项目方会在链上部署一个投票合约,通过规定某些对象(该对象可以通过相应的对象地址表示)具备投票权限,例如只有持有某些电子资产的对象才可以投票,且其投票权重跟持有的电子资产数量成正比。对象可通过区块链进行去中心化的投票,且投票结果在链上实时公开、透明。
5、目标机构:为加入联盟链的机构,具有联盟链的访问和编写权限。
6、目标对象:为目标机构的一个C端用户;类似如机构是XX云平台,则目标对象是XX云平台的一个用户的形式。
7、电子资产:为目标对象在链上所持有的资产。
下面对本申请实施例的设计思想进行简要介绍。
相关技术中,因区块链技术的去中心化、数据公开透明等特性,将区块链技术应用到投票管理中。
在基于区块链技术进行投票管理时,项目方会在链上部署一个DAO投票合约,并创建一个投票提案,然后通过设定规则指定哪些对象(该对象可以通过相应的对象地址确定)具有投票权限,以及对象投票权重。大多情况下,项目方会规定拥有某种电子资产的对象才具有投票权限,同时每个对象的投票权重与拥有的电子资产数量成正比。
因此,在公链部署DAO投票合约的基础上,对象为了节约成本,用其私钥签署投票数据,并将投票数据发送至公链上;相应的,在公链上,基于中心化的服务器接收投票数据,并调用DAO投票合约,且在执行DAO投票合约时,进行签名验证,确定对象是否拥有投票权限,且在确定对象拥有投票权限后,进行跨合约调用,调用资产合约,获取对象所拥有的电子资产,进一步基于该电子资产确定对象所拥有的投票权重,最后根据投票数据中的投票结果,将对象的投票权重累加到相应的投票结果中,至此对象完成投票。
然而,当前用DAO投票合约进行投票管理方法存在以下问题:
仅支持电子资产支撑的投票权重分配:当前,在公链上的DAO投票合约,一般只能利用某个已经存在的资产合约,来判断一个对象是否有投票权限,并在对象投票时,根据电子资产数量确定对象的投票权重。但是,在联盟链中,没有电子资产作为支撑,因此在联盟链中无法基于电子资产进行投票;
仅支持以公私钥模式为支撑的账户体系:当前,在公链上执行投票时,均是由一个对公私钥所对应的对象,向合约发起交易,以完成对对象的鉴权,并完成投票;但是,在联盟链中,是以证书为支撑的账户体系,一般只有加入联盟链的机构有节点、证书、以及对应的账户地址,可以发起交易,但是与机构进行交互的对象不可以发起交易,因此单一对象无法在联盟链上执行投票操作;
存在中心化作恶的问题:当前,仅支持在基于公私钥为账户体系的公链上进行投票管理,且在投票管理过程中,利用私钥签名即可完成,并没有上链操作,即投票操作和投票结果,均没有上链,存在中心化作恶的问题。
因此,如何扩展投票管理在区块链技术中的应用,以及保证投票管理的安全性和准确性是目前需要解决的技术问题。
有鉴于此,本申请实施例提供一种投票管理方法、装置、设备及存储介质,涉及计算机技术领域,尤其涉及区块链技术领域,应用于联盟链的区块链节点。
在本申请实施例中,联盟链的区块链节点首先会接收目标机构发送的投票消息,投票消息至少包括目标对象基于私钥签发的投票数据,投票数据至少包括投票提案的提案标识和目标对象的投票结果,目标对象为通过公钥在联盟连上进行身份注册获得链上身份标识的对象;可见,已在联盟链上进行身份注册的目标对象可通过目标机构对部署在联盟链上的投票提案发送投票数据进行投票操作。
联盟链的区块链节点在接收到投票消息后,基于目标对象的链上身份标识以及目标对象在联盟链上拥有的总电子资产,获得目标对象针对投票提案的投票权限的识别结果。当确定目标对象针对投票提案拥有投票权限后,获取目标对象针对提案标识拥有的目标电子资产;并将目标电子资产,添加到投票结果对应的资产集合中,表示目标对象针对投票提案中的某一投票选项进行了投票,此时可根据投票结果的资产集合中的电子资产,确定投票结果在投票提案关联的所有投票选项中的被投比例;其中,目标电子资产是基于投票对应针对投票提案提交的目标请求,确定目标对象参与投票提案且具有链上身份标识后,为目标对象分配的。在获得到目标对象的投票数据后,需要在链上对目标对象进行验证,确定目标对象是否具有投票权限,进而实现目标对象的投票操作。
综上,本申请提出的投票管理的实施方式,均是联盟链的区块链节点执行的,扩展了投票管理方法在联盟链的应用,即在联盟链上,单一对象可进行投票操作;同时,由于联盟链的区块链节点执行投票管理,即投票管理在链上执行,因此避免了中心化作恶的问题,保证了投票管理的安全性和准确性。
下面对本申请设置的应用场景进行简要说明。需要说明的是,以下场景仅用于说明本申请实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本申请实施例提供的技术方案。
参见图2,为本申请实施例提供的一种应用场景示意图。该应用场景中包括:第一设备210、第二设备220和联盟链的区块链节点230;其中,第一设备210与第二设备220之间可以通过通信网络进行通信,第二设备220与联盟链的区块链节点230之间可以通过通信网络进行通信。
在一种可选的实施方式中,通信网络可以是有线网络或无线网络。因此,第一设备210、第二设备220和联盟链的区块链节点230两两之间可以通过有线或无线通信方式进行直接或间接地连接。比如,第一设备210可以通过无线接入点与第二设备220间接地连接,或第一设备210通过因特网与第二设备220直接地连接,本申请在此不做限制。
其中,第一设备210为目标对象的终端设备,第二设备220为目标机构的终端设备;终端设备包括但不限于手机、平板电脑、笔记本电脑、台式电脑、电子书阅读器、智能语音交互设备、智能家电、车载终端等设备;终端设备上可以安装有各种客户端,该客户端可以是支持投票功能的在线平台、应用程序(例如浏览器、游戏软件、购物软件、视频播放器等),也可以是网页、小程序等。
联盟链的区块链节点230为服务器,该服务与终端设备中安装的客户端相对应的后台服务器,用于处理投票管理业务。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(ContentDelivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
下面结合附图来描述本申请示例性实施方式提供的投票管理方法。需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
因为本申请实施例解决的是目标对象如何实现基于联盟链的投票管理;要解决目标对象如何实现基于联盟链的投票管理,需要解决如下问题:
问题1、目标对象如何与联盟链进行交互,向联盟链发送投票数据;
问题2:在联盟链上如何实现投票管理,且保证投票管理的安全性和准确性。
针对上述问题,考虑到联盟链是以证书为支撑的账户体系,只有拥有联盟链的区块链节点的机构有公钥、私钥以及由根证书颁发的证书,换句话说,只有机构在联盟链的链上有一个身份时,才可以向联盟链的区块链节点发送交易,即机构可以与联盟连的区块链节点直接通信;而非机构的普通对象(即本申请实施例中的目标对象),想要发起一笔交易时,则需要向机构发起请求,将交易内容给到机构,由机构向联盟链的区块链节点进行交易。
参见图3,以机构B为例,示例性提出一种对象与联盟链的区块链节点之间的交互示意图;其中,机构B持有私钥、公钥/>、证书/>,机构B可以与联盟链的区块链节点进行交互发送交易,且非机构的普通对象(例如:机构B的C端对象A)可以与机构B进行交互发送信息;此时,若机构B的C端对象A,想要发起一笔交易(例如:针对投票提案的投票结果),则需要向机构B发起请求,将交易信息给到机构B,然后由机构B向联盟链的区块链节点发起一笔交易。
机构B向联盟链的区块链节点发起一笔交易时,需要先基于机构B的C端对象A的交易信息构造交易内容,然后由私钥对交易内容进行签名,最终将交易内容、签名以及证书/>发送到联盟链的区块链节点,联盟链的区块链节点会从证书/>提取得到公钥/>,利用公钥/>验证签名的正确性,以验证机构B的身份。验证成功之后,交易内容会在联盟链的区块链节点中执行。但此时,联盟链的区块链节点在链上验证签名取得的是机构B的身份信息和地址信息,没办法获得机构B的C端对象A的信息,进而无法执行对象A的交易内容。因此,要想对象在联盟链的区块链节点上执行某一交易(例如:投票),需要普通对象(即本申请实施例中的目标对象)在联盟链上进行链上注册,获得一个链上身份标识。
同时,考虑到联盟链中没有电子资产作为支撑,而相关技术中的投票管理主要是基于电子资产实现,例如基于电子资产确定投票权重,将电子资产累加到投票结果的资产集合中以实现投票操作;因此要想实现基于联盟链的投票管理,需要在联盟链上部署资产合约,并为参与投票提案的参与对象分配电子资产。且由于涉及的是投票管理,因此必须要在联盟链上部署投票合约,并基于投票合约创建投票提案等。
综上,本申请实施例涉及对象链上注册、投票合约部署、创建投票提案并分配电子资产以及投票管理等实施方式。下面对各个实施方式分别进行说明。
实施例一:对象链上注册。
对象链上注册即非机构的普通对象(即本申请实施例中的目标对象)在联盟链上进行身份注册。
参见图4,为本申请实施例提供的一种对象链上注册的方法流程图,包括如下步骤:
步骤S400,目标对象创建一对公私钥对。
其中,可以采用非对称加密算法针对目标对象创建公私钥对,例如:采用李维斯特-萨默尔-阿德曼(Rivest-Shamir-Adleman,RSA)算法创建,采用椭圆曲线加密(EllipseCurve Cryptography,ECC)算法创建;
还可以采用创建工具针对目标对象创建公私钥对,例如:采用OpenSSL工具创建,OpenSSL是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和整数管理功能及传输安全层(Secure Sockets Layer,SSL)协议,并提供风格的应用程序供测试或其他目的使用。
步骤S401,目标对象将公钥发送给目标机构。
可以理解的是,目标对象将公钥发送给目标机构是采用隐式传输的方式告知目标机构针对目标对象进行链上身份注册。
在本申请实施例中,目标对象还可以采用显示传输的方式告知目标机构进行链上身份注册;示例性的,目标对象向目标机构发送链上注册请求,该链上注册请求中携带有目标对象的公钥。
步骤S402,目标机构接收到目标对象的公钥后,构造注册请求,注册请求至少包括:目标对象的公钥。
步骤S403,目标机构接向联盟链的区块链节点发送注册请求。
其中,目标机构向联盟链的区块链节点发送的注册请求即为目标机构向联盟链的区块链节点发送的一个交易信息,因此目标机构在发送注册请求之前,需要构造注册请求,即构造交易信息。
示例性的,注册请求(或称交易信息)中包括:交易内容、签名、证书,其中,交易内容中包含目标对象的公钥。
步骤S404,联盟链的区块链节点接收到目标机构的注册请求后,调用DID合约,根据目标对象的公钥,在联盟链上为目标对象进行身份注册,获得目标对象的链上身份标识。
在一种可能的实现方式中,调用DID合约,根据目标对象的公钥,在联盟链上为目标对象进行身份注册,获得目标对象的链上身份标识时:首先基于哈希函数,对目标对象的公钥进行哈希处理,获得第二哈希值,例如:利用哈希函数对目标对象的公钥进行哈希,获得一个32字节的第二哈希身份标识。
步骤S405,联盟链的区块链节点将目标对象的链上身份标识返回给目标机构。
步骤S406,目标机构将链上身份标识返回给目标对象。
在本申请实施例中,联盟链的区块链节点在获得目标对象的链上身份标识后,将链上身份标识告知相应的目标对象,以使目标对象确定自身在联盟链上已成功注册,以便在需要针对投票提案进行投票操作时,告知提案对象自身具有链上身份标识,可以参与投票。
为了便于在后续操作过程中对目标对象的验证,本申请实施例中,联盟链的区块链节点在获得目标对象的链上身份标识后,还可以在DID合约中,存储目标对象的链上身份标识与目标对象的公钥的对应关系。
示例性的,在获得目标对象的链上身份标识后,针对链上身份标识在DID合约中设置一个JSON格式的目标文档,在该目标文档存储目标对象的公钥,并设置链上身份标识为Key,目标文档为Value,存储在一个map结构中。其中,目标对象的链上身份标识可以为DID标识,相应的目标文档可以为DID文档。
需要说明的是,目标文档中除了存储有目标对象的公钥外,还可以存储目标对象的属性信息,如姓名、地址等。
可以理解的是,图4所示的目标对象进行链上注册的方法适用于所有非目标机构的普通对象。
为了便于理解,针对图4所示的方法流程图,本申请实施例中以目标对象为对象A、目标机构为机构B为例,还提供一种对象链上注册的示意图,具体参见图5,从图5可知:
对象A首先创建一对公私钥对(私钥,公钥/>)然后将公钥发送给机构B,以告知机构B对象A要在联盟链上进行身份注册。
此时,机构B接收到对象A的公钥后,向联盟链的区块链节点发送注册请求,注册请求至少包括:对象A的公钥/>。
相应的,联盟链的区块链节点接收到机构B的注册请求后,调用DID合约,根据对象A的公钥,为对象A进行链上注册,获得对象A的链上身份标识/>,并将对象A的链上身份标识/>返回给机构B,以通过机构B将链上身份标识/>返回给对象A。
在根据对象A的公钥,为对象A进行链上注册,获得对象A的链上身份标识时:首先基于哈希函数,对对象A的公钥/>进行哈希处理,获得第二哈希值,例如:利用/>哈希函数对公钥/>进行哈希,获得一个32字节的哈希值;然后,将第二哈希值中的指定字节作为对象A的地址信息,例如:取后20个字节作为对象A的地址信息,则对象A的地址信息为/>;最后,根据地址信息构建对象A的链上身份标识/>,/>为:
/>
其中,为DID协议的前缀,用于标识基于DID协议确定对象的链上身份标识,c95表示在联盟链的哪一区块链节点,基于机构B确定的;为地址信息。
实施例二:投票合约部署。
参见图6,为本申请实施例提供的一种投票合约部署的方法流程图,包括如下步骤:
步骤S600,提案对象获取其他参与对象的链上身份标识。
在一种可能的实现方式中,当提案对象想邀请其他参与对象共同针对投票提案进行投票时,首先要获取其他参与对象的链上身份标识;其他参与对象是除提案对象外,针对投票提案进行投票的对象,且提案对象也针对该投票提案进行投票。
在获取其他参与对象的链上身份标识时,提案对象向其他参与对象发送链上身份标识读取消息,若其他参与对象已在联盟链上成功注册,即已存在链上身份标识,则直接将链上身份标识发送给提案对象;若其他参与对象未在联盟链上进行注册或未成功注册,则其他参与对象采用实施例一的实现方式在联盟链上进行身份注册,获得链上身份标识,并将获得的链上身份标识发送给提对象。
步骤S601,提案对象向目标机构发送投票参与对象的链上身份标识。
其中,投票参与对象包括提案对象以及其他参与对象。
可以理解的是,提案对象将自身的链上身份标识以及其他参与对象的链上身份标识发送给目标机构是采用隐式传输的方式告知目标机构部署投票合约。
在本申请实施例中,目标对象还可以采用显示传输的方式告知目标机构部署投票合约;示例性的,目标对象向目标机构发送投票合约部署指令,该投票合约部署指令中携带有提案对象的链上身份标识以及其他参与对象的链上身份标识。
步骤S602,目标机构接收到提案对象发送的投票参与对象的链上身份标识后,构建合约部署请求,合约部署请求中至少包括:投票参与对象的链上身份标识,以及投票合约的字节码。
步骤S603,目标机构向联盟链的区块链节点发送合约部署请求,合约部署请求中至少包括:投票参与对象的链上身份标识,以及投票合约的字节码。
其中,投票参与对象的链上身份标识为投票合约构造函数所需要的参数。
且合约部署请求也可以理解为目标机构向联盟链的区块链节点发送的一个交易信息,该交易信息中包括:交易内容、签名、证书,交易内容中包括:投票合约的字节码以及投票合约构造函数所需要的参数。
步骤S604,联盟链的区块链节点接收到目标机构发送的合约部署请求后,调用DID合约,获得投票参与对象是否存在链上身份标识的验证结果。
在本申请实施例中,由于在投票合约部署时,参与对象的链上身份标识是投票合约构造函数所需的参数,参数的准确严重影响着投票合约部署的准确性,进一步影响投票管理的准确性。为了保证提案对象设置的参与对象在联盟链上有效,即保证参数的准确,投票合约的构造函数,在获得到投票参与对象的链上身份标识后,调用DID合约,查询DID合约中是否存储有相同的链上身份标识,以对投票参与对象进行验证,并获得验证结果。
在验证的过程中,还可以调用DID合约,查询DID合约中是否存储有相同的链上身份标识,以及链上身份标识对应的目标文档。
步骤S605,联盟链的区块链节点基于验证结果,确定投票参与对象拥有链上身份标识后,基于投票合约构造函数,根据投票合约的字节码以及投票参与对象的链上身份标识构建投票合约。
在本申请实施例中,投票合约中会存储有投票参与对象的链上身份标识,后续在基于投票合约设置的投票提案中,仅有在投票合约中设置的投票参与对象才可以进行投票。
需要说明的是,投票合约中存储的投票参与对象并不限定于投票合约部署时设置的参与对象,还包括后续投票过程中,确定存在新的参与对象时,新增的参与对象。
为了便于理解,针对图6所示的方法流程图,本申请实施例中以提案对象为对象A、目标机构为机构B为例,还提供一种投票合约部署的示意图,具体参见图7,从图7可知:
对象A想邀请对象X、对象Y以及对象Z共同针对一个投票提案进行投票时,对象A分别向对象X、对象Y以及对象Z发送链上身份标识读取消息。
对象X、对象Y以及对象Z接收到读取消息时,确定自身是否存在链上身份标识,若存在则直接将链上身份标识告知对象A,否则请求注册将获得的链上身份标识告知对象A;例如:对象X和对象Y之前已经注册过,存在链上身份标识,则对象X直接将告知对象A,同理对象Y直接将/>告知对象A;而对象Z不存在链上身份标识,则创建一对公私钥对(私钥/>,公钥/>)然后基于公钥/>进行联盟链上身份注册,获得链上身份标识/>,并将/>告知对象A。
对象A获得对象X、对象Y以及对象Z的链上身份标识后,将发送给机构B,以告知机构B对象A要部署投票合约。
此时,机构B接收到对象A的消息后,向联盟链的区块链节点发送合约部署请求,合约部署请求至少包括:投票合约的字节码以及投票合约构造函数所需要的参数。
相应的,联盟链的区块链节点接收到机构B的合约部署请求后,通过投票合约的构造函数,获得到参数时,会通过跨合约调用,调用DID合约,验证以及对应的DID文档是否存在,即验证四个对象是否已经进行链上注册,并在确定已经进行链上注册后,构建投票合约,且将/>存储在投票合约中。
实施例三:创建投票提案并分配电子资产。
参见图8,为本申请实施例提供的一种创建投票提案并分配电子资产的方法流程图,包括如下步骤:
步骤S800,提案对象构造提案数据。
一般的一个投票合约可以支持多个投票提案,当提案对象想发起一个具体的投票提案时,针对该投票提案构造一个提案数据,提案数据中包括提案属性信息,提案对象,参与提案投票的初始参与对象,以及初始参与对象的第一投票权重。其中,提案属性信息包括但不限于:提案ID,提案标题,提案内容。
步骤S801,提案对象基于私钥对提案数据进行签名处理。
在一种可能的实现方式中,在基于私钥对提案数据进行签名处理时,首先对提案数据进行哈希计算获得一个哈希值,之后用私钥对该哈希值进行加密,得到签名。
步骤S802,提案对象将签名处理后的提案数据发送给目标机构。
可以理解的是,提案对象将提案数据发送给目标机构是采用隐式传输的方式告知目标机构创建投票提案。
在本申请实施例中,目标对象还可以采用显示传输的方式告知目标机构创建投票提案;示例性的,目标对象向目标机构发送投票提案创建指令,该投票提案创建指令中携带有提案数据。
步骤S803,目标机构接收到提案对象发送的提案数据后,构建提案创建请求,提案创建请求至少包括:提案对象基于私钥签发的提案数据。
步骤S804,目标机构向联盟链的区块链节点发送提案创建请求。
提案创建请求也可以理解为目标机构向联盟链的区块链节点发送的一个交易信息,该交易信息中包括:交易内容、签名、证书,交易内容中包括:提案对象基于私钥签发的提案数据。
步骤S805,联盟链的区块链节点接收到目标机构发送的提案创建请求后,调用基于投票合约为投票提案创建的资产合约,利用资产合约的分发函数,根据为投票提案设置的预设资产总量以及第一投票权重,为初始参与对象分配电子资产。
在一种可能的实现方式中,根据为投票提案设置的预设资产总量以及第一投票权重,为初始参与对象分配电子资产时:采用向上取整的方式,将预设资产总量以及第一投票权重的乘积结果,作为为初始参与对象分配的电子资产。
步骤S806,联盟链的区块链节点确定为各初始参与对象分配电子资产后,将投票提案标识返回给目标机构。
步骤S807,目标机构将投票提案标识返回给提案对象,以告知提案对象成功创建投票提案。
为了便于理解,针对图8所示的方法流程图,本申请实施例中以提案对象为对象A、目标机构为机构B为例,还提供一种创建投票提案并分配电子资产的示意图,具体参见图9,从图9可知:
当对象A想发起一个具体的投票提案时,针对该投票提案构造一个提案数据,该提案数据可以采用JSON字符串的形式,例如:
{
"ClaimJson": {
"ProposalId": "提案Id",
"ProposalTitle": "提案标题",
"ProposalContent": "提案内容",
"ProposalMember": "",
"ProposalCreator": "",
"ProposalWeight": ""/>
}
可见,提案数据中包括:提案ID,提案标题,提案内容,提案对象,初始参与对象/>,以及初始参与对象的第一投票权重/>;需要说明的是,初始参与对象的第一投票权重的总和为1,即/>。
对象A在获得提案数据后,需要将提案数据发送给机构B,以通过机构B向联盟链的区块链节点发送交易信息,创建投票提案。为了保证数据传输的安全性,对象A对提案数据进行签名处理。具体签名方式为:
对象A利用对应的私钥对提案数据ClaimJson进行签名,首先对提案数据ClaimJson进行哈希计算,获得一个哈希值,之后用私钥/>对哈希值加密,得到签名Sig。
对象A在对提案数据进行签名后,将签名后的提案数据发送给机构B,此时发送给机构B的数据中除提案数据,还包括签名信息,具体数据结构如下:
{
"ClaimJson": {
"ProposalId": "提案Id",
"ProposalTitle": "提案标题",
"ProposalContent": "提案内容",
"ProposalMember": "",
"ProposalCreator": "",
"ProposalWeight": ""
},
"Signature": Sig
}
机构B收到对象A发送的信息后,构造提案创建请求,提案创建请求中包含对象A发送的提案数据和签名信息,即包括上述数据结构中的所有信息。机构B将提案创建请求发送联盟链的区块链节点。
联盟链的区块链节点在接收到提案创建请求后,调用投票合约中创建提案的函数。在投票合约中,首先取得提案数据和签名信息,然后基于提案数据获得到提案对象,再通过跨合约调用DID合约获取/>的DID文档,从中提取出对象A的公钥,利用公钥/>来验证提案创建请求中携带的信息。
在基于公钥进行验证时,首先对提案数据ClaimJson进行哈希计算,得到哈希值HashData,之后用/>对Sig进行解密,得到解密值DecryptedData,若DecryptedData等于HashData,则验证通过,则代表对象A想创建投票提案的信息确实是由对象A签发的,在链上对对象A的鉴权成功。之后,检查提案发对象/>是否为投票合约部署时设置进去的/>中的一个,如果是,则以提案标识ProposalId为key,提案数据ClaimJaon为value,记录到投票合约中的一个map结构中。
同时,投票合约会创建一个资产合约,该资产合约会禁用转移函数,使得电子资产不可转移,仅用于代表对象在该ProposalId对应的提案所拥有的投票权限。在创建资产合约后,投票合约会调用资产合约的分发函数mint,将电子资产分发给对应链上对象,每个对象收到的电子资产为:
假设初始的预设资产总量为:,则对象A,X,Y,Z分到的电子资产为:
在区块链中,为了避免电子资产数量出现小数,将采用向上取整的方法,将预设资产总量以及第一投票权重的乘积结果,作为为初始参与对象分配的电子资产,因此所以最后分发的初始目标资产总量为:
这些电子资产被分别分发转移到DID标识符对应的地址中。
在完成电子资产分发后,投票合约以ProposalId为Key,资产合约地址为Value,将资产合约地址存储到map结构中,并把ProposalId返回给机构B,进而返回给对象A,以及告知对象A可针对该投票提案进行投票。
参见图10,为本申请实施例提供的一种针对新增参与对象分配电子资产的方法流程图,包括如下步骤:
步骤S1000,提案对象确定针对投票提案需要新增一个参与对象时,构造新增数据。
其中,新增数据中至少包括投票提案的提案标识,新增参与对象,新增参与对象的第二投票权重。
步骤S1001,提案对象基于私钥对新增数据进行签名处理。
在一种可能的实现方式中,在基于私钥对提案数据进行签名处理时,首先对新增数据进行哈希计算获得一个哈希值,之后用私钥对该哈希值进行加密,得到签名。
步骤S1002,提案对象将签名处理后的新增数据发送给目标机构。
可以理解的是,提案对象将新增数据发送给目标机构是采用隐式传输的方式告知目标机构新增参与对象并为其分配电子资产。
在本申请实施例中,目标对象还可以采用显示传输的方式告知目标机构新增参与对象并为其分配电子资产;示例性的,目标对象向目标机构发送针对新增参与对象分配电子资产的指令,该指令中携带有新增数据。
步骤S1003,目标机构接收到提案对象发送的新增数据后,构建新增对象请求,新增对象请求至少包括:提案对象基于私钥签发的新增数据。
步骤S1004,目标机构向联盟链的区块链节点发送新增对象请求。
新增对象请求也可以理解为目标机构向联盟链的区块链节点发送的一个交易信息,该交易信息中包括:交易内容、签名、证书,交易内容中包括:提案对象基于私钥签发的新增数据。
步骤S1005,联盟链的区块链节点接收到目标机构发送的新增对象请求后,调用基于投票合约为投票提案创建的资产合约,利用资产合约的分发函数,根据投票提案的初始目标资产总量以及第二投票权重,为新增参与对象分配电子资产。
其中,初始目标资产总量是根据初始参与对象拥有的电子资产确定的。
在一种可能的实现方式中,根据投票提案的初始目标资产总量以及第二投票权重,为新增参与对象分配电子资产时:基于第二投票权重,获得新增参与对象的目标投票权重;采用向上取整的方式,将初始目标资产总量以及目标投票权重的乘积结果,作为为新增参与对象分配的电子资产。
为了便于理解,针对图10所示的方法流程图,本申请实施例中以提案对象为对象A、目标机构为机构B为例,还提供一种针对新增参与对象分配电子资产的示意图,具体参见图11,从图11可知:
当对象A想针对一个具体的投票提案再增加一个参与对象时,需要为该新增投票对象设置投票权重并分配电子资产,则需要由提案对象/>构造一个新增数据,该新增数据可以采用JSON字符串的形式,例如:
{
"ClaimJson": {
"ProposalId": "提案Id",
"ProposqlMember": "",
"ProposalWeight": ""
}
对象A在获得新增数据后,需要将新增数据发送给机构B,以通过机构B向联盟链的区块链节点发送交易信息,针对新增参考对象分发电子资产。为了保证数据传输的安全性,对象A对新增数据进行签名处理。具体签名方式为:
对象A利用对应的私钥对新增数据ClaimJson进行签名,首先对新增数据ClaimJson进行哈希计算,获得一个哈希值,之后用私钥/>对哈希值加密,得到签名Sig。
对象A在对新增数据进行签名后,将签名后的新增数据发送给机构B,此时发送给机构B的数据中除新增数据,还包括签名信息,具体数据结构如下:
{
"ClaimJson": {
"ProposalId": "提案Id",
"ProposqlMember": "",
"ProposalWeight": ""
},
"Signature": Sig
}
机构B收到对象A发送的信息后,构造新增对象请求,新增对象请求中包含对象A发送的新增数据和签名信息,即包括上述数据结构中的所有信息。机构B将新增对象请求发送联盟链的区块链节点。
联盟链的区块链节点在接收到新增对象请求后,调用投票合约增加投票对象的函数。在投票合约中,首先取得新增数据和签名信息,然后基于新增数据中的ProposalId,在提案标识ProposalId为key,提案数据ClaimJaon为value的map结构中,获得到提案对象,再通过跨合约调用DID合约获取/>的DID文档,从中提取出对象A的公钥,利用公钥/>来验证新增对象请求中携带的信息。
在基于公钥进行验证时,首先对新增数据ClaimJson进行哈希计算,得到哈希值HashData,之后用对Sig进行解密,得到解密值DecryptedData,若DecryptedData等于HashData,则验证通过,则代表对象A想针对投票提案新增投票参与对象确实是由对象A签发的,在链上对对象A的鉴权成功。之后,会将增加到投票合约初始设置的投票参与对象中,此时投票参与对象更新为。然后,利用ProposalId,在以ProposalId为Key,资产合约地址为Value的map结构中,获得资产合约地址,基于资产合约地址调用资产合约,并利用资产合约的分发函数mint,为/>分发电子资产,分发的电子资产数量为:
因此分发的最终目标资产总量为:
至此,完成针对新增参考对象的电子资产分配,以便新增参考对象基于电子资产进行投票。
实施例四:投票管理。
参见图12,为本申请实施例提供的一种投票管理方法流程图,包括如下步骤:
步骤S1200,目标对象生成投票数据,投票数据至少包括:投票提案的提案标识和目标对象的投票结果。
步骤S1201,目标对象基于私钥对投票数据进行签名处理。
步骤S1202,目标对象将签名处理后的投票数据发送给目标机构。
步骤S1203,目标机构接收到目标对象基于私钥签发的投票数据后,构建投票消息,投票消息至少包括目标对象基于私钥签发的投票数据。
步骤S1204,目标机构向联盟链的区块链节点发送投票消息,投票消息至少包括目标对象基于私钥签发的投票数据。
步骤S1205,联盟链的区块链节点接收到目标机构发送的投票消息后,基于目标对象以及目标对象拥有的总电子资产,获得目标对象针对投票提案的投票权限的识别结果。
在一种可能的实现方式中,基于目标对象以及目标对象拥有的总电子资产,获得目标对象针对投票提案的投票权限的识别结果时:检测目标对象是否在投票提案关联的投票者数组中,以及,检测目标对象当前在联盟链上拥有的总电子资产中是否包含目标对象针对提案标识拥有的目标电子资产;在目标对象在投票者数组中,以及目标对象当前拥有目标电子资产时,确定识别结果表征目标对象针对投票提案拥有投票权限,否则确定识别结果表征没有投票权限。
步骤S1206,联盟链的区块链节点基于识别结果,确定目标对象拥有投票权限后,调用提案标识关联的资产合约,获得目标对象对应的目标电子资产。
目标电子资产是基于提案对象针对投票提案提交的目标请求,确定目标对象参与投票提案,且具有链上身份标识后,为目标对象分配的。
在一种可能的实现方式中,为了保证投票管理的准确性,在获得到目标对象的投票数据后,对投票数据进行合法性验证,示例性的,在接收目标机构发送的投票消息后,在基于目标对象以及目标对象拥有的总电子资产,获得目标对象针对投票提案的投票权限的识别结果之前,对投票数据进行哈希计算,获得第一哈希值;基于目标对象的公钥,对投票数据中的第一签名信息进行解密处理,获得相应的第一解密值;公钥是目标对象进行链上注册时存储的;在第一哈希值与第一解密值一致时,确定投票数据的合法性验证通过。
步骤S1207,联盟链的区块链节点将目标电子资产,添加到投票结果对应的资产集合中,并根据资产集合中的电子资产,确定投票结果在投票提案关联的投票选项中的被投比例。
在一种可能的实现方式中,将目标电子资产,添加到投票结果对应的资产集合中后,调用资产合约的销毁函数,将目标对象关联的目标电子资产销毁,以表示目标对象已经完成投票操作。
需要说明的是,本申请实施例中还可以采用直接标识的方式确定目标对象已完成投票操作。
在本申请实施例中,在所有的参与对象均完成投票操作后,则可以通过ProposalId查询投票结果,此时获得各投票结果对应的资产集合中的电子资产数量,并可以ProposalId查询对应的资产合约地址,获得总发行电子资产数量,进而根据各投票结果对应的电子资产数量与总发行电子资产数据之间的比值确定投票通过率。
为了便于理解,针对图12所示的方法流程图,本申请实施例中以目标对象为对象A、目标机构为机构B为例,还提供一种投票管理的示意图,具体参见图13,从图13可知:
对象A要针对投票提案进行投票时,构造一个投票数据,该投票数据可以采用JSON字符串的形式,例如:
{
"ClaimJson": {
"ProposalId": "提案Id",
"ProposqlMember": "",
"ProposalResult": "YES"
}
对象A在获得投票数据后,需要将投票数据发送给机构B,以通过机构B向联盟链的区块链节点发送交易信息,创建投票消息。为了保证数据传输的安全性,对象A对投票数据进行签名处理。具体签名方式为:
对象A利用对应的私钥对投票数据ClaimJson进行签名,首先对投票数据ClaimJson进行哈希计算,获得一个哈希值,之后用私钥/>对哈希值加密,得到签名Sig。/>
对象A在对投票数据进行签名后,将签名后的投票数据发送给机构B,此时发送给机构B的数据中除投票数据,还包括签名信息,具体数据结构如下:
{
"ClaimJson": {
"ProposalId": "提案Id",
"ProposqlMember": "",
"ProposalResult": "YES"
},
"Signature": Sig
}
机构B收到对象A发送的信息后,构造投票消息,投票消息中包含对象A发送的投票数据和签名信息,即包括上述数据结构中的所有信息。机构B将投票消息发送联盟链的区块链节点。
联盟链的区块链节点在接收到投票消息后,调用投票合约,对对象A的身份进行验证,会验证是否在投票合约的投票参与对象数组中,且是否已经针对提案ProposalId投过票。若不在投票者数组中,则返回投票失败,若已经针对提案ProposalId投过票,则返回对象A已经投票。
而非上述两种情况,则表明对象A拥有投票权限,此时,用ProposalId,在以ProposalId为Key,资产合约地址为Value的map结构中,获得资产合约地址,并调用资产合约地址对应的资产合约,利用资产合约的销毁burn函数,将对应地址所拥有的电子资产销毁。
之后,在投票合约中,存在一个存储投票结果的map,如下所示:
Map[proposalId]struct{
“YES”: 0,
“No”: 0,
}
会将拥有的电子资产数量,根据ProposalId、以及投票结果是YES还是NO累加到对应的值上面,并标记/>已经对提案ProposalId投过票。
在投票者进行投票后,则可以通过ProposalId查询投票结果,获得YES还是NO各自的投票电子资产数量,并可以ProposalId查询对应电子资产合约地址,获得总发行电子资产数量,进而计算投票通过率。
在本申请中,联盟链的区块链节点首先会接收目标机构发送的投票消息,投票消息至少包括目标对象基于私钥签发的投票数据,投票数据至少包括投票提案的提案标识和目标对象的投票结果,目标对象为通过公钥在联盟连上进行身份注册获得链上身份标识的对象;可见,已在联盟链上进行身份注册的目标对象可通过目标机构对部署在联盟链上的投票提案发送投票数据进行投票操作。联盟链的区块链节点在接收到投票消息后,基于目标对象的链上身份标识以及目标对象在联盟链上拥有的总电子资产,获得目标对象针对投票提案的投票权限的识别结果。当确定目标对象针对投票提案拥有投票权限后,获取目标对象针对提案标识拥有的目标电子资产;并将目标电子资产,添加到投票结果对应的资产集合中,表示目标对象针对投票提案中的某一投票选项进行了投票,此时可根据投票结果的资产集合中的电子资产,确定投票结果在投票提案关联的所有投票选项中的被投比例;其中,目标电子资产是基于投票对应针对投票提案提交的目标请求,确定目标对象参与投票提案且具有链上身份标识后,为目标对象分配的。在获得到目标对象的投票数据后,需要在链上对目标对象进行验证,确定目标对象是否具有投票权限,进而实现目标对象的投票操作。综上,本申请提出的投票管理的实施方式,均是联盟链的区块链节点执行的,扩展了投票管理方法在联盟链的应用,即在联盟链上,单一对象可进行投票操作;同时,由于联盟链的区块链节点执行投票管理,即投票管理在链上执行,因此避免了中心化作恶的问题,保证了投票管理的安全性和准确性。
此外需要注意的是,在本申请的具体实施方式中,涉及到与用户相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
基于同一发明构思,本申请实施例还提供了一种投票管理装置,应用于联盟链的区块链节点;如图14所示,该投票管理装置1400包括:
接收单元1401,用于接收目标机构发送的投票消息;投票消息至少包括:目标对象基于私钥签发的投票数据;投票数据至少包括:投票提案的提案标识和目标对象的投票结果;目标对象为通过公钥,在联盟链上进行身份注册,获得链上身份标识的对象;
获取单元1402,用于当基于链上身份标识以及目标对象在联盟链上拥有的总电子资产,确定目标对象针对投票提案拥有投票权限后,获取目标对象针对提案标识拥有的目标电子资产;目标电子资产是基于提案对象针对投票提案提交的目标请求,确定目标对象参与投票提案,且具有链上身份标识后,为目标对象分配的;
管理单元1403,用于将目标电子资产,添加到投票结果对应的资产集合中,并根据资产集合中的电子资产,确定投票结果在投票提案关联的投票选项中的被投比例。
在一种可能的实现方式中,投票数据中还包括第一签名信息;则获取单元1402还用于:
在基于链上身份标识以及目标对象在联盟链上拥有的总电子资产,确定目标对象针对投票提案拥有投票权限之前,对投票数据进行哈希计算,获得第一哈希值;
基于公钥,对第一签名信息进行解密处理,获得相应的第一解密值;公钥是目标对象在联盟链上进行身份注册时存储的;
在第一哈希值与第一解密值一致时,确定投票数据的合法性验证通过。
在一种可能的实现方式中,获取单元1402具体用于:
检测到链上身份标识在投票提案关联的投票者数组中,以及,检测到目标对象当前拥有的总电子资产中包含目标电子资产时,确定目标对象针对投票提案拥有投票权限。
在一种可能的实现方式中,管理单元1403还用于:
将目标电子资产,添加到投票结果对应的资产集合中后,调用资产合约的销毁函数,将目标对象针对投票提案拥有的目标电子资产销毁。
在一种可能的实现方式中,该装置还包括注册分配单元1404,注册分配单元1404通过公钥,在联盟链上进行身份注册,获得链上身份标识,包括:
接收目标机构发送的注册请求;注册请求至少包括:目标对象的公钥;
调用分布式标识(Decentralized Identifier,DID)合约,执行:基于哈希函数,对公钥进行哈希处理,并将获得的第二哈希值中的指定字节,作为目标对象的地址信息,根据地址信息,构建链上身份标识。
在一种可能的实现方式中,注册分配单元1404还用于:
获得链上身份标识后,在DID合约中,存储目标对象的链上身份标识与公钥的对应关系。
在一种可能的实现方式中,若目标对象为初始参与对象,目标请求为提案创建请求,则注册分配单元1404通过如下方式为目标对象分配目标电子资产:
接收目标机构发送的提案创建请求;提案创建请求至少包括:提案对象签发的提案数据;提案数据中至少包括:投票提案的初始参与对象和初始参与对象的第一投票权重;
调用基于投票合约为投票提案创建的资产合约的分发函数,根据针对投票提案设置的预设资产总量以及第一投票权重,为初始参与对象分配电子资产。
在一种可能的实现方式中,注册分配单元1404具体用于:
采用向上取整的方式,将预设资产总量以及第一投票权重的乘积结果,作为为初始参与对象分配的电子资产。
在一种可能的实现方式中,若目标对象为新增参与对象,目标请求为新增对象请求,则注册分配单元1404通过如下方式为目标对象分配电子资产:
接收目标机构发送的新增对象请求;新增对象请求至少包括:提案对象签发的新增数据;新增数据中至少包括:投票提案的新增参与对象和新增参与对象的第二投票权重;
调用基于投票合约为投票提案创建的资产合约的分发函数,根据投票提案的初始目标资产总量以及第二投票权重,为新增参与对象分配电子资产;初始目标资产总量是根据初始参与对象拥有的电子资产确定的。
在一种可能的实现方式中,注册分配单元1404具体用于:
基于第二投票权重,获得新增参与对象的目标投票权重;
采用向上取整的方式,将初始目标资产总量以及目标投票权重的乘积结果,作为为新增参与对象分配的电子资产。
在一种可能的实现方式中,注册分配单元1404还用于:
在为目标对象分配电子资产之前,接收目标机构发送的合约部署请求;合约部署请求中至少包括:提案对象设置的投票参与对象,以及投票合约的字节码;
调用DID合约,获得投票参与对象是否存在链上身份标识的验证结果;
当基于验证结果,确定投票参与对象拥有链上身份标识后,基于投票合约构造函数,根据投票合约的字节码以及投票参与对象构建投票合约。
应当注意,尽管在上文详细描述中提及了装置的若干单元(或模块),但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元(或模块)的特征和功能可以在一个单元(或模块)中具体化。反之,上文描述的一个单元(或模块)的特征和功能可以进一步划分为由多个单元(或模块)来具体化。当然,在实施本申请时,也可以把各单元(或模块)的功能在同一个或多个软件或硬件中实现。
在介绍了本申请示例性实施方式的投票管理方法及装置后,接下来介绍本申请的另一示例性实施方式计算设备。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一种可能的实现方式中,本申请实施例提供的计算设备可以至少包括处理器和存储器。其中,存储器存储有计算机程序,当计算机程序被处理器执行时,使得处理器执行本申请中各种示例性实施方式的投票管理方法中的任一步骤。
在该实施例中,计算设备的机构可以如图15所示,包括存储器1501,通讯模块1503以及一个或多个处理器1502。
存储器1501,用于存储处理器1502执行的计算机程序。存储器1501可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
存储器1501可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器1501也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);或者存储器1501是能够用于携带或存储具有指令或数据机构形式的期望的计算机程序并能够由计算机存取的任何其他介质,但不限于此。存储器1501可以是上述存储器的组合。
处理器1502,可以包括一个或多个中央处理单元(central processing unit,CPU)或者为数字处理单元等等。处理器1502,用于调用存储器1501中存储的计算机程序时实现上述投票管理方法。
通讯模块1503用于与终端设备和其他服务器进行通信。
本申请实施例中不限定上述存储器1501、通讯模块1503和处理器1502之间的具体连接介质。本申请实施例在图15中以存储器1501和处理器1502之间通过总线1504连接,总线1504在图15中以粗线描述,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线1504可以分为地址总线、数据总线、控制总线等。为便于描述,图15中仅用一条粗线描述,但并不描述仅有一根总线或一种类型的总线。
存储器1501中存储有计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本申请实施例的投票管理方法。处理器1502用于执行上述的投票管理方法。
在一些可能的实施方式中,本申请提供的投票管理方法的各个方面还可以实现为一种程序产品的形式,其包括计算机程序,当程序产品在计算设备上运行时,计算机程序用于使计算设备执行本说明书上述描述的根据本申请各种示例性实施方式的投票管理方法中的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括计算机程序,并可以在计算装置上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的计算机程序,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。计算机程序可以完全地在用户计算装置上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算装置上部分在远程计算装置上执行、或者完全在远程计算装置或服务器上执行。在涉及远程计算装置的情形中,远程计算装置可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算装置,或者,可以连接到外部计算装置(例如利用因特网服务提供商来通过因特网连接)。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用计算机程序的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序命令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序命令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的命令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序命令也可存储在能引导计算机或其他可编程设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的命令产生包括命令装置的制造品,该命令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序命令也可装载到计算机或其他可编程设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的命令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (14)
1.一种投票管理方法,其特征在于,应用于联盟链的区块链节点,所述方法包括:
接收目标机构发送的投票消息;所述投票消息至少包括:目标对象基于私钥签发的投票数据;所述投票数据至少包括:投票提案的提案标识和所述目标对象的投票结果;所述目标对象为通过公钥,在所述联盟链上进行身份注册,获得链上身份标识的对象;所述目标机构为加入所述联盟链的机构,所述目标对象为所述目标机构的C端用户;
当基于所述链上身份标识以及所述目标对象在所述联盟链上拥有的总电子资产,确定所述目标对象针对所述投票提案拥有投票权限后,获取所述目标对象针对所述提案标识拥有的目标电子资产;所述目标电子资产是基于提案对象针对所述投票提案提交的目标请求,确定所述目标对象参与所述投票提案,且具有所述链上身份标识后,为所述目标对象分配的;
将所述目标电子资产,添加到所述投票结果对应的资产集合中,并根据所述资产集合中的电子资产,确定所述投票结果在所述投票提案关联的投票选项中的被投比例。
2.如权利要求1所述的方法,其特征在于,所述投票数据中还包括第一签名信息;
则在基于所述链上身份标识以及所述目标对象在所述联盟链上拥有的总电子资产,确定所述目标对象针对所述投票提案拥有投票权限之前,还包括:
对所述投票数据进行哈希计算,获得第一哈希值;
基于所述公钥,对所述第一签名信息进行解密处理,获得相应的第一解密值;所述公钥是所述目标对象在所述联盟链上进行身份注册时存储的;
在所述第一哈希值与所述第一解密值一致时,确定所述投票数据的合法性验证通过。
3.如权利要求1所述的方法,其特征在于,所述基于所述链上身份标识以及所述目标对象拥有的总电子资产,确定所述目标对象针对所述投票提案拥有投票权限,包括:
检测到所述链上身份标识在所述投票提案关联的投票者数组中,以及,检测到所述目标对象当前拥有的总电子资产中包含所述目标电子资产时,确定所述目标对象针对所述投票提案拥有投票权限。
4.如权利要求1-3任一所述的方法,其特征在于,所述将所述目标电子资产,添加到所述投票结果对应的资产集合中后,还包括:
调用资产合约的销毁函数,将所述目标对象针对所述投票提案拥有的目标电子资产销毁。
5.如权利要求1所述的方法,其特征在于,通过公钥,在所述联盟链上进行身份注册,获得链上身份标识,包括:
接收所述目标机构发送的注册请求;所述注册请求至少包括:所述目标对象的公钥;
调用分布式标识DID合约,执行:基于哈希函数,对所述公钥进行哈希处理,并将获得的第二哈希值中的指定字节,作为所述目标对象的地址信息,根据所述地址信息,构建所述链上身份标识。
6.如权利要求5所述的方法,其特征在于,所述获得链上身份标识后,还包括:
在DID合约中,存储所述目标对象的链上身份标识与公钥的对应关系。
7.如权利要求1所述的方法,其特征在于,若所述目标对象为初始参与对象,所述目标请求为提案创建请求,则通过如下方式为所述目标对象分配所述目标电子资产:
接收所述目标机构发送的提案创建请求;所述提案创建请求至少包括:提案对象签发的提案数据;所述提案数据中至少包括:所述投票提案的初始参与对象和初始参与对象的第一投票权重;
调用基于投票合约为所述投票提案创建的资产合约的分发函数,根据针对所述投票提案设置的预设资产总量以及所述第一投票权重,为所述初始参与对象分配电子资产。
8.如权利要求7所述的方法,其特征在于,所述根据针对所述投票提案设置的预设资产总量以及所述第一投票权重,为所述初始参与对象分配电子资产,包括:
采用向上取整的方式,将所述预设资产总量以及所述第一投票权重的乘积结果,作为为所述初始参与对象分配的电子资产。
9.如权利要求1所述的方法,其特征在于,若所述目标对象为新增参与对象,所述目标请求为新增对象请求,则通过如下方式为所述目标对象分配电子资产:
接收所述目标机构发送的新增对象请求;所述新增对象请求至少包括:提案对象签发的新增数据;所述新增数据中至少包括:所述投票提案的新增参与对象和新增参与对象的第二投票权重;
调用基于投票合约为所述投票提案创建的资产合约的分发函数,根据所述投票提案的初始目标资产总量以及所述第二投票权重,为所述新增参与对象分配电子资产;所述初始目标资产总量是根据初始参与对象拥有的电子资产确定的。
10.如权利要求9所述的方法,其特征在于,所述根据所述投票提案的初始目标资产总量以及所述第二投票权重,为所述新增参与对象分配电子资产,包括:
基于所述第二投票权重,获得所述新增参与对象的目标投票权重;
采用向上取整的方式,将所述初始目标资产总量以及所述目标投票权重的乘积结果,作为为所述新增参与对象分配的电子资产。
11.如权利要求8-10任一所述的方法,其特征在于,在为所述目标对象分配电子资产之前,还包括:
接收所述目标机构发送的合约部署请求;所述合约部署请求中至少包括:所述提案对象设置的投票参与对象,以及投票合约的字节码;
调用DID合约,获得所述投票参与对象是否存在链上身份标识的验证结果;
当基于所述验证结果,确定所述投票参与对象拥有所述链上身份标识后,基于投票合约构造函数,根据所述投票合约的字节码以及所述投票参与对象构建投票合约。
12.一种投票管理装置,其特征在于,应用于联盟链的区块链节点,所述装置包括:
接收单元,用于接收目标机构发送的投票消息;所述投票消息至少包括:目标对象基于私钥签发的投票数据;所述投票数据至少包括:投票提案的提案标识和所述目标对象的投票结果;所述目标对象为通过公钥,在所述联盟链上进行身份注册,获得链上身份标识的对象;所述目标机构为加入所述联盟链的机构,所述目标对象为所述目标机构的C端用户;
获取单元,用于当基于所述链上身份标识以及所述目标对象在所述联盟链上拥有的总电子资产,确定所述目标对象针对所述投票提案拥有投票权限后,获取所述目标对象针对所述提案标识拥有的目标电子资产;所述目标电子资产是基于提案对象针对所述投票提案提交的目标请求,确定所述目标对象参与所述投票提案,且具有所述链上身份标识后,为所述目标对象分配的;
管理单元,用于将所述目标电子资产,添加到所述投票结果对应的资产集合中,并根据所述资产集合中的电子资产,确定所述投票结果在所述投票提案关联的投票选项中的被投比例。
13.一种计算设备,其特征在于,所述计算设备包括:处理器和存储器,其中:
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序,实现权利要求1-11任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时,实现权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311317979.0A CN117061089B (zh) | 2023-10-12 | 2023-10-12 | 一种投票管理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311317979.0A CN117061089B (zh) | 2023-10-12 | 2023-10-12 | 一种投票管理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117061089A CN117061089A (zh) | 2023-11-14 |
CN117061089B true CN117061089B (zh) | 2024-02-06 |
Family
ID=88666715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311317979.0A Active CN117061089B (zh) | 2023-10-12 | 2023-10-12 | 一种投票管理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117061089B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107833135A (zh) * | 2017-10-30 | 2018-03-23 | 中山大学 | 一种基于区块链的公平电子投票协议 |
CN110245183A (zh) * | 2019-05-05 | 2019-09-17 | 上海链度科技有限公司 | 一种基于联盟区块链技术的加密电子投票选举系统及方法 |
CN110958253A (zh) * | 2019-12-05 | 2020-04-03 | 全链通有限公司 | 基于区块链的电子投票方法、设备及存储介质 |
CN111159683A (zh) * | 2020-04-03 | 2020-05-15 | 深圳壹账通智能科技有限公司 | 电子投票方法、装置、计算机和存储介质 |
CN112784305A (zh) * | 2021-02-01 | 2021-05-11 | 杭州复杂美科技有限公司 | 加密投票方法、计算机设备和存储介质 |
US11100743B1 (en) * | 2017-12-30 | 2021-08-24 | S&S Crypto Technologies | Blockchain-based election system |
CN113706761A (zh) * | 2020-05-21 | 2021-11-26 | 河北雄安链点科技有限公司 | 数字资产交换平台的投票方法、设备和存储介质 |
CN115994824A (zh) * | 2022-11-17 | 2023-04-21 | 昆明电力交易中心有限责任公司 | 基于跨可信联盟链的数字资产跨链交易方法 |
CN116192405A (zh) * | 2023-02-23 | 2023-05-30 | 绿盟科技集团股份有限公司 | 一种电子投票方法及相关装置 |
-
2023
- 2023-10-12 CN CN202311317979.0A patent/CN117061089B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107833135A (zh) * | 2017-10-30 | 2018-03-23 | 中山大学 | 一种基于区块链的公平电子投票协议 |
US11100743B1 (en) * | 2017-12-30 | 2021-08-24 | S&S Crypto Technologies | Blockchain-based election system |
CN110245183A (zh) * | 2019-05-05 | 2019-09-17 | 上海链度科技有限公司 | 一种基于联盟区块链技术的加密电子投票选举系统及方法 |
CN110958253A (zh) * | 2019-12-05 | 2020-04-03 | 全链通有限公司 | 基于区块链的电子投票方法、设备及存储介质 |
CN111159683A (zh) * | 2020-04-03 | 2020-05-15 | 深圳壹账通智能科技有限公司 | 电子投票方法、装置、计算机和存储介质 |
CN113706761A (zh) * | 2020-05-21 | 2021-11-26 | 河北雄安链点科技有限公司 | 数字资产交换平台的投票方法、设备和存储介质 |
CN112784305A (zh) * | 2021-02-01 | 2021-05-11 | 杭州复杂美科技有限公司 | 加密投票方法、计算机设备和存储介质 |
CN115994824A (zh) * | 2022-11-17 | 2023-04-21 | 昆明电力交易中心有限责任公司 | 基于跨可信联盟链的数字资产跨链交易方法 |
CN116192405A (zh) * | 2023-02-23 | 2023-05-30 | 绿盟科技集团股份有限公司 | 一种电子投票方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117061089A (zh) | 2023-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11477032B2 (en) | System and method for decentralized-identifier creation | |
US11533164B2 (en) | System and method for blockchain-based cross-entity authentication | |
US11025435B2 (en) | System and method for blockchain-based cross-entity authentication | |
EP3788522B1 (en) | System and method for mapping decentralized identifiers to real-world entities | |
CN109819443B (zh) | 基于区块链的注册认证方法、装置及系统 | |
US20200127828A1 (en) | System and method for creating decentralized identifiers | |
CN113256297B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN111416709A (zh) | 基于区块链系统的投票方法、装置、设备及存储介质 | |
CN117061089B (zh) | 一种投票管理方法、装置、设备及存储介质 | |
Antal et al. | Distributed Ledger Technology Review and Decentralized Applications Development Guidelines. Future Internet 2021, 13, 62 | |
CN113672988A (zh) | 基于区块链的信息管理方法、系统、介质及电子设备 | |
CN117495559A (zh) | 一种交易处理方法、装置、设备及存储介质 | |
CN115601091A (zh) | 一种基于区块链的票据管理方法以及相关设备 | |
CN117955659A (zh) | 基于区块链的资源凭证处理方法、装置和计算机设备 | |
CN111275461A (zh) | 一种数据处理方法、装置及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |