会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 智能合约 / 智能合约解释器

智能合约解释器

申请号 CN201980040101.2 申请日 2019-08-22 公开(公告)号 CN112335214A 公开(公告)日 2021-02-05
申请人 环球互连及数据中心公司; 发明人 爱德华·罗辛松斯基; 李丹珏;
摘要 本公开描述了一种技术,该技术包括对关于智能合约的信息进行解释,使得智能合约的条款能够跨各种各样的共识网络或区块链平台实施。在一个实施例中,本公开描述了一种方法,该方法包括:由第一计算设备接收描述智能合约的信息,其中,第一计算设备包括在多个第一计算设备内,每个第一计算设备位于保持第一分布式账本的第一共识网络上;由第一计算设备响应于接收描述智能合约的信息,执行更新第一分布式账本的操作;并且由多个第一计算设备中的至少一个第一计算设备解释描述智能合约的信息,以确定并且在第一共识网络上执行多个第一智能合约操作中的至少一项。
权利要求

1.一种方法,包括:

由第一计算设备接收描述智能合约的信息,其中,所述第一计算设备包括在多个第一计算设备内,每个第一计算设备位于保持第一分布式账本的第一共识网络上;

由所述第一计算设备响应于接收描述所述智能合约的所述信息,执行更新所述第一分布式账本的操作;

由所述多个第一计算设备中的至少一个第一计算设备解释描述所述智能合约的所述信息,以确定多个第一智能合约操作中的至少一项并且在所述第一共识网络上执行所述多个第一智能合约操作中的至少一项;

由第二计算设备接收描述所述智能合约的所述信息,其中,所述第二计算设备包括在多个第二计算设备内,每个第二计算设备位于保持第二分布式账本的第二共识网络上;

由所述第二计算设备响应于接收描述所述智能合约的所述信息,执行更新所述第二分布式账本的操作;并且由所述多个第二计算设备中的至少一个第二计算设备解释描述所述智能合约的所述信息,以确定多个第二智能合约操作中的至少一项并且在所述第二共识网络上执行所述多个第二智能合约操作中的至少一项。

2.根据权利要求1所述的方法,

其中,所述第一共识网络根据第一区块链协议实施所述第一分布式账本,其中,在所述第一共识网络上执行所述多个第一智能合约操作中的至少一项包括:修改所述第一分布式账本;

其中,所述第二共识网络根据第二区块链协议实施所述第二分布式账本,其中,在所述第二共识网络上执行所述多个第二智能合约操作中的至少一项包括:修改所述第二分布式账本;并且其中,所述第一区块链协议与所述第二区块链协议不同。

3.根据权利要求1所述的方法,

其中,所述多个第一智能合约操作与所述多个第二智能合约操作不同。

4.根据权利要求1所述的方法,

其中,所述第一计算设备是位于所述第一共识网络上的节点,并且其中,所述第二计算设备是位于所述第二共识网络上的节点。

5.根据权利要求1所述的方法,

其中,描述所述智能合约的所述信息是包括限定所述智能合约的属性的数据模型和由所述智能合约执行的多种方法的模板。

6.根据权利要求5所述的方法,

其中,所述数据模型是由包括至少一些所述属性的散列索引的字典。

7.根据权利要求5所述的方法,

其中,所述多种方法中的每种方法对通过每种方法修改的所述数据模型的至少一部分进行识别。

8.根据权利要求5所述的方法,

其中,所述多种方法中的每种方法还识别如何通过每种方法修改所述数据模型。

9.一种系统,包括:

第一共识网络,将信息存储在第一分布式账本中,其中,所述第一共识网络包括含第一计算设备的多个第一计算设备,并且其中,所述第一计算设备被配置为:接收描述智能合约的信息;

执行更新所述第一分布式账本的操作;并且

解释描述所述智能合约的所述信息,以确定多个第一智能合约操作中的至少一项并且在所述第一共识网络上执行所述多个第一智能合约操作中的至少一项;以及第二共识网络,将信息存储在第二分布式账本中,其中,所述第二共识网络包括含第二计算设备的多个第二计算设备,并且其中,所述第二计算设备被配置为:接收描述所述智能合约的信息;

执行更新所述第二分布式账本的操作;并且

解释描述所述智能合约的所述信息,以确定多个第二智能合约操作中的至少一项并且在所述第二共识网络上执行所述多个第二智能合约操作中的至少一项。

10.根据权利要求9所述的系统,

其中,所述第一共识网络根据第一区块链协议实施所述第一分布式账本;

其中,所述第二共识网络根据第二区块链协议实施所述第二分布式账本;并且其中,所述第一区块链协议与所述第二区块链协议不同。

11.根据权利要求9所述的系统,

其中,所述多个第一智能合约操作与所述多个第二智能合约操作不同。

12.根据权利要求9所述的系统,

其中,所述第一计算设备是位于所述第一共识网络上的节点,并且其中,所述第二计算设备是位于所述第二共识网络上的节点。

13.根据权利要求9所述的系统,

其中,描述所述智能合约的所述信息是包括限定所述智能合约的属性的数据模型和由所述智能合约执行的多种方法的模板。

14.根据权利要求13所述的系统,

其中,所述数据模型是由包括至少一些所述属性的散列索引的字典。

15.根据权利要求13所述的系统,

其中,所述多种方法中的每种方法对通过每种方法修改的所述数据模型的至少一部分进行识别。

16.根据权利要求13所述的系统,

其中,所述多种方法中的每种方法还识别如何通过每种方法对所述数据模型进行修改。

17.一种方法,包括:

由计算系统接收描述智能合约的信息;

由所述计算系统解释描述所述智能合约的所述信息,以确定对由第一共识网络保持的第一分布式账本实施所述智能合约的多个第一智能合约操作、和对由第二共识网络保持的第二分布式账本实施所述智能合约的多个第二智能合约操作;

由所述计算系统执行操作,以使由所述第一共识网络保持的所述第一分布式账本在所述第一共识网络上实施所述智能合约;并且由所述计算系统执行操作,以使由所述第二共识网络保持的所述第二分布式账本在所述第二共识网络上实施所述智能合约。

18.根据权利要求17所述的方法,

其中,执行操作以使由所述第一共识网络保持的所述第一分布式账本在所述第一共识网络上实施所述智能合约包括:根据第一区块链协议执行操作;并且其中,执行操作以使由所述第二共识网络保持的所述第二分布式账本在所述第二共识网络上实施所述智能合约包括:根据第二区块链协议执行操作。

19.根据权利要求18所述的方法,其中,所述第一区块链协议与所述第二区块链协议不同。

20.根据权利要求17所述的方法,

其中,描述所述智能合约的所述信息是包括限定所述智能合约的属性的数据模型和由所述智能合约执行的多种方法的模板。

说明书全文

智能合约解释器

[0001] 交叉引用
[0002] 本申请要求于2018年8月22日提交的美国临时专利申请第62/721,242号和于2019年6月26日提交的美国专利申请第16/453,606号的权益,其中每一者的全部内容通过引用结合在此。

技术领域

[0003] 本公开涉及计算机网络,并且更具体地,涉及共识网络(consensus networks)。

背景技术

[0004] 分布式账本是可以通过跨多个站点、机构、和/或地域的网络所共享并且同步的数据结构。将对账本做出的改变或添加反映并且复制至网络上的多个(如果不是全部)计算设备(或节点)。通常,在共识网络上实施分布式账本,其中,即使网络可能包括多个不可靠或不可信任的节点,网络上的节点也实施旨在实现网络上的节点之间的可靠性或一致性的共识算法。
[0005] 区块链(例如,基于比特币和以太坊的技术)可能被视为是由对等(P2P)网络上的分布式计算机管理的分布式账本。网络上的每个对等体(节点)保持账本的副本、并且还使用额外的措施来帮助确保网络上的大多数节点之间达成共识。通常,智能合约是在作为区块链或分布式账本的一部分的共识网络上实施的计算机程序。可以在共识网络上使用智能合约,以促进、验证、和/或强制实施协议、合约、或其他规则集合的协商和/或执行。

发明内容

[0006] 本公开描述了一种技术,该技术包括:对描述智能合约的信息进行解释,以使得能够跨各种各样的共识网络或区块链平台实施智能合约的条款。在一些实施例中,此处公开的技术包括:将智能合约的模板传送至共识网络中的一个或多个节点。共识网络中的一个或多个节点通过适合于其所驻留的共识网络和/或区块链平台的方式,实施智能合约,从而产生在通过与模板指定的条款和/或要求一致的方式操作的共识网络上执行的智能合约。在一些实现方式中,通过智能合约解释器可以实施与模板对应的智能合约,智能合约解释器自身可以是在共识网络或区块链上执行的独立智能合约,对模板进行解释,并且之后,执行与由模板指定的智能合约的条款和/或要求对应的动作。
[0007] 在一个实施例中,本公开描述了一种方法,包括:由第一计算设备接收描述智能合约的信息,其中,第一计算设备包括在多个第一计算设备内,每个计算设备位于保持第一分布式账本的第一共识网络上;由第一计算设备并且响应于接收描述智能合约的信息,执行更新第一分布式账本的操作;由多个第一计算设备中的至少一个计算设备解释描述智能合约的信息,以确定并且在第一共识网络上执行多个第一智能合约操作中的至少一项操作;由第二计算设备接收描述智能合约的信息,其中,第二计算设备包括在多个第二计算设备内,每个计算设备位于保持第二分布式账本的第二共识网络上;由第二计算设备并且响应于接收描述智能合约的信息,执行更新第二分布式账本的操作;并且由多个第二计算设备中的至少一个计算设备解释描述智能合约的信息,以确定并且在第二共识网络上执行多个第二智能合约操作中的至少一项操作。
[0008] 在另一实施例中,本公开描述了一种系统,包括:第一共识网络,将信息存储在第一分布式账本中,其中,第一共识网络包括含第一计算设备的多个第一计算设备,并且其中,第一计算设备被配置为:接收描述智能合约的信息,以执行更新第一分布式账本的操作;并且解释描述智能合约的信息,以确定并且在第一共识网络上执行多个第一智能合约操作中的至少一项操作;以及第二共识网络,将信息存储在第二分布式账本中,其中,第二共识网络包括含第二计算设备的多个第二计算设备,并且其中,第二计算设备被配置为:接收描述智能合约的信息,执行更新第二分布式账本的操作,并且解释描述智能合约的信息,以确定并且在第二共识网络上执行多个第二智能合约操作中的至少一项操作。
[0009] 在另一实施例中,本公开描述了一种方法,包括:由计算系统接收描述智能合约的信息;由计算系统解释描述智能合约的信息,以确定在由第一共识网络保持的第一分布式账本上实施智能合约的多个第一智能合约操作、和在由第二共识网络保持的第二分布式账本上实施智能合约的多个第二智能合约操作;由计算系统执行操作,以致使由第一共识网络保持的第一分布式账本在第一共识网络上实施智能合约;并且由计算系统执行操作,以致使由第二共识网络保持的第二分布式账本在第二共识网络上实施智能合约。
[0010] 所附附图及下列描述中阐述了本公开的一个或多个实施例的细节。根据描述与附图、以及权利要求中,本公开的其他特征、目标、以及优点将变得显而易见。

附图说明

[0011] 为了便于更全面地理解本公开,现参考所附附图,其中,以类似标号表示类似元件。这些附图不应被视为限制本公开,而是旨在是示出性的。
[0012] 图1是示出根据本公开的一个或多个方面的通过多个共识网络的一个或多个节点对智能合约的描述进行解释的系统的概念图。
[0013] 图2是示出根据本公开的一个或多个方面的多个共识网络基于模板执行智能合约的示例性系统的框图。
[0014] 图3A和图3B是用于实施公证应用的示例性代码列表的概念示图。
[0015] 图4A是示出根据本公开的一个或多个方面的用于执行任务的示例性过程的流程图。
[0016] 图4B是示出根据本公开的一个或多个方面的用于执行任务的另一示例性过程的流程图。

具体实施方式

[0017] 可用的多个区块链平台具有不同的智能合约API和语言。在一些方面,不同的智能合约API和语言使得难以编写独立于区块链的应用。为了在一个以上的区块链平台上实施给定的智能合约,需要为每个支持的区块链平台编写不同的智能合约应用。此外,即使对于简单的智能合约,编写智能合约至少也需要最低水平的编程技能和具有相对少的经验。相应地,可以用于解释跨平台智能合约模板的智能合约解释器,可以开发或实施非编程人员可访问的一些智能合约。该解释器还可能实现便携式智能合约应用,该智能合约应用在不需要编写任何新的代码的简化过程中从一个区块链平台迁移至另一区块链平台。在一些实施例中,为多个不同的区块链平台中的每个区块链平台开发不同的解释器,并且使用每个解释器对描述所需智能合约的属性、动作、和/或方面的模板进行解释。模板可以是智能合约的简单描述并且可以以一种以上的方式进行表达。在一些实施例中,使用非图灵完全的描述性语言来表达模板。
[0018] 图1是示出根据本公开的一个或多个方面的通过多个共识网络中的一个或多个节点解释智能合约的描述的系统的概念图。在图1的实施例中,系统100包括多个共识网络,包括通过网络105连接的共识网络110A至共识网络110N(统称“共识网络110”)。每个共识网络110包括多个节点。例如,共识网络110A包括表示任意数量节点的节点140A-1至140A-N(统称“节点140A”)。同样,共识网络110B包括表示任意数量节点的节点140B-1至140B-N(统称“节点140B”),并且一般地,共识网络110N包括再次表示任意数量节点的节点140N-1至节点
140N-N(统称“节点140N”)。
[0019] 图1内包括的各个共识网络110包括一个或多个分布式账本。在所示的实施例中,共识网络110A包括区块链或分布式账本152A,该分布式账本可以被实现为共识网络110A内的多个(或全部)节点140A中所包括的数据仓库。通过类似的方式,可以实现共识网络110B至共识网络110N,以使得各个共识网络110包括一个或多个分布式账本152(例如,共识网络110B包括分布式账本152B并且共识网络110N包括分布式账本152N)。通常,共识网络内的每个节点(或很大部分的节点)包括由共识网络保持的分布式账本的副本(或至少部分副本)。
[0020] 各个共识网络110是实施一个或多个分布式账本152的计算设备(例如,“节点140”)的网络。各个共识网络110内所包括的节点140可以表示能够遵守共识协议和/或执行与一个或多个智能合约模块155(例如,执行与智能合约模块155相关联的源代码的模块)对应的操作的任意计算设备。例如,一个或多个共识网络110可以表示在硬件计算设备上执行的以太坊虚拟机(EVM)的以太坊网络,也被称为以太坊区块链平台。
[0021] 每个分布式账本152(即,各个共识网络110内所包括的)可以是包括多个块的共享事务数据库或数据仓库,每个块(根部除外)参考在更早时间创建的至少一个块,每个块绑定被注册在分布式账本152内的一个或多个事务,并且以加密方式保护每个块。各个共识网络110可以从发起分布式账本152(或智能合约模块155)的功能的事务发送者(例如,位于各个共识网络110的外部或内部的计算设备)接收事务,以修改存储在共识网络内的给定分布式账本152。各个共识网络110使用存储在共识网络内的分布式账本152进行验证。分布式账本中的每个块通常包含散列指针作为前一块的链接、时间戳、以及事务的事务数据。通过设计,分布式账本152固有地抵抗对之前存储的事务数据进行修改。就功能而言,各个分布式账本152用作跨共识网络的多个节点分布的账本,能够有效并且以可验证和永久性方式记录双方之间的事务。
[0022] 各个共识网络110可以是通过统一遵守用于验证新块的协议而管理一个或多个分布式账本152的对等网络。一旦被记录,在不更改所有随后的块以及具体共识网络的至少一些(例如,通常大多数)节点140的共谋的情况下,不能对分布式账本152的任意给定块中的数据进行追溯性地更改。例如,参考共识网络110A,在还没有对所有随后的块进行更改的情况下并且在共识网络110A中的大多数节点140A不一致的情况下,不能对分布式账本152A内的块中的数据进行追溯性地更改。
[0023] 在各个共识网络110内,并且为简单起见,示出了一个分布式账本152,但是,各个共识网络110以与本文所述的技术一致的方式可以包括或实施多个分布式账本152。例如,共识网络110A可以管理多个分布式账本152A。此外,各个分布式账本152A可能是私有分布式账本或公共分布式账本。
[0024] 每个智能合约模块155(例如,共识网络110A的节点140A内的智能合约模块155A)可以表示所谓的“智能合约”。例如,每个智能合约模块155A可以表示用于对一方或在双方之间执行事务的运行脚本或程序,以修改分布式账本152A的状态。在共识网络(即,以太坊网络)的实施例中,智能合约模块155A可以表示存储在以太坊分布式账本152A中、供共识网络110A的节点后期执行的一个或多个自主脚本或者一个或多个状态分散式应用。智能合约模块155A可以驻留在分布式账本152A的一个或多个块中,并且可以被视为是一个或多个分布式账本152A的一部分。在本文所述的实施例中,一个或多个智能合约模块155可以基于模板101或根据模板101操作,包括本文所述的一种或多种方式。
[0025] 因为账本152A是分布式账本,所以共识网络110A内的每个节点140A(或至少很大部分的节点140A)存储分布式账本152A的副本。相应地,每个节点140A包括智能合约模块155A的副本,并且因此,图1中所示的每个节点140A内包括的智能合约模块155A是实施智能合约的数据、脚本、和/或代码的相同副本。
[0026] 同样,存储分布式账本152B的副本的每个节点140B包括作为分布式账本152B一部分的智能合约模块155B的副本。并且通常,每个节点140N存储分布式账本152N的副本并且包括存储在分布式账本152N内的任意智能合约的副本(例如,智能合约模块155N)。
[0027] 为易于示出,在图1内和/或在本文参考的其他例图中示出了有限数量的共识网络110、节点140、分布式账本152、网络105、以及模板101。然而,通过更多的该系统、部件、设备、模块、和/或其他项可以执行根据本公开的一个或多个方面的技术,并且该系统、部件、设备、模块、和/或其他项的统称参考可以表示任意数量的该系统、部件、设备、模块、和/或其他项。
[0028] 根据本公开的一个或多个方面,共识网络110A可以基于模板101实施智能合约。例如,在参考图1描述的实施例中,节点140A-1通过共识网络110A(例如,从网络105)接收模板101。节点140A-1内的智能合约模块155A对模板101进行分析并且确定模板101包括用于在共识网络上实施智能合约的指令。智能合约模块155A存储模板101或从模板101推导的信息。
[0029] 节点140A-1还根据共识协议与共识网络110A内的至少一些节点140A通信、并且致使(或发起过程致使)每个节点140A内的每个智能合约模块155A对由网络110A内的节点140A保持的分布式账本进行更新,以将模板101或从模板101推导的信息包括在分布式账本内。一旦一些或全部节点140A确定对分布式账本的更新是有效的,则将模板101(或基于模板101描述智能合约的信息)包括在由共识网络110A保持的分布式账本152A内。相应地,智能合约模块155A跨共识网络110A内的节点140A执行,并且之后,响应于事务请求,智能合约模块155A以由模板101限定的智能合约指定的方式对共识网络110A内保持的分布式账本
152A进行修改。
[0030] 共识网络110B也可以基于同一模板101实施智能合约。例如,再次参考图1中的实施例,一个或多个节点140B通过共识网络110B接收模板101。例如,在节点140B-1上执行的智能合约模块155B接收模板101并且确定模板101包括用于在共识网络110B上实施智能合约的指令。智能合约模块155B根据共识协议与共识网络110B内的至少一些节点140B通信、并且致使(或发起过程致使)每个节点140B内的每个智能合约模块155B将分布式账本152B更新为包括模板101(或从模板101推导的信息)。之后,智能合约模块155B在共识网络110B内跨节点140B而执行,并且响应于事务请求,智能合约模块以由模板101限定的智能合约指定的方式对共识网络110B内的分布式账本152B进行修改。
[0031] 因为共识网络110B可能基于不同的共识协议、区块链技术、应用编程接口、编程需求或语言、或其他实施细节,所以即使智能合约模块155A和155B实施相同的智能合约,智能合约模块155B也可以与共识网络110A的节点140A内包括的智能合约模块155A有区别地操作。然而,根据本公开的一个或多个方面,智能合约模块155B被设计成对模板101进行解释并且使用适当的协议、语言、API、以及共识网络110B的其他特征在共识网络110B上实施与模板101的需求和规定一致的智能合约。相应地,节点140B-1的智能合约模块155B可以基于模板101实施智能合约,并且以由模板101指定的方式更新共识网络110B内的分布式账本152B。
[0032] 通常,一个或多个共识网络110还可以基于相同的模板101实施智能合约。可以在任意数量的多样化共识网络上实施与模板101对应的智能合约,其中,每个共识网络包括具有智能合约模块(例如,智能合约模块155A或155B)的节点,该智能合约模块能够以适合于与智能合约模块相关联的共识网络的方式对模板101进行解释。一旦智能合约模块针对给定的共识网络对模板101进行解释,之后智能合约模块则以由模板101指定的方式执行智能合约的规定。因此,通常,在共识网络110N的每个节点140N内执行的一个或多个智能合约模块155N可以对模板101进行解释并且在共识网络110N上执行和/或配置共识网络110N以实施智能合约,以使得之后根据智能合约的规定和/或需求对由共识网络110保持的分布式账本进行修改。
[0033] 通过根据本公开的一个或多个方面的技术,诸如,通过对用作在多个多样化的区块链平台上执行的智能合约的智能合约描述或模板进行解释,系统100可以简化智能合约的开发并且确保针对具有多样化实现方式的多个共识网络或区块链自身而开发的智能合约的更为一致性的实施。因为智能合约自身基于模板中概括的简单规则能够自动化或实施大部分的逻辑,所以通过简化开发并且确保更一致性的实施,由于针对不同的平台而开发的智能合约更容易并且更不易出错,系统100能够实现智能合约规则的更准确和更可靠(例如,无漏洞)处理。因此,因为以与本公开一致的方式对智能合约描述进行解释,可以具有致使系统100执行更准确和可靠的处理的效果,所以本公开的各方面可以改善系统100的功能。
[0034] 此外,因为智能合约的开发过程中使用的处理循环消耗电力,所以通过能够使智能合约对有限的规则集进行解释并且基于这些规则生成智能合约,更少处理循环可能是消耗开发型智能合约,由此,致使消耗更少的电力。因此,因为以与本公开一致的方式对智能合约描述进行解释可以具有致使系统100消耗更少电力的效果,所以本公开的各方面还可以改善系统100的功能。
[0035] 图2是示出根据本公开的一个或多个方面的多个共识网络基于模板执行智能合约的示例性系统的框图。图2中的系统200可以描述为图1中的系统100的示例性或可替代的实现方式。此处,在图1的上下文内,描述了图2的一个或多个方面。
[0036] 在图2的实施例中,系统200包括全部通过网络105连接的共识网络210、共识网络310、以及客户端设备102。客户端设备102可以由用户103操作。客户端设备102可以基于来自用户103的输入而生成模板101。共识网络210和共识网络310中的每个共识网络通常可以与图1中的一个或多个共识网络110对应。尽管根据本公开的一个或多个方面的技术可以执行有更多的共识网络,然而,为易于示出,图2中示出了共识网络210和共识网络310。
[0037] 此外,图2中的共识网络210内所示的各个节点240A至240N(统称“节点240”)及共识网络310内所示的各个节点340A至340N(统称“节点340”)通常可以与图1中的共识网络110内所包括的节点140对应。在一些实施例中,尽管该系统可能涉及具有更大、更小、和/或不同能力的可替代实现方式,然而,可以以与结合图1提供的对应系统的描述一致的方式实施这些设备、系统、和/或部件。通常,图2中示出的系统、设备、部件、以及其他项可以与图1中示出的标号类似的系统、设备、部件、以及项对应,并且可以通过与结合图1提供的描述一致的方式进行描述。
[0038] 在一些实施例中,一个或多个计算系统112可以用作这样的智能合约解释器,即,可能不是任意共识网络210或310的一部分,但是,对模板101进行解释并且通过此处所述的方式提供服务。当提供该服务时,计算系统112还可以与共识网络210和/或310交互,以实例化和/或配置存储在该共识网络上的分布式网络内的智能合约。计算系统112可以实现为任意合适的计算系统,诸如一个或多个服务器计算机、工作站、大型机、设备、云计算系统、和/或能够执行根据本公开的一个或多个方面描述的操作和/或功能的其他计算系统。在一些实施例中,计算系统112可以表示为客户端设备及其他设备或系统提供服务的云计算系统、服务器群、和/或服务器集群(或其一部分)。在其他实施例中,计算系统112可以表示或通过数据中心、云计算系统、服务器群、和/或服务器集群的一个或多个虚拟化计算实例(例如,虚拟机、容器)而实施。网络105、共识网络210、和/或共识网络310中的任意或全部可以是互联网或可以包括、构成一部分、和/或表示任意公共或私有通信网络或其他网络。例如,网络105、共识网络210、或共识网络310各自可以是蜂窝、 ZigBee、蓝牙、近场通信
(NFC)、卫星、企业、服务供应商、和/或能够在计算系统、服务器、以及计算设备之间传输发送数据的其他类型的网络。客户端设备、服务器设备、或其他设备中的一个或多个设备,可以使用任意合适的通信技术跨图2中示出的网络发送并且接收数据、命令、控制信号、和/或其他信息。网络105、共识网络210、和/或共识网络310可以包括一个或多个网络中枢、网络交换机、网络路由器、卫星碟、或任意其他网络装备。该设备或部件可以操作地相互耦合,由此提供计算机、设备、或其他部件之间(例如,一个或多个客户端设备或系统与一个或多个服务器设备或系统之间)的信息交换。图2中示出的各个设备或系统可以使用一个或多个网络链路而操作地耦合至图2中所示的网络。耦合该设备或系统的链路可以是以太网或其他类型的网络连接,并且该连接可以是无线和/或有线连接。图2中示出的一个或多个设备或系统、或者网络105、共识网络210、和/或共识网络310上的其他设备或系统,可以相对于一个或多个其他示出的设备或系统位于远程位置处。
[0039] 客户端设备102可以实现为任意合适的客户端计算系统,诸如,移动、非移动、可佩戴、和/或非可佩戴的计算设备等。客户端设备102可以表示根据本公开的一个或多个方面执行操作的智能电话、平板电脑、计算机化手表、一副或多副计算机化手套、个人数字助理、虚拟助理、游戏系统、媒体播放器、电子书阅读器、电视或电视平台、自行车、汽车,或用于自行车、汽车、或其他车辆的导航、信息和/或娱乐系统,膝上型或笔记本电脑、桌面型计算机、或任意其他类型的可佩戴、非可佩戴、移动、或非移动计算设备。
[0040] 各个节点240A至240N(共识网络210内所示)与各个节点340A至340N(共识网络310内所示)可以实现为任意合适的计算系统,诸如一个或多个服务器计算机、工作站、大型机、设备、云计算系统、和/或能够执行根据本公开的一个或多个方面描述的操作和/或功能的其他计算系统。如同计算系统112,在一些实施例中,一个或多个节点240和/或节点340可以表示向客户端设备及其他设备或系统提供服务的云计算系统、服务器群、和/或服务器集群(或其一部分)。在其他实施例中,节点240和节点340可以表示或通过数据中心、云计算系统、服务器群、和/或服务器集群的一个或多个虚拟化计算实例(例如,虚拟机、容器)而实施。例如,节点240或节点340的任意或全部可以实现为以太坊虚拟机。
[0041] 在图2的实施例中,例如,节点240A可以包括电源241A、一个或多个处理器243A、一个或多个通信单元245A、一个或多个输入设备246A、一个或多个输出设备247A、以及一个或多个存储设备250A。存储设备250A可以包括区块链模块251A、账本数据仓库252A、智能合约模块255A、以及模板数据256A。节点240A的一个或多个设备、模块、存储区域、或其他部件可以互连,以(物理地、通信地、和/或操作地)实现部件间的通信。在一些实施例中,通过通信信道(例如,通信信道242A)、系统总线、网络连接、过程间的通信数据结构、或用于传送数据的任意其他方法可以提供该连接。
[0042] 同样,节点240B可以包括电源241B、一个或多个处理器243B、一个或多个通信单元245B、一个或多个输入设备246B、一个或多个输出设备247B、以及一个或多个存储设备
250B。存储设备250B可以包括区块链模块251B、账本数据仓库252B、智能合约模块255B、以及模板数据256B。如同节点240A,节点240B的一个或多个设备、模块、存储区域、或其他部件可以互连,以(物理地、通信地、和/或操作地)实现部件间的通信。此外,如同节点240A,通过系统总线(例如,通信信道242B)、网络连接、过程间的通信数据结构、或用于传送数据的任意其他方法可以提供该连接。通常,任意给定的“节点240N”可以包括与相对于节点240B和节点240B示出的这些部件对应的部件。
[0043] 同样,还是在图2的实施例中,节点340A可以包括电源341A、一个或多个处理器343A、一个或多个通信单元345A、一个或多个输入设备346A、一个或多个输出设备347A、以及一个或多个存储设备350A。节点340A可以包括区块链模块351A、账本数据仓库352A、智能合约模块355A、以及模板数据356A。并且通常,任意给定的“节点340N”可以包括与相对于节点340A示出的这些部件对应的部件。
[0044] 在本公开中,处理器243A至243N及处理器343A至343N可以被统称为“处理器243”或“处理器343”。通信单元245A至245N及通信单元345A至345N分别可以被统称为“通信单元245”和“通信单元345”。如本文通常使用的,“N”是任意数字,以使得“处理器243”表示任意数量的处理器243并且“通信单元245”表示任意数量的通信单元245。对应地,对于使用类似编号和字母惯例示出或描述的其他部件、设备、或模块,该部件、设备、或模块可以通过相似的方式被统一引用。在一些实施例中,并且如所描述的,一个或多个节点240可以包括比其他节点240更多或更少的能力、特征、部件、和/或功能。对于特定的节点240,图2中所示的包括在一个或多个节点240内的一个或多个部件、设备、或模块是可选的。例如,尽管示出了图
2中具有账本数据仓库252的各个节点240,然而,在一些实施例中,一个或多个节点240可能不包括账本数据仓库252、或可能包括账本数据仓库252的部分副本。
[0045] 下面参考节点240A对节点240的特定方面进行描述。可以对其他节点240(例如,节点240B至节点240N)和节点340(共识网络310内所示)进行同样地描述,并且还可以包括相同、相似、或对应的部件、设备、模块、功能、和/或其他特征。因此,此处关于节点240A的描述可以对应地应用于一个或多个其他节点240(例如,节点240B至节点240N)。例如,节点240A的处理器243A的描述还可以应用于节点240B的处理器243B。此外,该描述还可以应用于节点340(例如,节点340A至节点340N),并且具体地,应用于所示出的节点340A,节点340A还包括与节点240A和节点240B对应的编号相似的部件。相应地,节点240A的处理器243A的描述还可以对应地应用于节点340A的处理器343A。此外,在一些实施例中,计算系统112可以实现为不包括在共识网络210或310内、但仍与节点240和/或340相似的计算系统。相应地,在计算系统112被实现为具有与节点240和340相似的至少一些属性的计算系统的范围内,此处关于节点240A的描述还可以应用于计算系统112。
[0046] 节点240A的电源241A可以为节点240A的一个或多个部件提供电力。电源241A可以从建筑物、家、或其他位置中的主交流电(AC)电源接收电力。在其他实施例中,电源241A可以是供应直流(DC)的电池或设备。在又一实施例中,节点240A和/或电源241A可以从另一源接收电力。节点240A内示出的一个或多个设备或部件可以连接至电源241A、和/或可以从电源241A接收电力。电源241A可以具有智能电力管理或消耗能力,并且可以通过节点240A的一个或多个模块和/或通过一个或多个处理器243A而控制、访问、或调整该特征,以智能地消耗、分配、供应、或通过其他方式管理电力。
[0047] 节点240A的一个或多个处理器243A可以实施和/或执行与节点240A相关联或与此处示出和/或下面所述的一个或多个模块相关联的功能和/或指令。一个或多个处理器243A可以是根据本公开的一个或多个方面执行操作的处理电路、可以构成根据本公开的一个或多个方面执行操作的处理电路的一部分、和/或可以包括根据本公开的一个或多个方面执行操作的处理电路。处理器243A的实施例包括微处理器、应用处理器、显示控制器、辅助处理器、一个或多个传感器集线器、以及被配置为用作处理器、处理单元、或处理设备的任意其他硬件。节点240A可以利用一个或多个处理器243A使用软件、硬件、固件、或驻留在节点240A中和/或在节点240A处执行的硬件、软件、以及固件的混合,执行根据本公开的一个或多个方面的操作。
[0048] 节点240A的一个或多个通信单元245A可以通过发送和/或接收数据而与位于节点240A外部的设备通信,并且在一些方面可以操作为输入设备和输出设备。在一些实施例中,通信单元245A可以通过网络与其他设备通信。在其他实施例中,通信单元245A可以通过诸如蜂窝无线电网络的无线电网络传送和/或接收无线电信号。在其他实施例中,节点240A的通信单元245A可以通过诸如全球定位系统(GPS)网络的卫星网络发送和/或接收卫星信号。
通信单元245A的实施例包括网络接口卡(例如,诸如以太网卡)、光学收发器、无线电频率收发器、GPS接收器、或传送和/或接收信息的任意其他类型的设备。通信单元245A的其他实施例可以包括能够通过存在于移动设备以及通用串行总线(USB)控制器等中的
GPS、NFC、ZigBee、以及蜂窝网络(例如,3G、4G、5G)、以及 无线电而通信的设备。该通信可以遵守、实施、或放弃适当的协议,包括传输控制协议/互联网协议(TCP/IP)、以太网、蓝牙、NFC、或其他技术或协议。
[0049] 一个或多个输入设备246A可以表示本文未另外单独描述的节点240A的任意输入设备。一个或多个输入设备246A可以生成、接收、和/或处理来自能够检测来自人类或机器的输入的任意类型的设备的输入。例如,一个或多个输入设备246A可以生成、接收、和/或处理电、物理、音频、图像、和/或视觉输入(例如,外围设备、键盘、麦克风、相机)形式的输入。
[0050] 一个或多个输出设备247A可以表示本文未另外单独描述的节点240A的任意输出设备。一个或多个输出设备247A可以生成、接收、和/或处理来自能够检测来自人类或机器的输入的任意类型的设备的输入。例如,一个或多个输出设备247A可以生成、接收、和/或处理电和/或物理输出(例如,外围设备、致动器)形式的输出。
[0051] 节点240A内的一个或多个存储设备250A可以存储用于在节点240A的操作过程中处理的信息。存储设备250A可以存储与根据本公开的一个或多个方面描述的一个或多个模块相关联的程序指令和/或数据。一个或多个处理器243A与一个或多个存储设备250A可以针对被实现为软件但是在一些实施例中包括硬件、固件、以及软件的任意组合的该模块提供运行环境或平台。一个或多个处理器243A可以执行指令并且一个或多个存储设备250A可以存储一个或多个模块的指令和/或数据。处理器243A与存储设备250A的组合可以检索、存储、和/或执行一个或多个应用、模块、或软件的指令和/或数据。处理器243A和/或存储设备250A还可以操作地耦合至一个或多个其他软件和/或硬件部件,包括但不限于节点240A的一个或多个部件和/或被示出为连接至节点240A的一个或多个设备或系统。
[0052] 在一些实施例中,一个或多个存储设备250A是临时存储器,是指一个或多个存储设备的主要目的不是长期存储。节点240A的存储设备250A可以作为易失性存储器被配置用于信息的短期存储,并且因此如果去活则不保留所存储的内容。易失性存储器的实施例包括本技术领域已知的随机访问存储器(RAM)、动态随机访问存储器(DRAM)、静态随机访问存储器(SRAM)、以及其他形式的易失性存储器。在一些实施例中,存储设备250A还包括一个或多个计算机可读存储介质。存储设备250A可以被配置为存储比易失性存储器更大量的信息。存储设备250A还可以作为非易失性存储器被配置用于信息的长期存储,并且在激活/关闭循环之后保留信息。非易失性存储器的实施例包括磁性硬盘、光盘、闪存存储器、或电可编程存储器(EPROM)或电可擦除和可编程(EEPROM)存储器的形式。
[0053] 区块链模块251A可以执行与遵守共识网络的协议和/或程序有关的功能。区块链模块251A可以致使通信单元245A根据共识算法或区块链协议与共识网络210内的一个或多个节点240通信,以致使其他节点240对由共识网络210内的多个节点240保持的分布式账本进行更新。区块链模块251A可以更新其自身的账本数据仓库252A、并且验证账本数据仓库252A与跨共识网络210包括的其他账本数据仓库252一致。区块链模块251A可以将信息输出至智能合约模块255A。区块链模块251A可以遵守共识协议,以验证修改账本数据仓库252A的指令的有效性。区块链模块251A可以实施分布式计算平台的一个或多个区块链服务。例如,区块链模块251可以实施以太坊计算平台或一个或多个基于超级账本的区块链或有关工具的服务。尽管可以结合图2将区块链模块251A描述为主要执行与共识网络有关的操作,然而,可替代地或此外,区块链模块251A可以执行其他操作。在一些实施例中,通过软件或通过执行软件的硬件设备,可以执行由区块链模块251A执行的功能。在其他实施例中,可以主要或部分通过硬件实施由区块链模块251A执行的功能。
[0054] 账本数据仓库252A可以表示用于将信息存储在跨共识网络210而共享或共同保持的分布式账本中的任意合适的数据结构或存储介质。存储在账本数据仓库252A中的信息可以是可搜索和/或可分类的,以使得节点240A内的一个或多个模块可以提供请求来自账本数据仓库252A的信息的输入,并且响应于输入而接收存储在账本数据仓库252A内的信息。共识网络210内的每个节点240可以统一地保持节点240内包括的账本数据仓库252,并且由此根据共识网络或共识网络210内使用的区块链协议,保持分布式账本(由跨共识网络210的节点240所存储的账本数据仓库252构成)。账本数据仓库252A可以主要由区块链模块
251A保持。账本数据仓库252A可以向其他模块提供对存储在账本数据仓库252A内的数据的访问、和/或可以分析存储在账本数据仓库252A内的数据并且代表节点240A的其他模块而输出该信息。
[0055] 智能合约模块255A可以执行与解释关于智能合约的独立于平台的信息(例如,模板)有关的功能,并且执行与完成由模板指定的智能合约的规定或条款一致的操作。智能合约模块255A可以将关于智能合约的信息存储为模板数据256A。智能合约模块255A可以对模板数据256A进行解释和/或分析,并且当执行与模板数据256A和/或模板101对应的智能合约时,识别由智能合约模块255A执行的一个或多个操作。即使模板数据256A和/或模板101中的信息不是图灵完全,智能合约模块255A也可以基于模板数据256A(或模板101)实施智能合约。智能合约模块255A可以从一个或多个其他模块接收信息并且将信息输出至一个或多个其他模块,并且可以以其他方式与节点240A的一个或多个其他模块交互和/或可以结合节点240A的一个或多个其他模块而操作。尽管可以结合图2将智能合约模块255A描述为主要执行与解释有关的操作,并且然后,强制实施智能合约的规定,然而,可替代地或此外,智能合约模块255A可以执行其他操作。
[0056] 模板数据256A可以包括从与客户端设备102的通信中接收的信息而推导的信息。从客户端设备102经由网络105接收的信息(例如,模板101)可以推导模板数据256A。节点
240A的智能合约模块255A可以将关于模板101的信息存储为模板数据256A。在一些实施例中,可以将模板数据256A存储为账本数据仓库252A的一部分。
[0057] 在图2的实施例中,并且根据本公开的一个或多个方面,一个或多个节点240可以接收模板101。例如,在可以结合图2描述的实施例中,客户端设备102(由用户103操作)检测其确定与描述智能合约的属性的信息对应的输入。客户端设备102存储描述智能合约的属性的信息。客户端设备102通过网络105输出与描述智能合约的属性的信息相同或从描述智能合约的属性的信息推导的模板101。网络105通过共识网络210与模板101通信。节点240A的通信单元245A通过共识网络210检测信号。通信单元245A将信号的指示输出至智能合约模块255A。智能合约模块255A确定信号与模板101对应。智能合约模块255A将模板101存储为模板数据256A。
[0058] 一个或多个节点240可以更新由共识网络210或共识网络210内的节点240所保持的分布式账本。例如,仍参考图2,区块链模块251A从智能合约255A接收关于模板101的信息。区块链模块致使通信单元245A通过共识网络210输出信号。共识网络210内的每个节点(或很大部分的节点240)通过共识网络210检测信号。在一个实施例中,节点240B的通信单元245B通过共识网络210检测信号。通信单元245B将信号的指示输出至区块链模块251B。区块链模块251B确定信号包括修改账本数据仓库252B的指令,以包括模板101或包括从模板101推导的信息。区块链模块251B可以将模板存储为模板数据256A。
[0059] 节点240B的区块链模块251B遵守共识协议,以验证对通过共识网络210接收的账本数据仓库252B的提议修改的有效性。同样,共识网络210内的其他节点240(例如,节点240C至节点240N)还可以遵守与共识网络210相关联的共识协议,以验证从共识网络210内的一个或多个其他节点240接收的提议修改的有效性,以将各个相应的账本数据仓库252更新为包括模板101或包括从模板101推导的信息。最后,共识网络210内的各个节点240(或大部分节点240)确定对各个账本数据仓库252的任何提议修改(与共识网络210上的分布式账本统一对应)能够被验证并且是各个账本数据仓库252的有效部分。
[0060] 一个或多个节点240可以对模板101进行解释。例如,在图2中,存储在账本数据仓库252A内或作为账本数据仓库252A的一部分的节点240A的智能合约模块255A,对模板数据256A进行解释和/或分析,并且当执行与模板数据256A和/或模板101对应的智能合约时,识别由智能合约模块255A执行的一个或多个操作。
[0061] 节点240A的智能合约模块255A可以执行由模板101指定的事务。例如,智能合约模块255A可以将信息输出至区块链模块251A,并且区块链模块251A可以确定信息包括修改账本数据仓库252A的指令,以强制实施与模板数据256A对应的智能合约。区块链模块251A可以根据由模板101指定的需求而更新账本数据仓库252A。
[0062] 由于根据模板101执行的事务,一个或多个节点240可以对由共识网络210或共识网络210内的节点240所保持的分布式账本进行更新。例如,仍参考图2,区块链模块251A致使通信单元245A通过共识网络210输出信号。共识网络210内的各个节点(或很大部分的节点240)通过共识网络210检测信号。在一个实施例中,节点240B的通信单元245B通过共识网络210检测信号。通信单元245B将信号的指示输出至区块链模块251B。区块链模块251B确定信号包括以由指令指定的方式对账本数据仓库252B进行修改的指令。在一些实施例中,指令基于根据模板101或来自节点240A的模板数据256A而执行的操作。可替代地或此外,指令包括存储在节点240A处所存储的账本数据仓库252A内的信息或从存储在节点240A处所存储的账本数据仓库252A内的信息而推导(例如,通过节点240A的智能合约模块255A所实施的智能合约)。
[0063] 节点240B的区块链模块251B遵守共识协议,以验证修改通过共识网络210所接收的账本数据仓库252B的指令的有效性。同样,共识网络210内的其他节点240(例如,节点240C至节点240N)还可以遵守与共识网络210相关联的共识协议,以验证从共识网络210内的一个或多个其他节点240所接收的指令的有效性,以更新各个相应的智能合约模块255的状态(可能涉及修改各个相应的账本数据仓库252)以执行由模板101指定的事务。最后,共识网络210内的各个节点240(或大部分节点240)确定对各个账本数据仓库252的任何提议修改(与共识网络210上的分布式账本统一对应)能够被验证并且是各个账本数据仓库252的有效部分。
[0064] 在一些实施例中,用户103可以寻求将具有相同规定的相同或相应的智能合约部署至不同的共识网络。例如,用户103可以确定(例如,出于商业、个人、营销、或其他原因)在共识网络310上实施智能合约可能比在共识网络210上实施更合适。或者,用户103可以确定智能合约应该在共识网络210和共识网络310上实施。通常,可能适合于或期望在任意数量的各种各样的共识网络上实施给定的智能合约。然而,在该情况下,该其他共识网络(例如,共识网络310)可能涉及不同的区块链协议或共识协议、或可能通过在一些方面与共识网络210不同的实施细节而被架构化。相应地,通过共识网络210中的各个节点240实施智能合约的方式,可能在共识网络310中不起作用。
[0065] 然而,在根据本公开的一个或多个方面,可以向不同共识网络内的一个或多个节点提供模板101,并且在该节点执行的智能合约可以对模板101进行重新解释,以使得由模板101表示的相同智能合约还可以在不同的共识网络上执行。换言之,在一个实施例中,共识网络310上的一个或多个节点340可以接收模板101,并且在该节点340执行的智能合约可以对模板101进行重新解释,以使得由模板101表示的相同智能合约还可以在共识网络310上执行。在一些实施例中,当智能合约在共识网络310上执行或开始执行时,之前被描述为在共识网络210上执行的智能合约可能终止和/或停止操作,以支持在共识网络310上执行的智能合约。在其他实施例中,在共识网络210上执行的智能合约可以继续操作一时间段或无限地操作,并且可以与在共识网络310上执行的智能合约并发、同时、和/或并行执行。
[0066] 例如,继续结合图2描述的实施例,客户端设备102通过网络105输出模板101。节点340A的通信单元345A通过网络105检测信号。通信单元345A将信号的指示输出至智能合约模块355A。智能合约模块355A确定信号与模板101对应。智能合约模块355A将关于模板101的信息存储为模板数据356A。
[0067] 一个或多个节点340可以对由共识网络310或共识网络310内的节点340所保持的分布式账本进行更新。例如,仍参考图2,如同结合共识网络210描述的方式,共识网络310内的节点340遵守与共识网络310相关联的共识协议,以验证将模板101或从模板101推导的信息添加至由共识网络310保持的分布式账本的提议事务的有效性。
[0068] 之后,节点340A的智能合约模块355A可以执行由模板101指定的事务。例如,当执行事务时,智能合约模块355A对模板数据356A进行分析,并且当执行与模板数据356A和/或模板101对应的智能合约时,识别由智能合约模块355A执行的一个或多个操作。智能合约模块355A可以执行事务,并且致使区块链模块351A将账本数据仓库352A更新为包括关于事务的信息。
[0069] 一个或多个节点340可以将由共识网络310所保持的分布式账本更新为包括关于事务的信息。例如,在图2中,智能合约模块355A将信息输出至区块链模块351A。区块链模块351A致使通信单元345A通过共识网络310输出信号。共识网络310内的各个节点(或很大部分的节点)通过共识网络310检测指令,以将节点340内所包括的各个相应的账本数据仓库
352更新为与账本数据仓库352A相匹配。各个节点340遵守共识协议,以验证指令的有效性。
正如智能合约模块255(或区块链模块251)致使节点240遵守共识网络210的适当程序,以实施与模板101对应的相同或大致相似的智能合约,节点340所遵守的协议可以与共识网络
210的节点240所遵守的协议不同,而是,智能合约模块355和/或区块链模块351致使节点
340遵守共识网络310的适当程序,以实施与模板101对应的智能合约。
[0070] 最后,共识网络310内的各个节点340(或大部分节点340)确定对账本数据仓库352的各个实例的提议修改(与共识网络310上的分布式账本统一对应)能够被验证。
[0071] 根据模板101在共识网络210上执行的智能合约可以继续在共识网络210内的节点240上执行。相应地,之后,共识网络310可以根据由模板101指定的智能合约的条款对分布式账本(由跨共识网络310的节点340存储的账本数据仓库352构成)进行修改,并且共识网络210还可以根据智能合约的条款继续对分布式账本(由跨共识网络210的节点240存储的账本数据仓库252构成)进行修改。
[0072] 在一些实施例中,计算系统112可以操作为作为与共识网络210和/或310交互的中间件而执行的智能合约解释器。例如,在该实施例中,计算系统112可以通过网络105从客户端设备102接收模板101。计算系统112可以与一个或多个共识网络210和310交互,以实例化执行模板101的需求的智能合约。例如,计算系统112可以与共识网络210的一个或多个节点240交互,以修改由共识网络210保持的分布式账本。对分布式账本的这种修改可能导致实施模板101的规范的智能合约被包括在分布式账本中。节点240中的一些或全部可以遵守共识协议,以验证对节点240内包括的各个账本数据仓库252的提议修改的有效性。最后,共识网络210内的各个节点240(或大部分节点240)可以确定添加由模板101指定的智能合约的提议修改是有效的事务。之后,共识网络210执行由模板101限定的智能合约的条款。如本文所述,可替代地或此外,计算系统112可以在不需要进一步编程的情况下在共识网络310上实施由模板101指定的智能合约。图2中示出和/或本公开的其他地方示出或描述的模块(例如,区块链模块251、智能合约模块255)可以执行使用软件、硬件、固件、或驻留在一个或多个计算设备中和/或在一个或多个计算设备处执行的硬件、软件、及固件的混合所描述的操作。例如,计算设备可以通过多个处理器或多个设备执行一个或多个该模块。计算设备可以将一个或多个该模块执行为在底层硬件上运行的虚拟机。一个或多个该模块可以执行为操作系统或计算平台的一个或多个服务。一个或多个该模块可以执行为计算平台的应用层的一个或多个可执行程序。在其他实施例中,通过专用硬件设备可以实施由模块提供的功能。
[0073] 尽管可以单独示出一个或多个存储设备内所包括的特定模块、数据仓库、部件、程序、可执行文件、数据项、功能单元、和/或其他项,然而,一个或多个该项可以进行组合并且操作为单一模块、部件、程序、可执行文件、数据项、或功能单元。例如,一个或多个模块或者数据仓库可以进行组合或部分进行组合,以使得它们操作为单一模块或作为单一模块提供功能。此外,一个或多个模块可以与另一模块交互和/或结合另一模块操作,以使得例如一个模块用作另一模块的服务或扩展。此外,存储设备内示出的每个模块、数据仓库、部件、程序、可执行文件、数据项、功能单元、或其他项可以包括未示出的多个部件、子部件、模块、子模块、数据仓库、和/或其他部件或模块或数据仓库。
[0074] 此外,可以通过各种方式实施存储设备内所示出的每个模块、数据仓库、部件、程序、可执行文件、数据项、功能单元、或其他项。例如,存储设备内所示出的每个模块、数据仓库、部件、程序、可执行文件、数据项、功能单元、或其他项,可以实施为可下载或预安装的应用或“app”。在其他实施例中,存储设备内所示出的每个模块、数据仓库、部件、程序、可执行文件、数据项、功能单元、或其他项可以实施为计算设备上所执行的操作系统的一部分。
[0075] 图3A和图3B是用于实施公证应用(notary application)的示例性代码列表的概念示图。图3A与限定或指定用于公证应用的智能合约的模板390A对应,其中,模板以YAML(有时被描述为“YAML不是标记语言”或“另一标记语言”的缩写)编写。图3B也与限定和/或指定用于公证应用的智能合约的模板对应,但图3B中的模板390B以JSON(JavaScript对象符号)编写。
[0076] 在图3A和图3B的每个图中,所示出的模板列表包括两部分:(1)数据模型,限定与作为智能合约执行的公证应用相关联的属性;和(2)一系列方法,能够与这些方法所修改的数据模型的部分一起被调用,以及智能合约如何对数据模型的部分进行修改。通常,将方法限定为以“动作:目的地”格式的一系列动作。如图3A和图3B中示出的,动作能够执行“创建”、“修改”、“删除”、“附加”、“前缀”、“增加”、或其他动作中的一项或多项。所指定的目的地是应用该动作的数据模型的部分。对于根据此处所述的技术的智能合约模板,即,不是图灵完全,可以从描述性的语言得到动作集合。
[0077] 在一些实施例中,图3A和图3B的模板中所限定的数据模型是通过由名称、计数器、以及签名列表构成的散列索引的字典。签名可以是由名称、日期、以及pgp串构成的字典。图3A和图3B中的模板限定了两种方法:create_doc和sign_doc。Create_doc将利用所供应的数据在根字典中创建新的条目,而不对已有条目进行修改。Sign_doc利用所供应的签名将签名列表附加在已有条目中,然后,(按照该顺序)使计数器增加。
[0078] 一个或多个节点240可以执行由图3A和/或图3B的模板指定的智能合约操作。例如,在参考图3B并且还参考图2描述的实施例中,客户端设备102通过网络105输出关于事务的信息。节点240A的通信单元245A通过网络105检测信号。通信单元245A将信号的指示输出至区块链模块251A。区块链模块251A确定信号与由实施模板390B的智能合约执行的“create_doc”动作对应。区块链模块251A执行动作(或致使智能合约模块255A执行动作),并且由此将分布式账本252A修改为包括由名称、计数器、以及签名列表构成的字典条目。区块链模块251A致使通信单元245A通过共识网络210输出信号。共识网络210内的各个节点(或很大部分的节点)通过共识网络210检测指令,以将节点240内包括的各个相应的账本数据仓库252更新为与账本数据仓库252A相匹配。各个节点240遵守共识协议,以验证指令的有效性。最后,共识网络210内的各个节点240(或大部分节点240)确定所提议的添加后的字典条目能够被验证。
[0079] 图4A是示出根据本公开的一个或多个方面的用于执行任务的示例性过程的流程图。从三个不同的角度示出了图4A的过程:由示例性节点240(虚线左侧的左列)执行的操作、由示例性客户端设备102(虚线之间的中间列)执行的操作、以及由示例性节点340(虚线右侧的右列)执行的操作。在图4A的实施例中,可以通过图2示出的上下文中的系统200执行所示出的过程。在其他实施例中,可以执行不同的操作,或可以通过一个或多个其他部件、模块、系统、和/或设备执行由具体部件、模块、系统、和/或设备执行的图4A中所描述的操作。此外,在其他实施例中,即使该操作被示出为由一个以上的部件、模块、系统、和/或设备执行,结合图4A所描述的操作可以按照不同的顺序执行、合并、省去、或可以涵盖未具体示出或描述的额外操作。
[0080] 在图4A示出的过程中,并且根据本公开的一个或多个方面,客户端设备102可以生成描述智能合约的信息(401)。例如,参考图2,客户端设备102(由用户103操作)检测确定与描述智能合约的属性的信息对应的输入。客户端设备102存储描述智能合约的属性的信息。
[0081] 节点240A通过网络105接收描述智能合约的信息(402)。客户端设备102通过网络105输出与存储在客户端设备102处的描述智能合约的属性的信息相同或从存储在客户端设备102处的描述智能合约的属性的信息推导的模板101。网络105通过共识网络210传送模板101。节点240A的通信单元245A通过共识网络210检测信号。通信单元245A将信号的指示输出至智能合约模块255A。智能合约模块255A确定信号包括关于模板101的信息。智能合约模块255A将关于模板101的信息存储为模板数据256A。
[0082] 节点240A对共识网络210进行更新,以将关于模板的信息包括在分布式账本内(403)。例如,智能合约模块255A将信息输出至区块链模块251A。区块链模块251A确定信息包括修改跨共识网络210存储的分布式账本的指令,以实施与模板数据256A对应的智能合约。区块链模块251A以与从智能合约模块255A接收的指令一致的方式对账本数据仓库252A进行更新。区块链模块251A致使通信单元245A通过共识网络210输出信号。共识网络210内的各个节点(或至少一些节点)通过共识网络210检测信号。
[0083] 在一些实施例中,通过共识网络210接收信号的该一个节点是节点240B。节点240B的通信单元245B通过共识网络210检测信号。通信单元245B将信号的指示输出至区块链模块251B。区块链模块251B确定信号包括修改账本数据仓库252B的指令。区块链模块251B进一步确定信号包括关于智能合约的信息。区块链模块251B将信息输出至智能合约模块255B,并且智能合约模块255B将关于智能合约的信息存储为模板数据256B。节点240B的区块链模块251B遵守共识协议,以验证对通过共识网络210接收的账本数据仓库252B进行修改的指令的有效性。同样,共识网络210内的其他节点240(例如,节点240C至节点240N)也可以遵守与共识网络210相关联的共识协议,以验证对其相应的账本数据仓库252进行修改的指令的有效性。最后,共识网络210内的各个节点240(或大部分的节点240)确定对账本数据仓库252的每个实例的提议修改(与共识网络210上的分布式账本统一对应)能够被验证。
[0084] 节点240A对描述智能合约101的信息进行解释(404)。例如,参考图2,智能合约模块255A对模板数据256A(可以存储在由共识网络210保持的分布式账本内)进行分析并且识别由智能合约模块255A执行的一个或多个操作。智能合约模块255A执行操作,以强制执行与模板数据256A和/或模板101对应的智能合约。
[0085] 可替代地或此外,用户103随后可以寻求将与模板101对应的智能合约部署至共识网络310。在该实施例中,共识网络310以与如何将智能合约部署至共识网络210的相似方式,实施与模板101对应的智能合约。
[0086] 换言之,共识网络310的一些或全部节点340可以接收描述智能合约的信息(405)。例如,仍参考图2,客户端设备102通过网络105输出模板101。共识网络310的节点340A通过网络105检测信号。节点340A确定信号与模板101对应。
[0087] 节点340A对共识网络310进行更新,以将关于模板的信息包括在由共识网络310保持的分布式账本内(406)。例如,智能合约模块355A将信息输出至区块链模块351A。区块链模块351A确定信息包括对跨共识网络310存储的分布式账本进行修改的指令,以实施与模板数据356A对应的智能合约。区块链模块351A以与从智能合约模块355A接收的指令一致的方式对账本数据仓库352A进行更新。区块链模块351A致使通信单元345A通过共识网络310输出信号。共识网络310内的各个节点(或至少一些节点)通过共识网络310检测信号。共识网络310内的各个节点340遵守与共识网络310相关联的共识协议,以验证修改其相应的账本数据仓库352的指令的有效性。最后,共识网络310内的各个节点340(或大部分的节点340)确定对账本数据仓库352的每个实例的提议修改(与共识网络310上的分布式账本统一对应)能够被验证。
[0088] 节点340A对描述智能合约101的信息进行解释(407)。例如,参考图2,智能合约模块355A对模板数据356A(可以存储在由共识网络310保持的分布式账本内)进行分析并且识别由智能合约模块355A执行的一个或多个操作。智能合约模块355A执行操作,以强制执行与模板数据356A和/或模板101对应的智能合约。在一些实施例中,当智能合约在共识网络310上执行或开始执行时,之前被描述为在共识网络210执行的智能合约可以终止和/或停止操作,以支持在共识网络310上执行的智能合约。在其他实施例中,在共识网络210上执行的智能合约可以继续操作一时间段或无限地操作,并且可以与在共识网络310上执行的智能合约并发、同时、和/或并行执行。
[0089] 图4B是示出根据本公开的一个或多个方面的用于执行任务的另一示例性过程的流程图。从三个不同的角度示出了图4B的过程:由示例性节点240(虚线左侧的左列)执行的操作、由示例性计算系统112(虚线之间的中间列)执行的操作、以及由示例性节点340(虚线右侧的右列)执行的操作。在图4B的实施例中,可以通过图2示出的上下文中的系统200执行所示出的过程,其中,计算系统112操作为以高于共识网络210和310的级别而执行的智能合约解释器。在其他实施例中,可以执行不同的操作,或可以通过一个或多个其他部件、模块、系统、和/或设备执行由具体部件、模块、系统、和/或设备执行的图4A中所描述的操作。此外,在其他实施例中,即使该操作被示出为由一个以上的部件、模块、系统、和/或设备执行,结合图4B所描述的操作可以按照不同的顺序执行、合并、省去、或可以涵盖未具体示出或描述的额外操作。
[0090] 在图4B示出的过程中,并且根据本公开的一个或多个方面,计算系统112可以通过网络105接收描述智能合约的信息(411)。例如,在一些实施例中,并且参考图2,客户端设备102基于用户输入生成描述智能合约的信息。客户端设备101通过网络105输出信号。计算系统112通过网络105检测来自客户端设备102的信号。计算系统112确定信号包括描述智能合约的信息,即,与在客户端设备102处生成的描述智能合约的属性的信息相同或从客户端设备102处生成的描述智能合约的属性的信息而推导。
[0091] 计算系统112可以对描述智能合约的信息进行解释(412)。例如,在一些实施例中,计算系统112对描述智能合约的信息进行分析并且确定信息与模板101对应。计算系统112识别与模板101对应的智能合约的一个或多个操作、规范、和/或需求。
[0092] 节点240A可以对共识网络210进行更新,以将与模板101对应的智能合约包括在分布式账本内(413)。例如,参考图2,计算系统112基于用户输入或通过其他方式确定与模板101对应的智能合约应该部署在共识网络210上。计算系统112通过网络105将信号输出至共识网络210。节点240A的通信单元245A通过共识网络210检测信号。节点240A的通信单元
245A将信号的指示输出至区块链模块251A。区块链模块251A确定信号包括足以致使在共识网络210上实施与模板101一致的智能合约的信息、或足以致使发起使在共识网络210上实施与模板101一致的智能合约的过程的信息。区块链模块251A将账本数据仓库252A更新为包括智能合约。区块链模块251A致使通信单元245A通过共识网络210输出信号。共识网络
210内的各个节点(或至少一些节点)通过共识网络210检测与添加新的智能合约的事务对应的信号。在节点240执行的各个区块链模块251遵守共识协议,以更新其相应的账本数据仓库252。最后,足够数量的节点240确定能够对所提议的事务进行验证,并且将新的智能合约添加至由共识网络210保持的分布式账本。之后,共识网络210内的各个节点以由模板101指定的方式强制执行智能合约的规定(414)。
[0093] 可替代地或此外,节点340随后可以对共识网络310进行更新,以将与模板101对应的智能合约包括在由共识网络310保持的分布式账本内(416)。例如,在该实施例中,计算系统112通过网络105将信号输出至共识网络310。节点340A的通信单元345A通过共识网络310检测信号。节点340A的通信单元345A将信号的指示输出至区块链模块351A。区块链模块351A确定信号包括足以在共识网络310上实施与模板101一致的智能合约的信息。区块链模块351A将账本数据仓库352A更新为包括智能合约。区块链模块351A致使通信单元345A通过共识网络310输出信号。共识网络310内的各个节点(或至少一些节点)通过共识网络310检测与添加新的智能合约的事务对应的信号。在节点340执行的各个区块链模块351遵守共识协议,以更新其相应的账本数据仓库352。最后,足够数量的节点340确定能够对所提议的事务进行验证,并且将新的智能合约添加至共识网络310上的分布式账本。之后,共识网络310内的各个节点以由模板101指定的方式强制实施智能合约的规定(417)。在一些实施例中,当智能合约在共识网络310上执行或开始执行时,之前被描述为在共识网络210上执行的智能合约可以终止和/或停止操作,以支持在共识网络310上执行的智能合约。在其他实施例中,在共识网络210上执行的智能合约可以继续操作一时间段或无限地操作,并且可以与在共识网络310上执行的智能合约并发、同时、和/或并行执行。
[0094] 对于任意流程图或流图中包括的、本文描述的过程、装置、以及其他实施例或例图,本文描述的任何技术中包括的特定操作、动作、步骤、或事件能够按照不同的顺序执行、可以添加、合并、或完全省略(例如,对于技术的实施,并非全部描述的动作或事件是必须的)。而且,在特定实施例中,例如,通过多线程处理、中断处理、或多个处理器可以并发执行操作、动作、步骤、或事件,而非顺序执行。即使未被具体识别为自动执行,可以自动执行其他的特定操作、动作、步骤、或事件。此外,可替代地,可能不能自动执行被描述为自动执行的特定操作、动作、步骤、或事件,而是确切地,在一些实施例中,可以响应于输入或另一事件而执行该操作、动作、步骤、或事件。
[0095] 为易于示出,在附图内和/或在此处参考的其他例图中示出了有限数量的设备(例如,客户端设备102、网络105、共识网络110、节点140、节点240、节点340、以及其他)。然而,可以通过多个该系统执行根据本公开的一个或多个方面的技术,并且对部件、设备、模块、和/或系统的统一引用可以表示任意数量的该部件、设备、模块、和/或系统。
[0096] 本文包括的附图各自示出了本公开的一方面的至少一个示例性实现方式。然而,本公开的范围并不局限于该实现方式。相应地,除附图中示出的这些之外,在其他实例中,本文描述的系统、方法、或技术的其他实施例或可替代实现方式可能是适当的。该实现方式可以包括附图中所包括的设备和/或部件的子集、和/或可以包括附图中未示出的额外设备和/或部件。
[0097] 上面阐述的细节描述旨在作为对各种配置的描述,并且并不旨在仅表示可以实现本文描述的构思的配置。出于提供各种构思的充分理解的目的,详细描述包括具体的细节。然而,在没有这些具体细节的情况下,可以实现这些构思。在一些实例中,为了避免模糊该构思,在参考附图中以框图形式示出了所熟知的结构和部件。
[0098] 相应地,尽管可以参考具体附图描述各种系统、设备、和/或部件的一个或多个实现方式,然而,可以通过多种不同的方式实现该系统、设备、和/或部件。例如,可替代地,本文附图(例如,图1和/或图2)中作为独立设备示出的一个或多个设备可以实现为单一的设备;可替代地,作为独立部件示出的一个或多个部件可以实现为单一的部件。此外,在一些实施例中,可替代地,本文附图中作为单一设备示出的一个或多个设备可以实现为多个设备;可替代地,作为单一部件示出的一个或多个部件可以实现为多个部件。该多个设备和/或部件中的每个可以经由有线或无线通信而直接耦合和/或经由一个或多个网络而远程耦合。此外,可替代地,本文各个附图中示出的一个或多个设备或部件可以实现为该附图中未示出的另一设备或部件的一部分。通过该方式及其他方式,两个以上设备或部件可以经由分布式处理执行本文描述的一些功能。
[0099] 此外,特定操作、技术、特征、和/或功能在本文可以被描述为由具体的部件、设备、和/或模块执行。在其他实施例中,可以通过不同的部件、设备、或模块执行该操作、技术、特征、和/或功能。相应地,即使本文未通过该方式进行具体描述,然而,在其他实施例中,在本文被描述为归属于一个或多个部件、设备、或模块的一些操作、技术、特征、和/或功能可以归属于其他部件、设备、和/或模块。
[0100] 在一个或多个实施例中,可以以硬件、软件、固件、或其任意组合中实现所描述的功能。如果以软件实现,则可以将功能作为一个或多个指令或代码存储在计算机可读介质上和/或通过计算机可读介质发送,并且由基于硬件的处理单元执行。计算机可读介质可以包括与诸如数据存储介质的有形介质对应的计算机可读存储介质、或包括便于计算机程序从一个地方传输至另一地方的任意介质的通信介质(例如,根据通信协议)。同样,通常,计算机可读介质可以对应于:(1)非易失性的有形计算机可读存储介质;或(2)诸如信号或载波的通信介质。数据存储介质可以是能够通过一个或多个计算机或者一个或多个处理器访问的任意可用介质,以检索用于实现本公开中所描述的技术的指令、代码、和/或数据结构。计算机程序产品可以包括计算机可读介质。
[0101] 例如,并且并不限于,该计算机可读存储介质能够包括RAM、ROM、EEPROM、CD-ROM、或其他光盘存储装置、磁盘存储装置、或其他磁性存储设备、闪存、或可以用于以指令或数据结构形式存储由计算机访问的期望程序代码的任意其他介质。此外,任意连接被适当称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线路(DSL)、或诸如红外、无线电、以及微波的无线技术从网站、服务器、或其他远程来源发送指令,则在介质的定义中包括同轴电缆、光纤电缆、双绞线、数字用户线路(DSL)、或诸如红外、无线电、以及微波的无线技术。然而,应当理解,计算机可读存储介质和数据存储介质并不包括连接、载波、信号、或其他瞬态介质,而是替代地面向非瞬态的有形存储介质。所使用的磁盘和光盘包括压密盘(CD)、激光盘、光盘、数字通用盘(DVD)、软盘、以及蓝光盘,其中,磁盘通常磁性地使数据再现,而光盘利用激光光学地使数据再现。上述的组合还应包括在计算机可读介质的范围内。
[0102] 一个或多个处理器可以执行指令,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)、或其他等同的集成或离散逻辑电路。相应地,本文使用的术语“处理器”或“处理电路”各自可以指适合于实现所描述技术的任意上述结构或任意其他结构。此外,在一些实施例中,可以在专用硬件和/或软件模块内提供所描述的功能。此外,能够完全在一个或多个电路或逻辑元件中实现技术。
[0103] 可以在各种各样的设备或装置中实现本公开的技术,包括无线手机、移动或非移动计算设备、可佩戴或非可佩戴的计算设备、集成电路(IC)或IC集(例如,芯片集)。在本公开中各种部件、模块、或单元被描述为强调被配置为执行所公开技术的设备的功能方面,但是,并不一定必须需要通过不同的硬件单元实现。确切地,如上所述,可以在硬件单元中对各个单元进行组合,或通过整合硬件单元的集合而提供各个单元,包括结合合适软件和/或固件的上述一个或多个处理器。