CN114692221A - 提案投票方法 - Google Patents

提案投票方法 Download PDF

Info

Publication number
CN114692221A
CN114692221A CN202210251660.1A CN202210251660A CN114692221A CN 114692221 A CN114692221 A CN 114692221A CN 202210251660 A CN202210251660 A CN 202210251660A CN 114692221 A CN114692221 A CN 114692221A
Authority
CN
China
Prior art keywords
proposal
contract
state data
new
voting
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.)
Pending
Application number
CN202210251660.1A
Other languages
English (en)
Inventor
李伟
邱炜伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Priority to CN202210251660.1A priority Critical patent/CN114692221A/zh
Publication of CN114692221A publication Critical patent/CN114692221A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开一种提案投票方法,该方法通过在智能合约的功能逻辑之外封装一个投票提案管理组件,作为对功能逻辑调用的中介,通过投票提案管理组件所暴露的查询、提案、投票、执行接口来进行智能合约中投票提案生命周期的管理,使得用户可以借助区块链平台上的智能合约,经过若干用户授权认证以执行合约的功能逻辑。由于本发明与智能合约的实现语言无关、与智能合约的功能逻辑无关、与智能合约的部署方式无关,因此用户可以基于本发明所描述的方法自由扩展,设计任意区块链平台和任意语言、任意需要多用户授权功能的智能合约。

Description

提案投票方法
本申请是于2019年12月28日提交的申请号为2019111882018、发明名称为“一种基于智能合约的投票提案的生命周期管理方法”的中国专利申请的分案申请,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及区块链技术领域,特别涉及一种提案投票方法。
背景技术
区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性,区块链上维护一个公共的账本,用于存储区块链网络上所有用户的余额,公共账本位于存储区块上任何节点可见,从而保证其不可伪造和篡改。
区块链由于其特殊的链式数据存储结构,使得直接基于区块链实现结构化数据的增删改查操作变得困难,而开发智能合约可以将结构化数据上链并实现相关的操作。
区块链智能合约从本质上讲是区块链上的可执行语言,其工作原理类似于其它计算机程序语句,以这种方式与真实世界的资产等数据进行交互。智能合约往往用Solidity(与Javascript类似的专用语言)高级语言编写。
结构化数据也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。如果将二维表结构数据和智能合约中的存储结构建立一一映射,即可通过智能合约将结构化数据在区块链上进行存储和管理。
现有的智能合约的执行权限控制大多数都是基于单一用户地址检查进行的。在智能合约中需要将权限分配给多个用户时,只能使用多重签名技术。而通过多重签名的技术手段只能将权限均匀分配到指定的若干个地址。另外,在需要获取权限时,需要取得所有具有权限的账号的签名才能够获取指定权限。这种多用户权限分配的方式在权重分配和权限阈值方面都很不灵活,在权限分配方案复杂的情况下很难使用。
发明内容
针对现有技术的不足,本发明提供一种提案投票方法,该方法提供了一种解决区块链上智能合约多用户授权问题的通用方案。具体技术方案如下:
一种基于智能合约的投票提案生命周期管理方法,包括如下步骤:
步骤一:初始化合约:
通过内置合约或者部署合约的方式,使得区块链上具有一个逻辑执行需要经过若干具有投票权限的用户许可的投票提案合约;投票提案合约所包含的要素包括:一个投票提案管理组件和若干个负责执行具体逻辑的功能组件;所述的功能组件具有各自的数据结构和函数,但是函数不对合约外部暴露,也就是不可以由用户直接调用,只允许通过所述的投票提案管理组件进行间接调用。
步骤二:根据用户的需求对投票提案合约进行对应操作,进而进行提案状态变更:
(1)当需要发起提案希望通过投票执行某一个合约不对外暴露的功能函数时,发起者确定希望调用的智能合约的目标函数和参数,在客户端根据投票提案管理组件中的标识符到功能函数的映射表以及数据序列化协议,将调用所需要的函数和参数的信息转换为函数标识符和参数序列化字符串,然后将函数标识符和参数序列化字符串作为合约调用的参数,以合约调用交易的形式向区块链节点发送带有数字签名的请求,调用投票提案管理组件的对外暴露的proposal提案函数;当交易被发送到区块链节点上后,首先验证数字签名,然后进行共识;在共识结束后,产生所有区块链节点一致的区块时间戳,即交易打包时间戳;在这之后,区块链节点的执行器运行请求调用的proposal提案函数时,分为以下几个子步骤来执行:
(1.1)检查合约状态数据中已有的提案:如果当前状态数据中没有提案,那么直接进入步骤(1.2);如果合约的状态数据中已有提案,且提案超时,则先将状态数据中提案状态置为“超时”,然后进入步骤(1.2);如果当前状态数据中已有提案,并且提案未超时,则直接进入步骤(1.2);
(1.2)分别检查新提案和已有提案正确性;
对于新提案,如果合约调用交易中交易的发起者能够在投票者地址到权重的映射表中找到,目标函数标识符能根据标识符到功能函数的映射表正确地映射到相应的功能函数,序列化参数字符串能根据序列化协议正确转换成函数所需要的参数,那么将执行步骤(1.3),否则将返回错误并退出;
对于已有提案,检查当前状态数据中提案状态为“超时”、“禁止”或“生效”时,则执行步骤(1.3),否则将返回错误并退出;
(1.3)更新合约状态数据中的提案;
将已有提案从状态数据中销毁,令状态数据中的提案计数器加一,其结果作为新提案的编号;将当前交易中包含的发起者、函数标识符、参数序列化字符串、提案编号以及根据交易打包时间戳与提案超时时限所生成的提案超时时间戳组合,一起构成新提案的信息;接着将新提案的状态置为审批;在这之后,将提案的数据存放到状态数据中;最后,将提案的数据序列化,通过区块链平台提供的消息接口,将新提案的信息推送到其他具有投票权利的用户的客户端;
(2)当具有投票权利的用户收到提案信息的推送,希望对提案进行投票时:投票者根据所获得的提案信息,评估合约执行的后果,进而产生对提案的支持或反对意见;投票者在客户端组合提案编号、提案的交易打包时间和本人的投票,生成带有数字签名的请求并发送到区块链节点上,以调用投票提案合约的vote投票函数;区块链节点在收到了请求之后,首先验证请求的签名,然后进行共识;共识结束之后,生成所有区块链节点一致的区块时间戳,即交易打包时间戳;在这之后,区块链节点的执行器运行请求调用的vote投票函数时,分为以下几个子步骤来执行:
(2.1)检查合约状态数据中已有的提案:如果当前状态数据中没有提案,则将错误返回并退出;如果合约的状态数据中已有提案,并且提案超时,则将状态数据中提案状态置为超时,然后将错误返回并退出;如果当前状态数据中已有提案,并且提案未超时,则进入步骤(2.2)。
(2.2)检查投票的正确性:如果投票的发送者能够在投票者地址到权重的映射表中找到,投票请求中的提案编号、提案的交易打包时间等于合约状态数据中提案的编号和交易打包时间,并且当前合约状态数据中的提案状态为审批,那么认为投票是正确的,执行步骤(2.3);否则,将错误返回并退出;
(2.3)更新投票结果:如果投票者同意执行提案,则将投票者的地址更新到合约状态数据中提案的同意者列表中,再根据提案同意者列表和投票者地址到权重的映射表,计算同意提案的投票者的总权重,如果计算结果大于等于提案通过的最小阈值,则将合约状态数据中当前提案状更新为通过,并通过区块链平台提供的消息接口将提案的状态、编号、交易打包时间戳组成消息发送提案发起者,然后结束执行;如果投票者反对执行提案,则将投票者的地址更新到合约状态数据中的提案的反对者列表中,再根据提案反对者列表和投票者地址到权重的映射表,计算反对者的总权重和所有投票者的总权重,如果所有投票者的总权重减去反对者的总权重小于提案通过的最小阈值,那么将合约状态数据中提案状态更新为禁止,并在区块链平台提供的消息接口将提案的状态、编号、交易打包时间戳组成消息发送给提案发起者,然后结束执行;如果同意提案的投票者的总权重和反对者的总权重均未超过阈值,直接结束执行;
(3)当提案发起者希望执行自己发起的提案时:提案的发起者应该以自己收到的提案通过消息中所附带的提案编号、交易打包时间戳作为参数,在客户端生成请求调用合约的execute函数发送到区块链节点上;区块链节点在收到了请求之后,首先验证请求的签名,然后进行共识;共识结束之后,生成所有区块链节点一致的区块时间戳,即交易打包时间戳;在这之后,区块链节点的执行器运行请求调用的execute执行函数,分为以下几个子步骤来执行:
(3.1)检查合约状态数据中已有的提案:如果当前状态数据中没有提案,则将错误返回并退出;如果合约的状态数据中已有提案,并且提案超时,则将状态数据中提案状态置为超时,然后将错误返回并退出如果当前状态数据中已有提案,并且提案未超时,则进入步骤(3.2);
(3.2)检查执行请求的正确性:如果执行请求的发起者是当前合约状态数据中提案的发起者,且执行请求中的提案编号、交易打包时间戳等于当前合约状态数据中提案的编号、交易打包时间,并且当前合约状态数据中提案为通过,则认为执行请求是正确的,进行步骤(3.3);否则,直接结束执行,将返回错误并退出;
(3.3)执行提案:根据函数标识符到目标函数的映射表,将合约状态数据中当前提案所包含的目标函数标识符映射到提案所要执行的函数,再通过反序列化协议将参数序列化字符串转换成实际参数,调用目标函数真正执行,执行的结果通过序列化协议转化成字符串存入回执。
(4)当用户希望查询合约状态中的提案时:用户在客户端构建带有数字签名的请求发送到区块链节点,以调用提案投票合约的query函数;区块链节点在收到了请求之后,首先验证请求的签名,然后进行共识;共识结束之后,会生成所有区块链节点一致的区块时间戳,即交易打包时间戳;在这之后,区块链节点的执行器运行请求调用的query执行函数时,分为以下几个子步骤来执行:
(4.1)检查合约状态数据中已有的提案,如果当前状态数据中没有提案,则将错误返回并退出;如果合约的状态数据中已有提案,并且提案超时,则将状态数据中提案状态置为超时,然后进入步骤(4.2);如果当前状态数据中已有提案,并且提案未超时,则进入步骤(4.2)。
(4.2)检查查询请求的正确性,如果投票的发送者能够在投票者地址到权重的映射表中找到,那么认为查询请求是正确的,那么将直接返回提案的序列化结果;否则,将错误返回并退出。
进一步地,步骤一中所述投票提案管理组件所包含的特征要素有:投票者地址到权重的映射表、标识符到功能函数的映射表、数据序列化反序列化协议、提案数据结构定义、提案计数器、提案超时时限、提案要通过所需的权重阈值,对合约外部暴露proposal提案、vote投票、execute执行和query查询四种函数接口。
进一步地,所述的提案是否超时的判断方法为比较提案的超时时间戳与交易打包时间戳的大小,当提案的超时时间戳大于等于交易打包时间戳,则提案未超时;当当提案的超时时间戳小于交易打包时间戳,则提案超时。
与现有技术相比,本发明的有益效果如下:
(1)本发明应用于区块链平台上需要多人签名授权执行实际逻辑的智能合约,本发明为这一类智能合约的设计提供了一种与智能合约的实现语言无关、与智能合约的实际执行逻辑无关、与智能合约的部署方式无关的通用的投票提案生命周期管理方法,为实现基于投票提案智能合约的区块链多重签名授权提供解决方案,更易于维护和拓展;
(2)本方法使用在各个区块链节点上一致的智能合约调用请求的交易打包时间作为判断“超时”的依据,不需要维护定时器。利用区块链系统的特性,为分布式环境下“超时”状态机制的设计提供解决方案。
附图说明
图1是通过提案调用智能合约的四管理员与区块链系统的协作图;
图2是投票提案合约中描述一个提案生命周期的状态变更示意图;
图3是区块链节点处理对投票提案合约的调用请求的流程示意图。
具体实施方式
下面根据附图和具体实施实例详细描述本发明,本发明的目的和效果将更加明显。
如图1-3所示,一种基于智能合约的投票提案生命周期管理方法,包括如下步骤:
步骤一:初始化合约:
通过内置合约或者部署合约的方式,使得区块链上具有一个逻辑执行需要经过若干具有投票权限的用户许可的投票提案合约。投票提案合约所包含的要素包括:一个投票提案管理组件和若干个负责执行具体逻辑的功能组件。合约的功能组件具有各自的数据结构和函数,但是函数不对合约外部暴露,也就是不可以由用户直接调用,只允许通过投票提案管理组件进行间接调用;投票提案管理组件所包含的特征要素有:投票者地址到权重的映射表、标识符到功能函数的映射表、数据序列化反序列化协议、提案数据结构定义、提案计数器、提案超时时限、提案要通过所需的权重阈值,对合约外部暴露proposal提案、vote投票、execute执行query查询四种函数接口。
步骤二:根据用户的需求对投票提案合约进行对应操作,进而进行提案状态变更:
(1)当需要发起提案希望通过投票执行某一个合约不对外暴露的功能函数时:发起者确定希望调用的智能合约的目标函数和参数,在客户端根据投票提案管理组件中的标识符到功能函数的映射表以及数据序列化协议,将调用所需要的函数和参数的信息转换为函数标识符和参数序列化字符串。然后将函数标识符和参数序列化字符串作为合约调用的参数,以合约调用交易的形式向区块链节点发送带有数字签名的请求,调用投票提案合约对外暴露的proposal提案函数。当交易被发送到区块链节点上后,首先验证数字签名,然后进行共识。在共识结束后,会产生所有区块链节点一致的区块时间戳,即交易打包时间戳。在这之后,区块链节点的执行器运行请求调用的proposal提案函数时,分为以下几个子步骤来执行:
1)检查合约状态数据中已有的提案。如果当前状态数据中没有提案,那么直接进入下一子步骤。如果合约的状态数据中已有提案,并且提案的超时时间戳小于交易打包时间戳,则将状态数据中提案状态置为“超时”,进入下一子步骤。如果当前状态数据中已有提案,并且提案的超时时间戳大于交易打包时间戳,则直接进入下一子步骤。
2)分别检查新提案和已有提案正确性。
对于新提案,如果合约调用交易中交易的发起者能够在投票者地址到权重的映射表中找到,目标函数标识符能根据标识符到功能函数的映射表正确地映射到相应的功能函数,序列化参数字符串能根据序列化协议正确转换成函数所需要的参数,那么将执行步骤(1.3),否则将返回错误并退出;
对于已有提案,检查当前状态数据中提案状态为“超时”、“禁止”或“生效”时,则执行步骤(1.3),否则将返回错误并退出;
3)更新合约状态数据中的提案。将已有提案从状态数据中销毁,令状态数据中的提案计数器加一,其结果作为新提案的编号。将当前交易中包含的发起者、函数标识符、参数序列化字符串、提案编号以及根据交易打包时间戳与提案超时时限所生成的提案超时时间戳组合,一起构成新提案的信息。接着将新提案的状态置为“审批”。在这之后,将提案的数据存放到状态数据中。最后,将提案的数据序列化,通过区块链平台提供的消息接口,将新提案的信息推送到其他具有投票权利的用户的客户端。
(2)当具有投票权利的用户收到提案信息的推送,希望对提案进行投票时:投票者根据所获得的提案信息,评估合约执行的后果,进而产生对提案的支持或反对意见。投票者在客户端组合提案编号、提案的交易打包时间和本人的投票,生成带有数字签名的请求并发送到区块链节点上,以调用投票提案合约的vote投票函数。区块链节点在收到了请求之后,首先验证请求的签名,然后进行共识。共识结束之后,会生成所有区块链节点一致的区块时间戳,即交易打包时间戳。在这之后,区块链节点的执行器运行请求调用的vote投票函数是,分为以下几个子步骤来执行:
1)检查合约状态数据中已有的提案。如果当前状态数据中没有提案,则将错误返回并退出。如果合约的状态数据中已有提案,并且提案的超时时间戳小于交易打包时间戳,则将状态数据中提案状态置为“超时”,然后将错误返回并退出。如果当前状态数据中已有提案,并且提案的超时时间戳大于交易打包时间,则进入下一子步骤。
2)检查投票的正确性。如果投票的发送者能够在投票者地址到权重的映射表中找到,投票请求中的提案编号、提案的交易打包时间等于合约状态数据中提案的编号和交易打包时间,并且当前合约状态数据中的提案状态为“审批”,那么认为投票是正确的,执行下一子步骤;否则,将错误返回并退出。
3)更新投票结果。如果投票者同意执行提案,则将投票者的地址更新到合约状态数据中提案的同意者列表中,再根据提案同意者列表和投票者地址到权重的映射表,计算同意提案的投票者的总权重,如果计算结果大于等于提案通过的最小阈值,则将合约状态数据中当前提案状更新为“通过”,并通过区块链平台提供的消息接口将提案的状态、编号、交易打包时间戳组成消息发送提案发起者,然后结束执行。如果投票者反对执行提案,则将投票者的地址更新到合约状态数据中的提案的反对者列表中,再根据提案反对者列表和投票者地址到权重的映射表,计算反对者的总权重和所有投票者的总权重,如果所有投票者的总权重减去反对者的总权重小于提案通过的最小阈值,那么将合约状态数据中提案状态更新为“禁止”,并区块链平台提供的消息接口将提案的状态、编号、交易打包时间戳组成消息发送给提案发起者,然后结束执行。
(3)当提案发起者希望执行自己发起的提案时:提案的发起者应该以自己收到的提案通过消息中所附带的提案编号、交易打包时间戳作为参数,在客户端生成请求调用合约的execute函数发送到区块链节点上。区块链节点在收到了请求之后,首先验证请求的签名,然后进行共识。共识结束之后,会生成所有区块链节点一致的区块时间戳,即交易打包时间戳。在这之后,区块链节点的执行器运行请求调用的execute执行函数,分为以下几个子步骤来执行:
1)检查合约状态数据中已有的提案。如果当前状态数据中没有提案,则将错误返回并退出。如果合约的状态数据中已有提案,并且提案的超时时间戳小于交易打包时间戳,则将状态数据中提案状态置为“超时”,然后将错误返回并退出。如果当前状态数据中已有提案,并且提案的超时时间戳大于交易打包时间,则进入下一子步骤。
2)检查执行请求的正确性。如果执行请求的发起者是当前合约状态数据中提案的发起者,且执行请求中的提案编号、交易打包时间戳等于当前合约状态数据中提案的编号、交易打包时间,并且当前合约状态数据中提案为通过,则认为执行请求是正确的,进行下一子步骤。否则,直接结束执行,将返回错误并退出。
3)执行提案。根据函数标识符到目标函数的映射表,将合约状态数据中当前提案所包含的目标函数标识符映射到提案所要执行的函数,再通过反序列化协议将参数序列化字符串转换成实际参数,调用目标函数真正执行,执行的结果通过序列化协议转化成字符串存入回执。
(4)当用户希望查询合约状态中的提案时:用户在客户端构建带有数字签名的请求发送到区块链节点,以调用提案投票合约的query函数。区块链节点在收到了请求之后,首先验证请求的签名,然后进行共识。共识结束之后,会生成所有区块链节点一致的区块时间戳,即交易打包时间戳。在这之后,区块链节点的执行器运行请求调用的query执行函数时,分为以下几个子步骤来执行:
1)检查合约状态数据中已有的提案。如果当前状态数据中没有提案,则将错误返回并退出。如果合约的状态数据中已有提案,并且提案的超时时间戳小于交易打包时间戳,则将状态数据中提案状态置为“超时”,然后进入下一子步骤。如果当前状态数据中已有提案,并且提案的超时时间戳大于交易打包时间,则进入下一子步骤。
2)检查查询请求的正确性。如果投票的发送者能够在投票者地址到权重的映射表中找到,那么认为查询请求是正确的,那么将直接返回提案的序列化结果;否则,将错误返回并退出。
所述步骤一中所部署的智能合约不直接对外暴露功能模块接口,仅仅对外暴露投票提案组件的接口。功能模块接口需要通过投票提案组件上传提案,经投票统一后间接调用。同一时刻合约状态数据中要么没有提案,要么有唯一一个提案,不存在复数个提案。
所述步骤二中进行的对投票提案智能合约进行的任何调用,都有可能引起合约状态数据中的提案状态的变更。其中,对proposal提案函数的调用可能引发提案状态置为“超时”,或者整个提案被更新且状态被置为“审批”;对vote投票函数的调用可能引发提案状态被置为“超时”、“禁止”或“通过”;对execute执行函数的调用可能引发提案状态被置为“超时”或“生效”;对query查询函数的调用可能提案状态被置为“超时”。提案的状态被置为“超时”是由合约调用的交易打包时间戳超过提案的超时时间戳导致的,与调用哪个合约函数无关。

Claims (16)

1.一种提案投票方法,其特征在于,应用于区块链节点,所述方法包括:
将新提案发送至多个客户端,所述多个客户端均具有提案投票权利,所述多个客户端用于在接收到所述新提案后向所述区块链节点返回投票请求,所述投票请求携带所述新提案的提案编号和投票,所述投票为对所述新提案的支持意见或反对意见,所述投票请求用于请求调用投票提案合约的vote投票函数;
若接收到所述多个客户端发送的所述投票请求,则运行请求调用的所述vote投票函数,以执行以下操作:
对于所述多个客户端中的每一个客户端,在所述一个客户端发送的所述投票请求中的所述投票为支持意见的情况下,将所述一个客户端的投票者地址添加到所述新提案的同意者列表,或者,在所述一个客户端发送的所述投票请求中的所述投票为反对意见的情况下,将所述一个客户端的投票者地址添加到所述新提案的反对者列表;
根据所述同意者列表和存储的投票者地址到权重的映射表,确定同意执行所述新提案的投票者的总权重,以及根据所述反对者列表和所述投票者地址到权重的映射表,确定反对执行所述新提案的投票者的总权重;
根据所述同意执行所述新提案的投票者的总权重或所述反对执行所述新提案的投票者的总权重,更新所述新提案的提案状态,所述提案状态为通过或禁止。
2.如权利要求1所述的方法,其特征在于,所述根据所述同意执行所述新提案的投票者的总权重或所述反对执行所述新提案的投票者的总权重,更新所述新提案的提案状态,包括:
若所述同意执行所述新提案的投票者的总权重大于或等于所述新提案通过的最小权重阈值,则将所述新提案的提案状态更新为通过;或者,
根据所述多个客户端中每个客户端的投票者地址和所述投票者地址到权重的映射表,确定所有投票者的总权重,若所述所有投票者的总权重减去所述反对执行所述新提案的投票者的总权重得到的差值小于所述新提案通过的最小权重阈值,则将所述新提案的提案状态更新为禁止。
3.如权利要求1所述的方法,其特征在于,所述在所述一个客户端发送的所述投票请求中的所述投票为支持意见的情况下,将所述一个客户端的投票者地址添加到所述新提案的同意者列表,或者,在所述一个客户端发送的所述投票请求中的所述投票为反对意见的情况下,将所述一个客户端的投票者地址添加到所述新提案的反对者列表之前,还包括:
检查合约状态数据中是否存在提案;
若所述合约状态数据中不存在提案,则进行错误提醒并结束操作;
若所述合约状态数据中存在提案,且所述合约状态数据中存在的提案已超时,则将所述合约状态数据中存在的提案的提案状态设置为超时,且进行错误提醒并结束操作;
若所述合约状态数据中存在提案,且所述合约状态数据中存在的提案未超时,则检查所述一个客户端发送的所述投票请求的正确性;若所述一个客户端发送的所述投票请求正确,则执行所述在所述一个客户端发送的所述投票请求中的所述投票为支持意见的情况下,将所述一个客户端的投票者地址添加到所述新提案的同意者列表,或者,在所述一个客户端发送的所述投票请求中的所述投票为反对意见的情况下,将所述一个客户端的投票者地址添加到所述新提案的反对者列表的步骤。
4.如权利要求3所述的方法,其特征在于,所述投票请求还包括所述新提案的交易打包时间戳,所述检查所述一个客户端发送的所述投票请求的正确性,包括:
若能够在所述投票者地址到权重的映射表中查找到所述一个客户端的投票者地址,且所述一个客户端发送的所述投票请求携带的提案编号与所述合约状态数据中存在的提案的提案编号相同,且所述一个客户端发送的所述投票请求携带的交易打包时间戳与所述合约状态数据中存在的提案的交易打包时间戳相同,且所述合约状态数据中存在的提案的提案状态为审批,则确定所述一个客户端发送的所述投票请求正确;否则,确定所述一个客户端发送的所述投票请求不正确。
5.如权利要求1所述的方法,其特征在于,所述将新提案发送至多个客户端之前,还包括:
接收合约调用交易,所述合约调用交易用于请求调用所述投票提案合约的proposal提案函数;
根据所述合约调用交易生成所述新提案;
运行请求调用的所述proposal提案函数,以执行以下操作:
检查合约状态数据中是否存在提案;
若所述合约状态数据中不存在提案,则检查所述新提案的正确性;
在所述新提案正确的情况下,将所述合约状态数据中的提案计数器加1,得到所述新提案的提案编号;
将所述新提案的提案状态设置为审批,并将所述新提案存储至所述合约状态数据中。
6.如权利要求5所述的方法,其特征在于,所述合约调用交易携带目标函数标识符和参数序列化字符串,所述检查所述新提案的正确性,包括:
若能够在所述投票者地址到权重的映射表中查找到所述合约调用交易的发起者的地址,且能够根据存储的标识符到功能函数的映射表,将所述合约调用交易携带的所述目标函数标识符正确映射到相应的功能函数,且能够根据存储的反序列化协议将所述合约调用交易携带的所述参数序列化字符串正确转换成所述功能函数所需要的参数,则确定所述新提案正确;否则,确定所述新提案不正确。
7.如权利要求5所述的方法,其特征在于,所述检查合约状态数据中是否存在提案之后,还包括:
若所述合约状态数据中存在提案,则在所述合约状态数据中存在的提案已超时的情况下,将所述合约状态数据中存在的提案的提案状态设置为超时,在所述合约状态数据中存在的提案未超时的情况下,不对所述合约状态数据中存在的提案的提案状态做处理;
若所述合约状态数据中存在的提案的提案状态为超时、禁止或生效,则将所述合约状态数据中存在的提案销毁,且将所述合约状态数据中的提案计数器加1,得到所述新提案的提案编号;
将所述新提案的提案状态设置为审批,并将所述新提案存储至所述合约状态数据中。
8.如权利要求5-7任一所述的方法,其特征在于,所述合约调用交易携带有数字签名,所述根据所述合约调用交易生成所述新提案之前,还包括:
验证所述合约调用交易的数字签名;
在所述合约调用交易的数字签名验证通过后,执行所述根据所述合约调用交易生成所述新提案的步骤;
所述运行请求调用的所述proposal提案函数之前,还包括:
对所述新提案进行共识;
在所述新提案的共识结束后,产生所有区块链节点一致的区块时间戳作为所述新提案的交易打包时间戳。
9.如权利要求8所述的方法,其特征在于,所述合约调用交易携带目标函数标识符和参数序列化字符串,所述将所述新提案的提案状态设置为审批之前,还包括:
更新所述新提案,更新后的所述新提案包含所述新提案的提案编号、所述合约调用交易的发起者的地址、所述合约调用交易携带的所述目标函数标识符和所述参数序列化字符串、所述新提案的交易打包时间戳和超时时间戳。
10.如权利要求1-3任一所述的方法,其特征在于,所述更新所述新提案的提案状态之后,还包括:
若所述新提案的提案状态更新为通过,则向所述新提案的发起者发送提案通过消息,所述提案通过消息携带所述新提案的提案状态、提案编号和交易打包时间戳。
11.如权利要求1所述的方法,其特征在于,所述更新所述新提案的提案状态之后,还包括:
接收提案执行请求,所述提案执行请求用于请求调用所述提案投票合约的execute执行函数;
运行请求调用的所述execute执行函数,以执行以下操作:
检查合约状态数据中是否存在提案;
若所述合约状态数据中不存在提案,则进行错误提醒并结束操作;
若所述合约状态数据中存在提案,且所述合约状态数据中存在的提案已超时,则将所述合约状态数据中存在的提案的提案状态设置为超时,进行错误提醒并结束操作;
若所述合约状态数据中存在提案,且所述合约状态数据中存在的提案未超时,则检查所述提案执行请求的正确性,在所述提案执行请求正确的情况下,执行所述新提案。
12.如权利要求11所述的方法,其特征在于,所述提案执行请求携带所述新提案的提案编号和交易打包时间戳,所述检查所述提案执行请求的正确性,包括:
若所述提案执行请求的发起者是所述合约状态数据中存在的提案的发起者,且所述提案执行请求携带的提案编号与所述合约状态数据中存在的提案的提案编号相同,且所述提案执行请求携带的交易打包时间戳与所述合约状态数据中存在的提案的交易打包时间戳相同,且所述合约状态数据中存在的提案的提案状态为通过,则确定所述提案执行请求正确;否则,确定所述提案执行请求不正确。
13.如权利要求11或12所述的方法,其特征在于,所述新提案包含目标函数标识符和参数序列化字符串,所述执行所述新提案,包括:
根据存储的标识符到功能函数的映射表,将所述新提案包含的所述目标函数标识符映射到所述新提案所要执行的目标函数,以及通过存储的反序列化协议将所述新提案包含的所述参数序列化字符串转换成实际参数;
使用所述实际参数调用所述目标函数,得到所述目标函数的执行结果,将所述执行结果通过存储的序列化协议转换成字符串存入回执;
将所述新提案的提案状态更新为生效。
14.如权利要求1所述的方法,其特征在于,所述方法还包括:
接收查询请求,所述查询请求用于请求调用所述提案投票合约的query查询函数;
运行请求调用的所述query查询函数,以执行以下操作:
检查合约状态数据中是否存在提案,所述合约状态数据中至多存在一个提案;
若所述合约状态数据中不存在提案,则进行错误提醒并结束操作;
若所述合约状态数据中存在提案,则在所述合约状态数据中存在的提案已超时的情况下,将所述合约状态数据中存在的提案的提案状态设置为超时,在所述合约状态数据中存在的提案未超时的情况下,不对所述合约状态数据中存在的提案的提案状态做处理;检查所述查询请求的正确性;若所述查询请求正确,则返回所述合约状态数据中存在的提案的序列化结果,若所述查询请求不正确,则进行错误提醒并结束操作。
15.如权利要求14所述的方法,其特征在于,所述检查所述查询请求的正确性,包括:
若能够在所述投票者地址到权重的映射表中查找到所述查询请求的发起者的地址,则确定所述查询请求正确;否则,确定所述查询请求不正确。
16.如权利要求3、7、11、14任一所述的方法,其特征在于,所述合约状态数据中存在的提案包含超时时间戳和交易打包时间戳,所述方法还包括:
若所述合约状态数据中存在的提案的超时时间戳小于交易打包时间戳,则确定所述合约状态数据中存在的提案已超时;
若所述合约状态数据中存在的提案的超时时间戳大于或等于交易打包时间戳,则确定所述合约状态数据中存在的提案未超时。
CN202210251660.1A 2019-11-28 2019-11-28 提案投票方法 Pending CN114692221A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210251660.1A CN114692221A (zh) 2019-11-28 2019-11-28 提案投票方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202210251660.1A CN114692221A (zh) 2019-11-28 2019-11-28 提案投票方法
CN201911188201.8A CN111062060B (zh) 2019-11-28 2019-11-28 一种基于智能合约的投票提案生命周期管理方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201911188201.8A Division CN111062060B (zh) 2019-11-28 2019-11-28 一种基于智能合约的投票提案生命周期管理方法

Publications (1)

Publication Number Publication Date
CN114692221A true CN114692221A (zh) 2022-07-01

Family

ID=70299087

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202210251660.1A Pending CN114692221A (zh) 2019-11-28 2019-11-28 提案投票方法
CN201911188201.8A Active CN111062060B (zh) 2019-11-28 2019-11-28 一种基于智能合约的投票提案生命周期管理方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201911188201.8A Active CN111062060B (zh) 2019-11-28 2019-11-28 一种基于智能合约的投票提案生命周期管理方法

Country Status (1)

Country Link
CN (2) CN114692221A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114422535B (zh) * 2022-01-18 2024-04-09 网易(杭州)网络有限公司 区块链中部署合约的方法、装置、计算机设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107562513B (zh) * 2017-07-18 2020-08-07 杭州趣链科技有限公司 一种基于java的智能合约生命周期的管理方法
KR102014647B1 (ko) * 2018-06-21 2019-10-21 이화여자대학교 산학협력단 블록체인 기반 전자투표방법
CN109671205B (zh) * 2018-09-25 2022-04-15 深圳壹账通智能科技有限公司 基于区块链的投票方法、装置、设备及计算机存储介质
CN109358881B (zh) * 2018-10-24 2020-06-16 杭州趣链科技有限公司 一种基于智能合约的权限可控的智能合约升级方法
CN109710384B (zh) * 2018-12-29 2021-02-23 杭州趣链科技有限公司 一种安全的Java智能合约解释执行引擎及方法

Also Published As

Publication number Publication date
CN111062060B (zh) 2022-04-26
CN111062060A (zh) 2020-04-24

Similar Documents

Publication Publication Date Title
US11824970B2 (en) Systems, methods, and apparatuses for implementing user access controls in a metadata driven blockchain operating via distributed ledger technology (DLT) using granular access objects and ALFA/XACML visibility rules
US11743137B2 (en) Systems, methods, and apparatuses for implementing a metadata driven rules engine on blockchain using distributed ledger technology (DLT)
CN110915166B (zh) 区块链
US11070360B2 (en) Parallel transaction validation and block generation in a blockchain
US10901955B2 (en) Smart contract input mapping
US11811769B2 (en) Systems, methods, and apparatuses for implementing a declarative, metadata driven, cryptographically verifiable multi-network (multi-tenant) shared ledger
US10896195B2 (en) Automatic generation of smart contracts
US20200177373A1 (en) System and method for storing contract data structures on permissioned distributed ledgers
CN111414413B (zh) 区块链背书验证
CN110874739B (zh) 实现高完整性、高带宽、低延迟、安全处理的分布式计算和存储网络
US20200371995A1 (en) System or method to implement right to be forgotten on metadata driven blockchain using shared secrets and consensus on read
US20200252406A1 (en) Systems, methods, and apparatuses for implementing a declarative and metadata driven blockchain platform using distributed ledger technology (dlt)
US10896149B2 (en) Composition operators for smart contract
WO2022046313A1 (en) Cryptographic-asset collateral management
CN112632629B (zh) 基于区块链的投票管理方法、装置、介质及电子设备
CN111008402A (zh) 区块链时间戳协定
CN113037817B (zh) 启动智能合约的方法及装置、电子设备、存储介质
AU2021316961B2 (en) Systems and methods providing specialized proof of confidential knowledge
JP2022500738A (ja) 演算および信用できる確認のための分散型プラットフォーム
US11270030B2 (en) System and method for consensus management
US20030204804A1 (en) Providing a chain of tokenized error and state information for a call stack
CN111062060B (zh) 一种基于智能合约的投票提案生命周期管理方法
Carr et al. Towards formal verification of hotstuff-based byzantine fault tolerant consensus in agda
KR20220066769A (ko) 토큰 모델링 장치 및 이를 포함하는 데이터 무결성 검증 시스템 및 방법
CN112181599A (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