一种区块链共识机制技术领域
本发明涉及区块链技术领域,具体地说是一种区块链共识机制。
背景技术
区块链通俗地说就是一个公开的分布式账簿系统。以比特币的区块链为例,每一
个参与交易者都是区块网络的节点,每个节点都有一份完整的公共账簿备份,上面记载着
自比特币诞生以来所有的交易信息。任何一个节点发起交易行为都需要将相关信息传递到
区块网络中的每一个节点,从而所有节点上的账簿都能验证这一笔交易行为并准确更新。
此外,账簿是分区块存储的,随着交易的增加,新的数据块会附加到已存在的链上,形成链
状结构。拓展开来,区块链能验证、转移和记载任何可以通过一致数学算法转化成数据的事
实。其中交易封装成区块及区块加载到主链上,即记账权分配,是需要共识机制的方式完
成。目前通常采用的区块链共识机制包括工作量证明、权益证明等方式。其中工作量证明,
就是大家熟悉的挖矿,通过枚举与哈希运算,计算出一个满足规则的随机数,即获得本次记
账权,发出本轮需要记录的数据,全网其它节点验证后一起存储。工作量证明方式的共识机
制优点是完全去中心化,节点自由进出。缺点是目前比特币已经吸引全球大部分的算力,其
它再用Pow共识机制的区块链应用很难获得相同的算力来保障自身的安全;挖矿造成大量
的资源浪费;共识达成的周期较长,不适合商业应用。
权益证明是目前常用的记账权分配方法,其核心实现如下:记账节点在产生新的
区块时,将自己的地址附在区块中,以证明其占有的权益比例,记账节点同时也需要用该地
址对应的私钥对部分区块信息签名,以证明其确实拥有该地址的资产。权益证明的出发点
是,如果一个人在系统中占有的权益越多,那么他就越倾向于积极地维护这个系统的正常
运行,理应更容易的获得记账权。因此长久看来,一个用户期望的记账比例,应当与其所占
权益比例相等。然而,目前的权益证明方式均无法抵御算力攻击,即一个权益较少的用户,
可通过投入大量的算力,获得远高于其权益比例的记账权。
发明内容
本发明的目的是针对区块链权益证明共识机制现有技术的缺点,提出一种区块链
共识机制,具体如下:当一个新区块产生时,检测产生所述新区块的地址的平均权益比例和
记账比例,如果所述记账比例高于平均权益比例,则所述新区块被认为无效。
优选的是,所述平均权益比例与记账比例的比值小于阈值α时,所述新区块被认为
无效。
优选的是,所述平均权益比例A计算方法如下:
其中,n为选取产生所述新区块的地址过去一段时间内产生的区块个数;Pi为选取
的过去区块中第i个区块上该地址的权益比例。
优选的是,所述记账比例B计算方法如下:
其中,N为选取过去一段时间内所有地址产生的全部区块个数;b为选取的过去一
段时间内产生所述新区块的地址产生的区块个数。
优选的是,所述阈值α的确定方法如下:
其中,t0为标准出块间隔时间,m为标准冗余度,t为新区块之前两个区块的出块时
间间隔。
本发明有益效果如下:
1.解决了权益证明中存在的算力攻击问题。
2.自动调整记账冗余度,提高了出块的均匀性。
附图说明
图1是实施例1中根据本发明的一种区块链共识机制流程图。
图2是实施例2中根据本发明的一种区块链共识机制流程图。
具体实施方式
下面结合附图对本发明作进一步详细描述,有必要在此指出的是,以下具体实施
方式只用于对本发明进行进一步的说明,不能理解为对本发明保护范围的限制,该领域的
技术人员可以根据上述发明内容对本发明作出一些非本质的改进和调整。
本发明提出的一种区块链共识机制,是对权益证明共识机制的一种改进,解决了
权益证明中存在的算力攻击问题。
实施例1
本发明提出的一种区块链共识机制,如图1所示,具体如下:
步骤一、新的区块产生时,验证区块的有效性。
验证区块的有效性指现有权益证明共识机制通常采用的区块验证方法。比如验证
区块哈希是否有效,验证区块内每一笔交易是否有效,验证区块指向的前一个区块是否有
效,验证前一个区块是否处于有效活动的区块链上,验证区块的哈希是否小于目标难度除
以消耗的币龄,使用币龄消耗地址的公钥验证签名是否正确等。如果经过上述各个参数验
证通过,则确定新区块有效,新区块有效后进行检测新的区块有效性。
步骤二、检测新的区块有效性。
检测产生所述新区块的地址的平均权益比例和记账比例,如果所述记账比例高于
平均权益比例,则所述新区块被认为无效,否则将所述新区块向区块链全网广播。
所述记账比例与平均权益比例的比值大于阈值α时,所述新区块被认为无效,否则
将所述新区块向区块链全网广播。
所述平均权益比例A计算方法如下:
其中,n为选取产生所述新区块的地址过去一段时间内产生的区块个数;Pi为选取
的过去区块中第i个区块上该地址的权益比例。
所述记账比例B计算方法如下:
其中,N为选取过去一段时间内所有地址产生的全部区块个数;b为选取的过去一
段时间内产生所述新区块的地址产生的区块个数。
所述阈值α的确定方法如下:
其中,t0为标准出块间隔时间,m为标准冗余度,t为新区块之前两个区块的出块时
间间隔。所述标准冗余度为一个指定的不小于1的系统参数,标准冗余度越大,系统的鲁棒
性越好,但也越容易收到攻击。如在过去一段时间内,一个拥有20%权益的节点,最多允许
打包全网30%的区块,则冗余度为150%。
实施例2
本发明提出的一种区块链共识机制,如图2所示,具体如下:
步骤一、新的区块产生时,检测新的区块有效性。
检测产生所述新区块的地址的平均权益比例和记账比例,如果所述记账比例高于
平均权益比例,则所述新区块被认为无效。
所述记账比例与平均权益比例的比值大于阈值α时,所述新区块被认为无效。
所述平均权益比例A计算方法如下:
其中,n为选取产生所述新区块的地址过去一段时间内产生的区块个数;Pi为选取
的过去区块中第i个区块上该地址的权益比例。比如,对于产生新区快的地址在过去产生的
10个区块中,权益分别占比为10%,10%,10%,10%,10%,20%,20%,20%,20%,20%,则
该地址的对于过去10个区块的平均区块占比为15%。
所述记账比例B计算方法如下:
其中,N为选取过去一段时间内所有地址产生的全部区块个数;b为选取的过去一
段时间内产生所述新区块的地址产生的区块个数。
所述阈值α的确定方法如下:
其中,t0为标准出块间隔时间,m为标准冗余度,t为新区块之前两个区块的出块时
间间隔。所述标准冗余度为一个指定的不小于1的系统参数,标准冗余度越大,系统的鲁棒
性越好,但也越容易受到攻击。比如在过去一段时间内,一个拥有20%权益的节点,最多允
许打包全网30%的区块,则冗余度为150%。
步骤二、检测新区块有效后,验证新区块的有效性。
验证区块的有效性指现有权益证明共识机制通常采用的区块验证方法。比如验证
区块哈希是否有效,验证区块内每一笔交易是否有效,验证区块指向的前一个区块是否有
效,验证前一个区块是否处于有效活动的区块链上,验证区块的哈希是否小于目标难度除
以消耗的币龄,使用币龄消耗地址的公钥验证签名是否正确等。
步骤三、验证通过后,将所述新区块向区块链全网广播。