[0053] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0054] 将信任区块链网络模型构建成一个无向图G=(V,E),每个顶点描述网络中的一个节点,每条边连接两个彼此传输范围内的节点,如图1所示,在这个模型中,定义了两个实体,它们被形式化为一组特征向量
[0055] 网络节点(Network Node)包括一个节点属性向量(Node Attributes)和节点能力向量(Node Capacity);节点属性向量包括信任评价、交易次数、成功交易次数、稳定运行时间、运行总时间及处理时间,节点能力向量有下载、交易、转发和验证等。用NA表示节点属性向量,NC表示节点能力向量,给出了区块链网络节点NN的表达式:
[0056] NN={nodei|i∈{1,2,…m}}
[0057] nodei=<NA,NC>
[0058]
[0059] NC=<下载区块链,交易,操作类型(记账、验证、转发、存储)>
[0060] 节点分类包括:可信节点、可信节点、普通节点及恶意节点,其定义具体如下:
[0061] 可信节点:综合信任值达到信任阈值的节点;
[0062] 超级可信节点:可信列表中选出的可信节点;
[0063] 普通节点:由于外界不可控因素影响节点的综合信任值,比如停电或者断网等会影响节点的工作,导致节点的综合信任值低,低于信任阈值,但不存在恶意行为,这样的节点称为普通节点;
[0064] 恶意节点:综合信任值低于信任阈值,且存在行为恶意的节点。
[0065] 为了实现节点信任值计算的可信度度量,需要保证节点身份唯一性,需要给每个节点一个编号ID。同时为节点加入时间戳time,使得消息具有时效性。当网络节点NN首次请求加入信任区块链网络时,将向所有的信任区块链网络节点发出特定的凭据NA。NA包含这个节点在网络中操作的一些节点属性信息。当经过身份验证的NN将NA包含在一个有效的块中时,身份验证请求被批准。NN的凭据状态随后可以通过信任值评估来重新更新或者是遗弃;当遗弃其凭据时,NN必须提供新的凭据NA才能在网络中保持身份验证,节点的验证过程见算法2:
[0066]
[0067] 图2为本发明实施例提供的基于信任区块链节点的信任度计算方法流程图,该方法具体如下:
[0068] S1、针对信任区块链网络中的节点,基于节点的交易信任值Cd及行为信任值Fb来计算各节点的综合信任值;
[0069] 在本发明实施例中,节点交易产生的信任值Cd的计算公式具体下所示:
[0070]
[0071] 其中,Cd为节点u在时段k内由于交易产生的信任值,So(u)为节点u时段k内的稳定运行率,Cr(p(u,i))为节点p在第i次交易后对节点u的推荐可信值,节点p与节点u的第i次交易发生在时段k内,TS(u)为节点u时段k内的转发率,AT(u)为节点u时段k内的记账率,VC(u)为节点u时段k内的验证率,CP(u)节点u时段k内的响应率。
[0072] 在本发明实施例中,稳定运行率=稳定运行时间/总时间,SO(u)=Ss/Stotal,Ss为节点u时段k内的稳定运行时间,Stotal为节点u时段k内的运行总时间;
[0073] 转发率=成功转发交易数/总转发交易数,TS(u)=Ts/Ttotal,Ts为节点u时段k内成功转发的交易数,Ttotal为节点u时段k内的总转发交易数;
[0074] 记账率=成功记账交易数/总记账交易数,AT(u)=As/Atotal,As为节点u时段k内成功记账的交易数,Atotal为节点u时段k内的总记账交易数;
[0075] 验证率=成功验证交易数/总验证交易数,VC(u)=Vs/Vtotal,Vs为节点u时段k内成功验证的交易数,Vtotal为节点u时段k内的总验证交易数;
[0076] 响应率=记账、验证、转发交易数/处理时长,CP(u)=Cs/Ctotal,Cs为节点u时段k内的记账、验证、转发交易数,Ctotal节点u时段k内的处理时长。
[0077] 在本发明实施例中,节点行为产生的信任值Fb的具体如下:
[0078] S11、定义节点行为及节点行为的属性,基于节点行为的属性对节点行为进行赋值,称为行为值,节点行为值{‑1,1}区间内进行赋值;
[0079] 行为属性包括:积极行为和消极行为,对于积极行为赋予正的节点行为值,对消极行为赋予负的节点行为值;消极行为的属性又包括:恶意行为和非恶意行为,由于不可控因素导致的消极行为一般定义为非恶意行为,由于人为因素导致的消极行为定义为恶意行为。
[0080] 在本发明实施例中,节点行为的信任值是在节点加入区块链网络之后,节点的交互过程中可能发布虚假资源、攻击邻居节点等恶意行为。节点进行检查交易块、区块链同步、记账同步等时间的快慢影响行为信任值。
[0081] 节点行为信任值模型的信誉因素为Abehavior={A1,A2,...,Ai,...,A6},表1为节点行为与参数映射表,表1如下:
[0082] 表1节点行为与参数映射表
[0083] Abehavior 动态行为 参数取值范围A1 检查交易块时间 permissionAlloc;licenseProcess;allowObject
A2 区块链同步时间 forbidClose;banProcessHeap;prohibitThread
A3 记账同步时间 revokeAlloc;repealHeap;backoutAlloc;
A4 响应延迟 renewThread;updateProcess;
A5 发布虚假资源 grumbleExA;complainExA
A6 攻击邻居节点 amendFile;modifierFile;revampFile
[0084] S12、捕获节点在当前时段[tfrist,tend]内发生的所有行为Aevt;
[0085] 若当前时段为节点进入区块链的第一个时段,则tfirst为对应节点进入区块链网络的时刻,tend为第一个时段的结束时间点,若当前时段为节点进入区块链的第k(k≥2)个时段,则tfirst为对应时段的起始时间点,tend为对应时段的结束时间点;节点行为捕捉算法件算法1:
[0086]
[0087] S13、基于行为对应行为值来计算节点当前的行为信任值;
[0088] 在本发明实施例中,各节点的行为信任值Fb的计算公式具体如下
[0089]
[0090]
[0091] f(k)=θn‑k
[0092] 其中,F(Ai)表示行为Ai的行为值,i的取值为[1,6], 表示节点NN在时间t段所有行为值的总和,n表示时间段总数,k表示第k个时间段,θ取值根据当前交易行为的重要程度来取值,θ取值范围0到1,越重要的行为θ越接近0,相反越接近1。
[0093] 在本发明实施例中,综合信任值的计算公式具体如下:
[0094]
[0095] 在本发明实施例中,Trust表示区块链节点的综合信任值,Cd表示节点的交易信任值,Fb表示节点的行为信任值,通过对交易信任值及行为信用值进行加权得到节点的综合信任值,其中α权重参数值。
[0096] 在本发明实施例中,新节点是指刚加入区块链网络节点,针对新节点加入区块链网络,区块链网络节点没有此节点的行为记录,若将新节点的初始信任度设置为0,可能对其信任度太低无法正常的交互通信操作,如若将新节点的初始信任度设置为1,那么在通信中因为过高的信任值并不能准确反映此节点的真实表现,所以折中考虑,将新节点的初始信任度设置为0.5,但是符合信任值的数量级,可以同等级放大或者缩小,随着相关事件的发生,综合信任值会不断更新。
[0097] S2、对节点的综合信任值加入时间戳,形成带有时间戳的综合信任值。
[0098] 在本发明实施例中,带有时间戳的综合信任值Trustt计算方法具体如下:
[0099]
[0100]
[0101]
[0102] 其中,Trustfirst为新节点的初始信任值,取值为0.5,Trustend为时段的结束时间点,tfirst为节点进入区块链网络的时刻或者是时段的起始时间点,若前时段为节点进入区块链的第一个时段,则tfirst为对应节点进入区块链网络的时刻,若当前时段为节点进入区块链的第k(k≥2)个时段,则tfirst为对应时段的起始时间点,tEND为节点离开区块链网络的时刻,t0为时段的设定时长,[k]表示k值取整,将时间等分成t0时段,每隔一段时间衰减一次。
[0103] 节点信任度评估过程见算法3;
[0104]
[0105]
[0106] 将综合信任值与信任阈值进行比较;
[0107] 存在恶性行为,且总信任值低于信任阈值的节点定义为恶意节点,将不存在恶意行为,但综合信任值低于信任阈值的节点定义为普通节点,综合信任值大于或等于信任阈值的节点定义为可信节点;
[0108] 将可信节点放入可信列表,将恶意节点从可信列表中剔除,可信列表用于记录可信节点的列表。
[0109] 本发明提供的基于信任区块链节点的信任度计算方法具有如下有益效果:
[0110] 综合节点交易产生的信任值与节点行为产生的信任值来计算节点的综合信任值,基于综合信任值选出可信节点,有效保证区块链网络环境的安全,同时降低平均事务延时和提高出块速率。
[0111] 本专利申请主要运用以太坊平台,运用solidity语言进行智能合约的编写,web3.0技术进行系统交互。
[0112] 硬件设备
[0113] LENOVO ideapad Y700 64‑bit,windows OS,Inter Core i5‑6300HQ,CUP@2.30GHz,RAM 8G,NVIDIA GEFORCE GTX 960m Graphics
[0114] 软件环境
[0115] Git:Git可用于从GitHub获取源代码;NodeJS以太坊开发框架Truffle需要;
[0116] NodeJS:NodeJS允许使用JavaScript开发服务端程序,同时因为以太坊开发需要使用开发框架需要使用NodeJS;
[0117] Solc:Solc用于编译以太坊智能合约;
[0118] Testrpc:testrpc是在本地使用内存模拟的一个以太坊环境,对于开发调试来说,更为方便快捷,当合约在testrpc中测试通过后,再可以部署到geth中去;
[0119] Truffle:truffle是一个以太坊的开发和测试框架。使用它可以方便我们快速的在以太坊上开发;
[0120] Geth:是以太坊官方提供的节点,我们利用geth创建一个私有链,并通过Web3.js API连接geth节点,然后操作该私有区块链。
[0121] (1)创建创世区块配置文件并初始化区块;
[0122] (2)启动以太坊节点
[0123] (3)通过Web3.js连接geth节点,并可查询geth节点中的账户
[0124] (4)在另一台机器(windows)上通过IP连接本机的geth节点
[0125] (5)私有链创建完成,测试均可以进行创建账户、挖矿、转账等基本操作。接下来使用Web3.js API发布智能合约。
[0126] (6)使用fs模块中的API装载*.bin和*.abi文件
[0127] (7)unlockAccount解锁用于发布合约的账户
[0128] (8)使用contarct.new方法通过异步调用发布智能合约
[0129] 实验参数设置
[0130] 本实验交易产生信任值更能直观反映此节点的信任度,节点产生信任值权重更大。因此α取0.7,β取0.3。本实验正式开始前做了一次初始试验,确定信任值数量级,正式试验初始信任值取0.5。时间衰减函数中的θ是当前交易行为的重要程度,越重要的行为θ越接近0,相反越接近1,本实验取0.5。其中信任评测指标的Abehavior中{A1,A2,A3,A4,A5,A6}取值范围分别为[0.3,0.7],[0.1,0.5],[0.2,0.6],[‑0.3,0.3],[‑0.8,‑0.2],[‑0.8,‑0.2]。设置节点数量为500,始终在线节点占比为10%,通常在线节点占比为40%,有时在线节点占比为40%,从不在线节点占比10%。可信节点占比为40%,积极节点占比为30%,恶意节点占比为30%。
[0131] 表2仿真参数设置
[0132]
[0133]
[0134] 实验方法
[0135] 基于Ethereum平台使用可靠的脚本语言编写智能合约,并使用Truffle框架和Testrpc来模拟信任区块链的信任值计算。先创建一条私有链,编写并测试成功的智能合约通过web3.js API部署到该私有链上。模拟区块链事务并记录节点行为,包括交易、记账、转发、验证等,模拟时间为24h。
[0136] 节点加入区块链网络的节点随着时间的变化趋势图
[0137] 节点加入区块链网络的节点随着时间的变化趋势如图3所示,该图分为12个时间段。24小时内有496个节点加入区块链网络,4个节点出现故障等原因无法加入。图7为每个时间段区块链网络中在线的节点数目。
[0138] 从图5可以看出,对于传统的区块链交易速度与以信任为基础的支付模式,随着交易频率的增加,节点的平均总交易速度比传统的区块链交易速度与以信任为基础的支付快得多。由于信任区块链计算节点信任值并选出超级可信节点快速处理验证转发等,大大提高了节点处理事务的能力。
[0139] 在此说明,积极节点并不代表是完全可信的节点,积极节点只是说明此节点可能因为外界因素如断网断电等情况导致信任度没那么高,也可能存在多次权重低的交易增加信任度而通过最后一次恶意攻击来达到目的。
[0140] 表3对抗攻击比较表
[0141]
[0142]
[0143] 表3中看出,PCB模型引文对比其他多种模型方法抗攻击显著,但是无法抗多假名攻击,而信任区块链计算方法可以抗多假名攻击。
[0144] 表4给出以下模拟实验,对区块链网络进行1000次交易的实验数据。
[0145] 表4三类节点1000次交易数据
[0146]
[0147] 三类节点处理交易次数折线统计
[0148] 表5三类节点信任等级分布表
[0149]
[0150] 从图6和表5中可以看出,积极节点与恶意节点处理交易的比率差不多,积极节点的交易比例不超过3%,大部分交易的都是可信节点。从表4可以看出,积极节点与恶意节点的信任等级很低,没有最高等级,而最高等级都处于可信节点。
[0151] 区块增长趋势折线统计图
[0152] 从图7中明显的看出,本专利方案的出块速率比比特币的出块速率要高。因为筛选出可信节点直接进行验证记账等操作,大大减少了节点共识验证的时间,增加了打包速率,同时增加了出块效率。
[0153] 区块链平均事务延迟比较
[0154] 从图8中可以看出,在不同的时间段内,平均事务的延迟基本保持稳定,传统区块链的平均事务延迟为53ms左右,而信任区块链的平均事务延迟仅为24ms左右。信任区块链的事务延迟相比传统区块链的事务延迟优化了一半左右,这信任区块链筛选出信任节点对事务的处理速度大大增加,反映了此方案的优越性。
[0155] 平均吞吐量
[0156] 事务的吞吐量表示区块链系统并发的能力。因此,对比了信任区块链下与传统区块链机制下的吞吐量。如图9所示,基于信任区块链方案的平均吞吐量随着并发增加而稳定增长,并逐渐发到稳定峰值。基于传统区块链的曲线变平时间要早的多,最大值基本维持在1500左右。所以信任区块链的吞吐量要优于传统区块链的方案。
[0157] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。