在区块链中部署和调用合约的方法和装置与流程

文档序号:26142299发布日期:2021-08-03 14:27阅读:118来源:国知局
在区块链中部署和调用合约的方法和装置与流程
本申请为2020年10月28日提交的申请号为202011176391.4,名为“在区块链中部署和调用合约的方法和装置”的发明专利申请的分案申请。本说明书实施例涉及区块链
技术领域
,更具体地,涉及一种在区块链中部署合约的方法和装置、以及一种在区块链中调用合约的方法和装置。
背景技术
:区块链技术也被称之为分布式账本技术,是一种去中心化的分布式数据库技术,其特点是去中心化、公开透明、不可篡改、可信任。区块链的每笔交易,都会广播到全网的区块链节点,每个全节点都有全量的、一致的数据。在联盟链中,通常,用户终端通过区块链平台使用区块链进行业务处理,例如存证、转账等处理。然而,在单条链的场景下,长时间的运行积累大量的存储数据,并且账户规模越来越大,使得该单条链的处理能力下降。另外,在并发交易较多的时段(例如双十一时段),单条链的访问压力增大,使得单条链的处理不能满足业务需求。技术实现要素:本说明书实施例旨在提供一种更有效的在区块链中部署和调用合约的方案,以解决现有技术中的不足。为实现上述目的,本说明书一个方面提供一种在区块链系统中部署合约的方法,所述区块链系统中包括n个相互独立的区块链,所述方法包括:接收用于部署第一合约的第一请求;基于预定规则确定第一合约与所述n个区块链中的第一区块链相对应;向所述第一区块链发送第一交易,以将所述第一合约部署到所述第一区块链中。在一种实施方式中,所述方法还包括,在基于预定规则确定第一合约与所述n个区块链中的第一区块链相对应之后,记录所述第一合约与所述第一区块链的对应关系。在一种实施方式中,记录所述第一合约与所述第一区块链的对应关系包括,记录所述第一合约的唯一标识与所述第一区块链的对应关系。在一种实施方式中,所述第一合约的唯一标识为发送所述第一请求的账户和所述第一合约的名称的组合。在一种实施方式中,所述方法由区块链平台执行,所述区块链平台与所述n个区块链分别连接,其中,接收用于部署第一合约的第一请求包括,接收用于部署第一合约的第一交易。在一种实施方式中,所述方法还包括:接收用于部署第二合约的第二请求,所述第二请求中包括所述第二合约与所述第一合约的关联信息;基于所述第一合约与所述第一区块链的对应关系,确定第二合约与所述第一区块链相对应;向所述第一区块链发送第二交易,以将所述第二合约部署到所述第一区块链中。在一种实施方式中,所述方法还包括,在基于预定规则确定第一合约与所述n个区块链中的第一区块链相对应之后,获取所述第一合约的地址,所述第一合约的地址的预定位用于指示所述第一区块链。在一种实施方式中,所述第一请求由第一账户发送,所述基于预定规则确定第一合约与所述n个区块链中的第一区块链相对应包括,基于第一预定规则确定第一合约与所述n个区块链中的m个区块链相对应,基于第二预定规则确定所述第一账户与所述m个区块链中的第一区块链相对应。在一种实施方式中,所述方法还包括,在基于第二预定规则确定所述第一账户与所述m个区块链中的第一区块链相对应之后,记录所述第一合约与所述m个区块链的第一对应关系,以及所述第一账户与所述第一区块链的第二对应关系,其中,所述第二对应关系与所述第一对应关系相关联。本说明书另一方面提供一种在区块链系统中调用合约的方法,所述区块链系统中包括n个相互独立的区块链,所述方法包括:接收用于调用第一合约的第三请求;确定第一合约与所述n个区块链中的第一区块链相对应;向所述第一区块链发送与所述第三请求对应的第三交易,所述第三交易中调用所述第一合约。在一种实施方式中,确定第一合约与所述n个区块链中的第一区块链相对应包括,通过读取预先记录的第一合约与所述n个区块链中的第一区块链的对应关系,确定第一合约与所述n个区块链中的第一区块链相对应。在一种实施方式中,所述第三请求中包括所述第一合约的地址,其中,确定第一合约与所述n个区块链中的第一区块链相对应包括,基于所述第一合约的地址中的预定位确定第一合约与所述n个区块链中的第一区块链相对应。在一种实施方式中,所述第一合约用于在所述第一区块链中进行存证,所述第三交易使得在执行之后在所述第一区块链中存入第一数据,所述方法还包括:在向所述第一区块链发送与所述第三请求对应的第三交易之后,从所述第一区块链接收所述第一数据的标识。在一种实施方式中,所述第一数据的标识为所述第三交易的标识。在一种实施方式中,接收用于调用第一合约的第三请求包括,接收用于调用第一合约的第三交易。本说明书另一方面提供一种在区块链系统中部署合约的装置,所述区块链系统中包括n个相互独立的区块链,所述装置包括:第一接收单元,配置为,接收用于部署第一合约的第一请求;第一确定单元,配置为,基于预定规则确定第一合约与所述n个区块链中的第一区块链相对应;第一发送单元,配置为,向所述第一区块链发送第一交易,以将所述第一合约部署到所述第一区块链中。在一种实施方式中,所述装置还包括,记录单元,配置为,在基于预定规则确定第一合约与所述n个区块链中的第一区块链相对应之后,记录所述第一合约与所述第一区块链的对应关系。在一种实施方式中,所述记录单元还配置为,记录所述第一合约的唯一标识与所述第一区块链的对应关系。在一种实施方式中,所述第一合约的唯一标识为发送所述第一请求的账户和所述第一合约的名称的组合。在一种实施方式中,所述装置部署于区块链平台,所述区块链平台与所述n个区块链分别连接,其中,所述第一接收单元还配置为,接收用于部署第一合约的第一交易。在一种实施方式中,所述装置还包括:第二接收单元,配置为,接收用于部署第二合约的第二请求,所述第二请求中包括所述第二合约与所述第一合约的关联信息;第二确定单元,配置为,基于所述第一合约与所述第一区块链的对应关系,确定第二合约与所述第一区块链相对应;第二发送单元,配置为,向所述第一区块链发送第二交易,以将所述第二合约部署到所述第一区块链中。在一种实施方式中,所述装置还包括,获取单元,配置为,在基于预定规则确定第一合约与所述n个区块链中的第一区块链相对应之后,获取所述第一合约的地址,所述第一合约的地址的预定位用于指示所述第一区块链。本说明书另一方面提供一种在区块链系统中调用合约的装置,所述区块链系统中包括n个相互独立的区块链,所述装置包括:第一接收单元,配置为,接收用于调用第一合约的第三请求;确定单元,配置为,确定第一合约与所述n个区块链中的第一区块链相对应;发送单元,配置为,向所述第一区块链发送与所述第三请求对应的第三交易,所述第三交易中调用所述第一合约。在一种实施方式中,所述确定单元还配置为,通过读取预先记录的第一合约与所述n个区块链中的第一区块链的对应关系,确定第一合约与所述n个区块链中的第一区块链相对应。在一种实施方式中,所述第三请求中包括所述第一合约的地址,其中,所述确定单元还配置为,基于所述第一合约的地址中的预定位确定第一合约与所述n个区块链中的第一区块链相对应。在一种实施方式中,所述第一合约用于在所述第一区块链中进行存证,所述第三交易使得在执行之后在所述第一区块链中存入第一数据,所述装置还包括:第二接收单元,配置为,在向所述第一区块链发送与所述第三请求对应的第三交易之后,从所述第一区块链接收所述第一数据的标识。在一种实施方式中,所述第一数据的标识为所述第三交易的标识。在一种实施方式中,所述第一接收单元还配置为,接收用于调用第一合约的第三交易。本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。通过根据本说明书实施例的部署和调用合约的方案,将合约平均部署到多个区块链中,从而可通过多个区块链为区块链系统提供平行扩展的容量和处理能力,相比于单条区块链,减小了读写压力,提高了区块链系统的处理效率,尤其在流量突增时期能够快速扩展,平行分散压力。附图说明通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:图1示出根据本说明书实施例的区块链系统的示意图;图2示出根据本说明书实施例的一种在区块链系统中部署合约的方法流程图;图3示出交易1(tx1)的内容示意图;图4示出根据本说明书实施例的一种在区块链中调用合约的方法流程图;图5示出交易2(tx2)的内容示意图;图6示出根据本说明书实施例的一种在区块链系统中部署合约的装置600;图7示出根据本说明书实施例的一种在区块链系统中调用合约的装置700。具体实施方式下面将结合附图描述本说明书实施例。图1示出根据本说明书实施例的区块链系统的示意图。如图1所示,该区块链系统中包括区块链平台11、多个用户终端(图中示意示出用户终端12、13和14),所述区块链平台即区块链平台服务器。用户终端与区块链平台11连接,并通过区块链平台11对区块链进行操作。区块链平台11与多个相互独立的区块链连接,图1中示意示出区块链1、区块链2和区块链3。区块链1、区块链2和区块链3可以称为一个区块链系统的平行链,其相互独立的运行,从而分别进行对用户请求的处理,并分别存储交易数据,从而提高系统的处理能力和数据存储容量。所述包括区块链1~区块链3的区块链系统例如为用于存证的系统(例如版权维护系统),用户a可通过例如用户终端12向区块链平台11发送请求,以向区块链系统中发送交易。区块链平台11接收到该请求之后,将相应的交易发送给区块链1~区块链3中的一个区块链,以将该交易存储到相应的区块链中。并且,区块链平台11可以向用户终端12返回该交易的标识,这里,交易的标识可以为该交易的哈希值。后续,当用户a希望查询该交易时,用户a可向区块链平台11提供交易的标识以进行对该交易的查询。在所述区块链系统例如仅用于处理例如版权维护的单一业务的情况中,所述区块链系统中的交易的形式也比较单一,例如,所述交易可能包括部署合约的交易、调用合约的交易等。在该情况中,区块链平台11在接收到来自用户终端的交易之后,可通过基于交易中包括的合约的标识来将交易分别分配到区块链1、区块链2和区块链3进行处理,从而起到均衡负载的效果。可以理解,图1所示的区块链系统仅仅是示意性的,根据本说明书实施例的区块链系统不限于此。例如,各个用户终端可通过本地的客户端将交易分配到一个区块链并与该区块链连接,从而不需要通过区块链平台11进行分配。下面将详细描述上述处理过程。图2示出根据本说明书实施例的一种在区块链系统中部署合约的方法流程图,所述方法包括:步骤s202,接收用于部署合约1的请求;步骤s204,基于预定规则确定合约1与区块链1相对应;步骤s206,向区块链1发送交易1,以将合约1部署到所述区块链1中。在一种实施方式中,图2所示方法由图1中的区块链平台11执行。首先,在步骤s202,区块链平台11例如从用户终端12接收用于部署合约1的请求。各个用户希望存证的数据可能是不同的数据,需要对存证的数据进行的处理也可能不同,例如,用户a可能希望对存证的数据进行资格认证处理,用户b可能希望对存证的数据进行加密处理。因此,不同的用户可通过在区块链系统中部署用于进行相应处理的合约,从而可通过调用该合约进行对其数据的存证。例如,用户a可以使用其账户a通过用户终端12向区块链平台11发送用于部署合约1的请求。在一种实施方式中,所述账户a可以为用户a在区块链平台11中注册的唯一账户。也就是说,该账户a由区块链平台11进行管理,并不是某个区块链中的账户。在该实施方式中,该请求中例如包括合约1的名称“合约1”和合约1的内容,其中合约1的内容为用于实施特定处理(例如资格认证处理)的程序。在另一种实施方式中,所述账户a也可以为用户a申请的区块链账户,从而所述用于部署合约1的请求可以为交易1。图3示出交易1(tx1)的内容示意图。如图3所示,该交易1的发送账户(见图3中的“from”字段)为账户a,其中“0x507a…”为账户a的账户地址,该交易1的接收账户字段(即图3中的“to”字段)为空,表示该交易1为用于部署合约的交易,该交易1的数据字段(即图3中的“data”字段)中包括合约1的内容,即用于实施特定处理的程序。另外,如图3所示,用户终端12还将通过账户a对交易1的数字签名一起发送给区块链平台11。可以理解,图3所示的交易1的形式仅仅是示意性地,本说明书实施例不限于此,例如,在交易1的另一种形式中,可以在交易1中通过特定字段指示该交易为部署合约1的交易,并且“to”字段中可以填充合约1的名称(即“合约1”),从而用于部署合约1。在一种实施方式中,在所述账户a为区块链账户的情况中,各个区块链中都可以预先获取账户a的公钥,从而各个区块链都可以接收由账户a发送的交易,并且,各个区块链可在首次接收到由账户a发送的交易之后在本地记录账户a的状态信息。在步骤s204,区块链平台11基于预定规则确定合约1与区块链1相对应。可以设定多种预定分配规则将合约1分配给区块链1~区块链3中的一个区块链,只要该预定分配规则使得将合约基本均匀地分配到区块链1~区块链3即可,从而使得区块链1~区块链3负载均衡。在一种实施方式中,区块链平台11可对需要部署的合约进行编号,并根据该编号除以3的余数来分配,例如,余数为0时,分配给区块链1,余数为1时分配给区块链2,余数为2时分配给区块链3。在另一种实施方式中,区块链平台11可对合约1的标识进行哈希运算,该哈希运算例如为某种随机运算,并且其运算结果为1、2、3中的任一值,从而可根据该哈希运算的结果将合约1分配给一个区块链。这里,合约1的标识可以为合约1的名称、账户a+合约1、合约1的合约地址等标识。步骤s206,区块链平台11向区块链1发送交易1,以将合约1部署到所述区块链1中。在一种实施方式中,用户a并没有以交易的形式发送上述部署合约1的请求,区块链平台11在接收到该请求之后,生成交易1,该交易1具有与图3所示交易1基本相同的形式,所不同的是,发送账户(即“from”字段)不是“账户a”,而是区块链平台11拥有的区块链1中的账户,另外该交易1的数字签名为通过区块链平台11的账户的签名,而不是通过账户a进行的签名。之后,区块链平台11将该生成的交易1发送给区块链1中的任一节点。区块链1中的节点在接收到交易1之后,将交易1广播到区块链1中。区块链1中的节点在对交易1进行共识之后执行交易1,按照预定规则生成合约1的合约地址,在账户数据库中存储与合约1的合约地址对应的合约1的合约内容,从而在区块链1中部署合约1。在另一种实施方式中,如上文所述,用户a通过用户终端12向区块链平台11发送如图3所示的交易1,从而,区块链平台11可直接将该交易1发送给区块链1中的任一节点,从而使得区块链1中的各节点中部署合约1。区块链1中的节点在如上文所述执行交易1之后在本地存储交易1,区块链1中的节点可计算交易1的哈希值,并将该哈希值与交易1的存储位置关联存储,从而可基于交易1的哈希值找到交易1。在通过上述过程在区块链1中部署合约1之后,区块链平台11可从区块链1中的任一节点获取交易1的哈希值和合约1的合约地址,并将该哈希值作为交易1的标识返回给用户终端12,或者,还可以将合约1的合约地址作为合约1的标识返回给用户终端12。在一种实施方式中,在基于预定规则确定第一合约与所述n个区块链中的第一区块链相对应之后,区块链平台11记录合约1与区块链1的对应关系。为了记录合约1与区块链1的对应关系,区块链平台11需要记录合约1的唯一标识与区块链1的唯一标识的对应关系,并且该合约1的唯一标识是用户可获知的,以用于后续将由用户发送的与合约1相关的全部交易都分配给区块链1。在一种实施方式中,用户a仅仅在上述部署合约1的请求中包括合约1的名称,即“合约1”,该合约1的名称有可能与其它用户部署的其它合约的名称相同,为了唯一标识该合约1,区块链平台11可以(账户a,合约1)来唯一表示合约1,其中,“账户a”为用于请求部署合约1的账户,“合约1”为合约1的名称。区块链平台11中可记录如表1所示的合约与区块链的映射关系表。表1合约区块链账户a,合约1区块链1账户b,合约2区块链2账户c,合约3区块链3……如表1所示,区块链平台11可在本地存储的表1中记录合约1与区块链1的对应关系,以用于后续的对合约1的调用以及对包括合约1的交易的查询等功能。在另一种实施方式中,如上文所述,区块链1可在部署合约1之后,将合约1的地址(例如0x487b…)返回给区块链平台11,从而,区块链平台11可记录如表2所示的合约与区块链的映射关系表。表2如表2所示,区块链平台11可在本地存储的表2中记录合约1的合约地址与区块链1的对应关系,以用于后续的对合约1的调用以及对包括合约1的交易的查询等功能。在另一种方式中,在基于预定规则确定第一合约与所述n个区块链中的第一区块链相对应之后,区块链平台11可从区块链1中任一节点获取合约1的合约地址。在该说明书实施例中,区块链1中的节点在根据现有的获取合约地址的方式获取与合约1对应的一串字符串之后,可将该一串字符串的预定位置(例如首位置或末位置等)添加预定位数,从而生成合约1的合约地址,所述预定位数用于指示区块链1,或者可修改该串字符串中包含的预定位,从而生成合约1的合约地址,所述预定位用于指示区块链1。之后,区块链平台11和/或用户终端12可从区块链1的任一节点获取合约1的合约地址,以用于进行对合约1的调用。在该情况中,由于,合约1的地址中指示了合约1所部署的区块链1,因此,将不需要如上文所述记录合约与区块链的映射关系表。或者,区块链平台可自行基于预定计算规则生成合约1的地址。例如,区块链平台首先计算合约1的名称哈希值,并将该名称哈希值的预定位修改为用于指示合约1所部署的区块链(即区块链1),从而获取合约1的地址。区块链平台11在获取合约1的地址之后可记录该合约1的地址,以用于后续发送调用合约1的交易。或者,区块链平台11可将合约1的地址发送给用户终端,以由用户终端发送调用合约1的交易。用户a在区块链系统中部署合约1之后,可能还希望部署其它合约,例如合约2。在一种实施方式中,合约2与合约1没有关联性,例如,在调用合约1时不会关联地调用合约2,用户a可以通过上述相同的过程部署合约2,在该情况中,合约2有可能与合约1一样部署到区块链1中,或者,合约2也有可能部署到其它区块链中,例如区块链2。在另一种实施方式,合约2与合约1具有关联性,例如,在调用合约1时,需要关联地调用合约2,例如,在合约1中调用合约2。在该情况中,用户a通过用户终端12向区块链平台11发送用于部署合约2的请求,并在该请求中包括合约2与合约1关联的信息。区块链平台11在接收到该用于部署合约2的请求之后,基于如上文所述在本地记录的如表1或表2所示的映射表,确定合约1与区块链1相对应,从而可确定合约2也与区块链1相对应,并向区块链1发送用于部署合约2的交易,并在所述映射表中记录合约2与区块链1的对应关系。在一种实施方式中,图2所示方法可由用户终端执行。在该情况中,用户终端12可直接与区块链1~区块链3分别连接,而不需要通过区块链平台11与各个区块链连接。用户终端12中的客户端在接收到用户a的部署合约1的指示之后,基于预定规则确定合约1与区块链1对应,从而生成部署合约1的交易1,并向区块链1发送交易1,之后,在用户终端12本地记录合约1与区块链1的对应关系。在其它用户也可能调用合约1的情况中,用户终端12、13和14之间可相互通信,以使得各个用户终端存储的合约与区块链的映射关系表是一致的。其中,用户终端12、13和14可通过底层直接通信。或者,用户终端12、13和14之间可通过区块链平台相互通信,从而起到统一映射表的目的,在该情况中,区块链平台执行的处理将减少,大部分的处理放到了用户终端进行。图4示出根据本说明书实施例的一种在区块链中调用合约的方法流程图,所述方法包括:步骤s402,接收用于调用合约1的请求;步骤s404,确定合约1与区块链1相对应;步骤s406,向区块链1发送调用合约1的交易2。与上文类似地,该方法可由区块链平台11执行,或者也可由用户终端执行。在一种实施方式中,由区块链平台11执行图4所示方法。在步骤s402,区块链平台11从用户终端12接收用于调用合约1的请求。例如,上述用户a在部署合约1之后,希望调用合约1以对数据1进行预定处理,并将经处理的数据1存入区块链系统中。因此,用户a向区块链平台11发送用于调用合约1的请求。该请求中指示了对合约1的调用,并包括在执行合约1时将输入的参数,即数据1。在一种实施方式中,该请求中包括合约1的唯一标识。例如,如上文所述,该请求中包括(账户a,合约1)作为合约1的唯一标识。或者,该请求中包括合约1的合约地址作为合约1的唯一标识。在另一种实施方式中,用户a的账户a为区块链系统中的账户,用户终端12可通过账户a向区块链平台发送调用合约1的交易2。图5示出交易2(tx2)的内容示意图。如图5所示,交易2的发送账户为账户a,接收账户为合约1,其中“0x487b…”表示合约1的账户地址,交易2的数据字段中表示对合约1中的store函数的调用,并且该数据字段中包括将传入store函数的数据1。其中,在该交易2中通过接收账户表示交易2为调用合约1的交易。另外,如图5所示,用户终端12还将通过账户a对交易2的数字签名一起发送给区块链平台11。在步骤s404,区块链平台11确定合约1与区块链1相对应。在一种实施方式中,如上文所述,区块链平台11中记录有合约与区块链的映射关系表(如上面的表1或表2所示)。区块链平台11可通过读取该映射关系表而确定合约1与区块链1相对应,也就是说,合约1部署在区块链1中。在另一种实施方式中,在上述用于调用合约1的请求中包括合约1的合约地址,该合约地址中的至少一个预定位数被预设为用于指示该合约所部署的区块链的标识。例如,该合约地址的生成规则为将其前两位设置为用于指示区块链,例如,如果合约地址的前两位为01,则表示区块链1,如果合约地址的前两位为10,则表示区块链2,如果合约地址的前两位为11,则表示区块链3。可以理解,这里虽然仅描述了将合约地址的前两位设置为用于指示区块链,在实际中,可根据区块链系统中包括的区块链的个数和预计扩展的区块链的个数来设定用于指示区块链的位数。区块链中的节点在生成合约1的合约地址时,在按照预定规则生成合约的哈希值(例如将合约的名称输入预定哈希函数生成合约的哈希值)之后,可以在该哈希值的预定位置(例如哈希头、或者哈希尾处)增加用于指示区块链的多位,或者将该哈希值的预定位置的多位替换为用于指示区块链的多位,从而最终获得合约的合约地址。在该情况中,区块链平台11可基于请求中包括的合约1的合约地址的预定位(例如前两位),确定合约1与区块链1相对应。在步骤s406,区块链平台11向区块链1发送交易2,以用于调用合约1。在一种实施方式中,上述用于调用合约1的请求并不是交易的形式,从而,区块链平台11生成交易2,该交易2具有与图5所示的交易2相同的形式,所不同的是,其发送账户是区块链平台11拥有的账户,而不是账户a,所述数字签名也是区块链平台的账户的签名。之后,区块链平台11将该生成的交易2发送给区块链1中的任一节点,以使得在区块链1中调用合约1。在另一种实施方式中,上述用于调用合约1的请求为图5所示的交易2的形式,从而,区块链平台11直接将该交易2发送给区块链1中的任一节点。区块链1中的任一节点在接收到交易2之后,与上述处理交易1类似地,在经过区块链1中的节点共识之后,区块链1中的各个全节点中都将执行交易2,从而执行合约1,更新合约1的状态数据,即将通过执行合约1处理数据1所获取的数据2存入合约1的账户状态中,并且将交易2存入到区块数据库中。另外,也可以将所述数据2存入交易2的收据中,以供查询。区块链1中的节点在将交易2存入到区块链1中之后,与交易1类似地,可计算交易2的哈希值作为交易2的标识,并记录交易2的哈希值与交易2的存储位置的关联关系,从而可基于该哈希值来查询交易2的交易内容。区块链1中的各节点在存入交易2之后,区块链平台11可从区块链1中的任一节点获取交易2的标识(例如哈希值)和/或数据2的标识,或者区块链1中的任一节点在执行交易2并在区块链1中存入交易2之后,可向区块链平台11主动推送交易2的标识和/或数据2的标识。从而区块链平台11可将该交易2的标识和/或数据2的标识发送给用户终端12,从而,用户终端12在后续可基于该交易2的标识和/或数据2的标识进行对数据2的查询。在另一种实施方式中,图4所示方法也可以由用户终端12执行。在该情况中,用户终端12直接与各个区块链连接。用户终端12在通过客户端接收到用户a发出的调用合约1的请求之后,与上文类似地,基于本地记录的合约与区块链的映射表、或者基于合约1的合约地址,确定合约1与区块链1对应,生成交易2,并将交易2发送给区块链1的任一节点,以使得在区块链1中执行交易2,从而调用合约1。上文参考图2和图4描述了通过基于交易中的合约将交易分配到一个区块链的实施例,本说明书实施例不限于此。在本说明书另一个实施例中,除了通过交易中的合约对交易进行分配之外,还可以基于交易关联的账户对交易进行第二次分配。参考图2,假设所述用于部署合约1的请求由账户a发送,在步骤s204,可基于第一预定规则确定合约1与n个区块链中的m个区块链相对应,然后可基于第二预定规则确定所述账户a与所述m个区块链中的区块链1相对应,从而可在步骤s206向区块链发送交易1。所述第二预定规则例如为,对账户a进行哈希计算从而确定账户a与区块链1相对应,或者,所述第二预定规则为,基于所述账户a的注册地确定账户a与区块链1相对应。在进行该分配之后,例如可通过如下表3记录合约、区块链和账户之间的对应关系。表3如表3所示,假设0x487b…为合约1的账户地址,表3示出,合约1与区块链1和区块链2相对应,而区块链1又与账户a、账户b等账户相对应。当区块链平台11将要对由账户a发送的调用合约1的交易发送给某个区块链时,基于表3可确定该交易与区块链1相对应,从而可将该交易发送给区块链1。图6示出根据本说明书实施例的一种在区块链系统中部署合约的装置600,所述区块链系统中包括n个相互独立的区块链,所述装置600包括:第一接收单元61,配置为,接收用于部署第一合约的第一请求;第一确定单元62,配置为,基于预定规则确定第一合约与所述n个区块链中的第一区块链相对应;第一发送单元63,配置为,向所述第一区块链发送第一交易,以将所述第一合约部署到所述第一区块链中。在一种实施方式中,所述装置600还包括,记录单元64,配置为,在基于预定规则确定第一合约与所述n个区块链中的第一区块链相对应之后,记录所述第一合约与所述第一区块链的对应关系。在一种实施方式中,所述记录单元64还配置为,记录所述第一合约的唯一标识与所述第一区块链的对应关系。在一种实施方式中,所述装置600部署于区块链平台,所述区块链平台与所述n个区块链分别连接,其中,所述第一接收单元61还配置为,接收用于部署第一合约的第一交易。在一种实施方式中,所述装置600还包括:第二接收单元65,配置为,接收用于部署第二合约的第二请求,所述第二请求中包括所述第二合约与所述第一合约的关联信息;第二确定单元66,配置为,基于所述第一合约与所述第一区块链的对应关系,确定第二合约与所述第一区块链相对应;第二发送单元67,配置为,向所述第一区块链发送第二交易,以将所述第二合约部署到所述第一区块链中。在一种实施方式中,所述装置600还包括,获取单元68,配置为,在基于预定规则确定第一合约与所述n个区块链中的第一区块链相对应之后,获取所述第一合约的地址,所述第一合约的地址的预定位用于指示所述第一区块链。图7示出根据本说明书实施例的一种在区块链系统中调用合约的装置700,所述区块链系统中包括n个相互独立的区块链,所述装置700包括:第一接收单元71,配置为,接收用于调用第一合约的第三请求;确定单元72,配置为,确定第一合约与所述n个区块链中的第一区块链相对应;发送单元73,配置为,向所述第一区块链发送与所述第三请求对应的第三交易,所述第三交易中调用所述第一合约。在一种实施方式中,所述确定单元72还配置为,通过读取预先记录的第一合约与所述n个区块链中的第一区块链的对应关系,确定第一合约与所述n个区块链中的第一区块链相对应。在一种实施方式中,所述第三请求中包括所述第一合约的地址,其中,所述确定单元72还配置为,基于所述第一合约的地址中的预定位确定第一合约与所述n个区块链中的第一区块链相对应。在一种实施方式中,所述第一合约用于在所述第一区块链中进行存证,所述第三交易使得在执行之后在所述第一区块链中存入第一数据,所述装置700还包括:第二接收单元74,配置为,在向所述第一区块链发送与所述第三请求对应的第三交易之后,从所述第一区块链接收所述第一数据的标识。在一种实施方式中,所述第一数据的标识为所述第三交易的标识。在一种实施方式中,所述第一接收单元71还配置为,接收用于调用第一合约的第三交易。本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。通过根据本说明书实施例的部署和调用合约的方案,将合约平均部署到多个区块链中,从而可通过多个区块链为区块链系统提供平行扩展的容量和处理能力,相比于单条区块链,减小了读写压力,提高了区块链系统的处理效率,尤其在流量突增时期能够快速扩展,平行分散压力。需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或
技术领域
内所公知的任意其它形式的存储介质中。以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1