一种轻量级区块链系统及构造方法与流程

文档序号:22578966发布日期:2020-10-20 16:54阅读:262来源:国知局
一种轻量级区块链系统及构造方法与流程

本发明属于计算机应用技术领域,尤其涉及一种轻量级区块链系统及构造方法。



背景技术:

区块链是随着比特币等数字加密货币的日益普及而逐渐兴起的一种去中心化的基础架构和分布式数据库技术,是以一种数据块链式结构的方式维护一个去中心化和去信任的可靠数据平台,其链式结构,可以维持持续增长的、不可篡改的数据记录。

区块链技术被认为是互联网发明以来最具颠覆的技术创新,它依靠密码方法确保数据安全、利用共识机制确保数据一致性、利用智能合约执行命令、利用p2p组网进行数据传输,使基于该技术的系统具有去中心化、不可篡改、分布式共识、可溯源和最终一致性等特点,以极低的成本解决了信任与价值的可靠传递问题,因此,区块链在数字经济、互联网、物联网、大数据和公共服务等诸多领域有非常广阔的应用前景。

目前应用最广泛地区块链系统包括以比特币、以太坊为代表的公有链系统和以超级账本(hyperledgerfabric)为代表的联盟链系统。在公有链系统中,不需要身份认证机制,任何人都可以加入到该网络并参与区块链网络的业务运行中,实现了真正意义上的完全去中心化;但是公有链系统网络面临着能耗高、效率低下、交易认证时间长、难以大规模落地应用等问题。在联盟链系统中,用户或组织需要拥有特定权限才能加入其中,参与业务运行和对区块链数据的读写维护,该系统将事务执行与共识分离开来,并支持基于策略的背书,拥有基于行业标准的身份管理集成;经过升级迭代的这类区块链系统拥有高吞吐、高并发、低延迟等优点,在遇到场景复杂、规模较大的区块链项目时可以应对自如,目前广泛应用于互联网、供应链金融、防伪溯源等场景下。

从以比特币、以太坊为代表的公有链,到以hyperledgerfabric为代表的联盟链的技术演进,通过对参与区块链网络的成员身份的限制管理,实现了某些应用场景下区块链系统性能的大幅提升。但是,不管联盟链还是公有链,现有成熟的技术应用依然过于庞杂,针对大型的、成千上万成员节点所设计的区块链网络必然对某一单独节点造成巨量的内存、处理器等资源消耗和数据存储负担;因此如何在轻量级的服务器上部署节点,并在几十到几百个轻量级节点上搭建一个安全、稳定、快速、高效的轻量级区块链系统,以满足一些业务量相对较少、对服务器性能要求不高且可快速方便部署的实际应用场景,是一个急需解决的问题。



技术实现要素:

为解决上述问题,本发明提出一种轻量级区块链系统及构造方法,针对在配置相对较低、业务逻辑不复杂的服务器上,搭建一个安全、稳定、快速、高效的轻量级区块链系统。

本发明的技术方案如下:

一种轻量级区块链系统,包括通过各节点设置的本节点对其它节点的信任度建立的一或多个群组,每一群组包含通过本群组各节点选举产生的一主节点在内的一或多个节点;各节点通过以下步骤进行交易及更新账本状态:

当属同一群组的两用户进行交易时,进行交易的两用户收到群组主节点的交易确认信息后,完成交易,同时群组主节点将交易信息及计算得到的账本状态预读写信息保存并广播至区块链系统中;

当属不同群组的两用户进行交易时,进行交易的两用户收到两个相应主节点发送的交易确认消息后,完成交易,同时两个相应主节点将交易信息及计算得到的账本状态预读写信息保存并广播至区块链系统中;

在一设定时间后,各主节点根据身份信息,竞争出块优先权;

各节点按照得到出块优先权的主节点的交易信息及账本状态预读写信息,更新账本状态。

进一步地,各节点设置的本节点对其它节点的信任度存储于一本地密钥环列表;本地密钥环列表包括该节点公钥、该节点身份信息、至少一个其他节点对该节点的认证签名和签名者id、该节点对系统其他节点与系统待认证节点的信任度、群组节点参与新主节点选举的优先级。

进一步地,一或多个群组内包含至少一个从节点,用以协助主节点维护全局账本状态和区块数据信息。

进一步地,交易信息包括交易时间、交易发起者、交易接受者、交易发起者对交易的签名信息及交易数据。

进一步地,当属同一群组的两节点进行交易时,群组主节点通过以下步骤将交易信息及计算得到的账本状态预读写信息保存并广播至区块链系统中:

1)获取并验证交易信息;

2)模拟执行合法交易,得到交易确认信息及账本状态预读写信息;

3)将交易确认信息返回至进行交易的两用户;

4)将交易信息及账本状态预读写信息保存并广播至区块链系统中。

进一步地,通过检查交易签名信息、交易发起者账户状态以及是否双花,验证交易信息的合法性。

进一步地,将交易信息及账本状态预读写信息保存在本地交易池中,并建立交易的索引。

进一步地,当属不同群组的两用户进行交易时,两个相应主节点通过以下步骤将交易信息及计算得到的账本状态预读写信息保存并广播至区块链系统中:

1)交易发起者对应的主节点获取交易信息,并将验证成功的交易信息发送至交易接受者对应的主节点;

2)交易接受者对应的主节点验证交易信息的合法性,模拟执行合法的交易,并将获取的交易第一确认信息保存并分别发送至进行交易的两节点及交易发起者对应的主节点,将账本第一状态预读写信息保存并发送至交易发起者对应的主节点;

3)交易发起者对应的主节点模拟执行交易,获取交易第二确认信息及账本第二状态预读写信息;

4)交易发起者对应的主节点将账本第二状态预读写信息与账本第一状态预读写信息进行比对,若比对成功,将交易第二确认消息发送至进行交易的两节点及交易接受者对应的主节点,将账本第二状态预读写信息保存为账本状态预读写信息;

5)交易接受者对应的主节点将账本第一状态预读写信息保存为账本状态预读写信息;

6)两个相应主节点分别将交易信息及账本状态预读写信息广播至区块链系统中。

进一步地,各主节点根据身份信息与一个随机种子计算哈希值,哈希值最大的主节点得到出块优先权。

一种轻量级区块链的构造方法,其步骤包括:

1)各节点通过本节点对其它节点信任度,在本地维护一信任列表;

2)通过信任列表,将所有节点分为一或多个群组;

3)每一群组选举一节点作为主节点;

其中,各节点通过以下步骤进行交易及更新账本状态:

当属同一群组的两用户进行交易时,进行交易的两用户收到群组主节点的交易确认信息后,完成交易,同时群组主节点将交易信息及计算得到的账本状态预读写信息保存并广播至区块链系统中;

当属不同群组的两用户进行交易时,进行交易的两用户收到两个相应主节点发送的交易确认消息后,完成交易,同时两个相应主节点将交易信息及计算得到的账本状态预读写信息保存并广播至区块链系统中;

在一设定时间后,各主节点根据身份信息,竞争出块优先权;

各节点按照得到出块优先权的主节点的交易信息及账本状态预读写信息,更新账本状态。

与现有技术相比,本发明具有以下优势:

1)根据节点的群组属性将交易分为群内交易和群间交易两种,然后按照不同的业务逻辑分别处理这两种交易类型并及时反馈处理信息;

2)本发明基于信任网络的设计了一种共识算法,以实现系统出块和分布式账本状态更新的安全快速高效。

附图说明

图1为轻量级区块链网络架构示例。

图2为密钥环结构。

图3为g1-leader密钥环部分内容。

图4为轻量级区块链共识机制示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅用于解释本发明,并不用于限定本发明。

本发明的轻量级区块链系统,基于密钥环(keyring)设计一种轻量易实现的基于公钥pki体系的信任网(weboftrust),用来构建整个区块链网络的信任基础和身份管理机制,赋予不同群组(group)和各群组内节点(peer)的身份和属性,比如各群组的leader节点和其他节点继承leader的优先级次序(为了某一leader节点宕机后,所属群组能方便的选出主节点来处理业务,本发明就在密钥环中设置了继承leader的优先级次序);不同节点建立信任之后,启动该区块链网络,所有节点按照该方案中的共识机制共同维护全局账本状态和区块链信息。本发明为提高交易的传播和处理速度,采用gossip通信协议来广播同步整个区块链网络的信息,并根据节点的群组属性将交易分为群内交易和群间交易两种,然后按照不同的业务逻辑分别处理这两种交易类型并及时反馈处理信息。

本发明的一个简单实例如图1所示,其技术方案有区块链身份认证、网络组织和交易形式、共识机制三个方面,group为群组,t1…tn为n次共识的时间点,block为区块具体阐述如下:

一、区块链身份认证方面

本发明采用一种基于密钥环的信任网络(weboftrust)作为该轻量级区块链系统的身份认证机制,其基本思想就是区块链网络中的每个节点按照信任程度相互认证签名,并且每个peer节点都会在本地维护一个密钥环(keyring)列表作为基本组件来建立网络的信任基础,该列表中包含了网络中各个节点对其他节点的信任签名和信任程度,同时为了快速地对成员节点的身份进行识别,该密钥环中也会包含各节点的基本身份信息(如id、通信地址和所属群组等相关属性)。一个简单的密钥环实例结构如图2所示。其基本内容如下:

·publickey:该节点的公钥;

·userid:该节点的身份信息;

·signatures:包含一个或多个节点对该节点的认证签名和签名者id,至少要包括该节点对自己公钥的签名信息,其他节点可以添加他们的签名以认证该peer节点的公钥。

·ownertrust:节点对公钥拥有者(peer)信任度,按照信任的程度可以设为ultimate、complete、unknown三个值。其中ultimate为最高信任级,用于节点对区块链网络中的leader节点以及同一群组的节点间相互设置的信任值;complete为节点给其他群组的节点(除leader外)设置的信任值;unknown用于给将要加入网络等待认证的节点、网络中非活跃节点或不信任节点设置的信任值;

·leader-inherit:一个整数,只能由leader节点设置,代表同一群组的leader节点宕机后,该群组其他peer节点参与新leader选举的优先级,其值可为1~n或none,其中值越小表示优先级越高,none表示该节点不是本群组成员。

以图1中group1的leader节点为例,其密钥环的部分内容如为图3所示:其中第一部分(标记1)为群组g1的leader自身相关信息,第二部分为群组g1内的peer1节点在该密钥环中的信息(如继承leader的优先级、对g1-leader的信任签名和信任度);以此类推,第三、四、五部分为其他群组内的leader或peer节点对g1-leader的信任签名和信任度等相关信息。

由上述内容知,peer节点可以方便快速的从密钥环中获得其他节点的相关信息(身份、所属群组、信任等级等),从而进行节点或群组间的相关业务操作。

二、网络组织和交易形式方面

为减少参与共识的节点数量以简化共识流程和缩短共识时间,同时尽量减少通信的复杂度、网络开销,本发明提出了群组(group)的概念,即部分节点基于信任或其他因素可以组建成一个群组,然后不同群组共同构建并维护该轻量级区块链网络;每个群组按照相应规则选出一个主节点(leader),如某群组只包含一个节点,那么该节点将默认为该群组的leader节点,leader节点的主要职责包括:

1)各群组之间的网络通信;

2)定时向群组内其他节点发送live(活跃消息,表示该节点在正常工作,下同)信息;

3)处理交易,每笔交易的确认必须要有交易双方所在群组的leader节点的签名确认;

4)本地维护一个交易池信息,为方便检索交易,每笔成功的交易都会计算出一个哈希(hash)值作为索引;

5)维护全局账本状态和区块数据信息,并将其同步给群组内其他节点;

6)基于密钥环维护本群组对其他群组的信任关系,同群组内节点对其他节点的信任关系和身份等相关信息。

在该轻量级区块链系统中,每个leader节点都需要维护一个全局账本状态和区块链信息,为避免leader节点宕机给group群组带来的损失,group组内的其他节点将承担起follower(从节点)的角色,从而和群组内leader节点一起保存该轻量级区块链网络的全局状态数据,并在leader宕机的情况下,发起并参与新的leader节点选举,使新的leader节点参与到网络的共识机制中以维护网络的正常运行。

同时,为快速高效的处理该轻量级区块链网络中的交易,本发明提出群内交易和群间交易两种不同类型的交易方式,即根据交易双方是否为同一个群组的成员来决定交易处理的业务逻辑,以便快速的处理交易。本发明使用tx(ts,sed,rev,sig,data)表示一笔交易,其中ts代表leader确认交易所处的时间,sed为当前交易的发起者,rev代表该交易的接受者,sig为交易发起者对该交易的签名信息,data表示交易相关数据,同时将系统进行前后邻近的两次共识时间间隔成称为一个period。period的大小由系统处理交易的吞吐量决定,系统交易频繁时,可调小period的值以避免区块臃肿,当系统交易量小时,可将period值调高以使区块能包含足够量的交易。

群内交易即同一个群组内节点所管理用户之间进行的交易,该交易的处理更类似于中心化的处理方式,如群内用户useri发起一笔交易tx(n,useri,userj,sig,data)给群内用户userj,peer节点收到用户发起的该笔交易后,将该交易信息直接转发给leader节点,leader节点接收到交易信息后首先对该交易的合法性进行确认(检查交易签名、useri的账户状态、是否双花等信息),然后模拟执行该交易并将结果和交易信息保存下来,最后对账户状态的变更做一次预读写并将交易确认消息返回给用户双方(确认消息会包含leader节点的签名信息,对交易进行一次背书,等该period结束并确认出块后即为完全确认该消息)。交易用户双方在收到交易确认信息后,可向leader节点查询交易结果,并根据交易结果改变交易用户双方的账户状态。leader节点在将交易确认消息返回给用户双方的同时,将交易相关消息广播至其他group群组(为了减少系统通信量,可以将该消息直接广播到不同群组的leader节点,然后leader节点将该消息广播至同一群组其他节点);否则,如果leader节点发现交易不合法,则直接给用户发送交易失败消息。

群间交易指不同群组所管理的用户之间进行的交易,如群组gk内的用户useri发起一笔交易tx(n,gk-useri,gm-userj,sig,data)给群组gm内用户userj,群组gk的leader节点收到交易后,首先确认该交易的合法性,确认合法之后再将该交易转播给群组gm的leader节点进行合法性检查(转播的信息包含gk-useri在periodn中因群内交易产生的账本状态的预读写信息以确保两个群组的leader节点对交易双方的基本信息达成一致),gm的leader节点将结合本地的账本状态和接收的转播信息对交易信息进行检查,检查通过后模拟执行该交易并将结果和交易信息保存,并对账户状态的变更做一次预读写,然后签名交易确认消息发送给用户和群组gk的leader节点,gk的leader节点再次模拟执行该交易,对交易引起的相关状态变更和gm-leader发来的信息比对,如果产生的结果一致,则签名交易确认信息给用户并转发给gm-leader以完成本次交互,最后两个leader节点将该交易广播到网络中;对于群组间交易来说,用户必须要收到两个leader节点的签名确认才可认为交易得到初步确认,当然,最终的结果必须等到periodn结束并出块后才能确认。否则,在交易过程中任何环节出现问题(如两个leader节点模拟交易的结果不匹配),本次交易将被丢弃。

三、共识机制方面

本发明所采用的共识算法如图4所示,以下主要从两方面内容阐述:

1)leader节点选举:在该轻量级区块链网络初始化过程中,leader节点由群组内节点推举信任度最高的节点担任,然后leader节点再根据对群组内其他节点的信任度,指定其在宕机后的leader继承次序,并将其写入密钥环的leader-inherit信息中,同步给网络中的其他节点,以此作为该leader节点宕机后的群组内其他节点继承优先级;如leader节点宕机,其他节点将通过gossip通信协议发送重新选举leader的消息并投票给该节点所能联系到的优先级最高的节点,当剩余活跃节点中优先级次序较高的节点接收到超过2/3的投票后,将主动承担起leader的责任并向其他节点发送live信息,意味着新leader节点选举成功。但是如果只是单个节点因为网络原因接收不到leader的live信息,那么其发出的重新选举消息将被其他能连接到leader的节点拒绝,以避免发起错误的选举操作。需要说明的是,继承次序指的是选举leader时的优先级,并不是说leader宕机后就按照次序继承leader,这么做主要是为了防止继承优先级最高的节点和leader一起宕机时造成网络故障;或者因为继承优先级最高的节点因自身网络原因在失去和leader的通信后,错误的承担起leader角色并向其他节点发送live信息造成系统紊乱;或者继承优先级最高的节点在该区块链网络中不活跃,并没有积极承担起follower的角色;这样就能从某种程度上保证该区块链网络的公平性和活跃度。

2)为使设计的区块链系统达到快速高效的要求,本发明将采用分布式账本管理和系统区块生成两个过程解耦的方法,具体过程如下:在一个period时期内,各个群组的leader节点按照上文所述的群内交易和群间交易处理该区块链系统的交易逻辑,并将处理的交易通过gossip协议广播至其他群组的leader节点处,leader节点会根据收集到的成功交易对本地账本进行一次预读写,以便在下次共识之前检查交易双方的账户状态是否合法;同时,每个leader节点会维护一个交易信息池以存放某一period时期所收集的交易信息;为使处理的交易便于查找比对,交易处理成功后leader节点会对交易信息计算hash值,以便可以在交易池快速的查找交易;leader节点也可以从其他群组的leader节点处拉取其收集或处理的交易信息;当periodn时间点到时,各群组leader节点使用一个随机函数产生随机串seed,在seed后拼接上自己的身份信息后计算哈希值得到一个特殊值作为竞争出块的依据(方便起见,该值用h-value表示),并将h-value和交易池中该时间段收集的交易hash值索引(为减小通信量,无需广播交易的具体信息)一起广播至其他leader节点,leader节点将根据比对的h-value大小决定账本状态变更和出块的优先权(之所以要对seed计算hash值,是要避免节点多次调用随机函数以得到具有较高优先级的值,这里的hash值只是作为一个出块权的参考,并不涉及系统安全性,因此为不浪费计算资源可使用计算快速的hash算法,如sha1);leader节点接收到其他leader节点的出块信息后,比对接受的所有h-value值大小,确定出块的优先权;如节点leadern拿到出块优先权,其他节点将自己交易池收集的交易索引同leadern处发送的交易对比,将leadern中在periodn内没有收集到的交易的完整信息发送给leadern;节点leadern接收到其他节点发来的信息后,将未被包含的交易模拟执行并写入账本状态,然后将交易按时序打包出块,并将blockn和本period时间内账本状态更新信息广播至网络中其他节点;最后,网络中其他节点将根据leadern发送的区块和账本信息更新本地的区块链网络状态并完成此次共识。

由于每笔交易都会经过交易双方所在群组leader节点的验证背书,所以已经处理交易顺序对账本变更并不会有影响,但会影响系统区块的信息,在该系统中解耦账本变更和出块过程将大大减少共识的步骤和时间,如竞争出块的过程,只需各群组的leader节点进行一次交互就可确定。为防止leader节点在共识过程中宕机(以leaderm为宕机例),系统将在periodn结束的时间点tn触发timeout计时,如在timeout结束时刻仍未收到leaderm的反馈信息,leadern将直接进入最后出块环节;leaderm中在periodn中未被包含进区块的交易将被迫丢弃;所以,为避免leader节点宕机引起的损失,需要leader节点及时地将其处理的交易通过gossip通信协议广播出去。

如果拿到最高出块权的节点在广播出去其hash值后宕机,那么系统其他leader节点将在timeout结束之后再次按照共识算法的逻辑进行区块共识,只是为快速达成共识,不需要再次生成seed和相应hash值。

本发明所设计的轻量级区块链系统基于各节点间的信任关系建立,因此在拜占庭共识系统中面临的节点串谋、欺骗等问题在本发明中不做讨论,本发明的共识算法将只考虑节点的宕机问题。

本发明的描述是为了示例和描述起见而给出的,并不是无遗漏的或者将本发明限于所公开的形式。显然,本领域的普通技术人员可以对本发明的示例进行各种改动和变形而不脱离本发明的精神和原则。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1