[发明专利]一种具有动态信任的委托权益证明共识算法有效

专利信息
申请号: 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%的证人节点校验通过并回复了确认消息,则此区块达成了共识,将此区块添加到区块链网络中,否则轮到证人节点列表中的下一个证人节点重新执行本步骤。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于齐鲁工业大学,未经齐鲁工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202011297188.2/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top