CN111125242B - 跨组织过程的变换以用于经由区块链执行 - Google Patents
跨组织过程的变换以用于经由区块链执行 Download PDFInfo
- Publication number
- CN111125242B CN111125242B CN201911007285.0A CN201911007285A CN111125242B CN 111125242 B CN111125242 B CN 111125242B CN 201911007285 A CN201911007285 A CN 201911007285A CN 111125242 B CN111125242 B CN 111125242B
- Authority
- CN
- China
- Prior art keywords
- blockchain
- state
- events
- chain
- multiparty
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 253
- 230000008569 process Effects 0.000 title claims abstract description 194
- 230000009466 transformation Effects 0.000 title abstract description 6
- 238000010586 diagram Methods 0.000 claims description 138
- 238000012545 processing Methods 0.000 claims description 43
- 230000006854 communication Effects 0.000 claims description 19
- 238000004891 communication Methods 0.000 claims description 17
- 230000009471 action Effects 0.000 claims description 4
- 230000007704 transition Effects 0.000 description 36
- 230000006870 function Effects 0.000 description 14
- 230000004044 response Effects 0.000 description 13
- 230000000694 effects Effects 0.000 description 11
- 230000008520 organization Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000001131 transforming effect Effects 0.000 description 5
- 238000013475 authorization Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000001404 mediated effect Effects 0.000 description 4
- 238000010200 validation analysis Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000081511 Matthiola lunata Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例涉及跨组织过程的变换以用于经由区块链执行。示例操作可以包括以下中的一项或者多项:接收用于经由区块链来执行多方过程的多个链外***的多个状态表示,其中每个状态表示标识相应链外***的发送事件和接收事件;从链外***的状态表示中去除一个或者多个事件以生成简化状态表示;基于包括所述简化状态表示的所述多个状态表示生成用于所述区块链的可执行链码;以及经由所述区块链的区块链节点来存储所生成的链码。
Description
技术领域
本申请大体上涉及经由区块链执行的过程,并且更具体地涉及一种***,该***将包括区块链作为中介的多组织过程变换为多个状态图,并且基于该多个状态图经由区块链来执行多组织过程。
背景技术
集中式数据库在一个位置处存储和维护数据。该位置通常是中央计算***,诸如服务器或者大型计算机。被存储在集中式数据库上的信息通常从多个不同的点可访问。例如,多个用户或者客户端工作站可以基于客户端/服务器配置同时在集中式数据库上工作。由于其单个位置,集中式数据库易于管理、维护和控制,特别是出于安全目的。在集中式数据库内,数据完整性被最大化,并且数据冗余被最小化,因为所有数据的单个存储位置还意味着给定数据集仅具有一个主要记录。这有助于尽可能准确和一致地维护数据,并且增强了数据可靠性。
然而,集中式数据库存在明显的缺点。例如,集中式数据库具有单点故障。特别地,如果没有容错设置并且发生硬件故障,则数据库内的所有数据都将丢失,并且所有用户的工作都被中断。另外,集中式数据库高度依赖于网络连接性。结果,互联网连接越慢,每次数据库访问所需的时间量就越长。另一缺点是:当集中式数据库经历大业务量时,可能出现瓶颈。此外,集中式数据库提供对数据的有限访问,因为只维护了数据的一个有效的/有用的副本。结果,多个用户可能无法在不造成问题(诸如,重写必要的数据)的情况下同时访问同一条数据。此外,由于中央数据库在最小程度上达到没有数据冗余,因此,如果数据集意外丢失,则除了通过对备份磁盘存储装置的手动操作之外,可能很难取回该数据集。
最近,各个组织已经开始经由区块链来进行协作以实施多组织过程。然而,这些过程通常在区块链与参与组织之间被低效地实施,需要进行冗余传输、接收、存储等。因此,需要一种用于经由区块链来有效地实现跨组织过程的机制。
发明内容
一个示例实施例可以提供一种***,该***包括以下中的一项或者多项:存储设备;网络接口,该网络接口被配置为接收用于经由区块链来执行多方过程的多个链外***的多个状态表示,其中每个状态表示标识相应链外***的发送事件和接收事件;以及处理器,该处理器被配置为执行以下中的一项或者多项:从链外***的状态表示中去除一个或者多个事件以生成简化状态表示;基于包括简化状态表示的多个状态表示生成用于区块链的可执行链码;以及经由存储装置来存储所生成的链码。
另一示例实施例可以提供一种方法,该方法包括以下中的一项或者多项:接收用于经由区块链来执行多方过程的多个链外***的多个状态表示,其中每个状态表示标识相应链外***的发送事件和接收事件;从链外***的状态表示中去除一个或者多个事件以生成简化状态表示;基于包括简化状态表示的多个状态表示生成用于区块链的可执行链码;以及经由区块链的区块链节点来存储所生成的链码。
另一示例实施例可以提供一种非瞬态计算机可读介质,该非瞬态计算机可读介质包括指令,这些指令在由处理器读取时使处理器执行以下中的一项或者多项:接收用于经由区块链来执行多方过程的多个链外***的多个状态表示,其中每个状态表示标识相应链外***的发送事件和接收事件;从链外***的状态表示中去除一个或者多个事件以生成简化状态表示;基于包括简化状态表示的多个状态表示生成用于区块链的可执行链码;以及经由区块链的区块链节点来存储所生成的链码。
另一示例实施例可以提供一种***,该***包括以下中的一项或者多项:存储装置,该存储装置被配置为存储链码,该链码包括从状态图生成的多方过程的可执行步骤,在该状态图中,区块链是多个链外***之间的中介;网络接口,该网络接口被配置为接收执行多方过程的请求;以及处理器,该处理器被配置为执行以下中的一项或者多项:基于请求经由执行所存储的链码处理多方过程的步骤以生成针对该步骤的处理结果,该所存储的链码包括多方过程的可执行步骤;以及经由区块链的数据区块的经哈希链接的链中间的数据区块来存储对处理步骤的标识和所生成的处理结果。
另一示例实施例可以提供一种方法,该方法包括以下中的一项或者多项:存储链码,该链码包括从状态图生成的多方过程的可执行步骤,在该状态图中,区块链是多个链外***之间的中介;接收执行多方过程的请求;基于请求经由执行所存储的链码处理多方过程的步骤以生成针对该步骤的处理结果,该所存储的链码包括多方过程的可执行步骤;以及经由区块链的数据区块的经哈希链接的链中间的数据区块来存储对处理步骤的标识和所生成的处理结果。
另一示例实施例可以提供一种非瞬态计算机可读介质,该非瞬态计算机可读介质包括指令,这些指令在由处理器读取时使处理器执行以下中的一项或者多项:存储链码,该链码包括从状态图生成的多方过程的可执行步骤,在该状态图中,区块链是多个链外***之间的中介;接收执行多方过程的请求;基于请求经由执行所存储的链码处理多方过程的步骤以生成针对该步骤的处理结果,该所存储的链码包括多方过程的可执行步骤;以及经由区块链的数据区块的经哈希链接的链中间的数据区块来存储对处理步骤的标识和所生成的处理结果。
附图说明
图1A是图示了根据示例实施例的区块链作为中介的共享处理环境的示意图。
图1B是图示了根据示例实施例的将过程描述变换为多个状态图的示意图。
图1C是图示了根据示例实施例的状态图的示意图。
图1D是图示了根据示例实施例的过程模型和对应的状态图的示意图。
图2A是图示了根据示例实施例的用于资产共享场景的对等(peer)节点区块链架构配置的示意图。
图2B是图示了根据示例实施例的对等节点区块链配置的示意图。
图3是图示了根据示例实施例的许可的区块链网络的示意图。
图4A至图4D是图示了根据示例实施例的通过变换过程描述而创建的状态图的示意图。
图4E是图示了根据示例实施例的从起始图中去除事件的过程的示意图。
图4F和图4G是图示了根据示例实施例的简化状态图的示意图。
图4H是图示了根据示例实施例的用于执行链码的架构的示意图,该链码用于执行多方过程。
图5A是图示了根据示例实施例的从多个状态图生成链码的方法的示意图。
图5B是图示了根据示例实施例的经由区块链来执行多组织过程的方法的示意图。
图6A是图示了根据示例实施例的被配置为根据本文描述的一个或者多个操作来对区块链执行各种操作的物理基础架构的示意图。
图6B是图示了根据示例实施例的在合约各方与中介服务器中间的智能合约配置的示意图,该中介服务器被配置为对区块链执行智能合约条款。
图6C是图示了根据示例实施例的在合约各方与中介服务器中间的智能合约配置的示意图,该中介服务器被配置为对区块链执行智能合约条款。
图6D是图示了根据示例实施例的另一示例基于区块链的智能合约***的示意图。
图7A是图示了根据示例实施例的将新的区块(block)添加至区块链账本(ledger)的过程的示意图。
图7B是图示了根据示例实施例的用于区块链的数据区块结构的内容的示意图。
图8是图示了被配置为支持示例实施例中的一个或者多个示例实施例的示例计算机***的示意图。
具体实施方式
将容易理解的是,可以按照各种不同的配置来布置和设计如本文在附图中一般地描述和图示的这些组件。因此,下面对如在附图中表示的方法、装置、非瞬态计算机可读介质和***中的至少一个的实施例的详细描述不旨在限制所要求保护的本申请的范围,而是仅代表所选择的实施例。
如贯穿本说明书描述的这些特征、结构或者特点可以在一个或者多个实施例中按照任何合适的方式被组合。例如,贯穿本说明书使用短语“示例实施例”、“一些实施例”或者其他类似的语言是指结合实施例描述的特定特征、结构或者特点可以被包括在至少一个实施例中这一事实。因此,贯穿本说明书出现短语“示例实施例”、“在一些实施例中”、“在其他实施例中”或者其他类似的语言不一定都是指相同的一组实施例,并且所描述的特征、结构或者特点可以在一个或者多个实施例中按照任何合适的方式被组合。
另外,虽然术语“消息”可能已经被用于描述实施例,但是该应用可以被应用于许多类型的网络数据,诸如,分组(packet)、帧、数据报等。术语“消息”还包括分组、帧、数据报及其任何等效物。此外,虽然可以在示例性实施例中描绘某些类型的消息和信令,但是它们不限于某种类型的消息,并且该应用不限于某种类型的信令。
示例实施例提供了方法、***、非瞬态计算机可读介质、设备和/或网络,它们将多组织过程描述变换为可以经由区块链实现的链码。
分散式数据库是分布式存储***,该分布式存储***包括彼此通信的多个节点。区块链是分散式数据库的示例,该分散式数据库包括类似于能够在相互不受信任的各方之间维护记录的分布式账本的仅附加不可变数据结构。不受信任的各方在本文中可以被称为对等节点或者节点。每个对等节点维护数据库记录的副本,并且没有单个对等节点可以在分布式对等节点中间未达成共识的情况下修改数据库记录。例如,对等节点可以执行共识协议以验证区块链存储事务,将存储事务聚合(group)到区块中,并且在区块上构建哈希链。该过程根据需要通过对存储事务进行排序来形成账本,以获得一致性。在公共区块链或者免许可的区块链中,任何人都可以参与,而无需特定身份。公共区块链通常涉及本地加密货币,并且使用基于工作量证明(PoW)的共识。另一方面,许可的区块链数据库提供了以下***:该***可以保护在共享共同目标但是彼此不完全信任的一组实体(诸如,交换资金、商品、信息等的企业)中间的相互交流。
区块链操作针对分散式存储方案定制的并且被称为“智能合约”或者“链码”的任意可编程逻辑。在一些情况下,可以存在针对管理功能和参数的专用链码,其被称为***链码。智能合约是受信任分布式应用,其利用区块链数据库的防篡改属性和节点之间被称为背书或者背书策略的底层协议。一般而言,通常必须在将区块链事务提交(commit)到区块链之前对区块链事务进行“背书”,而未进行背书的事务被忽略。典型的背书策略允许链码以对于背书而言必需的一组对等节点的形式来指定针对事务的背书节点。当客户端将事务发送至背书策略中所指定的对等节点时,执行事务以验证事务。在验证之后,事务进入排序阶段,在该排序阶段中,使用共识协议来产生被聚合到区块中的已背书事务的有序序列。
节点是区块链***的通信实体。“节点”可以在不同类型的多个节点可以在同一物理服务器上运行的意义上执行逻辑功能。节点在信任域中被聚合,并且与按照各种方式控制它们的逻辑实体相关联。节点可以包括不同的类型,诸如,向背书节点(例如,对等节点)递交(submit)事务调用并且向排序服务(例如,排序节点)广播事务提案的客户端或者递交客户端节点。另一类型的节点是可以接收客户端递交的事务,提交事务以及维护区块链事务的账本的状态和副本的对等节点。对等节点也可以扮演背书节点的角色,但是这不是必要条件。排序服务节点(ordering-service-node)或者排序器(orderer)是为所有节点运行通信服务的节点,并且其实现递送保证,诸如,在提交事务和修改区块链的世界状态时向***中的对等节点中的每个对等节点进行的广播,其是针对通常包括控制信息和设置信息的初始区块链事务的另一名称。
账本是区块链的所有状态转变的有序防篡改记录。状态转变可以由参与方(例如,客户端节点、排序节点、背书节点、对等节点等)递交的链码调用(即,事务)引起。事务可以引起一组资产键值对被提交到账本作为一个或者多个操作数,诸如,创建、更新、删除等。账本包括被用于以区块的形式存储不可变的有序记录的区块链(也被称为链)。账本还包括状态数据库,该状态数据库维护区块链的当前状态。每个通道通常存在一个账本。每个对等节点为它们是其成员的每个通道维护账本的副本。
链是事务日志,该事务日志被构造为经哈希链接的区块,并且每个区块包括N个事务的序列,其中N等于或者大于1。区块报头包括区块的事务的哈希以及前一区块的报头的哈希。按照这种方式,可以对账本上的所有事务进行排序并且密码地将它们链接在一起。因此,不可能在不破坏哈希链路的情况下篡改账本数据。最近添加的区块链区块的哈希表示链上在其之前到来的每次事务,这可以确保所有的对等节点处于一致并且受信任的状态。链可以被存储在对等节点文件***(即,本地文件***、附加存储文件***、云文件***等)上,从而有效地支持区块链工作负载的仅附加性质。
不可变账本的当前状态表示针对被包括在链事务日志中的所有键的最新值。由于当前状态表示通道已知的最新键值,因此,其有时被称为世界状态。链码调用针对账本的当前状态数据执行事务。为了使这些链码交互有效,键的最新值可以被存储在状态数据库中。状态数据库可以只是链的事务日志的索引视图,因此,可以随时从链中重新生成状态数据库。在对等节点启动之后并且在事务被接受之前,可以自动恢复(或者若需要,生成)状态数据库。
最近,区块链已经被用作在执行共享过程时多个不受信任的组织之间的中介,在该共享过程中,每一方按照某种方式与整个过程协作或者对整个过程做出贡献。多方过程(或者跨组织过程)存在于许多类型的领域中,包括:银行业、医疗保健、政治、房地产、法律、政府、租赁和共享、教育、慈善机构以及援助组织等。通常,这些过程至少涉及传输事件(或者发送事件)、由各方接收传输的接收事件以及区块链上记录事件的发生的存储事件。在这种情况下,大量的发送事件、接收事件和存储事件不会改变各方中的一方或者多方的状态。
示例实施例通过将多方过程描述(图解)转换为多个状态表示(例如,图表等)来克服这些缺点,使得各方中的每一方具有其自己的相应状态图,包括区块链。此外,可以从状态表示中去除事件,其中,该方的状态不会如本文进一步描述的那样发生改变,从而产生了简化状态图。这些简化状态图可以被用于开发可以由区块链节点执行以有效地实施多方过程的链码(软件工件)。
本文所描述并且描绘的本解决方案的一些益处包括:将涉及所有各方的过程模型转变为每一方的单独的状态表示,从而简化了对每一方的理解。此外,实施例通过从状态表示中去除事件来执行减少在多方过程内的针对所有各方的存储事件、传输事件和接收事件的量。而且,可以通过不可变区块链账本来标识多方过程的当前步骤,该不可变区块链账本提供用于保持追踪多方过程的当前状态,而不需要中央中介的机制。
区块链与传统数据库的不同之处在于:区块链不是中央存储装置,而是分散式不可变的并且安全的存储装置,其中,节点必须共享存储装置中的记录的变化。区块链中固有的并且帮助实现区块链的一些属性包括但不限于:不可变账本、智能合约、安全性、隐私、分散化、共识、背书、可访问性等,本文进一步描述了这些属性。
根据各种方面,智能合约可以被用于实现变换的跨组织过程。例如,智能合约(链码)可以包括用于执行本文所描述的简化状态图的指令。此外,***的分散性质使得能够构建整个***,而不依赖于中央控制点。因此,可以按照共享方式来创建信任,而不依赖于单个实体的授权。
示例实施例提供了优于传统数据库的许多益处。例如,通过区块链,实施例不需要用于管理在具有利益冲突的各方之间的一致性和信任的附加机制,其可能产生较大的成本。同时,传统数据库将需要进行检查和平衡以防止单个机构访问并且控制多方的数据。
图1A图示了根据示例实施例的区块链作为中介的共享处理环境100A,图1B图示了根据示例实施例的将过程描述变换为多个状态图,并且图1C图示了根据示例实施例的状态图的示例。参照图1A,包括A、B和C的多个组织协作以执行共享多方过程110。此处,每个组织执行其自己的相应过程102、104和106,而每个过程的一些方面与共享多方过程110重叠。根据各种实施例,共享多方过程110使用区块链111来记录在组织A、B和C与区块链之间发生的事件。
图1B图示了将过程模型变换为多个状态图,并且然后将状态图转换为简化状态图的过程100B的示例。同时,图1C提供了过程模型120的示例。在图1C的示例中,过程模型120是有关在过程执行期间事情应该如何发生的描述。换言之,“过程模型”可以是“过程描述”或者“过程定义”。可以在区块链之外执行从过程模型120转换为简化状态图141至144。例如,人或者***可以将简化状态图提供至所有区块链对等节点。过程模型120可以是XML形式的,但是示例实施例也可以被应用于任何非XML过程描述。
在图1B的示例中,过程模型120最初被变换为多个状态图131至134(该多个状态图131至134在本文中可以被称为状态表示)。每一方和区块链可以具有其相应的状态图。状态图标识在多方过程110期间将由相应方执行的事件。根据各种实施例,多个状态图131至134可以从中去除一个或者多个事件以创建简化状态图141至144。事件可以被去除以提高处理效率。例如,连续接收事件可能不会改变一方的状态,并且因此,接收事件中的至少一个接收事件可以被去除。
在图1C中示出的过程模型120图示了表示针对在图1A中示出的多方过程110由每一方执行的步骤的泳道图。此处,各方包括客户122、承保人124和检验员126,他们按照协作方式来执行保险索赔过程。在图1B中生成的状态图131至134可以表示由每个相应方122、124和126以及充当中介的区块链执行的事件。
维护在跨组织业务过程中的一致性和相互信任一直是IT行业的长期挑战。在组织内的集中式业务(business)过程中,可以共享和验证有关企业活动的信息,并且过程的参与者彼此信任。然而,在跨组织过程中,当将过程控制移交给组织之外的参与者时,其他方无法验证数据准确性,执行义务或者检查是否满足条件。结果,在不同组织的分段过程之间移动控制往往导致不一致并且不受信任的过程管理。
跨组织业务过程区块链可以被用作在管理跨组织业务过程中的一致性和信任问题的解决方案。在跨越组织的业务过程网络中的事务可以由参与者共享和验证,这是一种不要求参与者彼此信任的机制。参与者之间的事务也可以通过对由所有过程参与者同意的业务逻辑进行编码的智能合约(也被称为链码)而被处理。每个参与者运行其自己的私有过程,而由参与者共享的整个过程由如在图1A中示出的区块链管理。
虽然区块链技术有可能帮助改变集成和自动化的水平,但是使用区块链来管理跨组织业务过程存在其他挑战,包括:定义跨组织边界控制过程的整个工作流,参与者的私有过程必须履行共享流程所给予的责任,并且由于基于区块链的解决方案仍然面临技术挑战(诸如,吞吐量限制、延迟限制、大小限制和带宽限制),因此,必须高度优化在区块链上所构建的机制。
为了解决上面提到的挑战,示例实施例包括用于进行以下操作的方法:(1)将单个业务过程模型变换为多个状态图,(2)优化所生成的状态图,并且(3)从状态图生成智能合约和参与者应用。由于该方法允许我们表示将被自动变换为智能合约和Web应用的整个工作流,因此,他们彼此总是一致的。实施例将过程模型变换为状态图,并且用于优化所生成的状态图。可以从状态图生成软件工件,这些软件工件是智能合约和Web应用。
示例实施例与现有研究的不同之处在于:简单的过程图(诸如,在图1C的示例中示出的简单的过程图)可以被用作生成作为模型变换的目标的状态图的输入。***可以深入研究有关在参与者之间交换消息的方式以及软件过程引擎、协作图或者编排图支持过程的方式的细节。状态图具有优于其他行为表示的以下优点。例如,状态图可以表示区块链以及多个过程参与者,因为状态图通过接收和发送事件来彼此通信。已经使状态图标准化,因此,已经可获得开发人员支持,包括工具和教育。此外,状态图的形式方面使得能够精确地定义组成和优化逻辑。状态图也接近实现,因此,可以基于状态图来容易地构建最终的软件工件。
如在图1B的示例中示出的,***将过程模型作为输入,并且将其变换为用于区块链和组织的应用的状态图。然后,组织的状态图被简化为优化状态图,并且使用简化计算的结果,还简化了用于区块链的状态图。为了定义过程模型,可以使用以下一小组建模元素,包括:充当过程触发的开始事件;表示过程的结果的结束事件;描述必须完成的工作的活动;示出执行活动的顺序的序列流;创建备选流程的决策,其中,只可以采取路径中的一条路径;将两个备选序列路径组合成一条路径的合并;根据参与者角色来对活动进行分类的泳道,其中,一个池设置有多条“道”。图1C示出了具有两个决策和一次合并的示例保险支付过程,其中,客户、承保人和检验员是过程的参与者。
在过程被触发之后,客户准备索赔并且将其递交至承保人,承保人然后请求检验员对索赔进行调查。检验员决定是否接受索赔。如果检验员不接受索赔,则承保人发送决策(不接受索赔)。在接收到决策之后,客户同样决定是否接受决策。在客户不接受决策的情况下,她更新索赔,并且再次将索赔递交至承保人;或者,过程终止。如果检验员接受索赔,则承保人进行支付,该支付将由客户接收。为了定义将过程模型作为输入的变换,可以将过程模型形式化为5元组<O;o0;F;P;R>,其中,O是流对象集合,包括开始事件和结束事件、活动、决策和合并,o0∈O是开始事件,是流关系,P是参与者集合,并且R:O→Pi是使流对象与参与者相关联的映射。流关系(o;o′;t)表示从对象o到另一对象o′的对象流,该o′的流类型由t指示。当可以从源对象和目标对象唯一地导出流类型时,我们不会明确地描述它。
然后,我们借助于一组状态图来表示由多个组织共享的过程。基于区块链的基础架构可以被认为是状态转变***,其中,所递交的事务被记录为状态的改变。对于单独的参与者,状态图也可以被用于行为描述,该行为描述提供接口规范的基础以及功能的实现。另外,过程参与者与区块链之间的交互可以被建模为发送和接收针对其通信的事件的一组状态图。因此,使用状态图来表示区块链和过程参与者的行为和交互被认为是一种有前景的方法。当状态图被用于表示共享过程时,两种不同类型的模型之间的映射必须满足两个要求:参与者之间的所有通信必须由区块链起中介作用以确保一致性和信任,并且所有参与者共享同一商定的过程。
图1D示出了将具有两个参与者A和B的分段过程模型变换为对应的状态图以表示活动的行为的过程160。我们使用三个状态图,一个状态图用于区块链,而其他状态图用于参与者A和B。此处,我们用箭头来表示从一种状态s到另一种状态s′的转变,具有标签e/a1、...、an,其中,当发生转变时,e是要接收的事件,而a1、...、an是要发送的事件。我们还分别描述了在转变没有接收事件或者发送事件的情况下的/a1、...、an和e。
所有状态图都以第一状态s1,和/>开始。当对象流进入活动时,区块链发送事件bA和bB,并且转变到状态s2。当接收到bA和bB时,参与者A和B分别转变到状态/>和/>在活动结束之后,参与者A转变到状态/>并且发送事件fA,该事件fA将由区块链接收。区块链然后转变到状态s3,并且发送将由参与者B接收的事件fB。因此,所有通信都由区块链起中介作用,并且所有参与者共享同一过程。
图2A图示了根据示例实施例的区块链架构配置200。参照图2A,区块链架构200可以包括某些区块链元素,例如,一组区块链节点202。区块链节点202可以包括一个或者多个节点204至210(仅通过示例描绘这四个节点)。这些节点参与若干活动,诸如,区块链事务添加和验证过程(共识)。区块链节点204至210中的一个或者多个可以基于背书策略来对事务进行背书,并且可以为架构200中的所有区块链节点提供排序服务。区块链节点可以发起区块链认证,并且寻求写入被存储在区块链层216中的区块链不可变账本,该区块链不可变账本的副本还可以被存储在基础物理基础架构214上。区块链配置可以包括被链接至应用编程接口(API)222以访问并且执行所存储的程序/应用代码220(例如,链码、智能合约等)的一个或者多个应用224,可以根据参与者寻求的定制配置来创建所存储的程序/应用代码220,并且所存储的程序/应用代码220可以维持其自己的状态,控制其自己的资产,以及接收外部信息。这可以被部署为事务,并且可以经由附加到分布式账本被安装在所有的区块链节点204至210上。
区块链基础或者平台212可以包括各种区块链数据层、服务(例如,密码信任服务、虚拟执行环境等)以及可以被用于接收并且存储新的事务并且向寻求访问数据条目的审计员提供访问权限的基础物理计算机基础架构。区块链层216可以使接口暴露出来,该接口提供处理程序代码和接合物理基础架构214所必需的虚拟执行环境的访问权限。密码信任服务218可以被用于核实事务(诸如,资产交换事务)和使信息保持私密。
图2A所示区块链架构配置可以经由暴露出来的一个或者多个接口以及由区块链平台212提供的服务来处理和执行程序/应用代码220。代码220可以控制区块链资产。例如,代码220可以存储和传递数据,并且可以由节点204至210以智能合约和相关联的链码的形式执行,该相关联的链码具有受其执行的影响的条件以及其他代码元素。作为非限制性示例,可以创建智能合约以执行提醒、更新和/或受改变、更新等影响的其他通知。此外,根据各种实施例,智能合约可以被配置为基于已经从过程描述变换的状态图实施跨组织过程。智能合约本身可以被用于标识与授权和访问要求以及对账本的使用相关联的规则。在该示例中,读集226可以由被包括在区块链层216中的一个或者多个处理实体(例如,虚拟机)处理。写集228可以包括对键值的改变。物理基础架构214可以被利用来取回本文描述的数据或者信息中的任何数据或者信息。
在链码内,可以经由高级应用和编程语言来创建智能合约,并且然后将其写入区块链中的区块。智能合约可以包括利用区块链(例如,区块链对等节点的分布式网络)被注册、存储和/或复制的可执行代码。事务是对可以响应于与满足智能合约相关联的条件而被执行的智能合约代码的执行。执行智能合约可以触发对数字区块链账本的状态的(多次)受信任修改。可以通过一个或者多个共识协议来在区块链对等节点的整个分布式网络中自动复制由智能合约执行引起的对区块链账本的(多次)修改。
智能合约可以按照键值对的格式来将数据写入区块链。此外,智能合约代码可以读取被存储在区块链中的值并且在应用操作中使用它们。智能合约代码可以将各种逻辑操作的输出写入区块链。代码可以被用于在虚拟机或者其他计算平台中创建临时数据结构。被写入区块链的数据可以是公共的和/或可以对其进行加密并且将其保持为私密的。所提供的执行环境将由智能合约使用/生成的临时数据保存在存储器中,然后,一旦标识了针对区块链所需的数据,就将其删除。根据各种实施例,读集226可以包括多方过程的当前处理步骤。同时,写集228可以包括处理步骤的执行结果,这些结果可以包括对步骤的标识、在处理步骤期间所执行的发送事件和接收事件等。
链码可以包括对智能合约的代码解释,具有附加特征。如本文描述的,链码可以是被部署在计算网络上的程序代码,其中,链码由链验证器在共识过程期间一起执行和验证。可以基于区块链和多个链外***的多个状态图来生成链码。链码接收哈希,并且从区块链中取回与通过使用先前存储的特征提取器而创建的数据模板相关联的哈希。如果哈希标识符的哈希和从存储的标识符模板数据创建的哈希相匹配,则链码向所请求的服务发送授权密钥。链码可以写入与密码细节相关联的区块链数据。
图2B图示了根据示例实施例的在区块链的节点之间的事务流程250的示例。参照图2B,事务流程可以包括:由应用客户端节点260将事务提案291发送至背书对等节点281。该背书对等节点281可以核实客户签名并且执行链码功能以发起事务。输出可以包括链码结果、在链码中读取到的键/值版本的集合(读集)以及在链码中被写入的键/值的集合(写集)。若批准,则将提案响应292与背书签名一起发送回客户端260。该客户端260将背书聚集到事务有效负载293中,并且将其广播到排序服务节点284。该排序服务节点284然后将有序的事务作为区块递送至通道上的所有对等节点281至283。在提交到区块链之前,每个对等节点281至283都可以验证事务。例如,对等节点可以检查背书策略以确保恰当地分配指定的对等节点已经对结果进行了签名并且已经向事务有效负载293认证了签名。
根据各种实施例,事务291可以包括执行多方过程的请求,在该多方过程中,区块链是多个链外***(诸如,组织、团体、公司、用户、代理和/或等等)之间的中介。事务291可以标识要执行的当前步骤,或者事务291可以不标识要执行的当前步骤。链码可能能够基于针对多方过程的被存储在分布式账本(例如,世界状态数据库、区块链等)上的状态的当前键值,来确定要在多方过程中执行的下一步骤。请求可以由一个或者多个对等节点进行背书,并且在成功进行背书之后,可以被转发至排序节点以用于包括在数据区块内并且存储在区块链中间。
客户端节点260可以通过构建请求并且将请求发送至作为背书节点的对等节点281来发起事务291。事务提案291可以包括存储有关软件模型的子组件的执行结果的信息的请求。可以存在一个以上背书节点,但是为了方便起见,此处示出了一个背书节点(即,对等节点281)。客户端260可以包括利用支持的软件开发工具包(SDK)(诸如,NODE、JAVA、PYTHON等)的应用(例如,web应用等),支持的软件开发工具包(SDK)利用可用的API来生成事务提案。事务提案291是调用链码功能,使得可以读取数据和/或将数据写入账本(即,为资产写入新的键值对)的请求。SDK可以用作将事务提案打包成适当的架构格式(例如,通过远程过程调用(RPC)的协议缓冲区)并且获取客户端的加密凭证以产生用于事务提案的唯一签名的垫片(shim)。
作为响应,背书对等节点281可以核实:(a)良好地形成事务提案,(b)在过去还未递交事务(重放-攻击保护),(c)签名是有效的,以及(d)递交者(在该示例中,为客户端260)被适当授权以在该通道上执行所提议的操作。背书对等节点281可以将事务提案输入视为调用的链码函数的自变量。然后针对当前状态数据库执行链码以产生包括响应值、读集和写集的事务结果。根据各种实施例,事务结果可以包括执行多方过程的当前步骤的结果。然而,此时,不对账本进行更新。在292中,与背书对等节点281的签名一起将值的集合作为提案响应292传递回客户端260的SDK,该SDK对有效负载进行解析以供应用使用。
作为响应,客户端260的应用检查/核实背书对等节点签名,并且比较提案响应以确定提案响应是否相同。如果链码仅查询账本,则应用将检查查询响应,并且通常不会将事务递交至排序节点服务284。如果客户端应用打算将事务递交至排序节点服务284以更新账本,则应用确定在递交之前是否已经满足指定的背书策略(即,事务所需的所有对等节点都对事务进行了背书吗)。此处,客户端可以仅包括事务的多方中的一方。在这种情况下,每个客户端可以具有其自己的背书节点,并且每个背书节点都将需要对事务进行背书。架构使得即使应用选择不检查响应或者以其他方式转发未背书的事务,背书策略也仍然将由对等节点执行并且在提交验证阶段支持背书策略。
在成功检查之后,在步骤293中,客户端260将背书聚集到事务中,并且将事务消息中的事务提案和响应广播到排序节点284。事务可以包括读集/写集、背书对等节点签名和通道ID以及本文描述的时间戳信息和多方过程信息,诸如,对所执行的当前步骤的标识、在步骤期间执行的发送事件和接收事件等。排序节点284不需要检查事务的整个内容以便执行其操作,而是排序节点284可以简单地从网络中的所有通道接收事务,通过通道按时间顺序对它们进行排序,并且每通道创建事务的区块。
将事务的区块从排序节点284递送至通道上的所有对等节点281至283。验证区块内的事务294以确保满足任何背书策略,并且确保针对读集变量,账本状态没有发生改变,因为读集通过事务执行而生成。将区块中的事务标记为有效或者无效。此外,在步骤295中,每个对等节点281至283将区块附加到通道的链,并且对于每个有效的事务,将写集提交到当前状态数据库。发出事件,以向客户端应用通知事务(调用)已经被不可变地附加到链,以及通知事务是否已经被验证或者未被验证。
图3图示了许可的区块链网络300和管理用户角色和许可的认证机构318的示例,该许可的区块链网络300以分布式、分散的对等架构为特征。在该示例中,区块链用户302可以向许可的区块链网络310递交事务。在该示例中,事务可以是部署、调用或者查询,并且可以通过利用SDK的客户端侧应用、直接通过REST API等来发出事务。受信任企业网络可以提供调节器***314(诸如,审计员(例如,美国股票市场中的证券交易委员会))的访问权限。同时,节点的区块链网络操作员***308管理成员许可,诸如,将调节器***310登记为“审计员”,并且将区块链用户302登记为“客户”。审计员可以仅限于查询账本,而客户端可以被授权部署、调用和查询某些类型的链码。
区块链开发者***316编写链码和客户端侧应用。区块链开发者***316可以通过REST接口来将链码直接部署到网络。为了将来自传统数据源330的凭证包括在链码中,开发者***316可以使用带外连接来访问数据。在该示例中,区块链用户302通过对等节点312连接至网络。在继续进行任何事务之前,对等节点312从证书机构318取回用户的登记和事务证书。在一些情况下,区块链用户必须拥有这些数字证书以便在许可的区块链网络310上进行事务。同时,可能需要试图驱动链码的用户对传统数据源330核实其凭证。为了确认用户的授权,链码可以通过传统的处理平台320来使用至该数据的带外连接。
图4A图示了区块链的状态图400A的示例。此外,图4B至图4D图示了不同相应各方(客户、承保人、担保人)的状态图410A、420A和430A的示例。如在图4A的示例中示出的,事件由节点402表示,这些节点402在其间包括链路404以标识事件的顺序。而且,在链路的旁边以及两个事件之间包括发送事件和接收事件的列表406。状态图最初可以包括比所必要的显著更多的事件,这是由于与多方相关联的冗余存储装置和传输功能性与作为中介的区块链交互。
根据各种实施例,可以使用遍历过程模型(诸如,在图1C的示例中示出的过程模型120)的子过程来生成状态图(例如,状态图400A至430A)。例如,子过程可以被定义为将过程模型变换为状态图。作为一个示例,子过程可以遍历输入的过程模型,并且根据过程模型中的对象的类型来创建状态图。活动对象和合并对象可以被转变到两次状态转变中,并且决策对象可以被转变到三次状态转变中。被附加到转变的是发送事件和接收事件,发送事件和接收事件构成通信。子过程的逻辑可以产生具有未发生接收事件和/或发送事件的转变的状态图。这些事件可以被去除。可以使用将标签、参与者和对象作为输入并且将这些与这些参数的组合所特有的事件相关联的功能。该功能可以被用来生成通过交换相同名称的事件来彼此通信的状态图。存储器映射可以被用于保持过程模型中的对象与状态图中的状态之间的对应关系。当功能访问之前已经访问过的对象时,逻辑可以重新使用之前创建的并且由存储器映射维护的状态。
从过程模型生成的状态图可能不是最佳的,因为触发过程模型中的活动的事件被发送给所有参与者,即使参与者未参与活动。为了减少在基于区块链的解决方案中的通信开销,示例实施例可以去除尽可能多的事件。例如,接收事件但是不发送事件的两次连续转变可以标识事件可以被去除的情况。在这种情况下,即使我们从第一次转变中消除了接收事件,状态转变的路径也是相同的。由于没有从两次状态转变中发送事件,因此,去除接收事件不会改变从状态图之外观察到的行为。该原理可以推广到一种状态具有多次传入转变和/或多次传出转变的情况。当所有传出转变都接收事件但是不发送任何事件时,我们可以安全地去除不发送任何事件的传入转变的接收事件。在图4E中,s是如在441中示出的那样其传出转变不发送任何事件的状态。因此,在442中,该过程(procedure)可以从s1到s的转变中消除e1。此外,在443中,***可以去除无事件转变,并且添加新的转变以通过被去除的转变。在444中,***可以重复在441至443中执行的对目标状态的所有传入转变的去除步骤。在状态变得不可访问的情况下,在445中,我们去除状态及其传出转变。
图4F和图4G示出了简化状态表示。特别地,如在图4F中示出的,区块链状态表示400A被简化为简化表示400B。同样,如在图4G中示出的,状态表示410A、420A和430A被简化为简化状态表示410B、420B和430B。
在获得针对区块链和过程参与者的简化状态图之后,示例实施例可以使用这些状态图来生成软件构件,这些软件构件包括智能合约和Web应用。图4H图示了用于生成智能合约和web应用以及所得到的软件工件的架构450的概况。示例实施例可以依赖于超账本结构(Hyperledger Fabric),该超账本结构是作为用于托管智能合约的架构的区块链框架。例如,链码可以包括两个组件:公用状态图引擎和状态图定义。为了提供用于与超账本结构交互的API,我们使用其客户端SDK,其客户端SDK旨在被设计用于Node.js JavaScript运行时。我们还创建了web应用,这些web应用使用从状态图生成的状态转变表,并且通过交换事件来与超账本结构交互。
在这些示例中,JSON数据可以由在超账本结构上运行的状态图引擎解译。SCXML可以被用作中间语言,因为支持工具(诸如,图形查看器和执行监视器)已经可用,并且SCXML涵盖复杂的构造,诸如,有助于开发未来扩展的子状态和并行状态。当用SCXML生成状态图时,可以给出特定的状态名称和事件名称。对于状态名称,输入过程模型中可能没有线索,因此,可以将唯一生成的名称分配给状态图中的状态。随机名称可以是可允许的,因为状态名称在状态图内是不公开的。然而,事件由多个状态图共享,因此,事件必须具有所有参与者能够同意的名称。超账本结构上的状态图引擎接受用于请求状态图操作的事务,诸如,向状态图发送事件,这将引起状态转变。其他状态图操作包括:查询当前状态和访问上次接收到的事件。用于与这种功能交互的API由超账本结构SDK和mode.js提供,该API安装链码并且将链码实例化,递交事务,并且监测由链码产生的事件。
我们还生成其行为符合由状态图定义的协议的web应用骨架,以状态转变表的形式给出这些状态图。可以基于Angular(JavaScript中的前端web应用框架)来构建web应用骨架。应用可以包括两个定制的控制器。UI控制器可以首先为所有发送事件创建可点击按钮,根据当前状态来启用/禁用按钮,并且在web应用用户点击启用按钮时引起转变。同时,事件控制器可以通过Node.js服务器来发送和接收事件,并且与作为区块链上的链码运行的状态图通信。
我们使用两种保险过程模型来对我们的方法的有效性进行了评估:海上保险涵盖由海引起的船舶、货物和码头损失或者对它们的毁坏。其涉及进口商、出口商和承保人作为参与者,并且过程模型包括22个对象和25个流。再保险是“保险的保险”,其由保险公司购买,并且允许保险公司在重大索赔事件之后保持偿付能力。其涉及再保险人、客户(保险公司)和检验员作为参与者,并且过程模型包括18个对象和18个流。
表1和表2分别总结了被应用于海上保险过程和再保险过程的我们的状态图生成和状态图简化逻辑的结果。他们示出了在状态图简化之前和之后的状态、转变、接收事件和发送事件的数目。状态图生成产生了一起工作以正确地执行过程模型的一组状态图,但是针对区块链的所得到的状态图需要相对大量的接收事件和发送事件(在海上保险中,针对22个对象的105个事件,以及在再保险中,针对18个对象的93个事件)。通过应用状态图简化,我们可以将事件的数目减少74%和65%,这帮助我们提高整个***的性能。而且,将参与者的状态图的状态转变的数目平均减少到68%,这使得更容易构建和维护符合过程模型的应用。
表1实验1
表2实验2
图5A图示了根据示例实施例的从多个状态图生成链码的方法500。例如,方法500可以由区块链对等节点执行,该区块链对等节点可以是计算***。作为另一示例,方法500可以由链外***(诸如,服务器、数据库、用户设备、设备的组合等)执行。在一些实施例中,方法500可以由***中的任何***的组合执行。
参照图5A,在502中,该方法可以包括:经由区块链来接收用于执行多方过程的多个链外***的多个状态表示,其中,每个状态表示标识相应链外***的发送事件和接收事件。状态表示可以包括状态图,在这些状态图中,节点表示事件,并且链路表示事件之间的关系。在状态表示内的事件可以包括由***中的任何***执行的发送、接收、存储等事件。每一方可以具有其自己的状态表示。此外,区块链可以具有其自己的状态表示。
在一些实施例中,接收可以进一步包括:将对多方过程的过程描述变换为多个状态表示,该多方过程包括在多个链外***与区块链之间的过程步骤。在这种情况下,区块链可以是在多方过程内的多个链外***之间的中间通信***。在一些实施例中,接收可以进一步包括:接收标识区块链的发送事件、接收事件和存储事件的区块链状态表示,并且基于区块链状态表示而进一步执行生成链码。
在504中,该方法可以包括:从链外***的状态表示中去除一个或者多个事件以生成简化状态表示。在一些实施例中,可以从状态表示中的每个状态表示中去除事件。例如,当发生两个连续接收事件,而没有发生发送事件时,可以去除接收事件中的至少一个接收事件,因为其不会改变该方的状态。在一些实施例中,去除可以包括:基于在一个或者多个事件期间由链外***执行的动作来去除一个或者多个事件。例如,如果动作是接收事件,则在某些情况下,可以去除该事件。例如,当可以去除在链外***的状态表示内的一组连续接收事件中的某一接收事件时。在一些实施例中,去除可以包括:去除链外***的多个接收事件,同时保留链外***的所有发送事件。
在506中,该方法可以包括:基于包括简化状态表示的多个状态表示来生成用于区块链的可执行链码,并且在508中,经由区块链的区块链节点来存储所生成的链码。可以基于状态表示内的步骤来生成链码,在该状态表示中,已经去除了事件步骤中的一个或者多个事件步骤,从而通过消除一个或者多个发送事件、接收事件、存储事件等提高了多方过程的效率。
图5B图示了根据示例实施例的经由区块链来执行多组织过程的方法510。例如,方法510可以由区块链对等节点或者一组对等节点执行。参照图5B,在512中,该方法可以包括:存储链码,该链码包括从状态图生成的多方过程的可执行步骤,在该状态图中,区块链是多个链外***之间的中介。在一些实施例中,状态图可以包括多方过程中的多个链外***的多个状态表示。链码可以在其中包括用于执行多方过程的步骤,包括这些步骤以及从原始状态图中去除的一个或者多个步骤的顺序。在一些实施例中,链码基于针对链外***中的一个或者多个链外***的一个或者多个简化状态图,在该一个或者多个简化状态图中,至少一个接收事件已经被去除。例如,状态图可以是多方过程的分别针对多方过程的多个链外***的多个简化状态图。
在514中,该方法可以包括:接收执行多方过程的请求。例如,请求可以包括:客户端节点请求执行多方过程。在这种情况下,链码可以基于被存储在包括区块链的分布式账本的状态数据库中的、最近执行的步骤来标识接下来是哪个步骤。此处,链码可以基于最近执行的步骤和链码中所包括的步骤顺序来标识当前步骤。
在516中,该方法可以包括:基于请求经由执行存储的链码来处理多方过程的步骤以生成针对该步骤的处理结果,该存储的链码包括多方过程的可执行步骤,并且在518中,该方法可以包括:经由区块链的数据区块的经哈希链接的链中间的数据区块来存储对处理步骤的标识和所生成的处理结果。在一些实施例中,存储对处理步骤的标识可以包括:存储被包括在多方过程内的链外***的当前执行状态。在一些实施例中,存储对处理步骤的标识可以包括:存储在执行多方过程的处理步骤期间由链外***发送和/或接收的事件。
在一些实施例中,该方法可以进一步包括:使用多个对等节点来验证在处理期间所生成的区块链结果。在一些实施例中,多方过程可以包括由多个链外***和区块链执行的共享过程。在一些实施例中,该方法可以进一步包括:基于多方过程的由区块链处理的处理步骤的结果经由区块链来处理多方过程的下一可执行步骤。
图6A图示了根据示例实施例的被配置为根据示例操作方法中的一种或者多种操作方法来对区块链执行各种操作的示例物理基础架构。参照图6A,示例配置600A包括具有区块链620和智能合约630的物理基础架构610,该物理基础架构610可以执行被包括在任何示例实施例中的任何操作步骤612。根据各种实施例,步骤/操作612可以包括:执行多方过程中的不同各方的简化状态图。步骤可以表示从驻留在计算机***配置的物理基础架构610上的一个或者多个智能合约630和/或区块链620写入或者读取的输出信息或者写入信息。可以从执行的智能合约630和/或区块链620输出数据。物理基础架构610可以包括一个或者多个计算机、服务器、处理器、存储器和/或无线通信设备。
图6B图示了根据示例实施例的在合约各方与中介服务器中间的示例智能合约配置,该中介服务器被配置为对区块链执行智能合约条款。参照图6B,配置650B可以表示通信会话、资产转移会话或者由明确地标识一个或者多个用户设备652和/或656的智能合约630驱动的多方过程(process)或者过程(procedure)。智能合约执行的执行、操作和结果可以由服务器654管理。智能合约630的内容可能需要由实体652和656中的一个或者多个进行数字签名,该实体652和656是智能合约事务的双方。智能合约执行的结果可以被写入区块链作为区块链事务。
图6C图示了根据示例实施例的在合约各方与中介服务器中间的示例智能合约配置,该中介服务器被配置为对区块链执行智能合约条款。参照图6C,配置650可以表示修改过的数据文件认证会话、通信会话、资产转移会话或者由明确地标识一个或者多个用户设备652和/或656的智能合约630驱动的过程或者过程。智能合约执行的执行、操作和结果可以由服务器654管理。智能合约630的内容可能需要由实体652和656中的一个或者多个进行数字签名,该实体652和656是智能合约事务的双方。智能合约执行的结果可以被写入区块链620作为区块链事务。智能合约630驻留在区块链620上,该区块链620可以驻留在一个或者多个计算机、服务器、处理器、存储器和/或无线通信设备上。
图6D图示了根据示例实施例的用于访问区块链的逻辑和数据的公共接口。参照图6D的示例,应用编程接口(API)网关662提供用于访问区块链逻辑(例如,智能合约630或者其他链码)和数据(例如,分布式账本等)的公共接口。在该示例中,API网关662是用于通过将一个或者多个实体652和656连接至区块链对等节点(即,服务器654)来在区块链上执行事务(调用、查询等)的公共接口。服务器654是区块链网络对等节点组件,该区块链网络对等节点组件将世界状态的副本(该副本可以包括键值储存库)保存在分布式账本内,从而允许客户端652和656查询有关世界状态的数据以及将事务递交到区块链网络中,在该区块链网络中,根据智能合约630和背书策略,背书对等节点将运行智能合约630。
图7A图示了根据示例实施例的将新的区块730添加至分布式账本720的过程700,并且图7B图示了根据示例实施例的用于区块链的区块结构730的内容。参照图7A,客户端(未示出)可以向区块链节点711、712和/或713递交事务。客户端可以是从任何源接收到的用于在区块链上制定活动的指令。作为示例,客户端可以是代表请求方(诸如,设备、个人或者实体)起作用以向区块链提出事务的应用(基于SDK)。多个区块链对等节点(例如,区块链节点711、712和713)可以维护区块链网络的状态和分布式账本720的副本。
不同类型的区块链节点/对等节点可以存在于区块链网络中,包括模拟由客户端提议的事务并且对其进行背书的背书对等节点和核实背书、验证事务并且将事务提交到账本720的提交对等节点。在该示例中,区块链节点711、712和713可以执行背书节点、提交节点或者两者的角色。如本文描述的,事务可以包括在多个不受信任的组织之间实施的多方过程中的发送事件、接收事件、存储事件等。
分布式账本720包括以区块的形式来存储不可变的顺序记录的区块链722和维护区块链722的当前状态(键值)的状态数据库724。每个通道可以存在一个分布式账本720,并且每个对等节点为他们是其成员的每个通道维护其自己的、分布式账本720的副本。区块链722是事务日志,其被构造为经哈希链接的区块,其中,每个区块包括N个事务的序列。区块(例如,区块730)可以包括各种分量,诸如,在图7B中示出的分量。可以通过在当前区块的区块报头内添加前一区块的报头的哈希来生成区块的链接(在图7A中通过箭头示出)。按照这种方式,对在区块链722上的所有事务进行排序,并且密码地将他们链接在一起,从而防止在不破坏哈希链路的情况下篡改区块链数据。此外,由于链路,区块链722中的最新区块表示在其之前到来的每次事务。区块链722可以被存储在对等节点文件***(本地存储文件***或者附加存储文件***)上,该对等节点文件***支持仅附加的区块链工作负载。
区块链722和分布式账本720的当前状态可以被存储在状态数据库724中。此处,当前状态数据表示针对区块链722的链事务日志中所包括的所有键的最新值。链码调用针对状态数据库724中的当前状态执行事务。为了使这些链码交互非常有效,所有键的最新值可以被存储在状态数据库724中。状态数据库724可以包括区块链722的事务日志的索引视图并且因此,可以在任何时候从链中重新生成状态数据库724。在对等节点启动之后,事务被接受之前,可以自动恢复(或者若需要,生成)状态数据库724。
背书节点接收来自客户端的事务,并且基于模拟结果来对事务进行背书。背书节点保存模拟事务提案的智能合约。对于认证,背书节点可以尝试使用执行哈希的节点的公钥来对经哈希的、修改过的数据文件进行解密。对事务进行背书所需的节点取决于可以在链码内指定的背书策略。背书策略的示例是“大多数背书对等节点必须对事务进行背书”。不同的通道可以具有不同的背书策略。已背书的事务由客户端应用转发至排序服务710。
该排序服务710接受已背书的事务,将他们排序到区块中,并且将区块递送至提交对等节点。例如,排序服务710可以在已经达到事务阈值时、定时器超时时或者另一条件时发起新的区块。在图7A的示例中,区块链节点712是已经接收到用于存储在区块链722上的新数据区块730的提交对等节点。
排序服务710可以由一组排序服务节点组成。排序服务710不处理事务、智能合约或者维护共享账本。而是,排序服务710可以接受已背书的事务,并且指定将那些事务提交到分布式账本720的顺序。区块链网络的架构可以被设计成使得‘排序’的具体实现(例如,Solo、Kafka、BFT等)成为可插拔的组件。
事务按照一致的顺序被写入分布式账本720。建立事务的顺序,以确保在将对状态数据库724的更新提交到网络时对状态数据库724的更新是有效的。与排序通过解决密码难题或者进行挖掘而发生的加密货币区块链***(例如,比特币等)不同,在该示例中,分布式账本720的各方可以选择最适合该网络的排序机制,诸如,按时间顺序排序。
当排序服务710将新的区块730初始化时,可以将新的区块730广播到提交对等节点(例如,区块链节点711、712和713)。作为响应,每个提交对等节点通过进行检查以确保读集和写集仍然与状态数据库724中的当前世界状态相匹配来验证在新的区块730内的事务。具体地,提交对等节点可以确定在背书节点模拟事务时存在的读取数据是否与状态数据库724中的当前世界状态相同。当提交对等节点验证事务时,将事务写入分布式账本720上的区块链722,并且用读写集中的写入数据来更新状态数据库724。如果事务失败,即,如果提交对等节点发现读写集不与状态数据库724中的当前世界状态相匹配,则被排序到区块中的事务将仍然被包括在该区块中,但是其将被标记为无效,并且将不会更新状态数据库724。
参照图7B,被存储在分布式账本720的区块链722上的区块730(也被称为数据区块)可以包括多个数据段,诸如,区块报头732、区块数据734和区块元数据736。应该了解,各种描绘的区块及其内容(诸如,在图7B中示出的区块730及其内容)仅仅出于示例之目的,而不意味着限制示例实施例的范围。在一些情况下,区块报头732和区块元数据736都可以小于存储事务数据的区块数据734,然而,这不是必要条件。区块730可以将N次事务(例如,100次、500次、1000次、2000次、3000次等)的事务信息存储在区块数据734内。根据各种实施例,每次事务可以将包括由排序节点710添加的、在区块数据734内的多方过程数据735。多方过程数据735可以包括对被执行的当前步骤的标识,在该步骤期间执行的发送和接收事件等。
区块730还可以将至前一区块(例如,在图7A中的区块链722上)的链路包括在区块报头732内。特别地,区块报头732可以包括前一区块的报头的哈希。区块报头732还可以包括唯一区块编号、当前区块730的区块数据734的哈希等。区块730的区块编号可以是唯一的,并且从零开始按照增量/相继顺序被分配。区块链中的第一区块可以被称为起源区块,该起源区块包括有关区块链、其编号、存储在其中的数据等的信息。
区块数据734可以存储被记录在区块730内的每次事务的事务信息。例如,被存储在区块数据734内的事务数据可以包括以下中的一项或者多项:事务类型、版本、时间戳(例如,最终所计算的时间戳等)、分布式账本720的通道ID、事务ID、时期、有效负载可见性、链码路径(部署tx)、链码名称、链码版本、输入(链码和函数)、客户(创建者)标识(诸如,公钥和证书)、客户签名、背书节点的身份、背书节点签名、提案哈希、链码事件、响应状态、命名空间、读集(由事务读取的键和版本的列表等)、写集(键和值的列表等)、开始键、结束键、键列表、默克尔(Merkel)树查询摘要等。可以针对N次事务中的每次事务存储事务数据。
区块元数据736可以存储多个元数据字段(例如,作为字节数组等)。元数据字段可以包括在区块创建时的签名、对最后配置区块的引用、在区块内标识有效事务和无效事务的事务过滤程序、对区块进行排序的排序服务持久的最后偏移等。签名、最后配置区块和排序服务节点元数据可以由排序服务710添加。同时,区块的提交节点(诸如,区块链节点712)可以基于背书策略、对读集/写集的核实等来添加有效/无效信息。事务过滤程序可以包括大小等于区块数据734中的事务数目的字节数组和标识事务是否有效/无效的验证代码。
上面的实施例可以被实现在硬件中,由处理器执行的计算机程序中,固件中或者上述内容的组合中。计算机程序可以被实施在计算机可读介质(诸如,存储介质)上。例如,计算机程序可以驻留在随机存取存储器(“RAM”)、闪速存储器、只读存储器(“ROM”)、可擦除可编程只读存储器(“EPROM”)、电可擦除可编程只读存储器(“EEPROM”)、寄存器、硬盘、可移除磁盘、压缩盘只读存储器(“CD-ROM”)或者本领域中已知的任何其他形式的存储介质中。
示例性存储介质可以被耦合至处理器,使得处理器可以从存储介质读取信息和向存储介质写入信息。在备选方案中,存储介质可以是处理器的组成部分。处理器和存储介质可以驻留在专用集成电路(“ASIC”)中。在备选方案中,处理器和存储介质可以作为分立组件驻留。例如,图8图示了示例计算机***架构800,该示例计算机***架构800可以表示上述组件中的任何组件或者被集成在上述组件中的任何组件中等。
图8不旨在对本文描述的本申请的实施例的使用范围或者功能性提出任何限制。无论如何,计算节点800都能够被实现和/或能够执行上文阐述的功能性中的任何功能性。例如,计算节点800可以执行关于图5所示出的并且描述的方法。
在计算节点800中,存在计算机***/服务器802,该计算机***/服务器802与许多其他通用或者专用计算***环境或者配置一起可操作。可以适用于与计算机***/服务器702一起使用的众所周知的计算***、环境和/或配置的示例包括但不限于:个人计算机***、服务器计算机***、瘦客户端、胖客户端、手持式设备或者膝上型计算机设备、多处理器***、基于微处理器的***、机顶盒、可编程消费电子产品、网络PC、小型计算机***、大型计算机***以及包括上述***或者设备中的任何***或者设备的分布式云计算环境等。
可以在由计算机***执行的计算机***可执行指令(诸如,程序模块)的一般上下文中描述计算机***/服务器802。通常,程序模块可以包括执行特定任务或者实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。可以在任务由通过通信网络被链接的远程处理设备执行的分布式云计算环境中实践计算机***/服务器802。在分布式云计算环境中,程序模块可以被定位在包括存储器存储设备的本地和远程计算机***存储介质中。
如图8所示,云计算机节点800中的计算机***/服务器802以通用计算设备的形式表现。计算机***/服务器802的组件可以包括但不限于:一个或者多个处理器或者处理单元804,***存储器806,连接不同***组件(包括***存储器806和处理单元804)的总线。
总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
计算机***/服务器802典型地包括多种计算机***可读介质。这些介质可以是任何能够被计算机***/服务器802访问的可用介质,包括易失性和非易失性介质,可移除的和不可移除的介质。***存储器806,在一个实施例中,实现其他附图的流程图。***存储器806可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)810和/或高速缓存存储器812。计算机***/服务器802可以进一步包括其他可移除/不可移除的、易失性/非易失性计算机***存储介质。仅作为举例,存储***814可以用于读写不可移除的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管未示出,但是可以提供用于对可移除非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移除非易失性光盘(例如CD-ROM、DVD-ROM或者其他光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线相连。如将在下面进一步描绘与描述的,存储器806可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块818的程序/实用工具816,可以存储在例如存储器806中,这样的程序模块42包括——但不限于——操作***、一个或者多个应用程序、其他程序模块以及程序数据。这些示例中的每一个或某种组合可能包括网络环境的实现。程序模块818通常执行本发明所描述的各实施例中的功能和/或方法。
如本领域的技术人员要了解的,本申请的各个方面可以被实施为***、方法或者计算机程序产品。因此,本申请的各个方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或者结合了在本文中通常都可以被称为“电路”、“模块”或者“***”的软件方面和硬件方面的实施例的形式。此外,本申请的各个方面可以采取被实施在一个或者多个计算机可读介质中的计算机程序产品的形式,该一个或者多个计算机可读介质上实施有计算机可读程序代码。
计算机***/服务器802也可以与一个或多个外部设备820(例如键盘、指向设备、显示器822等)通信,还可以与一个或者多个使得用户能与该计算机***/服务器802交互的设备通信,和/或与使得该计算机***/服务器802能与一个或多个其他计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口824进行。并且,计算机***/服务器802还可以通过网络适配器826与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器826通过总线与计算机***/服务器802的其他组件通信。应当明白,尽管图中未示出,但是可以结合计算机***/服务器802使用其他硬件和/或软件组件。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
虽然已经在附图中图示了并且在前面的详细描述中描述了***、方法和非瞬态计算机可读介质中的至少一个的示例性实施例,但是要明白,本申请不限于所公开的实施例,而是能够进行如下面的权利要求书阐述和限定的许多重新布置、修改和替换。例如,各个附图中的***的能力可以由本文描述的或者在分布式架构中的并且可以包括发送器、接收器或者一对发送器和接收器的模块或者组件中的一个或者多个执行。例如,由单独的模块执行的功能性的全部或者一部分可以由这些模块中的一个或者多个执行。进一步地,在模块或者组件的内部或者外部,本文描述的功能性可以在各个时间并且与各种事件相关地被执行。而且,可以经由以下中的至少一个来在模块之间发送在各个模块之间发送的信息:数据网络、互联网、语音网络、互联网协议网络、无线设备、有线设备和/或经由多种协议。而且,可以直接和/或经由一个或者多个其他模块来发送或者接收由模块中的任何模块发送或者接收的消息。
本领域的技术人员要了解,“***”可以被实施为个人计算机、服务器、控制台、个人数字助理(PDA)、蜂窝电话、平板计算设备、智能电话或者任何其他合适的计算设备或者设备的组合。将上述功能呈现为由“***”执行并不旨在按照任何方式限制本申请的范围,而是旨在提供许多实施例的一个示例。实际上,可以按照与计算技术一致的本地化和分布式形式来实现本文公开的方法、***和装置。
应该注意,在本说明书中描述的***特征中的一些***特征已经被呈现为模块,以便更特别地强调其实现独立性。例如,模块可以被实现为包括定制的超大规模集成(VLSI)电路或者门阵列、现成半导体(诸如,逻辑芯片、晶体管或者其他分立组件)的硬件电路。模块还可以被实现在可编程硬件设备中,诸如,现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等。
模块还可以至少部分地被实现在软件中以用于由各种类型的处理器执行。例如,所标识的可执行代码单元可以包括计算机指令的一个或者多个物理块或者逻辑块,例如,该计算机指令可以被组织为对象、过程或者功能。然而,所标识的模块的可执行文件不需要在物理上位于一起,而是可以包括被存储在不同位置的不同指令,当在逻辑上被连接在一起时,这些不同指令包括模块,并且实现模块的所述目的。进一步地,模块可以被存储在计算机可读介质上,例如,该计算机可读介质可以是硬盘驱动器、闪存设备、随机存取存储器(RAM)、磁带或者被用于存储数据的任何其他这种介质。
实际上,可执行代码模块可以是单个指令或者许多指令,并且甚至可以被分布在若干不同的代码段上,不同的程序之间,以及若干存储器设备上。类似地,本文中可以在模块内标识和图示操作数据,并且可以按照任何合适的形式来实施操作数据以及将操作数据组织在任何合适类型的数据结构内。可以采集操作数据作为单个数据集,或者可以将操作数据分布在不同的位置上,包括分布在不同的存储设备上,并且至少部分地,操作数据可以仅作为***或者网络上的电子信号而存在。
将容易理解的是,可以按照各种不同的配置来布置和设计本申请中的如本文在附图中一般地描述和图示的组件。因此,对实施例的详细描述不旨在限制所要求保护的本申请的范围,而仅仅代表本申请的所选择的实施例。
本领域的普通技术人员将容易理解的是,可以利用处于不同顺序的步骤和/或利用处于不同于所公开的那些配置的配置中的硬件元件来实践上述内容。因此,虽然已经基于这些优选实施例描述了本申请,但是对于本领域的技术人员而言将明显的是,某些修改、变型和备选构造将是明显的。
虽然已经描述了本申请的优选实施例,但是要明白,所描述的实施例仅是说明性的,并且当考虑本申请的等效物和修改的全范围(例如,协议、硬件设备、软件平台等)时,本申请的范围仅由所附权利要求书限定。
Claims (33)
1.一种计算***,包括:
处理器,所述处理器被配置为基于多方过程的多个链外***之间的建模通信过程来生成多个状态表示,其中区块链是所述多个链外***之间的中介,其中每个状态表示对相应链外***的发送和接收事件建模;
其中所述处理器还被配置为从链外***的状态表示中去除一个或者多个事件以生成简化状态表示,基于所述简化状态表示生成用于所述多方过程的执行的可执行链码,并且经由存储设备来存储所生成的所述链码。
2.根据权利要求1所述的计算***,其中所述处理器还被配置为将对所述多方过程的过程描述变换为所述多个状态表示,所述多方过程包括在所述多个链外***与所述区块链之间的过程步骤。
3.根据权利要求2所述的计算***,其中所述区块链是在所述多方过程内的所述多个链外***之间的中间通信***。
4.根据权利要求1所述的计算***,还包括网络接口,所述网络接口还被配置为接收对所述区块链的发送事件、接收事件和存储事件建模的区块链状态表示,并且所述处理器还被配置为基于所述区块链状态表示生成所述链码。
5.根据权利要求1所述的计算***,其中所述处理器被配置为基于由所述链外***与所述一个或者多个事件相关联地执行的动作去除所述一个或者多个事件。
6.根据权利要求1所述的计算***,其中所述处理器被配置为从所述链外***的所述状态表示内的一组连续接收事件中去除接收事件。
7.根据权利要求1所述的计算***,其中所述处理器被配置为去除所述链外***的多个接收事件,同时所述处理器被配置为保留所述链外***的所有发送事件。
8.根据权利要求1所述的计算***,其中所述状态表示包括状态图,在所述状态图中,事件由所述状态图中的节点表示,并且所述节点基于所述事件在所述多方过程内发生的顺序被布置。
9.一种方法,包括:
基于多方过程的多个链外***之间的建模通信过程来生成多个状态表示,其中区块链是所述多个链外***之间的中介,其中每个状态表示对相应链外***的发送和接收事件进行建模;
从链外***的状态表示中去除一个或者多个事件以生成简化状态表示;
基于所述简化状态表示生成用于所述多方过程的执行的可执行链码;以及
经由存储设备来存储所生成的所述链码。
10.根据权利要求9所述的方法,还包括:将对所述多方过程的过程描述变换为所述多个状态表示,所述多方过程包括在所述多个链外***与所述区块链之间的过程步骤。
11.根据权利要求10所述的方法,其中所述区块链是在所述多方过程内的所述多个链外***之间的中间通信***。
12.根据权利要求9所述的方法,其中所述接收还包括:接收对所述区块链的发送事件、接收事件和存储事件建模的区块链状态表示,并且所述链码的所述生成还基于所述区块链状态表示而被执行。
13.根据权利要求9所述的方法,其中所述去除包括:基于在所述一个或者多个事件期间由所述链外***执行的动作去除所述一个或者多个事件。
14.根据权利要求9所述的方法,其中所述去除包括:从所述链外***的所述状态表示内的一组连续接收事件中去除接收事件。
15.根据权利要求9所述的方法,其中所述去除包括:去除所述链外***的多个接收事件,同时保留所述链外***的所有发送事件。
16.根据权利要求9所述的方法,其中所述状态表示包括状态图,在所述状态图中,事件由所述状态图中的节点表示,并且所述节点基于对应事件在所述多方过程内发生的顺序被布置。
17.一种包括指令的非瞬态计算机可读介质,所述指令在由处理器读取时使所述处理器执行权利要求9至16中任一项权利要求中的方法。
18.一种计算***,包括:
网络接口,所述网络接口被配置为接收多方过程的多个参与方的多个状态图,在所述多方过程中,区块链是多个链外***之间的中介;以及
处理器,所述处理器被配置为:
基于相同类型步骤的连续出现,从所述多个状态图中去除步骤,并且将来自简化状态图的有序步骤序列编码为区块链智能合约;
基于所述区块链中最近执行的步骤与所述区块链智能合约中的经编码的有序步骤序列的比较,确定所述多方过程的当前步骤;
处理所确定的当前步骤以生成处理结果;以及
通过所述区块链存储所生成的处理结果。
19.根据权利要求18所述的计算***,其中所述处理器被配置为基于至少一个接收事件步骤的连续出现,从所述多个状态图中去除所述至少一个接收事件步骤。
20.根据权利要求18所述的计算***,其中所述处理器被配置为存储被包括在所述多方过程内的链外***的当前执行状态。
21.根据权利要求18所述的计算***,其中所述处理器被配置为存储由链外***发送和/或接收的事件,所述事件经由所述多方过程的所述当前步骤的执行而发生。
22.根据权利要求18所述的计算***,其中所述处理器还被配置为经由多个对等节点来验证区块链结果。
23.根据权利要求18所述的计算***,其中所述多方过程包括由所述多个链外***和所述区块链执行的共享过程。
24.根据权利要求18所述的计算***,其中所述处理器还被配置为:基于所述当前步骤的所述处理结果,经由所述区块链来处理所述多方过程的相对于所述当前步骤的下一可执行步骤。
25.一种方法,包括:
接收执行多方过程的多个参与方的多个状态图,在所述多方过程中,区块链是多个链外***之间的中介;
基于相同类型步骤的连续出现,从所述多个状态图中去除步骤,并且将来自简化状态图的有序步骤序列编码为区块链智能合约;
基于所述区块链中最近执行的步骤与所述区块链智能合约中的经编码的有序步骤序列的比较,确定所述多方过程的当前步骤;
处理所确定的当前步骤以生成处理结果;以及
通过所述区块链存储所生成的处理结果。
26.根据权利要求25所述的方法,其中,所述去除包括:基于至少一个接收事件步骤的连续出现,从所述多个状态图中去除所述至少一个接收事件步骤。
27.根据权利要求25所述的方法,还包括:存储被包括在所述多方过程内的链外***的当前执行状态。
28.根据权利要求25所述的方法,还包括:存储由链外***发送和/或接收的事件,所述事件经由所述多方过程的所述当前步骤的执行而发生。
29.根据权利要求25所述的方法,还包括:使用多个对等节点来验证在所述处理期间所生成的区块链结果。
30.根据权利要求25所述的方法,其中所述多方过程包括由所述多个链外***和所述区块链执行的共享过程。
31.根据权利要求25所述的方法,还包括:基于所述当前步骤的所述处理结果,经由所述区块链来处理所述多方过程的相对于所述当前步骤的下一可执行步骤。
32.一种包括指令的非瞬态计算机可读介质,所述指令在由处理器读取时使所述处理器执行根据权利要求25至31中任一项权利要求的方法。
33.一种计算机***,所述计算机***包括:模型,所述模型用以执行根据权利要求9至16以及权利要求25至31的任何方法的步骤。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/174,766 | 2018-10-30 | ||
US16/174,766 US11474854B2 (en) | 2018-10-30 | 2018-10-30 | Transformation of inter-organization process for execution via blockchain |
US16/174,707 | 2018-10-30 | ||
US16/174,707 US10929113B2 (en) | 2018-10-30 | 2018-10-30 | Transformation of inter-organization process for execution via blockchain |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111125242A CN111125242A (zh) | 2020-05-08 |
CN111125242B true CN111125242B (zh) | 2024-04-02 |
Family
ID=70495407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911007285.0A Active CN111125242B (zh) | 2018-10-30 | 2019-10-22 | 跨组织过程的变换以用于经由区块链执行 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111125242B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108256864A (zh) * | 2018-02-13 | 2018-07-06 | 中链科技有限公司 | 一种区块链之间的跨链联盟的建立及通信方法、*** |
WO2018167253A1 (de) * | 2017-03-17 | 2018-09-20 | Bundesdruckerei Gmbh | Protokollieren von zustandsdaten einer vorrichtung in einer blockchain |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10504193B2 (en) * | 2014-03-31 | 2019-12-10 | Monticello Enterprises LLC | System and method for providing a universal shopping cart |
US10713654B2 (en) * | 2016-01-21 | 2020-07-14 | International Business Machines Corporation | Enterprise blockchains and transactional systems |
US10523421B2 (en) * | 2016-11-30 | 2019-12-31 | International Business Machines Corporation | Checkpoints for permissionless blockchains |
US10382485B2 (en) * | 2016-12-23 | 2019-08-13 | Vmware, Inc. | Blockchain-assisted public key infrastructure for internet of things applications |
-
2019
- 2019-10-22 CN CN201911007285.0A patent/CN111125242B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018167253A1 (de) * | 2017-03-17 | 2018-09-20 | Bundesdruckerei Gmbh | Protokollieren von zustandsdaten einer vorrichtung in einer blockchain |
CN108256864A (zh) * | 2018-02-13 | 2018-07-06 | 中链科技有限公司 | 一种区块链之间的跨链联盟的建立及通信方法、*** |
Also Published As
Publication number | Publication date |
---|---|
CN111125242A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11240001B2 (en) | Selective access to asset transfer data | |
US11227057B2 (en) | Membership access management of a database | |
CN111488393B (zh) | 虚拟区块链 | |
US11196568B2 (en) | Identity protection | |
US10833845B2 (en) | Guarantee of ledger immutability | |
US11308073B2 (en) | Database node functional testing | |
US10922097B2 (en) | Collaborative model execution | |
US11489672B2 (en) | Verification of conditions of a blockchain transaction | |
US10819523B2 (en) | Guarantee of ledger immutability | |
US11210512B2 (en) | Fingerprinting of physical objects | |
US11194911B2 (en) | Blockchain technique for agile software development framework | |
US11240000B2 (en) | Preservation of uniqueness and integrity of a digital asset | |
US11487741B2 (en) | Preservation of uniqueness and integrity of a digital asset | |
US20200143496A1 (en) | Proof-carrying smart contract | |
US11157622B2 (en) | Blockchain technique for agile software development framework | |
US11354278B2 (en) | Linking of tokens | |
US20200143365A1 (en) | Real-time monitoring of objects in blockchain networks | |
US11474854B2 (en) | Transformation of inter-organization process for execution via blockchain | |
CN111831739A (zh) | 数据库复合背书 | |
US20200242593A1 (en) | Value optimizing data store | |
US11777738B2 (en) | Metadata-based endorsement | |
US20200074463A1 (en) | Secure smart note | |
US20200074423A1 (en) | Secure smart note | |
US10970307B2 (en) | Information transparency control | |
US10929113B2 (en) | Transformation of inter-organization process for execution via blockchain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |