CN109493062B - 一种基于信誉权益证明的区块链共识方法 - Google Patents
一种基于信誉权益证明的区块链共识方法 Download PDFInfo
- Publication number
- CN109493062B CN109493062B CN201811631281.5A CN201811631281A CN109493062B CN 109493062 B CN109493062 B CN 109493062B CN 201811631281 A CN201811631281 A CN 201811631281A CN 109493062 B CN109493062 B CN 109493062B
- Authority
- CN
- China
- Prior art keywords
- block
- credit
- user
- blocks
- subsequent
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
Abstract
本发明公开了一种基于信誉权益证明的区块链共识方法,其步骤包括:1生成信誉权益区块链中的区块;2去除所述信誉权益区块链中可能存在的分叉;3更新信誉权益用户的资金余额、信誉值以及活跃度;4动态更新所述综合得分中的参数系数。本发明能在保证区块不易被篡改的情况下减少用户在生成区块时所耗费的资源,使得更多的用户能够生成区块,从而参与共识,同时,还能降低诚实用户被恶意用户攻击的可能性。
Description
技术领域
本发明涉及区块链技术中共识算法的设计,具体的说是一种基于信誉权益证明的区块链 共识算法。
背景技术
区块链本身具有可追溯、不可篡改和去中心化等特性。但是和传统的分布式一致性算 法的分布式系统一样,区块链系统也存在消息延迟、丢失及节点作恶等问题。其去中心化特 性决定了系统中各节点地位相同,相互之间无需信任,这就使得系统中可能存在拜占庭节点 恶意破坏,从而使得最终数据不一致。
为了解决这个问题,专家学者们提出了各种共识方法来确保每一个系统用户都有唯一 确认的公开账本。比如比特币中的PoW工作量证明机制、Peercoin中的PoS股权证明机制、 BitShares中的DPOS共识等。虽然这些共识算法都有其优势,但仍存在各自的局限性。
PoW作为第一个成功应用于公链的共识算法,虽然能够以较大概率保证系统最终达成 一致性,但大量的哈希运算造成了资源浪费。最初中本聪是希望实现一CPU一票,让用户公 平参与。但是随着利益驱动,大量矿池的出现,使得PoW挖矿越来越趋向于多中心化。
PoS共识中每个用户根据自己的权益大小调整挖矿难度,大大减少哈希计算节约能耗。 并为了防止拥有代币较多的用户能够多次生成区块,提出“币龄”的概念。但是这又带来两个 问题:a)对于恶意用户来说,不再需要较多的代币就可以发起攻击,降低了恶意攻击的成本; b)对于诚实用户而言,即使他们长期不在线,仍旧可以积累“币龄”进行挖矿从而获取收益。 这会降低用户参与共识的积极性,从而降低了网络中用户的参与度。
发明内容
本发明为克服上述现有技术存在的问题,提出一种基于信誉权益证明的区块链共识方法, 以期能在保证区块不易被篡改的情况下减少用户在生成区块时所耗费的资源,使得更多的用 户能够生成区块,从而参与共识,同时,还能降低诚实用户被恶意用户攻击的可能性。
本发明为解决问题采用如下技术方案:
本发明一种基于信誉权益证明的区块链共识方法,是应用于由若干个信誉权益用户所组 成的网络环境中,且任一信誉权益用户记为ui;其特点是,所述区块链共识方法是按如下步 骤进行:
步骤一、生成信誉权益区块链中的区块:
步骤1.1、建立所述信誉权益区块链的初始区块;
令所述初始区块的区块头为所述初始区块的账户地址;令所述初始区块的区块主体为 构建所述初始区块的时间及整个区块链的初始资金总额;令所述初始区块的区块尾为所述初 始区块的区块头和区块主体的哈希值;
步骤1.2、所述初始区块为信誉权益用户ui分配初始资金、信誉值和活跃度;
步骤1.3、定义变量n,并初始化n=0;将所述初始区块作为第n个区块;
步骤1.4、所述信誉权益用户ui将部分的初始资金作为押金并发起抵押押金的交易,再 利用式(1)得到信誉权益用户ui的综合得分z(ui):
z(ui)=θ0+θ1bal(ui)+θ2rep(ui)+θ3act(ui) (1)
式(1)中,bal(ui)表示信誉权益用户ui的资金余额;rep(ui)表示信誉权益用户ui的信誉 值;act(ui)表示信誉权益用户ui的活跃度;θ0表示常数系数;θ1是所述信誉权益用户ui的资 金余额的参数系数;θ2是所述信誉权益用户ui的信誉积分的参数系数;θ3所述信誉权益用户ui的活跃度的参数系数;
步骤1.5、利用式(2)得到所述信誉权益用户ui的挖矿难度d(ui):
d(ui)=λ×z(ui)×M/D (2)
式(2)中,λ表示难度调整系数,M表示所设定的最大难度值,D表示定期设置的难度值;
步骤1.6、所述信誉权益用户ui将网络中所有信誉权益用户广播的交易打包到第n+1个 区块中,所述第n+1个区块的区块头包含:第n个区块的哈希值Hn、第n+1个区块的随机数 Rn+1、第n+1个区块的时间戳Tn+1、第n+1个区块定期设置的难度值Dn+1、第n+1个区块高度hn+1、第n+1个区块的难度调整系数λn+1、第n+1个区块的资金余额bal(ui)的默克尔根 bal(ui)_rootn+1、第n+1个区块的信誉值rep(ui)的默克尔根rep(ui)_rootn+1、第n+1个区块的活跃度act(ui)的默克尔根act(ui)_rootn+1以及网络中所有信誉权益用户广播交易的默克尔根 Tx(ui)_rootn+1;
所述第n+1个区块的区块主体包含:网络中所有信誉权益用户广播的交易;
所述第n+1个区块的区块尾包含:所述第n+1个区块的区块头和区块主体的哈希值;
步骤1.7、所述信誉权益用户ui通过不断调整第n+1个区块的随机数Rn+1,使得挖矿条 件成立,从而生成第n+1个区块,并与前第n个区块构成信誉权益区块链;所述挖矿条件为: 所述第n+1个区块的区块头的哈希值小于等于挖矿难度d(ui);
步骤二:去除所述信誉权益区块链中可能存在的分叉,使得所有信誉权益用户对信誉 权益区块链达成共识:
步骤2.1、遍历所述信誉权益区块链,得到所有区块的前驱区块的地址和后继区块的地 址,以及所述信誉权益区块链的区块总数s;
步骤2.2、定义变量j,并初始化j=0;
步骤2.3、判断所述信誉权益区块链中的第j个区块是否存在多个后继区块的地址;若 存在,则将多个后继区块加入到后继区块列表List1中,并执行步骤2.4;否则,将j+1赋值 给j后,返回步骤2.3,直到j=s为止,并执行步骤2.7;
步骤2.4、验证所述后继区块列表List1中后继区块的有效性:
若后继区块中区块头的哈希值满足所述挖矿条件,则将后继区块放入候选后继区块列 表List2中,并执行步骤2.5;否则表明相应后继区块无效,并将相应后继区块从后继区块列 表List1中去除后,验证下一个后继区块,直到后继区块列表List1中无后继区块为止,再执行 步骤2.7;
步骤2.5、验证候选后继区块列表List2中后继区块的区块主体所包含的交易是否合法:
若后继区块的区块主体包含的交易为双花交易,则将相应后继区块的用户视为不诚实 用户,并列入黑名单中,再将相应后继区块从候选后继区块列表List2中去除;再验证下一个 后继区块,直到候选后继区块列表List2中没有区块为止;
若后继区块包含的交易存在转账金额大于用户的资金余额,则将相应后继区块的用户 视为不诚实用户,并列入黑名单中,再将相应后继区块从候选后继区块列表List2中去除;再 验证下一个后继区块,直到候选后继区块列表List2中没有区块为止;
否则,直接执行步骤2.6;所述黑名单中包含:不诚实用户及其对应的不合法交易和后 继区块;
步骤2.6、按照以下规则对后继区块列表中的任意两个后继区块进行判断,并选出主链:
规则一:任意两个后继区块均为有孩子节点的后继区块,则选择分叉链中信誉权益用 户个数多的分叉链作为主链;
规则二:任意两个后继区块均为无孩子节点的后继区块,则选择后继区块中哈希值最 小的区块所在的分叉链作为主链;
规则三:任意两个后继区块中包括有孩子节点的后继区块和无孩子节点的后继区块, 则选择有孩子节点的后继区块所在的分叉链作为主链;
步骤2.7、将s赋值给n后,返回步骤1.4;
步骤三:更新信誉权益用户ui的资金余额、信誉值以及活跃度:
步骤3.1、更新信誉权益用户ui的资金余额:
遍历所述信誉权益区块链,找出所有区块中包含信誉权益用户ui的交易,若是抵押押 金交易,则从信誉权益用户ui的资金余额中扣除押金金额;若是转账交易,则在信誉权益用 户ui的资金余额上扣除转走的资金,加入转入的资金,从而完成信誉权益用户ui的资金余额 的更新;
步骤3.2、更新信誉权益用户ui的信誉值:
遍历所述信誉权益区块链,找出由所述信誉权益用户ui生成的区块,并比对黑名单; 记信誉权益用户ui生成的区块数目为p,若pmodN1=0成立,则清空信誉权益用户ui的信誉 值;若不成立,则查看信誉权益用户ui生成的区块是否被包含在黑名单中,若是,则扣除信 誉权益用户ui的信誉值,否则增加信誉权益用户ui的信誉值;从而完成信誉权益用户ui的信 誉值的更新;其中,N1为所设定的阈值,且N1∈{10,20,30,40,50};
步骤3.3、更新信誉权益用户ui的活跃度:
遍历所述信誉权益区块链,找出由所述信誉权益用户ui生成的区块,记信誉权益用户ui生成的区块数目q为,若qmodN1=0成立,则清空信誉权益用户ui的活跃度,否则增加信誉 权益用户ui的活跃度;从而完成信誉权益用户ui的活跃度的更新;
步骤四:动态更新所述综合得分中的参数系数:
步骤4.1、根据所述黑名单,将信誉权益用户ui生成区块时的行为是否诚实,记做y(ui);
若信誉权益用户ui生成的区块被包含在黑名单中,则认为信誉权益用户ui生成区块时 的行为不诚实,记y(ui)=0,否则表示信誉权益用户ui生成区块时的行为诚实,记y(ui)=1;
步骤4.2、若sn+1modN2=0成立,则所述信誉权益用户ui统计前N2个区块中每个区块生成者的状态信息包括:资金余额、信誉值、活跃度以及每个用户生成区块时的行为是否诚实,从而获得N2组区块生成者的状态信息;其中,N2为所设定的阈值,且N2∈{1024,2048};
步骤4.3、根据所述N2组区块生成者的状态信息,基于Logistic回归算法优化所述综合 得分中的参数系数:
利用式(3)构建信誉权益用户ui的预测判别函数hθ(ui),并将所述N2组区块生成者的状 态信息代入式(3)中,得到N2个hθ(ui)函数值:
步骤4.4、利用式(4)构造表示hθ(ui)函数值与信誉权益用户ui行为诚实与否y(ui)之间偏 差的损失函数Cost(hθ(ui),y(ui)):
步骤4.5、利用式(5)得到N2组损失函数函数值的平均数J(θ):
步骤4.6、利用梯度下降法获得N2组损失函数函数值的平均数J(θ)的最小值,从而得 到更新后的四个参数θ′0,θ′1,θ′2,θ′3并广播给其他用户后,返回步骤1.4。
与现有共识机制相比,本发明的有益效果在于:
1.本发明通过计算用户的综合得分,调整用户挖矿难度,减少了用户在生成区块时所耗 费的资源,并在计算得分时不仅加入了用户的资金余额,还加入了用户的信誉值和活跃度, 使得即使拥有较少资金的用户也有机会生成区块,让更多的用户有机会参与共识,提高了信 誉权益区块链的公平性和稳健性。
2.本发明相比于现有技术中的PoS共识方法,不仅增加了信誉值和活跃度两个因素,还 要求用户在生成区块前,发起一笔抵押押金交易,通过经济激励的手段,促使用户诚实地生 成区块,解决了PoS共识方法中“无利益相关”的问题。
3.本发明利用Logistic回归算法动态更新计算用户综合得分函数的参数系数,使得用户 综合得分的参数系数随着区块的生成动态变化,进一步使得用户的挖矿难度也会相应发生变 化,从而让恶意用户无法快速预测出下一个区块生成者很可能是哪一个用户,增强了信誉权 益区块链的安全性。
附图说明
图1为本发明用户抵押押金交易示意图;
图2为本发明创建区块链的流程图;
图3为本发明区块头示意图;
图4为本发明无孩子节点的后继区块分叉示意图;
图5为本发明既有孩子节点的后继区块也有无孩子节点的后继区块的分叉示意图;
图6为本发明全部都有孩子节点的后继区块分叉示意图。
具体实施方式
如图1所示,本实施例中,一种基于信誉权益证明的区块链共识方法是应用于多个信 誉权益用户参与的网络中,使得用户能够生成真实可信的区块,并将这些区块构成一条信誉 权益区块链。记任一信誉权益用户为ui,该区块链共识方法是按如下步骤进行:
步骤一、生成信誉权益区块链中的区块:
步骤1.1、建立信誉权益区块链的初始区块;
令初始区块的区块头为初始区块的账户地址;令初始区块的区块主体为构建初始区块 的时间及整个区块链的初始资金总额;令初始区块的区块尾为初始区块的区块头和区块主体 的哈希值;
步骤1.2、初始区块为信誉权益用户ui分配初始资金、信誉值和活跃度。假设分配的初 始资金为100,信誉值和活跃度都为0;
步骤1.3、定义变量n,并初始化n=0;将初始区块作为第n个区块;
步骤1.4、信誉权益用户ui将部分的初始资金作为押金,并发起如图2所示的抵押押金 的交易,抵押押金交易包含:交易ID、交易类型、用户地址、押金金额、用户签名、时间戳 以及对交易的描述信息。再利用式(1)得到信誉权益用户ui的综合得分z(ui):
z(ui)=θ0+θ1bal(ui)+θ2rep(ui)+θ3act(ui) (1)
式(1)中,bal(ui)表示信誉权益用户ui的资金余额;rep(ui)表示信誉权益用户ui的信誉 值;act(ui)表示信誉权益用户ui的活跃度;θ0表示常数系数;θ1是信誉权益用户ui的资金余 额的参数系数;θ2是信誉权益用户ui的信誉积分的参数系数;θ3信誉权益用户ui的活跃度的 参数系数;其中θ0∈[-1,0],θ1,θ2,θ3∈[0,1]。此外,为了使得资金余额、信誉值和活跃度之 间有可比较性,故在将这三个评价指标代入式(1)之前,均采用归一化的方法来消除量纲。
步骤1.5、利用式(2)得到信誉权益用户ui的挖矿难度d(ui):
d(ui)=λ×z(ui)×M/D (2)
式(2)中,λ表示难度调整系数,M表示所设定的最大难度值,D表示定期设置的难度值;
步骤1.6、信誉权益用户ui将网络中所有信誉权益用户广播的交易打包到第n+1个区块 中,如图3所示:第n+1个区块的区块头包含:第n个区块的哈希值Hn、第n+1个区块的随机数Rn+1、第n+1个区块的时间戳Tn+1、第n+1个区块定期设置的难度值Dn+1、第n+1个区块 高度hn+1、第n+1个区块的难度调整系数λn+1、第n+1个区块的资金余额bal(ui)的默克尔根 bal(ui)_rootn+1、第n+1个区块的信誉值rep(ui)的默克尔根rep(ui)_rootn+1、第n+1个区块的活跃度act(ui)的默克尔根act(ui)_rootn+1以及网络中所有信誉权益用户广播交易的默克尔根 Tx(ui)_rootn+1;
第n+1个区块的区块主体包含:网络中所有信誉权益用户广播的交易;
第n+1个区块的区块尾包含:第n+1个区块的区块头和区块主体的哈希值;
步骤1.7、信誉权益用户ui通过不断调整第n+1个区块的随机数Rn+1,使得挖矿条件成 立,从而生成第n+1个区块,并与前第n个区块构成信誉权益区块链;挖矿条件为:第n+1个 区块的区块头的哈希值小于等于挖矿难度d(ui);
步骤二:去除信誉权益区块链中可能存在的分叉,使得所有信誉权益用户对信誉权益 区块链达成共识:
步骤2.1、遍历信誉权益区块链,得到所有区块的前驱区块的地址和后继区块的地址, 以及信誉权益区块链的区块总数s;
步骤2.2、定义变量j,并初始化j=0;
步骤2.3、判断信誉权益区块链中的第j个区块是否存在多个后继区块的地址;若存在, 则将多个后继区块加入到后继区块列表List1中,并执行步骤2.4,比如图4、图5和图6所示 的情况;否则,将j+1赋值给j后,返回步骤2.3,直到j=s为止,并执行步骤2.7;
步骤2.4、验证后继区块列表List1中后继区块的有效性:
若后继区块中区块头的哈希值满足挖矿条件,则将后继区块放入候选后继区块列表 List2中,并执行步骤2.5;否则表明相应后继区块无效,并将相应后继区块从后继区块列表 List1中去除后,验证下一个后继区块,直到后继区块列表List1中无后继区块为止,再执行步 骤2.7;
步骤2.5、验证候选后继区块列表List2中后继区块的区块主体所包含的交易是否合法:
若后继区块的区块主体包含的交易为双花交易,则将相应后继区块的用户视为不诚实 用户,并列入黑名单中,再将相应后继区块从候选后继区块列表List2中去除;再验证下一个 后继区块,直到候选后继区块列表List2中没有区块为止;
若后继区块包含的交易存在转账金额大于用户的资金余额,则将相应后继区块的用户 视为不诚实用户,并列入黑名单中,再将相应后继区块从候选后继区块列表List2中去除;再 验证下一个后继区块,直到候选后继区块列表List2中没有区块为止;
否则,直接执行步骤2.6;黑名单中包含:不诚实用户及其对应的不合法交易和后继区 块;
步骤2.6、按照以下规则对后继区块列表中的任意两个后继区块进行判断,并选出主链:
规则一:如图6所示,任意两个后继区块b1、b2均为有孩子节点的后继区块,则选择分叉链中信誉权益用户个数多的分叉链作为主链;从图6中可以看出左边分叉链上的区块均 为用户生成u1,而右边分叉链上的区块为用户u2和用户u3生成,所以右边分叉链上信誉用户 的个数多余左边分叉链,故选择右边分叉链为主链。
规则二:如图4所示,任意两个后继区块均为无孩子节点的后继区块,则计算后继区 块b1区块头的哈希值和后继区块b2区块头的哈希值,选择哈希值最小的后继区块所在的分叉 链作为主链;
规则三:如图5所示,任意两个后继区块中包括有孩子节点的后继区块b1和无孩子节点 的后继区块b2,则根据最长链选择原理,选择有孩子节点的后继区块b1所在的分叉链作为主 链;
步骤2.7、将s赋值给n后,返回步骤1.4;
步骤三:更新信誉权益用户ui的资金余额、信誉值以及活跃度:
步骤3.1、更新信誉权益用户ui的资金余额:
遍历信誉权益区块链,找出所有区块中包含信誉权益用户ui的交易,若是抵押押金交 易,则从信誉权益用户ui的资金余额中扣除押金金额;若是转账交易,则在信誉权益用户ui的 资金余额上扣除转走的资金,加入转入的资金,从而完成信誉权益用户ui的资金余额的更新;
步骤3.2、更新信誉权益用户ui的信誉值:
遍历信誉权益区块链,找出由信誉权益用户ui生成的区块,并比对黑名单;记信誉权 益用户ui生成的区块数目为p,若pmodN1=0成立,则清空信誉权益用户ui的信誉值;若不成立,则查看信誉权益用户ui生成的区块是否被包含在黑名单中,若是,则按照表1所示的指标评分标准扣除信誉权益用户ui的信誉值,否则按照表1所示的指标评分标准增加信誉权 益用户ui的信誉值;从而完成信誉权益用户ui的信誉值的更新;其中,N1为所设定的阈值, 且N1∈{10,20,30,40,50};本实施例中,N1取20;
表1为本发明信誉值和活跃度的评分表
步骤3.3、更新信誉权益用户ui的活跃度:
遍历信誉权益区块链,找出由信誉权益用户ui生成的区块,记信誉权益用户ui生成的 区块数目q为,若qmod20=0成立,则清空信誉权益用户ui的活跃度;若不成立,则查看信誉权益用户ui生成的区块是否被包含在黑名单中。若是,则按照表1所示的指标评分标准中生成无效区块对应的活跃度积分来增加信誉权益用户ui的活跃度;否则照表1所示的指标评 分标准中生成有效区块对应的活跃度积分来增加信誉权益用户ui的活跃度,从而完成信誉权 益用户ui的活跃度的更新;
步骤四:动态更新综合得分中的参数系数:
步骤4.1、根据黑名单,将信誉权益用户ui生成区块时的行为是否诚实,记做y(ui);
若信誉权益用户ui生成的区块被包含在黑名单中,则认为信誉权益用户ui生成区块时 的行为不诚实,记y(ui)=0,否则表示信誉权益用户ui生成区块时的行为诚实,记y(ui)=1;
步骤4.2、若sn+1modN2=0成立,则信誉权益用户ui统计前N2个区块中每个区块生成者的状态信息包括:资金余额、信誉值、活跃度以及每个用户生成区块时的行为是否诚实,从而获得N2组区块生成者的状态信息;本实施例中,N2=1024;
步骤4.3、根据1024组区块生成者的状态信息,基于Logistic回归算法优化综合得分中 的参数系数:
利用式(3)构建信誉权益用户ui的预测判别函数hθ(ui),并将1024组区块生成者的状态 信息代入式(3)中,得到1024个hθ(ui)函数值:
步骤4.4、利用式(4)构造表示hθ(ui)函数值与信誉权益用户ui行为诚实与否y(ui)之间偏 差的损失函数Cost(hθ(ui),y(ui)):
步骤4.5、利用式(5)得到1024组损失函数函数值的平均数J(θ):
步骤4.6、利用梯度下降法获得1024组损失函数函数值的平均数J(θ)的最小值,具体 过程为:首先初始化式(1)中θ0,θ1,θ2,θ3;其次根据式(6)同步更新所有参数θ0,θ1,θ2,θ3,使得 J(θ)不断减小。
式(6)中,α为学习率;d=0,1,2,3;不断地重复更新参数直到式(6)收敛。最后将得到更 新后的四个参数θ′0,θ′1,θ′2,θ′3并广播给其他用户,之后返回步骤1.4开始生成下一个区块。
Claims (1)
1.一种基于信誉权益证明的区块链共识方法,是应用于由若干个信誉权益用户所组成的网络环境中,且任一信誉权益用户记为ui;其特征是,所述区块链共识方法是按如下步骤进行:
步骤一、生成信誉权益区块链中的区块:
步骤1.1、建立所述信誉权益区块链的初始区块;
令所述初始区块的区块头为所述初始区块的账户地址;令所述初始区块的区块主体为构建所述初始区块的时间及整个区块链的初始资金总额;令所述初始区块的区块尾为所述初始区块的区块头和区块主体的哈希值;
步骤1.2、所述初始区块为信誉权益用户ui分配初始资金、信誉值和活跃度;
步骤1.3、定义变量n,并初始化n=0;将所述初始区块作为第n个区块;
步骤1.4、所述信誉权益用户ui将部分的初始资金作为押金并发起抵押押金的交易,再利用式(1)得到信誉权益用户ui的综合得分z(ui):
z(ui)=θ0+θ1bal(ui)+θ2rep(ui)+θ3act(ui) (1)
式(1)中,bal(ui)表示信誉权益用户ui的资金余额;rep(ui)表示信誉权益用户ui的信誉值;act(ui)表示信誉权益用户ui的活跃度;θ0表示常数系数;θ1是所述信誉权益用户ui的资金余额的参数系数;θ2是所述信誉权益用户ui的信誉积分的参数系数;θ3所述信誉权益用户ui的活跃度的参数系数;
步骤1.5、利用式(2)得到所述信誉权益用户ui的挖矿难度d(ui):
d(ui)=λ×z(ui)×M/D (2)
式(2)中,λ表示难度调整系数,M表示所设定的最大难度值,D表示定期设置的难度值;
步骤1.6、所述信誉权益用户ui将网络中所有信誉权益用户广播的交易打包到第n+1个区块中,所述第n+1个区块的区块头包含:第n个区块的哈希值Hn、第n+1个区块的随机数Rn+1、第n+1个区块的时间戳Tn+1、第n+1个区块定期设置的难度值Dn+1、第n+1个区块高度hn+1、第n+1个区块的难度调整系数λn+1、第n+1个区块的资金余额bal(ui)的默克尔根bal(ui)_rootn+1、第n+1个区块的信誉值rep(ui)的默克尔根rep(ui)_rootn+1、第n+1个区块的活跃度act(ui)的默克尔根act(ui)_rootn+1以及网络中所有信誉权益用户广播交易的默克尔根Tx(ui)_rootn+1;
所述第n+1个区块的区块主体包含:网络中所有信誉权益用户广播的交易;
所述第n+1个区块的区块尾包含:所述第n+1个区块的区块头和区块主体的哈希值;
步骤1.7、所述信誉权益用户ui通过不断调整第n+1个区块的随机数Rn+1,使得挖矿条件成立,从而生成第n+1个区块,并与前第n个区块构成信誉权益区块链;所述挖矿条件为:所述第n+1个区块的区块头的哈希值小于等于挖矿难度d(ui);
步骤二:去除所述信誉权益区块链中可能存在的分叉,使得所有信誉权益用户对信誉权益区块链达成共识:
步骤2.1、遍历所述信誉权益区块链,得到所有区块的前驱区块的地址和后继区块的地址,以及所述信誉权益区块链的区块总数s;
步骤2.2、定义变量j,并初始化j=0;
步骤2.3、判断所述信誉权益区块链中的第j个区块是否存在多个后继区块的地址;若存在,则将多个后继区块加入到后继区块列表List1中,并执行步骤2.4;否则,将j+1赋值给j后,返回步骤2.3,直到j=s为止,并执行步骤2.7;
步骤2.4、验证所述后继区块列表List1中后继区块的有效性:
若后继区块中区块头的哈希值满足所述挖矿条件,则将后继区块放入候选后继区块列表List2中,并执行步骤2.5;否则表明相应后继区块无效,并将相应后继区块从后继区块列表List1中去除后,验证下一个后继区块,直到后继区块列表List1中无后继区块为止,再执行步骤2.7;
步骤2.5、验证候选后继区块列表List2中后继区块的区块主体所包含的交易是否合法:
若后继区块的区块主体包含的交易为双花交易,则将相应后继区块的用户视为不诚实用户,并列入黑名单中,再将相应后继区块从候选后继区块列表List2中去除;再验证下一个后继区块,直到候选后继区块列表List2中没有区块为止;
若后继区块包含的交易存在转账金额大于用户的资金余额,则将相应后继区块的用户视为不诚实用户,并列入黑名单中,再将相应后继区块从候选后继区块列表List2中去除;再验证下一个后继区块,直到候选后继区块列表List2中没有区块为止;
否则,直接执行步骤2.6;所述黑名单中包含:不诚实用户及其对应的不合法交易和后继区块;
步骤2.6、按照以下规则对后继区块列表中的任意两个后继区块进行判断,并选出主链:
规则一:任意两个后继区块均为有孩子节点的后继区块,则选择分叉链中信誉权益用户个数多的分叉链作为主链;
规则二:任意两个后继区块均为无孩子节点的后继区块,则选择后继区块中哈希值最小的区块所在的分叉链作为主链;
规则三:任意两个后继区块中包括有孩子节点的后继区块和无孩子节点的后继区块,则选择有孩子节点的后继区块所在的分叉链作为主链;
步骤2.7、将s赋值给n后,返回步骤1.4;
步骤三:更新信誉权益用户ui的资金余额、信誉值以及活跃度:
步骤3.1、更新信誉权益用户ui的资金余额:
遍历所述信誉权益区块链,找出所有区块中包含信誉权益用户ui的交易,若是抵押押金交易,则从信誉权益用户ui的资金余额中扣除押金金额;若是转账交易,则在信誉权益用户ui的资金余额上扣除转走的资金,加入转入的资金,从而完成信誉权益用户ui的资金余额的更新;
步骤3.2、更新信誉权益用户ui的信誉值:
遍历所述信誉权益区块链,找出由所述信誉权益用户ui生成的区块,并比对黑名单;记信誉权益用户ui生成的区块数目为p,若pmodN1=0成立,则清空信誉权益用户ui的信誉值;若不成立,则查看信誉权益用户ui生成的区块是否被包含在黑名单中,若是,则扣除信誉权益用户ui的信誉值,否则增加信誉权益用户ui的信誉值;从而完成信誉权益用户ui的信誉值的更新;其中,N1为所设定的阈值,且N1∈{10,20,30,40,50};
步骤3.3、更新信誉权益用户ui的活跃度:
遍历所述信誉权益区块链,找出由所述信誉权益用户ui生成的区块,记信誉权益用户ui生成的区块数目q为,若qmodN1=0成立,则清空信誉权益用户ui的活跃度,否则增加信誉权益用户ui的活跃度;从而完成信誉权益用户ui的活跃度的更新;
步骤四:动态更新所述综合得分中的参数系数:
步骤4.1、根据所述黑名单,将信誉权益用户ui生成区块时的行为是否诚实,记做y(ui);
若信誉权益用户ui生成的区块被包含在黑名单中,则认为信誉权益用户ui生成区块时的行为不诚实,记y(ui)=0,否则表示信誉权益用户ui生成区块时的行为诚实,记y(ui)=1;
步骤4.2、若sn+1modN2=0成立,则所述信誉权益用户ui统计前N2个区块中每个区块生成者的状态信息包括:资金余额、信誉值、活跃度以及每个用户生成区块时的行为是否诚实,从而获得N2组区块生成者的状态信息;其中,N2为所设定的阈值,且N2∈{1024,2048};
步骤4.3、根据所述N2组区块生成者的状态信息,基于Logistic回归算法优化所述综合得分中的参数系数:
利用式(3)构建信誉权益用户ui的预测判别函数hθ(ui),并将所述N2组区块生成者的状态信息代入式(3)中,得到N2个hθ(ui)函数值:
步骤4.4、利用式(4)构造表示hθ(ui)函数值与信誉权益用户ui行为诚实与否y(ui)之间偏差的损失函数Cost(hθ(ui),y(ui)):
步骤4.5、利用式(5)得到N2组损失函数函数值的平均数J(θ):
步骤4.6、利用梯度下降法获得N2组损失函数函数值的平均数J(θ)的最小值,从而得到更新后的四个参数θ′0,θ′1,θ′2,θ′3并广播给其他用户后,返回步骤1.4。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811631281.5A CN109493062B (zh) | 2018-12-29 | 2018-12-29 | 一种基于信誉权益证明的区块链共识方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811631281.5A CN109493062B (zh) | 2018-12-29 | 2018-12-29 | 一种基于信誉权益证明的区块链共识方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109493062A CN109493062A (zh) | 2019-03-19 |
CN109493062B true CN109493062B (zh) | 2021-03-09 |
Family
ID=65713226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811631281.5A Active CN109493062B (zh) | 2018-12-29 | 2018-12-29 | 一种基于信誉权益证明的区块链共识方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109493062B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110097458A (zh) * | 2019-04-11 | 2019-08-06 | 贝克链区块链技术有限公司 | 一种基于区块链技术的量化信誉体系 |
CN110188137B (zh) * | 2019-04-19 | 2021-08-31 | 杭州电子科技大学 | 一种基于诚信的区块链共识机制 |
CN110351067B (zh) * | 2019-06-12 | 2023-04-07 | 南京理工大学 | 针对主从多链的区块链共识方法 |
CN110233855A (zh) * | 2019-06-28 | 2019-09-13 | 浪潮卓数大数据产业发展有限公司 | 一种基于区块链的区域防暴力破解方法 |
CN110766551B (zh) * | 2019-09-10 | 2022-04-01 | 中国科学院信息工程研究所 | 一种基于改进Kafka共识机制的联盟链及交易方法 |
CN111737358B (zh) * | 2020-07-20 | 2020-12-22 | 百度在线网络技术(北京)有限公司 | 区块链主链的确定方法、装置、设备及存储介质 |
CN112600917B (zh) * | 2020-12-11 | 2022-05-03 | 重庆邮电大学 | 一种基于信誉的区块链工作证明方法 |
US11755562B2 (en) | 2021-05-13 | 2023-09-12 | International Business Machines Corporation | Score based endorsement in a blockchain network |
CN113326240B (zh) * | 2021-06-22 | 2023-05-30 | 哈尔滨工程大学 | 一种边缘网络中能耗敏感的终端节点的数据共享方法 |
CN114219650B (zh) * | 2022-02-21 | 2022-05-20 | 浙江数秦科技有限公司 | 一种低交易延迟的区块链共识方法 |
CN114640476B (zh) * | 2022-05-20 | 2022-08-30 | 中国科学院合肥物质科学研究院 | 去中心化身份证书发证方信誉评价方法、系统及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488665A (zh) * | 2015-11-25 | 2016-04-13 | 布比(北京)网络技术有限公司 | 一种去中心化的交易方法 |
CN106030598A (zh) * | 2014-02-23 | 2016-10-12 | 高通股份有限公司 | 用于移动装置的信任代理认证方法 |
CN106503098A (zh) * | 2016-10-14 | 2017-03-15 | 中金云金融(北京)大数据科技股份有限公司 | 内置于Paas服务层的区块链云服务框架系统 |
CN108234515A (zh) * | 2018-01-25 | 2018-06-29 | 中国科学院合肥物质科学研究院 | 一种基于智能合约的自认证数字身份管理系统及其方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11354651B2 (en) * | 2015-01-19 | 2022-06-07 | Royal Bank Of Canada | System and method for location-based token transaction processing |
US10402796B2 (en) * | 2016-08-29 | 2019-09-03 | Bank Of America Corporation | Application life-cycle transition record recreation system |
-
2018
- 2018-12-29 CN CN201811631281.5A patent/CN109493062B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106030598A (zh) * | 2014-02-23 | 2016-10-12 | 高通股份有限公司 | 用于移动装置的信任代理认证方法 |
CN105488665A (zh) * | 2015-11-25 | 2016-04-13 | 布比(北京)网络技术有限公司 | 一种去中心化的交易方法 |
CN106503098A (zh) * | 2016-10-14 | 2017-03-15 | 中金云金融(北京)大数据科技股份有限公司 | 内置于Paas服务层的区块链云服务框架系统 |
CN108234515A (zh) * | 2018-01-25 | 2018-06-29 | 中国科学院合肥物质科学研究院 | 一种基于智能合约的自认证数字身份管理系统及其方法 |
Non-Patent Citations (1)
Title |
---|
基于区块链的智能合约技术与应用综述;贺海武;《计算机研究与发展》;20181115;第2452-2466页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109493062A (zh) | 2019-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109493062B (zh) | 一种基于信誉权益证明的区块链共识方法 | |
CN110580653B (zh) | 一种基于交易的区块链共识机制 | |
Bouraga | A taxonomy of blockchain consensus protocols: A survey and classification framework | |
CN111090892B (zh) | 一种基于vrf和门限签名的区块链共识方法和装置 | |
CN109426952B (zh) | 一种区块链架构 | |
CN113794675B (zh) | 基于区块链和联邦学习的分布式物联网入侵检测方法及系统 | |
US20200162263A1 (en) | System and method of validation of block chain by secondary chain having incentivization and insurance coverage powered by proof of work | |
CN109039648B (zh) | 一种区块链的创建方法、设备及可读存储介质 | |
Beccuti et al. | The bitcoin mining game: On the optimality of honesty in proof-of-work consensus mechanism | |
CN110298641B (zh) | 区块链的规则更新方法、装置、区块链节点及网络 | |
CN110445603B (zh) | 一种去中心化随机数生成方法 | |
Chatterjee et al. | Ergodic mean-payoff games for the analysis of attacks in crypto-currencies | |
CN110611701A (zh) | 一种基于区块链的参数配置和交易处理方法 | |
CN110084596B (zh) | 一种处理区块链混合共识的方法和装置 | |
CN106920097A (zh) | 一种量子链共识协议的生成时间块链方法 | |
CN114372589A (zh) | 一种联邦学习方法及相关装置 | |
CN111078787A (zh) | 一种基于随机数映射的区块链共识方法 | |
CN111131184A (zh) | 一种区块链共识机制的自主调节方法 | |
CN114491616A (zh) | 基于区块链和同态加密的联邦学习方法和应用 | |
Liu et al. | Decentralization is vulnerable under the gap game | |
CN112599249A (zh) | 一种基于信用等级划分的医疗数据安全共识方法 | |
Begicheva et al. | Fair proof of stake | |
Mahatungade et al. | Performance analysis of Reinforcement Learning for Miner Selection in Blockchain | |
Byers | Combating Front-Running in the Blockchain Ecosystem | |
EP4046328A1 (en) | Computer-implemented method for reaching a distributed consensus in a blockchain network and node implementing the method |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220413 Address after: 230022 Room 501, block B, Anhui Institute of industrial technology innovation, No. 2221, Changjiang West Road, high tech Zone, Hefei, Anhui Province Patentee after: Anhui Zhongke lattice Technology Co.,Ltd. Address before: 230031 No. 350 Lake Road, Hefei, Anhui, Shushan Patentee before: HEFEI INSTITUTES OF PHYSICAL SCIENCE, CHINESE ACADEMY OF SCIENCES |