G06Q20/06 G06Q40/04 G06F21/64
1.一种采用代理记账的区块链共识方法,其特征在于,区块链的节点类型包括记账服 务节点和普通节点,记账服务节点提供区块链记账服务,普通节点委托记账服务节点代理 其全部记账权;共识过程包括以下步骤:
(1-1)当前记账服务节点搜索当前时间段内的全网未确认交易,并增加一个用于发行 新的虚拟币奖励的交易和代理记账的服务费交易,形成当前区块体的交易集合;
(1-2)当前记账服务节点判断是否满足记账条件,如果不满足,则回到步骤(1-1);否 则,进入下一步;
(1-3)计算当前区块,将创建好的区块广播全网验证,采用当前区块的区块头参数计算 出至少一个参数,根据所述至少一个参数确定获得下一个区块记账权的节点;
(1-4)其他节点对当前区块的记账服务节点的合法性、当前区块的正确性、所述获得下 一个区块记账权节点的合法性进行验证;如果记账服务节点的合法性、区块的正确性、获得 下一个区块记账权节点的合法性不能全部通过验证,则,回到步骤(1-3),所述获得当前记 账权的节点对所述区块进行修正并重新广播全网验证;在记账服务节点的合法性、区块的 正确性、获得下一个区块记账权节点的合法性全部通过验证后,把所述区块附加到区块链 上,进入下一步;
(1-5)所述获得记账权的节点在限定的时间内在网络中广播其已获得下一个区块记账 权的签名文件和委托一个记账服务节点代理其记账权的签名文件;获得代理记账权的记账 服务节点在网络中广播其已获得下一个区块的代理记账权的签名文件;并开启下一个区块 的计算。
2.根据权利要求1所述的方法,其特征在于,所述记账服务节点是满足一定信用条件的 节点,记账服务节点根据与普通节点之间签署的智能合约提供代理记账服务。
10.根据权利要求2所述的方法,其特征在于,所述信用条件包括:拥有数字证书、具有 提供全节点存储和服务的基础设施。
3.根据权利要求1所述的方法,其特征在于,所述记账条件包括:当前区块体的交易集 合中全部交易的手续费达到某个阈值和形成当前区块的限定时间到限。
4.根据权利要求1所述的方法,其特征在于,所述区块头参数包括:版本号、上一个区块 Hash值、当前区块状态树根Hash值和当前区块时间戳。
5.根据权利要求1所述的方法,其特征在于,步骤(1-3)确定获得下一个区块记账权的 节点的方法包括:(5-1)采用当前区块的区块头参数计算出一个区块编号和一个参与交易 的节点编号,所述区块编号所对应区块中记录的具有所述节点编号的交易节点获得下一个 区块的记账权; (5-2)采用当前区块的区块头参数和一个外部参数计算出一个区块编号和 一个参与交易的节点编号,所述区块编号所对应区块中记录的具有所述节点编号的交易节 点获得下一个区块的记账权。
6. 根据权利要求5所述的方法,其特征在于,根据当前区块的区块头参数确定一个区 块编号的方法包括:对已确认全部区块按顺序进行编号(假定区块链中共有B_N个区块,则 从0开始编号到B_(N-1)),采用当前区块状态树根Hash值(记为ST_Hash)和当前区块时间戳 的Hash值(记为TS_Hash)作为算法的参数计算出一个不大于已确认全部区块数量的区块编 号编码;其中,所述算法包括:对ST_Hash与TS_Hash的异或运算结果进行模B_N运算和对ST_ Hash与TS_Hash的异或运算结果的Hash值进行模B_N运算,即,(ST_Hash⊕TS_Hash)mod B_N (其中,mod表示模运算)和 [(ST_Hash⊕TS_Hash)_Hash] mod B_N。
7.根据权利要求5所述的方法,其特征在于,根据当前区块的区块头参数确定一个参与 交易的节点编号的方法包括:对一个区块中的全部交易的参与节点按顺序进行编号(假定 区块中记录交易的全部参与节点数量为P_N个,按交易的先后顺序对相应参与节点从0开始 编号到P_(N-1)),采用上一个区块Hash值(记为Pre_Hash)、当前区块Hash值(记为Cur_ Hash)和当前区块时间戳的Hash值(记为TS_Hash)作为算法的参数计算出一个不大于N的节 点编号;其中,所述算法包括:对Pre_Hash、Cur_Hash与TS_Hash的异或运算结果进行模B_N 运算和对Pre_Hash、Cur_Hash与TS_Hash的异或运算结果的Hash值进行模B_N运算,即, (Pre_Hash⊕Cur_Hash⊕TS_Hash)mod P_N和[(Pre_Hash⊕Cur_Hash⊕TS_Hash)_Hash] mod P_N。
9.根据权利要求5所述的方法,其特征在于,所述外部参数包括:由节点投票决定的时 间戳的Hash值和由节点投票决定的某个与已确定区块相关参数的Hash值。
8.根据权利要求1所述的方法,其特征在于,所述获得记账权的节点在限定的时间内在 网络中广播其已获得下一个区块记账权的签名文件和委托某个记账服务节点代理记账的 签名文件;或者,一个记账服务节点广播其代理所述获得记账权的节点的记账权的签名文 件。
一种采用代理记账的区块链共识方法
技术领域
本发明涉及区块链技术,尤其涉及一种采用代理记账的区块链共识方法。
背景技术
区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数 据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。区块链的一个核心技 术是共识机制,就是所有记账节点之间达成共识、认定一个记录有效性的方法。目前,典型 的区块链共识机制主要包括工作量证明(POW)、权益证明(POS)、代理权益证明(DPOS)和实 用拜占庭容错(PBFT)。POW依赖机器进行数学运算来获取记账权,资源消耗量非常大、可监 管性弱、性能效率比较低、发币公平性差(每一个节点获得发币权的概率不一样)。POS主要 思想是节点记账权的获得难度与节点持有的权益成反比,依然是基于哈希运算竞争获取记 账权的方式,还是需要挖矿(每一个节点获得发币权的概率不一样),可监管性弱。DPOS与 POS原理相同,只是选了一些“人大代表”,其效率、资源消耗和公平性与PoS相似。在PBFT中, 当有1/3或以上记账人停止工作后,系统将无法提供服务;当有1/3或以上记账人联合作恶, 且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但 是会留下密码学证据。
因此,目前出现的公有区块链共识机制还不能很好地解决毫无意义的能源浪费 (即挖矿能耗)问题、公平性和记账效率问题。设计公平的(每一个节点获得发币权的概率相 同)、低能耗的(不用依赖算力进行挖矿)和高效率的(不会分叉)区块链共识机制,对区块链 的规模商用推广具有非常重要的价值。
发明内容
为了解决目前的区块链共识机制存在的能源浪费、不公平和记账效率低等问题, 本发明提供了一种采用代理记账的区块链共识方法,其特征在于,区块链的节点类型包括 记账服务节点和普通节点,记账服务节点提供区块链记账服务,普通节点委托记账服务节 点代理其全部记账权;记账服务节点和普通节点具有相同的概率获得下一个区块的记账 权;共识过程包括以下步骤:
(1-1)当前记账服务节点搜索当前时间段内的全网未确认交易,并增加一个用于发行 新的虚拟币奖励的交易和代理记账的服务费交易(比如记账服务节点发行50个虚拟币,同 时增加一个把48个虚拟币转给获得记账权节点的交易,2个虚拟币作为手续费),形成当前 区块体的交易集合;
(1-2)当前记账服务节点判断是否满足记账条件,如果不满足,则回到步骤(1-1);否 则,进入下一步;
(1-3)计算当前区块,将创建好的区块广播全网验证;采用当前区块的区块头参数计算 出至少一个参数,根据所述至少一个参数确定获得下一个区块记账权的节点;
(1-4)其他节点对当前区块的记账服务节点的合法性、当前区块的正确性、所述获得下 一个区块记账权节点的合法性进行验证;如果记账服务节点的合法性、区块的正确性、获得 下一个区块记账权节点的合法性不能全部通过验证(修正方法包括但不限于重新计算区块 和更正不能通过校验的数据),则,回到步骤(1-3),所述获得当前记账权的节点对所述区块 进行修正并重新广播全网验证;在记账服务节点的合法性、区块的正确性、获得下一个区块 记账权节点的合法性全部通过验证后,把所述区块附加到区块链上,进入下一步;
(1-5)所述获得记账权的节点在限定的时间内在网络中广播其已获得下一个区块记账 权的签名文件和委托一个记账服务节点代理其记账权的签名文件;获得代理记账权的记账 服务节点在网络中广播其已获得下一个区块的代理记账权的签名文件;并开启下一个区块 的计算。
优选的,步骤(1-3)确定获得下一个区块记账权的节点的方法包括但不限于:采用 当前区块的区块头参数计算出一个区块编号和一个参与交易的节点编号,所述区块编号所 对应区块中记录的具有所述节点编号的交易节点获得下一个区块的记账权;采用当前区块 的区块头参数和一个外部参数(包括但不限于由节点投票决定的时间戳的Hash值、由节点 投票决定的某个与已确定区块相关的参数的Hash值)计算出一个区块编号和一个参与交易 的节点编号,所述区块编号所对应区块中记录的具有所述节点编号的交易节点获得下一个 区块的记账权。。
优选的,所述记账服务节点是满足一定信用条件的节点(所述信用条件包括但不 限于:拥有数字证书、具有提供全节点存储和服务的基础设施),记账服务节点根据与普通 节点之间签署的智能合约提供代理记账服务。
优选的,所述记账条件包括但不限于:当前区块体的交易集合中全部交易的手续 费达到某个阈值,或者形成当前区块的限定时间到限(即一次记账的总手续费不能高于某 个阈值,不能超时等待)。
优选的,所述区块头参数包括但不限于:版本号、上一个区块Hash值、当前区块状 态树根Hash值、当前区块时间戳,可选的,还包括当前区块记账服务节点的公钥和签名。
优选的,根据当前区块的区块头参数确定一个区块编号的方法包括但不限于:对 已确认全部区块按顺序进行编号(假定区块链中共有B_N个区块,则从0开始编号到B_(N- 1)),采用当前区块状态树根Hash值(记为ST_Hash)和当前区块时间戳的Hash值(记为TS_ Hash)作为算法的参数计算出一个不大于已确认全部区块数量的区块编号编码;其中,所述 算法包括:对ST_Hash与TS_Hash的异或运算结果进行模B_N运算,对ST_Hash与TS_Hash的异 或运算结果的Hash值进行模B_N运算,即,(ST_Hash⊕TS_Hash)mod B_N(其中,mod表示模运 算),[(ST_Hash⊕TS_Hash)_Hash] mod B_N;
如果采用外部参数OP,则计算(OP⊕ST_Hash⊕TS_Hash)mod B_N。
优选的,根据当前区块的区块头参数确定一个参与交易的节点编号的方法包括但 不限于:对一个区块中的全部交易的参与节点按顺序进行编号(假定区块中记录交易的全 部参与节点数量为P_N个,按交易的先后顺序对相应参与节点从0开始编号到P_(N-1)),采 用上一个区块Hash值(记为Pre_Hash)、当前区块Hash值(记为Cur_Hash)和当前区块时间戳 的Hash值(记为TS_Hash)作为算法的参数计算出一个不大于N的节点编号;其中,所述算法 包括:对Pre_Hash、Cur_Hash与TS_Hash的异或运算结果进行模B_N运算,对Pre_Hash、Cur_ Hash与TS_Hash的异或运算结果的Hash值进行模B_N运算,即,(Pre_Hash⊕Cur_Hash⊕TS_ Hash)mod P_N,[(Pre_Hash⊕Cur_Hash⊕TS_Hash)_Hash] mod P_N;
如果采用外部参数OP,则计算(OP⊕Pre_Hash⊕Cur_Hash⊕TS_Hash)mod P_N,[(OP⊕ Pre_Hash⊕Cur_Hash⊕TS_Hash)_Hash] mod P_N。
优选的,获得记账权的节点在限定的时间内在网络中广播其已获得下一个区块记 账权的签名文件和委托某个记账服务节点代理记账的签名文件;或者,一个记账服务节点 广播其代理所述获得记账权的节点的记账权的签名文件。
以上所述交易包括但不限于:各种区块链token或虚拟币的所有权变更、带时间戳 的事件(包括各种活动、协议和契约)记录。
与现有技术相比,本发明的一种采用代理记账的区块链共识方法具有以下显著创 新性:
(1)本发明基于当前区块的区块头参数直接计算出获得下一个区块记账权的节点,由 于Hash运算的扩散性和不可逆性,区块头参数中的一个比特的差异将导致完全不同的Hash 值,因此,不可能设计一个区块头参数并使其Hash值等于某个事先确定的值,类似于随机公 平“抽奖”,不需要浪费能源挖矿;具有更高的共识效率,可以适用于更广泛的应用场景;
(2)记账权全部归具有一定信用担保的记账服务节点代理,记账效率和安全性更高,可 避免区块链分叉;
(3)每一个节点为了能够以较高的概率就需要有较多的交易记录,为了验证是否已“中 奖”,需要保存有关联交易的区块,因此能够有效激励各个节点参与交易和区块的存储,因 此,本发明方法更公平、更高效,即克服了比特币等缺点,又保留了区块链的去中心化和安 全性;本发明方法在区块链的规模商用领域具有良好的应用前景。
附图说明
图1为本发明实施例的共识方法示意图;
图2为本发明实施例的区块头参数;
图3为本发明应用的示意图。
为使本发明的技术方案及优点更加清楚,作为本发明的一部分,以下结合附图及 具体实施例,对本发明作进一步详细的说明。
在实际应用系统中,由于记服务账节点的网络故障、宕机等因素,可能存在记账服 务节点不能及时提交新区块的情况,因此,为了不影响区块链的正常运行,还需要考虑新的 策略(比如,获得下一个区块记账权的节点同时委托多个记账服务节点并签署智能合约,智 能合约根据相应的记账条件接受记账服务节点提交的新区块;或者,记账服务节点之间进 行交叉委托代理权,以实现多个记账服务节点同时创建新区块)以应对可能存在的某个记 账服务节点不能及时提交新区块的情况,本发明对此不进行限定。
本发明中使用的Hash函数包括目前已公开使用的Hash算法(比如MD5、SHA_1、SHA_ 256等)和未来的抗量子计算的Hash算法,本发明不对具体Hash函数和所采用Hash函数的数 量进行限定,实际应用中可以根据应用系统需求采用一个或多个Hash函数。
实施例如图1所示,一种采用代理记账的区块链共识方法包括以下步骤:
步骤101:获得当前记账权的节点搜索当前时间段内的全网未确认交易,并增加一个用 于发行新虚拟币奖励的交易(比如,记账服务节点发行50个虚拟币,同时增加一个把48个虚 拟币转给获得记账权节点的交易,2个虚拟币作为手续费),形成当前区块体的交易集合;
步骤102:当前记账服务节点判断是否满足记账条件(此处,优选当前区块体的交易集 合中全部交易的手续费达到某个阈值,或者形成当前区块的限定时间到限;由于记账条件 因区块链系统的应用环境不同而变化,本发明还包括其它未提及的记账条件,比如,根据交 易的重要程度,交易集合中的交易的数量最小值和最大值等),如果不满足记账条件,则回 到步骤(101);否则,进入下一步;
步骤103:计算当前区块,采用当前区块的区块头参数计算出一个区块编号和一个节点 编号(显然,根据当前区块的区块头参数计算出一个区块编号和一个节点编号的方法有很 多,在实施例中,只给出一个优选方法,在优选方法的基础上进行改造的方法也属于本发明 的保护范围),根据所述区块编号和节点编号确定获得下一个区块记账权的节点;将创建好 的区块广播全网验证;其中,根据当前区块的区块头参数确定一个区块编号的方法为:对已 确认全部区块按顺序进行编号(假定区块链中共有B_N个区块,则从0开始编号到B_(N-1)), 采用当前区块状态树根Hash值(记为ST_Hash)和当前区块时间戳的Hash值(记为TS_Hash) 作为算法A(此处,算法A只是一个算法的标识)的参数计算出一个不大于已确认全部区块数 量的区块编号编码;其中,算法A采用:直接计算(ST_Hash⊕TS_Hash)mod B_N(其中,mod表 示模运算);根据当前区块的区块头参数确定一个参与交易的节点编号的方法为:对一个区 块中的全部交易的参与节点按顺序进行编号(假定区块中记录交易的全部参与节点数量为 P_N个,按区块中所记录交易的先后顺序对相应参与节点从0开始编号到P_(N-1)),采用上 一个区块Hash值(记为Pre_Hash)、当前区块Hash值(记为Cur_Hash)和当前区块时间戳的 Hash值(记为TS_Hash)作为算法B的参数计算出一个不大于N的节点编号;其中,算法B采用: (Pre_Hash⊕Cur_Hash⊕TS_Hash)mod P_N(其中,mod表示模运算);
步骤104:其他节点对当前区块记账服务节点的合法性、当前区块的正确性、获得下一 个区块记账权节点的合法性进行验证;如果记账服务节点的合法性、区块的正确性、获得下 一个区块记账权节点的合法性不能全部通过验证,则所述获得当前记账权的节点对所述区 块进行修正区块并重新广播全网验证;
步骤105:在记账服务节点的合法性、区块的正确性、获得下一个区块记账权节点的合 法性全部通过验证后(比如已通过多个节点校验并签名确认)把所述区块附加到区块链上; 获得记账权的节点在限定的时间内在网络中广播其已获得下一个区块记账权的签名文件 和委托一个记账服务节点代理其记账权的签名文件;获得代理记账权的记账服务节点在网 络中广播其已获得下一个区块的代理记账权的签名文件;并开启下一个区块的计算。
其中,区块头参数如图2所示,包括版本号(比如,采用4字节的区块头的版本号)、 上一个区块Hash值(比如,SHA256)、当前区块状态树根Hash值(比如,Merkle树的根值)、当 前区块时间戳(比如,UNIX时间戳)、当前区块记账服务节点的公钥和签名和获得下一个区 块记账权的节点公钥;另外,根据区块链的具体应用需求,可以对区块头参数内容进行修改 和补充。
本发明应用的方法如图3所示,根据当前区块头计算出编号为X的区块中编号为Y 的节点获得下一个区块的记账权(图3中的过程301),然后节点Y把该次记账权通过智能合 约代理给记账服务节点1(图3中的过程302),记账服务节点1获得下一个区块的记账代理 权,并开始创建下一个区块(图3中的过程303)。
以上所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本 发明中实施例的各种变形和组合可以得到更多的实施例,本领域普通技术人员在未做出创 造性劳动前提下所获得的其他直接采用本发明方法的实施例,都属于本发明保护的范围。
本文发布于:2023-04-01 20:33:05,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/1/85907.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |