一种基于区块链的信誉方法和系统与流程

文档序号:12278642阅读:1430来源:国知局

本发明涉及区块链领域,特别涉及一种基于区块链的信誉方法和系统。



背景技术:

在多节点自治的系统中,系统通常要防止出错节点和作弊的节点,比如被黑客攻击的情况。在传统的拜占庭解决方案中,只是为了在各个不受信的节点中达成公识,没有涉及到叛徒和出错节点的寻找。所以本发明就是在传统的拜占庭将军问题的解决方案上增加了信誉机制。信誉系统在许多在线系统(如网银和电商系统)中有重要应用,然而在拜占庭将军问题的解决方案引入信誉机制用于识别内部叛徒及出错节点是本发明的贡献。相关内容可参见文献M.Castro,B.Liskov,Practical byzantine fault tolerance and proactive recovery[J].ACM Transactions on Computer Systems,2002。Ferry Hendrikx,Kris Bubendorfer,Ryan Chard,Reputation systems:A survey and taxonomy[J].Journal of Parallel Distributed Computing,2015.Pp.184-197.



技术实现要素:

本发明就是在传统的拜占庭将军问题的解决方案上增加了信誉系统,给各个节点增加信誉分数,这样在节点出错时会相应的减少其信誉值,作弊也会有更严格的惩罚,在多节点自治的系统中,找出出错节点和作弊的节点,比如被黑客攻击的情况,当信誉分数低于某阈值,这些出错节点和作弊的节点将被从系统中剔除在外;等到这些节点回复正常,可再重回系统中。这样使得整个系统的运行更加可靠。

有鉴于此,本发明设计了一种区块链中的信誉方法和系统。

一种区块链中的信誉方法,包括N个节点,其特征在于还包括以下步骤:

(1)各节点分别对自己收到的区块进行验证;

(2)将验证后的投票数据使用自己的私钥进行加密后广播给其他所有的节点;

(3)各个节点收取其他节点的投票数据,使用其对应的公钥进行解密,验证数据的正确性;

(4)待步骤(3)中收取完其他所有节点的投票数据后,将本次收取的其他所有节点的投票数据经自己的私钥签名后再次广播给其他所有节点;

(5)各个节点收取步骤(4)中各个节点所转发的投票数据,并用其对应的公钥进行解密,验证数据的正确性;

(6)各个节点汇总步骤(5)中收到的投票数总,计算其中出错的节点和作弊的节点,并更改各节点的信誉值。

优选的,初始时,各个节点的信誉值(Reputation)为Ri(t)=0.01,i=1…N,t为当前区块的建块轮次,只更新Ri(t)>0的节点,Ri(t)为0的节点被标识成作弊的节点被剔除在外。

优选的,如果节点i发送不一致的数据给不同的节点,信誉值直接降为0:Ri(t)=0。

优选的,如果节点i给其他节点的投票数据是一致的,但和大多数的节点不一样,即该节点i不同意大多数节点,则降低该节点i的信誉值:Ri(t)=XRi(t-1),其中0<X<1。

优选的,如果某节点给其他节点的投票数据是一致的,但只发送投票疏忽给了一部分节点,即节点i丢失消息,则降低信誉值:Ri(t)=Y*Ri(t-1)/m,其中0<X<Y<1,m>=1,m为连续发生错误的轮数。

优选的,如果节点i给其他节点的投票数据是一致的,且和大多数节点的投票是一致的,即该节点i同意大多数的节点,增加其信誉值:Ri(t)=(1-Z)*Ri(t-1)+n/(n+1)*Z,其中n>=1,为连续正确的轮数;0<Z<1,Z大时,节点信誉值增加的快,Z小时增加缓慢;

优选的,当节点i信誉值降为0时失去投票的权利,进行离线处理,使该节点i恢复正常状态并重新进入系统参加投票。

一种区块链中的信誉系统,包括N个节点,其特征在于该系统的各个节点执行以下步骤:

(1)各节点分别对自己收到的区块进行验证;

(2)将验证后的投票数据使用自己的私钥进行加密后广播给其他所有的节点;

(3)各个节点收取其他节点的投票数据,使用其对应的公钥进行解密,验证数据的正确性;

(4)待步骤(3)中收取完其他所有节点的投票数据后,将本次收取的其他所有节点的投票数据经自己的私钥签名后再次广播给其他所有节点;

(5)各个节点收取步骤(4)中各个节点所转发的投票数据,并用其对应的公钥进行解密,验证数据的正确性;

(6)各个节点汇总步骤(5)中收到的投票数总,计算其中出错的节点和作弊的节点,并更改各节点的信誉值。

优选的,初始时,各个节点的信誉值(Reputation)为Ri(t)=0.01,i=1…N,t为为当前区块的建块轮次,只更新Ri(t)>0的节点,Ri(t)为0的节点被标识成作弊的节点被剔除在外。

优选的,如果节点i发送不一致的数据给不同的节点,信誉值直接降为0:Ri(t)=0。

优选的,如果节点i给其他节点的投票数据是一致的,但和大多数的节点不一样,即该节点i不同意大多数节点,则降低该节点i的信誉值:Ri(t)=XRi(t-1),其中0<X<1。

优选的,如果某节点给其他节点的投票数据是一致的,但只发送投票疏忽给了一部分节点,即节点i丢失消息,则降低信誉值:Ri(t)=Y*Ri(t-1)/m,其中0<X<Y<1,m>=1,m为连续发生错误的轮数。

优选的,如果节点i给其他节点的投票数据是一致的,且和大多数节点的投票是一致的,即该节点i同意大多数的节点,增加其信誉值:Ri(t)=(1-Z)*Ri(t-1)+n/(n+1)*Z,其中n>=1,为连续正确的轮数;0<Z<1,Z大时,节点信誉值增加的快,Z小时增加缓慢;

优选的,当节点i信誉值降为0时失去投票的权利,进行离线处理,使该节点i恢复正常状态并重新进入系统参加投票。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要的附图做简单的介绍,显而易见地,下面描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明的基于区块链的信誉方法。

具体实施方式

参见图1,一种基于区块链的信誉方法和系统,该系统包括N个节点,通过信誉方法,各节点会维护一份其他节点的信誉值。

系统的各个节点在于每轮建块时都进行投票结果的广播-验证-再广播-再验证-汇总并更新信誉值。各个节点执行以下步骤:

(1)各节点分别对自己收到的区块进行验证;

(2)将验证后的投票数据使用自己的私钥进行加密后广播给其他所有的节点;

(3)各个节点收取其他节点的投票数据,使用其对应的公钥进行解密,验证数据的正确性;

(4)待步骤(3)中收取完其他所有节点的投票数据后,将本次收取的其他所有节点的投票数据经自己的私钥签名后再次广播给其他所有节点;

(5)各个节点收取步骤(4)中各个节点所转发的投票数据,并用其对应的公钥进行解密,验证数据的正确性;

(6)各个节点汇总步骤(5)中收到的投票数总,计算其中出错的节点和作弊的节点,并更改各节点的信誉值。

具体的信誉值计算方法如下:

初始时,各个节点的信誉(Reputation)值为Ri(t)=0.01,i=1…N,t为当前区块的建块轮次。而且信誉方法只更新Ri(t)>0的节点,Ri(t)为0的节点被标识成作弊的节点并剔除在外。

降低信誉:

(1)如果节点i发送不一致的数据给不同的节点,信誉值直接降为0:Ri(t)=0;

(2)如果节点i给其他节点的投票数据是一致的,但和大多数的节点不一样,即该节点i不同意大多数节点,则降低该节点i的信誉值:Ri(t)=XRi(t-1),其中0<X<1。

(3)如果某节点给其他节点的投票数据是一致的,但只发送投票数据给了一部分节点,即节点i丢失消息,则降低信誉值:Ri(t)=Y*Ri(t-1)/m,其中0<X<Y<1,m>=1,m为连续发生错误的轮数。

增加信誉:

(1)如果节点i给其他节点的投票数据是一致的,且和大多数节点的投票是一致的,即该节点i同意大多数的节点,增加其信誉值:Ri(t)=(1-Z)*Ri(t-1)+n/(n+1)*Z,其中n>=1,为连续正确的轮数;0<Z<1,Z大时,节点信誉值增加的快,Z小时增加缓慢;

(2)当节点i信誉值降为0时失去投票的权利,进行离线处理,清除影响,使该节点i恢复正常状态并重新进入系统参加投票。

实施例:

假设区块链系统中有4个节点,分别为A节点、B节点、C节点、D节点,当采用本发明的方法处理时,第一轮的投票情况如下,

A节点:将A节点的带数字签名的投票数据a分别发送给B节点、C节点和D节点;

B节点:将B节点的带数字签名的投票数据b分别发送给A节点、C节点和D节点;

C节点:将C节点的带数字签名的投票数据c分别发送给A节点、B节点和D节点;

D节点:将D节点的带数字签名的投票数据d分别发送给A节点、B节点和C节点。

在第一轮投票信息交换结束后,4个节点分别获得a、b、c、d的数据。由于在数据发送过程中可能发生故障,某节点可能给不同节点发送不一样的数据,使得每个节点得到的a、b、c、d的数据不一致,因此需要进行第二轮投票。

在进行第二轮投票时,各节点转发数据a、b、c、d,具体情况如下:

A节点:将数据a、b、c、d组合在一起形成一维数组,并加上自己的数字签名,分别发送给B节点、C节点和D节点;

B节点:将数据a、b、c、d组合在一起形成一维数组,并加上自己的数字签名,分别发送给A节点、C节点和D节点;

C节点:将数据a、b、c、d组合在一起形成一维数组,并加上自己的数字签名,分别发送给A节点、C节点和D节点;

D节点:将数据a、b、c、d组合在一起形成一维数组,并加上自己的数字签名,分别发送给A节点、C节点和D节点;

4个节点此时已经收到了分别来自其他节点及自己节点的数据a、b、c、d,组成了一个数据a、b、c、d的二维数组,根据此二维数组判断其中出错的节点和作弊的节点,进而相应的增减其信誉。

以上所述,仅是本发明的实例,并非对本发明做任何形式上的限制。任何精于本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出其他种种的改良或修饰为等同变化的等效实例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施所做的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1