(辽宁工程技术大学电子与信息工程学院,辽宁 葫芦岛 125105)
区块链技术能使相互之间不信任的用户在不依赖可信第三方的情况下进行安全贸易[1],其核心优势在于非中心化,通过使用数据加密、分布式共识机制、激励机制,改变了中心化贸易方法,有效地避免了当前贸易过程中的高成本、低效率和不安全数据存储等缺陷。近年来,以太坊的快速发展促进了学术界和工业界对区块链技术开展了新一轮的研究和部署[2-6],但已有的研究均建立在区块链能运行在持续联通网络的条件下,未涉及网络在非持续联通(如容迟网络)状态下如何利用区块链技术进行贸易。
已有的调查发现,2019 年53.6%的全球用户都已接入互联网中[7],通过固定宽带和移动网络接入互联网的分别占14.5%和83%,然而,尚有近67.1亿人没有接入或者非实时接入互联网。已有的临时网络和容迟网络利用偶发连接可以为非实时情况提供一定质量保证的接入服务,但不能满足区块链运行的需求。如果使远离城市的山区、乡村或者海岛上的居民加入区块链网络开展贸易和挖矿活动,网络接入服务和区块链技术的支持是2 个必不可少的前提。
对于网络接入服务,可以采用一些服务提供商提供的社区基站方案来解决,对内可为本地的用户搭建社区局域网络,对外通过卫星接入互联网,可提供有时延的网络接入服务。Blattman 等[8]建立容迟网络为偏远山区、海岛等提供远程互联网接入服务。以容迟网络为基础,Hu 等[9]提出了基于以太坊的时延支付方案,重点关注了网络中断情况下生成的数据总量与节点带宽对区块上传的影响。Alaslani等[10]研究了物联网中影响区块链贸易时间的因素,计算了物联网节点之间采用区块链进行贸易的时延。但上述2 个文献均未对区块链在该网络下的适应性做表述。对于区块链技术,加密货币的应用使其具有非中心化贸易的特征[11],但需要持续的网络连接,保证贸易主体和协同者之间进行大量的数据交互。在不能保证实时联通的容迟网络,区块链扩展技术[12]可为区块链部署提供一定的支持,以网络中断为分界,将容迟网络分割为网络联通和非联通2 个阶段,利用扩展技术将网络非联通时生成的区块在联通时附加到主链上。Worley 等[13]介绍了已有的侧链技术,指出侧链可以有不同于主链的共识协议,但如何有效地将侧链整合到主链上依然是待研究的问题。
综上,如何在容迟网络支持节点之间的区块链贸易是本文解决的问题。本文的贡献如下。
1)构建了容迟网络区块链贸易模型,以节点能力属性为基准,设计了节点可参与区块链活动的类型,提出了容迟网络区块链贸易的2 种不同类型及其识别依据。
2)设计了新的区块数据结构,以此为基础,提出了从属于主链的附链定义、附链区块打包方法、附链区块挖掘方法、附链区块共识方法及网络重联通时附链追加到主链的确认共识方法。
3)从理论上证明了提出的容迟网络区块链贸易机制具有持续性、安全性和容错性的特征,从实验模拟上分析了所提机制的有效性。
诺基亚使用Kuha 基站[14]的方式为难以建立基础通信设施的区域提供周期性网络互联服务。该区域内节点通过基站设备(由Kuha 提供)实现相互通信,称之为社区,一个社区就是一个局域网络。基站设备与卫星进行连接和通信,为社区内节点提供带有时延的互联网连接服务。与Kuha 类似,构建带有卫星通信的容迟网络,如图1 所示。依据节点(用户)所在地理位置将容迟网络分成2 个表示性的区域:网络实时联通区域(以城市为代表)和网络非实时联通区域(以非城市为代表)。处于实时联通区域的节点很少发生网络中断的情形。位于非实时联通区域基于运营商收益考虑,仅建有少量的基础设施,通过卫星中继接入互联网,其网络连接状态周期性处于非联通状态,该区域内部的节点通过无线或有线方式互通。定义“全网”是指由实时联通区域和处于网络联通周期的非实时联通区域内的节点组成的网络。定义“局域网”是指处于非实时联通区域的连接到同一基站设备的节点组成的网络。假设局域网络为V,,N表示自然数,vi表示第i个非城市区域。在每个非城市区域内,包含节点和运营商服务器(基站)。
图1 容迟网络区块链模型
区块链网络建立完成后,可以容纳节点之间的贸易,该网络下的区块链节点活动详细描述如图2所示。区块链网络中存在2 类节点:轻量级节点和完全节点。轻量级节点以手机设备为代表,安装轻量级的区块链软件,具有低计算、存储和带宽能力,在区块链中只能和其他节点发起贸易。完全节点以计算机设备为代表,安装完全的区块链软件,具有一定的计算、存储和带宽能力,在区块链中能进行贸易,参与消息转发、挖矿、共识等活动。考虑非城市网络会发生连接断开的情况,将贸易类型分为2 种:贸易发起者在非实时联通区域内,贸易发起者在非实时联通区域外。当网络正常时,区域vi内的节点与其他区域节点一样参与区块链活动,当网络中断时,vi内节点在本地设备上记录中断的时间tinter。设网络重联通时刻为tconn、tinter和tconn之间的时间段,节点在运营商服务器的支持下会维持封闭的局域P2P 网络,此时,在该网络中运行区块链应用是可行的。具体来说,位于同一局域网的节点相互之间是可以通过运营商服务器进行相互通信,以此为基础部署区块链,完成对网络非联通状态局域网节点生成贸易记录的打包、挖矿和共识过程。
图2 容迟网络区块链节点活动
如图2 所示,当前时刻t(tinter≤t≤tconn)节点可进行的活动有:1)继续进行tinter之前已经开始的挖矿活动,风险是当网络恢复时,由于时延,该数据块已经被其他节点挖掘出而造成算力浪费;2)放弃tinter之前已经开始的挖矿活动,在本地局域网络内寻找时间戳在tinter之后的贸易记录并打包成块,开展挖矿活动;3)中断当前的验证活动,停止更新本地的区块链账簿,记录中断时区块链最后一块的哈希值。网络连接中断时,在本地局域网络内产生的新贸易记录会被本局域网节点进行打包、挖矿和共识,追加在本地的区块链中。当前时刻(ttconn≤t)时,网络已经恢复连接,节点可进行的活动有:1)下载最新的区块链以同步本地账簿;2)网络连接恢复时将[tinter,tconn]周期内追加的区块在整个区块链网络进行确认共识,确认后更新入本地账簿中;3)未被挖掘的断网时产生的贸易记录全部由本地节点挖掘,网络联通时产生的贸易记录由全网节点挖掘。
容迟网络在网络中断时形成局域网,网内节点生成的贸易记录只能在局域网内部被接收,节点当前正在进行的挖矿活动会因网络较大的时延而有很大的概率不能追加到区块链上,节点账户信息不能及时更新,从而可能造成虚假贸易,因此局域网生成的区块在网络重联通时需要追加到区块链中且不能对局域网外正在挖矿的节点造成不利影响。针对上述网络非联通情况下的特性和需求,本文修改了附链区块数据结构,将区块链结构更改成可容纳分支的链式结构,设计了附链区块打包方法、挖掘方法、共识方法及网络重联通时的确认共识方法。
在企业级网络中,已有的区块链数据结构保证了区块能以链式结构进行分布式存储,但严重限制了区块的可扩展性。为了满足在容迟网络中能利用区块链进行贸易,在主链上容纳网络中断时局域网生成的区块且不对当前正在挖矿的节点产生影响,本文修改了附链区块数据结构,如图3 所示。
区域vi的网络处于非联通状态时,节点以tinter为分界点,通过查询贸易记录时间戳或接收到该贸易记录的时刻将贸易记录分成2 类:tinter之前的贸易记录和[tinter,tconn]范围的贸易记录。以此为基础,可采用3 种方案对贸易记录进行打包成区块:全部打包tinter之前的贸易记录;全部打包在[tinter,tconn]范围的贸易记录;混合打包以上2 种贸易记录。第一种和第三种方案在网络重联通时,由于较长的时延,有极大的可能性导致该块不能被追加到区块链主链上,虽然浪费算力,但能获取到挖矿的奖励。第二种方案在网络重联通时以附链的方式追加到主链,由于该挖矿属于区域内的活动,没有挖矿奖励,但收取贸易记录内声明的贸易手续费。
图3 附链及修改后的区块数据结构
区域vi内节点将贸易记录按图3 修改后的区块数据结构进行打包成区块,将区块标识位置1,说明该块是网络处于非联通状态时挖掘出来的,且附加到主链上。将区块标识位置0,说明该块是网络联通状态下挖掘出来的,参与全网区块共识,确定是否追加到主链上,如果在网络非联通情况下将区块标识位置0,则由于网络中断时延,有很大的可能性导致该块不能被追加到主链上。网络非联通情况下,父哈希值数据来源于网络中断时本地区块链最后一个区块的哈希值。挖矿难度可以依据区块链更新难度的方式,从网络中获取。
附链区块挖掘是在容迟网络非联通阶段内由局域网内部节点进行的区块生成的活动,与比特币网络挖矿方法相同。在图3 所示的区块数据结构下,在一次非联通阶段只能生成一个区块,因此需要依据上一次挖矿时间对挖矿难度进行动态调整。挖矿难度计算方法为
其中,BDIFF 是当前的挖矿难度;BMAX 是初始数值;BT 是当前挖矿的目标值;TA 是全网平均挖矿时间,即块生成时间(当前比特币网络块生成时间约为10 min);TI 是网络非联通时间;CA 是区块链网络平均算力;CI 是非联通网络节点的平均算力。运营商服务器负责管理vi内节点网络接入功能,可按照全网算力的测算方法统计出网内节点的平均算力CI,预估网络非联通时间TI,运营商服务器检测本次网络非联通时间内局域网节点挖矿的区块数(可通过需要共识的区块数确定),初始设置CI=CA、TI=TA,此时,局域网挖矿难度和全网一致,记录局域网节点挖出的第一个区块的时间,该时间为TI,统计出全网挖矿的平均时间TA 和平均算力CA,即可计算出CI 值。然后依据每次网络非联通时节点挖掘出的第一个区块的时间动态调整BDIFF 数值,运营商服务器在网络非联通时将该值广播到所在区域节点,区域内节点就按照此难度值进行挖矿。
网络非联通情况下的局域网共识机制与工作量证明类似,需要检查区块标识位是否置1,若非1 则放弃该块共识(即使是网络联通正常时挖掘出的区块,即区块标识位为0,也会因为共识节点比例不够而被放弃,从而浪费算力);检查难度设置是否与本地难度一致;按照工作量证明进行验证,需要注意的是,节点没有挖矿奖励,仅收取贸易处理手续费。网络非联通状态下附链区块共识算法可简述为:步骤①,验证区块标识,是否为网络非联通时生成的区块;步骤②,验证挖矿难度;步骤③,统计该区块被验证通过的次数(达到区块被全网节点验证通过的比例),具体如算法1 所示。
算法1网络非联通条件下附链区块共识算法
网络非联通状态下挖掘的区块可能存在2 个问题:1)区块造假,节点由于网络非联通状态下挖矿的难度较低,且参与共识的节点相对较少的特征,在网络联通时,私自传播区块,占用网络带宽且浪费算力;2)虚假贸易,用户利用贸易时延,超出账户余额进行贸易,例如用户John 账户余额为4 虚拟币,在网络联通时,John 将3 虚拟币给用户Bob,该贸易未追加到区块链主链中,在网络非联通时,John将2 虚拟币贸易给用户Alice,这2 条贸易均可能成功被记录到区块链。为了解决上述问题,在附链区块追加到主链时,需要进行确认共识。
网络非联通状态下经共识后的区块,暂时存储在局域网节点处,在网络联通时,每个节点将该区块广播到全网中。接收到该区块的节点,利用哈希函数计算该区块的哈希值,并临时存储在本地,按照预定的阈值,当接收相同哈希值的区块次数超过阈值时,认为该区块为非虚假区块,解决第一个问题。网络中的节点在检查区块真实性后,将该区块每条贸易发起人的账户余额与区块链账簿中该用户的账户余额进行对比,以确定该区块是否有虚假贸易,解决第二个问题。附链区块追加算法(即确认共识算法)可简述为:步骤①,验证区块标识;步骤②,验证同一区块验证次数;步骤③,验证区块内贸易记录,具体如算法2 所示。
算法2确认共识算法
评定区块链性能的基本属性包括持续性和安全性[15-16]。持续性保证了区块链服务的可用性,安全性保证了在同一时刻有且仅有一个区块能被节点接收。评定区块链性能的扩展属性为容错性,保证区块链服务可正常工作条件下,网络中容许恶意节点的比例。
定义1持续性。在每个时间段内,生成至少一个新的区块。
证明在区块链中,矿工将多条贸易记录打包成区块,以达到预期的收益。依据Btime,在一个时间单位内,会有多个贸易记录到达矿工节点。在τ内,贸易手续费满足的贸易被矿工打包,则生成下一个区块的时间为。因此,矿工通常在时间内生成一个新的区块。
证毕。
定义2安全性。在每个时间段内,即使由不同的矿工生成多个区块,也不会产生分支。
定义2 处于非联通状态下的容迟网络,假设标号为0~N的区块已经追加到区块链中,在下一个时间段内,遵守区块链协议的矿工会共识同一标号为N+1 的区块。
证明依据定义1,在标号为0~N的区块被追加至区块链后,在一个时间段内,有至少一个标号为N+1 的区块由矿工生成。在新区块生成的同时,矿工会将该区块立刻广播到网络中,而在有限时间内,该区块就会被网络中其他节点接收到。假设节点i在t0时刻接收到该时间段内的第一个区块BN+1,则i在t0+τ时间内持续监听和接收其他区块。t0+τ时刻之后,依据算法1,i选择时间戳最小的区块作为标号为N+1 的区块加入到区块链中。
因为,一国的法律文化与一国的政治、经济相互交融。不同政治体制、经济发展道路的国家所表现的法律文化往往大相径庭,此时要直接通过法律文化变化的方式发起自主的法律趋同,不仅理论上不可能,实践上也难以进行。不过,法律文化的多样性是人类社会的基本特征,一国的法律文化也并非封闭、守旧的,文化的交流在“地球村”的背景下一直在进行,此时,若一国的法律文化在两国交流的过程中被他国理解、接受并认可,进而产生法律文化的借鉴与融合,致使一国的法律文化发生变化,则可能使原本拥有完全不同的政治、经济发展背景的国家自主地向经济发达国家趋同,甚至相互趋同。而这里的关键因素就在于法律的相互理解、接受、认可,即法律认同。
依据以上过程,网络中的节点都依据自己接收的新区块,确定标号为N+1 的区块,该区块的时间戳为TSN+1,且t−TSN+1>0,有式(2)所示密度计算式成立。
则有
在一段时间结束时,即t=TSN+1+τ时刻,标号为N+1 的区块被节点接收的概率为
由式(4)可以得到,当时间戳大于TSN+1的区块到来时,其监听持续时间t'要小于TSN+1+τ,依据概率论的置信区间原则,该区块被接收的概率降低,即
接收新区块的等待时间τ是影响区块被接收概率的关键参数,该参数可依据网络状态和实际需求进行动态调整,可取值为τ=12ω(以太坊区块链)或τ=12.6ω(比特币区块链),ω∈[1,10]。当ω=2时,时间戳为TSN+1的新块被接收的概率为0.865;当ω=6 时,时间戳为TSN+1的新区块被接收的概率为0.99。
证毕。
定义3容错性。在区块链网络中存在恶意节点的情况下,遵守区块链协议的节点也能将同一区块追加到区块链中。
定义3 处于非联通状态下的容迟网络,一定比例的恶意节点不会对新区块的追加造成影响。
证明基于区块链中节点不可信及以利益为驱动的事实,理性的恶意节点也是以获取更多收益为目标。根据定义2,一旦恶意节点较之其他节点先挖掘出区块,该节点会在第一时间将该区块广播到全网,以取得较大的接收概率,此时恶意节点不会有恶意行为,也不会对区块追加造成影响。反之,该节点会与其他恶意节点联合,以使挖掘的区块被接收。然而,遵守区块链协议的节点由于该区块时间戳较大而拒绝接收该区块。
当节点不确定接收到的区块来源是否是恶意节点时,节点可以向其他节点发送请求,以更新本地接收到的区块。如果被请求的节点中有遵守区块链协议的节点,则该节点能得到本时间段有最小时间戳的区块,从而保证恶意节点不会对该节点追加的新区块造成影响。
但存在一种极端情况,即节点发送更新区块请求时,其邻居节点均是恶意节点,此时,更新的区块是错误的,会影响新区块追加。假设区块链网络中的节点数量为O,恶意节点数量为Ω,则恶意节点的比例。设节点的邻居数量为H,则邻居节点均为恶意节点的概率Π的计算方法可简述为第一个邻居节点为恶意节点的概率为,第二个邻居节点为恶意节点的概率为,依次类推,第H个邻居节点为恶意节点的概率为,则有
依据网络实际需求,设最大可容纳恶意节点的比例为阈值σ,Π要满足不大于σ,即
在网络中,节点的邻居节点数量和网络中全部的节点数量的比值趋近于0,式(7)可以近似转换为
从式(8)可知,H越大时,Π越小,但H值影响设备的性能,即设备同时连接节点数是有限制的。当σ=1×10−6、平均邻居节点数为[10,20],网络中可以容纳的恶意节点比例为25%~50%。
证毕。
定义4能耗。能耗是指区块生成过程中的电力消耗。相比于PoW 方式,在全网范围内生成主链区块的能源消耗变化不大。在局域网范围内由于算力相对于全网来说是有限的,依据设计的挖矿难度动态调整算法,生成附链区块所消耗的电力较低。
定义5区块生成时间和确认时间。区块生成时间是指从贸易记录打包开始,直到区块被挖掘出来为止。确认时间是指从区块生成时刻算起到追加到区块链上为止。相比于PoW 方式,在全网范围内主链区块生成时间和确认时间变化不大。在局域网范围内依据挖矿难度动态调整算法,附链区块生成时间较短。但附链区块需要在局域网络联通时上传到全网其他节点进行确认共识,确认共识时间与PoW 一致,上传时间取决于网络带宽,因此,附链区块确认时间较PoW 长。
为了评估所提机制在网络非联通状态下的性能,利用PeerSim[18]模拟器建立P2P 网络环境用以运行区块链系统,并将该网格分割成多个封闭的P2P 子网络,每个子网络设置主路由节点模拟运营商服务器,主路由节点的工作方式是周期性地连接或断开局域网络,以模拟基站与卫星的工作方式。区块链运行协议为区块链协议,数据传输遵循TCP/IP(transmission control protocol/Internet protocol)。使用由10 台刀片式服务器组成的服务器集群作为硬件运行环境,每个刀片服务器的主要配置为2 颗Intel Xeon E5-2620 CPU,每颗包含8 核、16 线程、32 GB 内存。由这些服务器集群利用虚拟化方式生成1 000 个节点,每个节点的算力相同,初始区块生成时间为10 min,按照已有的矿机的收益和成本参数,设置区块中的虚拟货币(收益)和实际的美元(成本)的比值ζ的数量级为10−4,网络中断时间和网络联通时间的比值为0.5。依据文献[17,19],贸易到达速率符合参数为0.079(即比特币)的泊松分布。定义节点的收益率Brate为节点的收益和成本的比值,即
其中,Income 是挖矿获得贸易的处理费用,是一段时间内挖矿成功时获得的费用之和;Consume是付出的成本,包括电费、设备费等,是一段时间内无论挖矿是否成功都要付出的成本之和。节点打包贸易记录采用的方法有2 种:1)将每条贸易的处理费用按从高到低排序,选择前面的贸易记录打包;2)在1)的基础上,随机附加贸易处理费用低的贸易记录打包。
长时间运行的非联通网络区块链节点的收益率变化如图4 所示。从图4 中可以看出,节点的收益率在运行过程中是稳定的,这是由于节点能依据上次挖矿时确认共识的结果调整本次打包的记录个数,从而保证确认共识时需要的区块能成功广播到全网。当区块中的货币实际价格升高时,在保证收益的情况下,节点采取降低打包的贸易记录条数,减少区块的大小,较稳妥地获得该区块的收益。
图4 非联通网络区块链节点的收益率变化情况
图5 显示的是贸易个数和收益率之间的关系。贸易个数反映的是区块在非联通网络高带宽节点比例固定(25%)的情况下的大小,理论上讲,贸易个数越多,则获得的收益越大。但实际上,当贸易个数过多(区块较大)时,会在网络联通时没有足够的节点成功将该区块广播到全网中,导致算法2 中节点接收同一区块数达到阈值这一条件不能满足,致使该区块被放弃,不能获得收益。从图5 中可以看出,收益率随贸易记录数的增加存在最大值,该值之后的区块广播会存在一定的失败概率。当挖掘出来的区块大小和区块大小上限的比例超过75%时,区块广播成功率会急剧下降,导致负收益的情况发生。
图5 贸易个数的增加对收益率的影响
网络时延和难度级别的关系如图6 所示,其中纵坐标是调整后的挖矿难度与当前比特网挖矿难度的比值。网络时延和网络非联通时间相关,非联通时间越长,网络时延越大。依据一条附链只能附加一个区块的原则,当网络时延较大时,适当调整挖矿难度只能在同一网络非联通时段挖掘出一个区块。
图6 网络时延和难度级别的关系
在相同网络时延下,网络中恶意节点数量对区块生成时间的影响如图7 所示。当网络中恶意节点的比例分别为10%、25%、40%时,区块生成时间变化不大,也就是说,一定比例恶意节点的存在不会对贸易和区块生成造成很大的影响,这与定义3的结论相一致。
图7 恶意节点比例对区块生成时间的影响
目前的区块链只能在实时联通的网络环境下部署和进行贸易,但对诸如容迟网络的非实时联通网络提供支持却无能为力。本文研究了如何在容迟网络进行区块链贸易的问题。将容迟网络分为非联通和联通2 个状态,在非联通状态,修改了现有的区块数据结构,提出了附链的概念,详细介绍了附链的贸易记录打包成区块的方法,基于难度动态调整的附链区块的挖掘方法和基于标识位的区块共识方法;在网络联通状态,设计了防止区块造假和虚假贸易的确认共识方法。以理论分析和模拟实验为手段,分析了提出的容迟网络区块链贸易机制的有效性,使节点拥有较高的收益率。
鉴于采用PoW 工作方式的区块链在实际应用中具有明显缺陷,如能耗过高、贸易处理时间过长等,下一步工作从设计公平、安全和高效的矿工选择方法和附链分支处理方法出发,减少区块生成过程中无用的计算及降低区块的生成和确认时间。