一种区块链的节点处的消息处理方法、装置及系统与流程

文档序号:11778514阅读:335来源:国知局
一种区块链的节点处的消息处理方法、装置及系统与流程

本公开一般涉及通信技术,具体涉及区块链技术,尤其涉及一种区块链的节点处的消息处理方法、装置及系统。



背景技术:

区块链是一种新型去中心化协议,能安全地存储交易数据,信息不可伪造和篡改,可以灵活的发布并执行智能合约,无需任何中心化机构的审核。交易既可以是类似比特币这样的数字货币,也可以是债权、股权、版权等数字资产,区块链技术解决了拜占庭将军问题,大大降低了现实经济的信任成本与会计成本,重新定义了互联网时代的产权制度。

在现有的区块链技术中,所使用的节点是集业务逻辑处理和数据存储为一体的。用户的业务逻辑处理服务是发布到区块链的验证节点(vp)上的,类似智能合约的可编程代码(cc)。而每一个cc都对应一个唯一的id,客户端(client)想要执行操作时,必须拿到这个唯一的id(标识)。并且在区块链上落账的时候,也会使用这个唯一的id当做key(密钥),来保存这个cc所有业务逻辑处理的结果。

在区块链中,所有业务逻辑相关的数据都保存在世界状态中。bucket-tree(桶树)是世界状态的组织方式的实现。为了下面描述的目的,世界状态的key(密钥)被表示成两个组件(cc的idandckey)的通过nil(无值)字节的级联,如:key=ccid+nil+ckey。ckey是由用户自定义的key加上区块链的规则生成的,而ccid是在落账时,由框架自动拼接的。因此,cc的业务逻辑发生改变,ccid随之发生改变,就会导致之前版本的数据无法获取。

下面结合图1对消息处理的流程进行说明,首先是由vp启动,提供监听客户端请求、共识交易以及操作账本的服务。接着客户端发起在vp中部署cc的请求,由vp创建docker(一个开源的应用容器引擎)容器,并在容器中启动cc,提供业务处理的服务。在每发起一笔交易(tx)时,客户端要拿到所要操作的cc的id和其中一个vp建立连接,然后发送到vp;再由vp节点传输到cc进行业务逻辑处理。最后由cc反馈到vp,再由vp传达给客户端。

因此,当cc的业务逻辑发生改变时,就需要重新发布新的一个cc1。客户端也需要通过重装或者更新来更改自己所要连接的cc1的id1,并且想要读取上一个版本的cc的数据时,也是难以实现的。

可见,当cc的代码发生改变时,客户需要频繁的修改配置文件中的ccid,并且需要卸载重新安装;cc代码的发生改变重新发布后,之前保存的数据会丢失,造成业务缺失,严重影响已上线版本的使用;当cc代码中的数据库字段或者业务逻辑发生改变后,还可能会导致未升级的客户端功能异常,不能正常使用。



技术实现要素:

鉴于现有技术中的上述缺陷或不足,期望提供一种区块链的节点处的消息处理方法、装置及系统,以提高业务逻辑发生改变时的用户体验。

第一方面,本发明实施例提供一种区块链的节点处的消息处理方法,所述方法包括:

代理业务逻辑处理服务实体接收客户端发送的待处理消息;

代理业务逻辑处理服务实体将所述待处理消息转发至业务逻辑处理服务实体,由所述业务逻辑处理服务实体处理所述待处理消息。

进一步,所述代理业务逻辑处理服务实体将所述待处理消息转发至业务逻辑处理服务实体,由所述业务逻辑处理服务实体处理所述消息,具体包括:

所述代理业务逻辑处理服务实体根据所述待处理消息中的版本信息,将该待处理消息转发至相应的业务逻辑处理服务实体,由相应的业务逻辑处理服务实体处理所述消息。

更进一步,所述根据所述待处理消息中的版本信息,将该待处理消息转发至相应的业务逻辑处理服务实体,具体包括:

根据所述待处理消息中的版本信息,确定所述待处理消息的业务逻辑处理服务标识;

将所述待处理消息转发至所述业务逻辑处理服务标识对应的业务逻辑处理服务实体。

优选的,其特征在于,所述业务逻辑处理服务实体处理所述待处理消息,具体包括:

所述业务逻辑处理服务实体从数据库实体中读写数据,并对所述待处理消息进行处理。

进一步,所述代理业务逻辑处理服务实体、业务逻辑处理服务实体和数据库实体均集成设置在验证节点中。

第二方面,本发明实施例提供一种区块链的节点处的消息处理装置,所述装置包括:

接收单元,用于接收客户端发送的待处理消息;

转发单元,用于将所述待处理消息转发至业务逻辑处理服务实体,由所述业务逻辑处理服务实体处理所述待处理消息。

进一步,所述转发单元具体用于:

根据所述待处理消息中的版本信息,将该待处理消息转发至相应的业务逻辑处理服务实体,由相应的业务逻辑处理服务实体处理所述消息。

更进一步,所述转发单元根据所述待处理消息中的版本信息,将该待处理消息转发至相应的业务逻辑处理服务实体,具体包括:

根据所述待处理消息中的版本信息,确定所述待处理消息的业务逻辑处理服务标识;

将所述待处理消息转发至所述业务逻辑处理服务标识对应的业务逻辑处理服务实体。

第三方面,本发明实施例提供一种区块链的节点处的消息处理系统,该系统包括:代理业务逻辑处理服务实体和业务逻辑处理服务实体,其中

代理业务逻辑处理服务实体,用于接收客户端发送的待处理消息,将所述待处理消息转发至所述业务逻辑处理服务实体;

业务逻辑处理服务实体,用于接收所述代理业务逻辑处理服务实体转发的待处理消息,并处理所述待处理消息。

进一步,所述代理业务逻辑处理服务实体具体用于:

接收客户端发送的待处理消息,根据所述待处理消息中的版本信息,将该待处理消息转发至相应的业务逻辑处理服务实体。

更进一步,所述代理业务逻辑处理服务实体根据所述待处理消息中的版本信息,将该待处理消息转发至相应的业务逻辑处理服务实体,具体包括:

根据所述待处理消息中的版本信息,确定所述待处理消息的业务逻辑处理服务标识;

将所述待处理消息转发至所述业务逻辑处理服务标识对应的业务逻辑处理服务实体。

优选的,还包括数据库实体;

所述业务逻辑处理服务实体处理所述待处理消息,具体包括:

所述业务逻辑处理服务实体从数据库实体中读写数据,并对所述待处理消息进行处理。

进一步,所述代理业务逻辑处理服务实体、业务逻辑处理服务实体和数据库实体均集成设置在验证节点中。

第四方面,本发明实施例提供一种设备,包括处理器和存储器;其特征在于:

所述存储器包含可由所述处理器执行的指令以使得所述处理器执行:

接收客户端发送的待处理消息;

将所述待处理消息转发至业务逻辑处理服务实体,由所述业务逻辑处理服务实体处理所述待处理消息。

第五方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序用于:

接收客户端发送的待处理消息;

将所述待处理消息转发至业务逻辑处理服务实体,由所述业务逻辑处理服务实体处理所述待处理消息。

本发明实施例提供一种区块链的节点处的消息处理方法、装置及系统,对于每个区块链的节点,均设置有代理业务逻辑处理服务实体,该代理业务逻辑处理服务实体接收客户端发送的待处理消息,并将待处理消息转发至业务逻辑处理服务实体,由业务逻辑处理服务实体处理待处理消息,由于代理业务逻辑处理服务实体的标识是不根据版本改变的,所以不需要在业务逻辑改变时,因为业务逻辑处理服务实体标识的改变而修改客户端,提高了用户体验。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1为现有技术中区块链的节点的结构示意图;

图2为本发明实施例提供的区块链的节点处的消息处理方法流程图;

图3为本发明实施例提供的区块链的节点的结构示意图;

图4为本发明实施例提供的区块链的节点处的消息处理装置结构示意图;

图5为本发明实施例提供的区块链的节点处的消息处理系统结构示意图;

图6为本发明实施例提供的较佳的区块链的节点处的消息处理系统结构示意图;

图7为本发明实施例提供的适于用来实现本申请实施例的设备的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

请参考图2,本发明实施例提供的区块链的节点处的消息处理方法包括:

步骤s201、代理业务逻辑处理服务实体接收客户端发送的待处理消息;

步骤s202、代理业务逻辑处理服务实体将待处理消息转发至业务逻辑处理服务实体,由业务逻辑处理服务实体处理待处理消息。

由于每个区块链的节点,均设置有代理业务逻辑处理服务实体,该代理业务逻辑处理服务实体接收客户端发送的待处理消息,并将待处理消息转发至业务逻辑处理服务实体,由业务逻辑处理服务实体处理待处理消息,由于代理业务逻辑处理服务实体的标识是不根据版本改变的,所以不需要在业务逻辑改变时,因为业务逻辑处理服务实体标识的改变而修改客户端,提高了用户体验。

应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

进一步,通过本发明实施例提供的方法,可以使得多个业务逻辑并存,当多个业务逻辑并存时,客户端发送的待处理消息中携带有自身业务逻辑对应的版本号,代理业务逻辑处理服务实体根据版本号将该待处理消息转发至相应的业务逻辑处理服务实体,此时,步骤s202中,代理业务逻辑处理服务实体将待处理消息转发至业务逻辑处理服务实体,由业务逻辑处理服务实体处理消息,具体包括:

代理业务逻辑处理服务实体根据待处理消息中的版本信息,将该待处理消息转发至相应的业务逻辑处理服务实体,由相应的业务逻辑处理服务实体处理消息。

更进一步,根据业务逻辑处理服务实体的寻址方式,是需要根据业务逻辑处理服务标识进行业务逻辑处理服务实体的寻址的,此时,根据待处理消息中的版本信息,将该待处理消息转发至相应的业务逻辑处理服务实体,具体包括:

根据待处理消息中的版本信息,确定待处理消息的业务逻辑处理服务标识;

将待处理消息转发至业务逻辑处理服务标识对应的业务逻辑处理服务实体。

优选的,还可以进一步把数据库独立于业务逻辑处理服务实体设置,以便于业务逻辑处理服务实体不受版本限制的读写所需要的数据,此时,业务逻辑处理服务实体处理待处理消息,具体包括:

业务逻辑处理服务实体从数据库实体中读写数据,并对待处理消息进行处理。

数据库实体独立于业务逻辑处理服务实体设置以后,数据库实体使用其单独的ccid(业务逻辑处理服务标识),所有业务逻辑处理服务实体均使用数据库实体的ccid对数据库实体进行读写,当业务逻辑发生改变时,仅是业务逻辑处理服务实体发生改变,或者改变业务逻辑处理服务实体的ccid,或者增加新的业务逻辑处理服务实体,数据库实体及数据库实体的ccid并不发生改变,所以各个业务逻辑处理服务实体均可以对数据库实体中的所有数据进行读写。

本发明实施例中的代理业务逻辑处理服务实体、业务逻辑处理服务实体和数据库实体的连接关系如图3所示,本发明实施例中的代理业务逻辑处理服务实体、业务逻辑处理服务实体和数据库实体均可以集成设置在验证节点中,也可以独立于验证节点设置。

在区块链中,每个节点发起的业务逻辑上的请求,可以称为交易。当一个节点发起一笔交易的时,都会广播(transaction)到网络中的所有节点。此时,消息中附带的有自己的节点编号、消息的内容、消息的编号(标识执行消息数量的自增序列)、自己的私钥以及对上述三部分的签名和摘要。当其他节点收到该广播时,会先验证签名是否正确。如果正确,接着会验证摘要是否正确。上述两个验证都执行通过时,会判断自己是否收到过该节点编号发过来的同样消息编号的消息。如果有,则判断摘要是否相同,不同则不执行;如果没有,则执行该交易,并执行写账本操作。

首先由客户端发起一笔交易到vp(验证节点),然后由vp通过cc的内部调用传输到代理cc(业务逻辑处理服务实体),再由代理cc根据版本号通过cc的内部调用传达给相应的cc。接着cc再通过cc的内部调用数据库(db)去进行数据的读写操作。最后,调用再逐层返回到vp,由vp对客户端的请求给出相应,进而完成整笔交易。

由于最外层的代理cc只做交易转发,不牵涉到任何和业务逻辑相关的功能,不需要重新发布。因此,客户端在发起交易时,所使用的配置文件中的ccid就不用更改。给迭代开发中的客户端提供了很大的方便,使客户端不必因cc业务逻辑的更改或者问题的修复而频繁的修改配置文件中的ccid。

由于数据库实体只提供读写操作,和业务逻辑没有任何关系,因此也不需要重新发布。这样数据库实体是固定的,因此,数据库实体的id也是固定的,任何版本的cc操作的结果也是可以读取到的。

由于有外层的代理cc做转发,可以在代理cc中把版本号和业务逻辑的ccid做映射,实现多版本业务逻辑的cc并存。

本发明实施例还相应提供一种区块链的节点处的消息处理装置,该装置可以具体为代理业务逻辑处理服务实体,如图4所示,该装置包括:

接收单元401,用于接收客户端发送的待处理消息;

转发单元402,用于将待处理消息转发至业务逻辑处理服务实体,由业务逻辑处理服务实体处理待处理消息。

进一步,转发单元402具体用于:

根据待处理消息中的版本信息,将该待处理消息转发至相应的业务逻辑处理服务实体,由相应的业务逻辑处理服务实体处理消息。

更进一步,转发单元402根据待处理消息中的版本信息,将该待处理消息转发至相应的业务逻辑处理服务实体,具体包括:

根据待处理消息中的版本信息,确定待处理消息的业务逻辑处理服务标识;

将待处理消息转发至业务逻辑处理服务标识对应的业务逻辑处理服务实体。

应当理解,该装置中记载的诸单元或模块与参考图2描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于该装置及其中包含的单元,在此不再赘述。该装置可以预先实现在电子设备的浏览器或其他安全应用中,也可以通过下载等方式而加载到电子设备的浏览器或其安全应用中。该装置中的相应单元可以与电子设备中的单元相互配合以实现本申请实施例的方案。

本发明实施例还提供一种区块链的节点处的消息处理系统,该系统可以具体为验证节点中的各个实体系统,如图5所示,该系统包括:代理业务逻辑处理服务实体501和业务逻辑处理服务实体502,其中

代理业务逻辑处理服务实体501,用于接收客户端发送的待处理消息,将待处理消息转发至业务逻辑处理服务实体;

业务逻辑处理服务实体502,用于接收代理业务逻辑处理服务实体转发的待处理消息,并处理待处理消息。

进一步,代理业务逻辑处理服务实体501具体用于:

接收客户端发送的待处理消息,根据待处理消息中的版本信息,将该待处理消息转发至相应的业务逻辑处理服务实体。

更进一步,代理业务逻辑处理服务实体502根据待处理消息中的版本信息,将该待处理消息转发至相应的业务逻辑处理服务实体,具体包括:

根据待处理消息中的版本信息,确定待处理消息的业务逻辑处理服务标识;

将待处理消息转发至业务逻辑处理服务标识对应的业务逻辑处理服务实体。

优选的,如图6所示,该系统中还包括数据库实体503;

此时,业务逻辑处理服务实体502处理待处理消息,具体包括:

业务逻辑处理服务实体从数据库实体503中读写数据,并对待处理消息进行处理。

进一步,代理业务逻辑处理服务实体501、业务逻辑处理服务实体502和数据库实体503均集成设置在验证节点中。

下面参考图7,其示出了适于用来实现本申请实施例的设备的结构示意图。

如图7所示,该设备包括中央处理单元(cpu)701,其可以根据存储在只读存储器(rom)702中的程序或者从存储部分708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。在ram703中,还存储有节点操作所需的各种程序和数据。cpu701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。

以下部件连接至i/o接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。

特别地,根据本公开的实施例,上文参考图2描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行图2的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括xx单元、yy单元以及zz单元。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,xx单元还可以被描述为“用于xx的单元”。

作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本申请的公式输入方法。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

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