[发明专利]一种具有动态信任的委托权益证明共识算法有效
申请号: | 202011297188.2 | 申请日: | 2020-11-18 |
公开(公告)号: | CN112541821B | 公开(公告)日: | 2023-02-28 |
发明(设计)人: | 禹继国;孙媛媛;闫碧薇;王桂娟 | 申请(专利权)人: | 齐鲁工业大学 |
主分类号: | G06Q40/04 | 分类号: | G06Q40/04;G06Q20/38;G06F21/64;G06F16/27 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 冯春连 |
地址: | 250353 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 具有 动态 信任 委托 权益 证明 共识 算法 | ||
1.一种具有动态信任的委托权益证明共识算法,其特征在于,该算法的实现过程包括:
步骤S100、区块链网络为节点定义一个信任值属性Trust和一个评估值属性Evaluation,基于如下公式,对区块链网络中每个节点的信任值t和评估值e进行初始化,
e=0,
其中,n为区块链网络中节点的数目,t的上标1表示第一个选举周期;
步骤S200、区块链网络基于信任模型和上一选举周期r-1内的历史交易记录为相关节点计算局部信任值cij,进而计算当前选举周期内每个节点的唯一全局信任值具体操作为:
步骤S210、在区块链网络中,根据节点间的交易关系对n个节点进行划分,对于一个给定的节点nodei,如果任何节点nodej收到一个来自节点nodei的交易,则将节点nodej划分为集合FDTxNodesi,否则将节点nodej划分为集合Non-FDTxNodesi,同时,如果任何节点nodej有指向nodei的交易,则将其划分为集合RDTxNodesi,其中i、j∈{1,2,3,…,n},且i≠j,
步骤S220、对于节点nodei和节点nodej,初始化局部信任值cij=0,
步骤S230、对于节点nodei来说,当与节点nodej存在正向直接交易时,根据上一选举周期r-1内的交易历史记录,查询从节点nodei发向节点nodej的有效交易数量sat(i,j)和无效交易数量unsat(i,j),并计算绝对有效交易数sij,得到节点nodei对节点nodej的局部信任值cij,所述绝对有效交易数sij和局部信任值cij的表达式如下:
sij=sat(i,j)-unsat(i,j),
其中,i∈{1,2,3,…,n},j取值为集合FDTxNodesi中的所有节点,
步骤S240、对于节点nodei来说,当与节点nodej不存在正向直接交易时,根据上一选举周期r-1内的交易历史记录,查询从节点nodei到节点nodej的所有交易路径与中间节点nodek,计算节点nodei对节点nodej的局部信任值cij,局部信任值cij的表达式如下:
其中,k∈{1,2,3,...,n},k取值为所有的中间节点,如果k取值为FDTxNodesi∩RDTxNodesj中的所有节点,则按上述表达式计算局部信任值cij,否则迭代选取中间节点nodek,并对局部信任值cij进行迭代计算,
步骤S250、对于区块链网络的n个节点nodei,基于节点nodeu对节点nodei的局部信任值cui及上一选举周期r-1内节点nodeu的全局信任值得到当前选举周期r内每个节点的唯一全局信任值所述全局信任值的表达式如下:
其中,i、u∈{1,2,3,...,n},r从第二选举周期开始取值;
步骤S300、基于一个综合考虑投票数与信任值的评估准则f,为每个节点nodei计算一个评估值ei,并根据区块链网络中所有节点的评估值e[]对证人节点进行选择,生成一个证人节点列表WitnessNodes[],具体操作为:
步骤S310、定义并初始化一个空的证人节点列表WitnessNodes[]和得票数集合votes[],
步骤S320、对于任意节点nodei,如果基于自身权益向认可的节点nodej进行投票,那么nodej的得票数等于投票节点自身所持有币数的总和,所述得票数的表达式如下:
votesj=∑coin(nodei),
其中,j∈{1,2,3,...,n},n为区块链网络中节点的数目,coin(nodei)表示节点nodei所持有币的数量,nodei取值为所有对nodej进行过投票的节点,
步骤S330、对于区块链网络的n个节点nodei,基于一个综合考虑得票数votesi与当前选举周期r内全局信任值的评估准则f来计算最新评估值ei,所述评估准则f与评估值ei的表达式如下:
其中,i∈{1,2,3,...,n},n为区块链网络中节点的数目,votesi表示节点nodei的得票数,
步骤S340、根据所有节点的评估值e[]对节点进行排序,选取前N个节点成为证人节点,加入一个证人节点列表WitnessNodes[];
步骤S400、①证人节点列表中的证人节点轮流生成一个区块,并对块消息进行环签名,具体操作为:
步骤S411、区块链网络选取一个大素数p、一个散列函数H:{0,1}*→{0,1}n、一个随机数并计算g0=gαmod p,得到公共参数params,所述公共参数params的表达式如下:
params=<G1,G2,g,g0,p,e>,
其中,G1,G2是两个阶数为p的循环群,为一个生成元,e:G1×G1→G2是一个双线性配对;
步骤S412、证人节点列表WitnessNodes[]中的所有证人节点自组织形成一个环,证人节点nodei的唯一地址信息Addressi作为其身份信息IDi,组成身份信息集合R={ID1,ID2,...,IDn},
步骤S413、针对证人节点列表WitnessNodes[]中的所有证人节点,选择随机数作为证人节点nodei的私钥,并计算作为证人节点nodei的公钥,其中,i∈{1,2,3,...,n},n为区块链网络中节点的数目;
步骤S414、证人节点列表WitnessNodes[]中的证人节点轮流具有生成块的权利,当前出块节点nodes生成一个块,生成块消息m,所述块消息m的表达式如下:
m=<HASH(PreBlock),TimeStamp,D,nonce,MerkleTreeRoot,Txs>,
其中,HASH(PreBlock)表示前一个块的哈希,TimeStamp表示时间戳,D表示系统设定的挖矿难度值,nonce表示随机值,MerkleTreeRoot表示Merkle树根,Txs表示一些交易,
步骤S415、当前出块节点nodes对整个块信息使用环签名方案生成一个环签名σrs,所述环签名σrs的生成过程如下:
(1)计算h=H(m||R),
(2)对于i∈{1,2,...,n}\s,s表示当前的出块节点,随机选取zi∈Zp*,对于i∈{1,2,...,n},随机选取ri∈Zp*,
(3)对于i∈{1,2,...,n}\s,s表示当前的出块节点,计算
(4)对于i=s,s表示当前的出块节点,计算
(5)输出对于块消息m的环签名σrs={(σ1,r1),(σ2,r2),..,(σn,rn),m};
②同时广播此块消息到证人节点列表中,其余证人节点对环签名和区块的合法性与有效性进行校验,如果超过50%的证人节点校验通过并回复了确认消息,则此区块达成了共识,将此区块添加到区块链网络中,否则轮到证人节点列表中的下一个证人节点重新执行本步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于齐鲁工业大学,未经齐鲁工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011297188.2/1.html,转载请声明来源钻瓜专利网。