CN110458698A - 对区块链分类账和区块链分类账外部的应用进行集成 - Google Patents
对区块链分类账和区块链分类账外部的应用进行集成 Download PDFInfo
- Publication number
- CN110458698A CN110458698A CN201910017543.7A CN201910017543A CN110458698A CN 110458698 A CN110458698 A CN 110458698A CN 201910017543 A CN201910017543 A CN 201910017543A CN 110458698 A CN110458698 A CN 110458698A
- Authority
- CN
- China
- Prior art keywords
- transaction
- state
- block chain
- chain ledger
- application
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 195
- 238000012423 maintenance Methods 0.000 claims description 23
- 230000001052 transient effect Effects 0.000 claims description 4
- 238000004088 simulation Methods 0.000 description 30
- 238000003860 storage Methods 0.000 description 26
- 230000015654 memory Effects 0.000 description 18
- 238000004891 communication Methods 0.000 description 17
- 230000001360 synchronised effect Effects 0.000 description 16
- 230000004044 response Effects 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 10
- 238000012986 modification Methods 0.000 description 10
- 230000004048 modification Effects 0.000 description 10
- 240000008042 Zea mays Species 0.000 description 7
- 235000005824 Zea mays ssp. parviglumis Nutrition 0.000 description 7
- 235000002017 Zea mays subsp mays Nutrition 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 7
- 235000005822 corn Nutrition 0.000 description 7
- 238000013500 data storage Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000010354 integration Effects 0.000 description 7
- 230000009466 transformation Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 230000005389 magnetism Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/02—Banking, e.g. interest calculation or account maintenance
-
- 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/23—Updating
- G06F16/235—Update request formulation
-
- 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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- 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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/22—Payment schemes or models
- G06Q20/223—Payment schemes or models based on the use of peer-to-peer networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- 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/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- 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)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Finance (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Development Economics (AREA)
- Technology Law (AREA)
- Marketing (AREA)
- Economics (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
公开了对区块链分类账和区块链分类账外部的应用进行集成。第一方法基于合约交易确定要被写入区块链分类账的状态。第二方法基于适配器交易确定要被写入区块链分类账的状态。第一方法包括对第二方法的调用。第二方法验证适配器交易是否包括与特定应用相关联的特定信息集合。如果适配器交易包括特定信息集合,那么合约交易和适配器交易二者都被提交到区块链分类账。如果适配器交易不包括特定信息集合,那么合约交易和适配器交易都不被提交到区块链分类账。基于适配器交易确定的状态被用于更新特定应用。
Description
技术领域
本公开涉及区块链。具体而言,本公开涉及对区块链分类账(blockchain ledger)和区块链分类账外部的应用进行集成。
背景技术
区块链技术涉及在分布式节点系统上以区块(block)的形式存储记录。
通过使用散列(hash)将每个区块链接到前一个区块。具体而言,每个区块既存储前一个区块的散列又存储它自己的散列。区块内数据的任何改变都会改变散列。因此,不可能改变任何区块的数据,而不改变所有后续区块的数据。区块的链可以称为“区块链”。
区块链由大量节点维护。每个节点在任何给定时间处存储相同版本的区块链。因此,不可能改变由特定节点存储的区块链的任何个体副本的数据,而不改变由其余节点存储的区块链的所有副本。
智能合约(smart contract)包括代码集合,该代码集合可以被执行,以使用区块链技术执行交易(transaction)。相同的智能合约跨多个节点被存储。因此,不可能改变由特定节点存储的智能合约的任何个体副本的代码,而不改变由其余节点存储的智能合约的所有副本。
某些信息可以与区块链和区块链外部的应用二者都相关。然而,区块链和应用可能是被独立管理的。区块链可以执行一系列交易。应用可以在不知道这些交易的情况下执行操作。因此,区块链上发生的交易可能需要与应用同步。
本节中描述的方法是可以追求的方法,但不一定是先前已经构想或追求的方法。因此,除非另有说明,否则不应当假定本节中描述的任何方法仅仅因为它们被纳入本节中就符合作为现有技术。
发明内容
在至少一个方面,本公开涉及一种或多种包括指令的非瞬态计算机可读介质,该指令当由一个或多个硬件处理器执行时导致操作的执行,所述操作包括:接收执行第一方法的命令,该第一方法(a)验证第一交易是否包括与第一应用相关联的第一信息集合,以及(b)基于第一交易确定要被写入区块链分类账的第一状态;其中第一方法由第二方法调用,该第二方法基于第二交易确定要被写入区块链分类账的第二状态;其中多个节点维护区块链分类账;其中第一应用不维护区块链分类账;执行第一方法包括:(a)验证第一交易包括与第一应用相关联的第一信息集合,以及(b)基于第一交易确定要被写入区块链分类账的第一状态;发送第一消息,该第一消息包括基于第一交易要被写入区块链分类账的第一状态,其中第一状态被用于更新第一应用。
附图说明
在附图的各个图中,实施例是作为示例而不是作为限制进行图示的。应当注意的是,本公开中对“一个”实施例的引用不一定是指相同的实施例,并且它们意味着至少一个。在附图中:
图1A图示了根据一个或多个实施例的区块链应用集成系统;
图1B图示了根据一个或多个实施例的维护区块链分类账的节点的框图;
图2图示了根据一个或多个实施例的、用于集成区块链和区块链外部的应用的示例操作集合;
图3图示了根据一个或多个实施例的、用于对要被写入区块链分类账并与应用集成的交易进行背书(endorse)的示例操作集合;
图4图示了根据一个或多个实施例的、用于提交要被写入区块链分类账并与应用集成的交易的示例操作集合;
图5图示了根据一个或多个实施例的、用于使用来自区块链分类账的信息更新应用的示例操作集合;以及
图6示出了图示根据一个或多个实施例的计算机系统的框图。
具体实施方式
在以下描述中,为了说明的目的,阐述了许多具体细节以便提供透彻的理解。可以在没有这些具体细节的情况下实践一个或多个实施例。在一个实施例中描述的特征可以与在不同的实施例中描述的特征组合。在一些示例中,众所周知的结构和设备参考框图形式描述,以避免不必要地模糊本发明。
1.一般概述
2.区块链-应用集成系统体系架构
3.集成区块链和区块链外部的应用
4.对要被写入区块链分类账并与应用集成的交易进行背书
5.提交要被写入区块链分类账并与应用集成的交易
6.使用来自区块链分类账的信息更新应用
7.硬件概述
8.杂项;扩展
1.一般概述
由于区块链分类账的性质,已经在区块链分类账上提交的交易一般不能随后被修订。没有简单的方式来撤消已提交的交易。如果提交的交易无法与相关应用有效集成,那么无法更改已提交的交易会成为问题。作为示例,如果执行了两个合约交易,但是这两个合约交易导致要与区块链分类账同步的应用中的冲突,那么会发生错误。如果在集成期间存在错误,那么可能需要在区块链分类账与应用之间执行手动协调。一个或多个实施例在将交易提交到区块链分类账之前确定交易可以与特定应用有效地集成。
维护区块链分类账的每个节点都包括智能合约(smart contract)和区块链侧适配器(blockchain-side adapter)。智能合约是代码集合,其包括用于模拟合约交易的合约模拟方法。合约模拟方法基于合约交易来确定要被写入区块链分类账的状态。
区块链侧适配器是一种类型的智能合约,用于将区块链分类账与特定应用集成。区块链侧适配器包括模拟适配器交易的适配器模拟方法。适配器模拟方法基于适配器交易来确定要被写入区块链分类账的状态。
合约模拟方法包括对适配器模拟方法的调用。适配器模拟方法验证适配器交易是否包括与特定应用相关联的特定信息集合。如果适配器交易包括特定信息集合,那么合约交易和适配器交易二者都被提交到区块链分类账。如果适配器交易不包括特定信息集合,那么合约交易和适配器交易都不被提交到区块链分类账。
一个或多个实施例确定存储在区块链分类账中的用于更新应用的状态。节点维护区块链分类账,该区块链分类账包括(a)基于合约交易确定的状态和(b)基于适配器交易确定的状态。节点发布指示区块链分类账已更新的事件。响应于获得该事件,与应用相关联的模块向节点发送读取区块链分类账的请求。响应于接收到读取区块链分类账的请求,节点将存储在区块链分类账中的一个或多个状态发送到模块。模块将这些状态提供给应用。应用使用基于适配器交易确定的状态来更新应用。基于适配器交易确定的状态(state)与状况(status)相关联。与基于适配器交易确定的状态相关联的状况指示应用侧适配器是否已获得该状态、状态是否已用于成功更新应用,和/或与集成区块链分类账和应用的处理相关的其它信息。
应用可以只对特定智能合约的某些类型的交易感兴趣。然而,区块链分类账可以包括多个智能合约的交易。基于本文描述的一种或多种方法,应用不需要查看与区块链分类账中的多个智能合约的各种交易对应的状态。而是,区块链侧适配器专门为应用提供单独的状态集合。应用侧适配器(和/或应用)可以参考区块链分类账中的该单独的状态集合来确定更新应用所必需的信息。
大量节点可以维护区块链分类账。如果每个节点推送要与应用同步的信息,那么应用将多次获得该信息。基于本文描述的一种或多种方法,应用从单个节点拉取要同步的信息就足够了。
本说明书中描述和/或权利要求中阐述的一个或多个实施例可能没有被包括在这“一般概述”一节中。
2.区块链-应用集成系统体系架构
图1A图示了根据一个或多个实施例的区块链应用集成系统。如图1中所示,系统100包括客户端102、节点(诸如节点104a-e)的集合105a、排序服务106、应用侧适配器108以及一个或多个应用110a-b。在一个或多个实施例中,系统100可以包括比图1中示出的部件更多或更少的部件。图1中所示的部件可以是彼此本地的或彼此远离的。图1中所示的部件可以用软件和/或硬件来实现。每个部件可以分布在多个应用和/或机器上。多个部件可以组合成一个应用和/或机器。关于一个部件描述的操作可以替代地由另一个部件执行。
在一个或多个实施例中,客户端102请求将特定智能合约的交易写入区块链分类账。请求写入交易的处理可以涉及多个阶段。在第一阶段,客户端102向背书节点的集合105b提议交易。在第二阶段,客户端102将交易发送到排序服务106,使得交易将被提交到区块链分类账。
在一些情况下,客户端102与应用(诸如应用110a-b中的任何一个)相同。在其它情况下,客户端102与应用110a-b中的任何一个不同。
在一个或多个实施例中,节点的集合105a维护区块链分类账。节点的集合105a将交易提交到区块链分类账。附加地或可替代地,节点的集合105a在区块链分类账中存储与提交的交易对应的状态。存储在区块链分类账中的交易和/或状态可以关于一个或多个智能合约。节点的集合105a可以根据特定的区块链系统或框架(诸如Hyperledger Fabric)维护区块链分类账。下面参考图1B描述关于节点的集合105a的附加细节。
在一个或多个实施例中,节点105a的至少子集可以是用于特定智能合约的背书节点105b。背书节点(诸如节点104b或104e中的任何一个)对由客户端102提议的交易进行背书。对交易进行背书的处理可以涉及多个阶段。在第一阶段,背书节点通过确定在执行交易之后的结果状态来模拟交易。在第二阶段,背书节点生成消息,该消息包括(a)结果状态和(b)背书节点的签名。
在一个或多个实施例中,排序服务106生成并递送要提交到区块链分类账的区块。排序服务106从一个或多个客户端106接收要提交的交易。排序服务106确定交易的特定次序。排序服务106将经排序的交易组织为区块。排序服务106确定先前生成的区块的散列和当前生成的区块的散列。排序服务106将两个散列都存储到区块中。排序服务106将该区块递送到节点的集合105a以进行提交。
在一个或多个实施例中,应用(诸如应用110a-b中的任何一个)是在区块链分类账外部的软件程序。该应用不维护区块链分类账。应用可以在一个或多个计算设备上执行。应用可以在云环境(诸如公共云、私有云或混合云)中执行。在实施例中,应用不在维护区块链分类账的任何节点(诸如节点105a)上执行。
在实施例中,某些信息与(由节点105a维护的)区块链分类账和区块链分类账外部的应用二者都相关。作为示例,可能存在未付(outstanding)发票的市场。玉米农民可以向客户出售玉米并发出发票,这些发票在收到后30天到期。玉米农民可以选择自己针对发票收款,或者在市场上出售发票以立即获得资金。
节点的集合可以包括用于转移未付发票的所有权的智能合约。节点的集合可以维护指示每个未付发票的所有者的区块链分类账。
同时,玉米农民可以购买管理玉米农民的未付发票的云服务。云服务执行针对未付发票的收款动作,以从玉米农民的客户收款。
在这个示例中,关于谁拥有每个未付发票的信息与区块链分类账和云服务二者都相关。具体而言,区块链分类账基于在节点的集合上执行的智能合约交易来存储所有权信息。而且,云服务对玉米农民拥有的未付发票执行收款动作。云服务不应当对已经出售给另一方的未付发票执行收款动作。
在一个或多个实施例中,应用侧适配器108是指被配置为执行本文描述的、用于集成区块链分类账和一个或多个应用110a-b的操作的硬件和/或软件模块。下面参考图2-图5描述用于集成区块链分类账和应用的操作的示例。
在实施例中,应用侧适配器108被授权访问一个或多个应用110a-b。作为示例,应用侧适配器108可以与应用110a-b通信。应用侧适配器108可以向应用110a-b的数据库写入。
在实施例中,应用侧适配器108可以在多个应用110a-b之间共享。应用侧适配器108与应用110a-b中的每一个通信,以更新应用110a-b。在另一个实施例中,单独应用侧适配器108专用于应用110a-b中的每一个。
应用侧适配器108与区块链侧适配器一起工作,以集成区块链分类账和应用。下面参考图1B描述关于区块链侧适配器的附加细节。
在实施例中,客户端102、节点104a-e、排序服务106、应用侧适配器108和/或应用110a-b中的每一个在一个或多个数字设备上实现。术语“数字设备”一般是指包括处理器的任何硬件设备。数字设备可以指执行应用或虚拟机的物理设备。数字设备的示例包括计算机、平板电脑、膝上型电脑、台式机、上网本、服务器、web服务器、网络策略服务器、代理服务器、通用机器、功能专用硬件设备、大型机、电视、内容接收器、机顶盒、打印机、移动电话、智能电话、个人数字助理(PDA)。
图1B示出了根据一个或多个实施例的维护区块链分类账的节点的框图。如图所示,节点(诸如图1A的节点104a)包括一个或多个智能合约112a-b、区块链侧适配器114以及区块链分类账130。区块链分类账130包括区块链日志136、(与一个或多个智能合约112a-b相关联的)状态132a-b和(与区块链侧适配器114相关联的)状态134。
在一个或多个实施例中,智能合约(诸如智能合约112a-b中的任何一个)是包括可以被执行以使用区块链技术执行交易的一个或多个方法(诸如方法122a-b中的任何一个)的代码集合。相同的智能合约存储在多个节点(诸如图1A的背书节点105b)上。基于智能合约要被执行或被执行的交易在本文中可以称为“合约交易”。
智能合约的方法(诸如方法122a-b中的任何一个)包括用于基于合约交易确定要提交到区块链分类账130的新状态的操作。可以使用用于该方法的参数来指定与合约交易相关联的信息。该方法可以对存储在区块链分类账130中的当前状态执行操作。执行方法来确定新状态而不将新状态提交到区块链分类账130在本文可以称为“模拟”合约交易。一旦将新状态被写入或提交到区块链分类账130,合约交易就被视为“已执行”或“已完成”。
作为示例,区块链分类账中的当前状态可以指示Janet的账户在Boom公司有1000股。要执行的合约交易可以是将Boom公司的500股添加到Janet的账户。可以调用用于向账户添加股份的方法。该方法的参数可以指定要添加的股份的数量(500)和所讨论的账户(Janet的账户)。该方法可以获得Janet的账户的当前状态,其指示有1000股。该方法可以将500股添加到当前状态,从而产生1500股。该方法可以返回新状态,指示Janet的账户将基于合约交易而拥有1500股。在这个示例中,合约交易被模拟以确定Janet的账户基于合约交易将拥有1500股。
在实施例中,智能合约包括表示由两方或更多方商定的条款的代码。作为示例,一方可以是汽车销售者。另一方可以是汽车购买者。双方可以商定10万美元的价格。智能合约可以包括用于将汽车的所有权从汽车销售者改变为汽车购买者的方法。该方法包括如果汽车销售者从汽车购买者收到10万美元的金额则触发所有权改变的代码。因此,智能合约包括表示所商定的10万美元价格的代码。
在一个或多个实施例中,区块链侧适配器114是指被配置为执行本文所述的、用于集成区块链分类账130和一个或多个应用110a-b的操作的硬件和/或软件模块。下面参考图2-图5描述用于集成区块链分类账和应用的操作的示例。
在实施例中,区块链侧适配器114是特定类型的智能合约。区块链侧适配器114包括可以被执行以使用区块链技术执行交易的一个或多个方法124。相同的区块链侧适配器114存储在多个节点(例如图1A的背书节点105b)上。基于区块链侧适配器114要被执行或被执行的交易在本文中可以称为“适配器交易”。
适配器交易是在区块链分类账130中更新一个或多个状态以与应用(诸如应用110a-b中的任何一个)集成或同步的交易。
区块链侧适配器的方法124包括用于基于适配器交易确定要提交到区块链分类账130的新状态的操作。可以使用用于该方法的参数来指定与适配器交易相关联的信息。该方法可以对存储在区块链分类账130中的当前状态执行操作。新状态包括要与特定应用同步的信息。新状态将被用于更新该特定应用。
附加地或可替代地,区块链侧适配器的方法124包括用于验证适配器交易是否包括用于要与区块链分类账130集成的特定应用的足够信息的操作。如果适配器交易不包括足够的信息,那么该方法可以生成错误。
作为示例,特定应用可以在数据库中维护字段或属性的某个集合。区块链侧适配器的方法包括验证适配器交易是否包括用于更新由特定应用维护的数据库的字段或属性的值的足够信息的操作。如果特定字段的值丢失或不确定,那么该方法可以返回错误。
作为另一个示例,机动车辆的部门可以使用智能合约来管理在特定省份被许可操作的汽车。与智能合约相关联的状态存储与汽车相关联的以下信息:品牌、型号、年份、颜色、标识号、所有者和所有者的地址。
同时,人口普查机构可以使用统计应用来运行针对该特定省份的统计数据。人口普查机构可以使用统计应用来确定特定省份内每个城市的汽车数量。统计应用所需的信息可以包括所有者的地址。然而,统计应用不需要知道汽车的所有者。
区块链侧适配器可以用于集成区块链分类账和该统计应用。区块链侧适配器的方法可以被配置为验证适配器交易是否包括识别汽车的所有者的地址的信息。如果包括所有者的地址,那么执行该方法,使得用所有者的地址来更新状态。该状态可以用于更新统计应用。
在实施例中,区块链侧适配器114可以用于集成多个智能合约112a-b的状态和多个应用110a-b。多个智能合约112a-b可以包括调用区块链侧适配器114的方法以确定区块链分类账130中的新状态的代码。由区块链侧适配器114的方法确定的新状态可以由多个应用使用以更新该多个应用。
在一个或多个实施例中,区块链分类账130包括区块链日志136和/或状态(诸如状态132a-b和/或状态134)的记录。
区块链日志136存储已经提交存储在区块链中的交易。可以基于一个或多个智能合约112a-b来执行交易。附加地或可替代地,可以基于区块链侧适配器114来执行交易。如上所述,通过使用散列,将每个区块链接到前一个区块。具体而言,每个区块存储前一个区块的散列和它自己的散列二者。
状态的记录存储基于提交的交易所确定的状态。如图所示,例如,状态132a基于智能合约112a的提交的交易来确定;状态132b基于智能合约112b的提交的交易来确定;并且状态134基于区块链侧适配器114的提交的交易来确定。在实施例中,由特定智能合约创建和/或修改的状态被排他地限定范围到该特定智能合约。该状态不能被另一个智能合约直接访问。然而,给定适当的许可,特定的智能合约可以调用另一个智能合约来访问与该另一个智能合约相关联的状态。
状态可以使用诸如键-值对之类的各种数据结构中的任何一种来存储。每个状态可以与版本标识符相关联。每次修改状态时,相关联的版本标识符递增。
例如,区块链分类账的状态的记录最初可以指示John拥有的金额和Mary拥有的金额。状态的记录可以包括:“键:John;值:100美元,版本12”和“键:Mary;值:300美元,版本53”。交易可以在2018年1月1日执行,以将50美元从Mary转移到John。区块链分类账的区块链日志可以被更新为包括该交易:“2018年1月1日;从Mary;到John;50美元”。状态的记录可以被更新为包括:“键:John;值:150美元,版本13”和“键:Mary;值:250美元,版本54”。
在实施例中,(与区块链侧适配器114相关联的)状态134包括用于更新应用的信息。另外,状态134中的每一个与关于区块链分类账130和应用的集成的状况相关联。例如,一个状况可以指示应用尚未获得状态134,另一个状况可以指示应用已成功获得状态134,并且另一个状况可以指示状态134已成功被用于更新应用。
在一个或多个实施例中,数据储存库(未示出)是用于存储数据的任何类型的存储单元和/或设备(例如,文件系统、数据库、表的集合或任何其它存储机制)。另外,数据储存库可以包括多个不同的存储单元和/或设备。多个不同的存储单元和/或设备可以是或可以不是相同类型或位于相同的物理地点。
数据储存库可以存储描述一个或多个智能合约112a-b、区块链侧适配器114和区块链分类账130的信息。数据储存库可以在与节点104a相同的计算系统上被实现或者可以在其上执行。可替代地或附加地,数据储存库可以在与节点104a分开的计算系统上被实现或者可以在其上执行。数据储存库可以经由直接连接或经由网络通信地耦合到节点104a。
3.集成区块链和区块链外部的应用
图2图示了根据一个或多个实施例的、用于集成区块链和区块链外部的应用的示例操作集合。图2中所示的一个或多个操作可以被修改、重新布置或完全省略。因而,图2中所示的操作的特定序列不应当被解释为限制一个或多个实施例的范围。图1A-2中相同的部件用相同的数字标记。
在一个或多个实施例中,客户端102提议调用由智能合约定义的方法的合约交易(操作202)。客户端102发送消息,该消息包括(a)方法的标识符和(b)用于方法的参数。用于方法的参数包括与合约交易相关联的信息。客户端102将消息发送到一个或多个背书节点105b。
作为示例,区块链分类账可以维护关于汽车专卖行的库存的信息。汽车专卖行可以接收一批新车以供销售。汽车专卖行的经理可以使用客户端将新车添加到区块链分类账。客户端可以提议添加新车的合约交易。客户端的消息可以包括添加新车的方法的标识符。客户端的消息可以包括用于该方法的参数,包括:新车的标识符、品牌、型号和年份。新车的标识符可以作为区块链分类账中维护的状态记录中的新键。客户端可以将消息发送到背书节点的集合。
作为另一个示例,区块链分类账可以维护关于汽车专卖行的库存的信息。汽车专卖行可以向Daphne销售汽车。汽车专卖行的销售人员可以使用客户端来更新区块链分类账,以将汽车的所有权从汽车专卖行改变为Daphne。客户可以提议改变汽车所有权的合约交易。客户端的消息可以包括改变汽车所有权的方法的标识符。客户端的消息可以包括用于该方法的参数,包括:汽车的标识符和新所有者的名字。汽车的标识符用作区块链分类账中状态记录的键,因此可以修改与该键相关联的值。客户端可以将消息发送到背书节点的集合。
在一个或多个实施例中,一个或多个背书节点的集合105b提议调用由区块链侧适配器定义的方法的适配器交易(操作204)。受到在操作202处对方法的调用的触发,背书节点105b(和/或另一个部件)提议适配器交易。可以使用调用在区块链侧适配器中定义的方法的各种方式,如下面进一步描述的。
在实施例中,智能合约中定义的方法包括调用区块链侧适配器中定义的方法的命令。因此,对智能合约所定义的方法的执行包括调用由区块链侧适配器定义的方法。
在另一个实施例中,监视服务监视在背书节点105b上的方法的调用和/或执行。响应于检测到由智能合约定义的方法被调用和/或执行,监视服务生成调用在区块链侧适配器中定义的方法的命令。因此,调用和/或执行由智能合约定义的方法触发对由区块链侧适配器定义的方法的调用。
客户端102不需要调用由区块链适配器定义的方法。客户端102可以不知晓由区块链适配器定义的方法的调用。
调用由区块链侧适配器定义的方法的命令包括(a)方法的标识符和(b)用于方法的参数。用于方法的参数包括与适配器交易相关联的信息。方法包括各种操作,包括:(a)验证适配器交易包括与特定应用相关联的信息集合,以及(b)基于适配器交易确定要被写入区块链分类账的新状态。该新状态被用于更新区块链分类账外部的应用。
作为示例,区块链分类账可以维护关于汽车专卖行的库存的信息。广告应用可以用于产生关于汽车专卖行的库存中的汽车的广告。广告应用可能需要关于汽车的品牌、型号和年份的信息,以便为汽车产生广告。
继续该示例,客户端可以提议将新车添加到区块链分类账的合约交易。客户端可以调用由智能合约定义的添加新车的方法。响应于客户端的提议,背书节点可以执行由智能合约定义的该方法。由智能合约定义的该方法可以模拟合约交易以确定区块链分类账中的状态,该状态表示将新车添加到库存。由智能合约定义的方法还可以包括调用由区块链侧适配器定义的方法的命令及用于该方法的参数。该参数可以包括与适配器交易相关联的信息。基于由智能合约定义的方法的执行,背书节点可以调用由区块链侧适配器定义的方法。
继续该示例,由区块链侧适配器定义的方法可以验证适配器交易包括广告应用所需的信息(即,新车的品牌、型号和年份)。由区块链侧适配器定义的方法还可以模拟适配器交易以确定区块链分类账中的状态,该状态表示要与广告应用同步的信息。要与广告应用同步的信息包括新车的品牌、型号和年份。
在一个或多个实施例中,背书节点105b发送对合约交易和适配器交易二者的背书(操作206)。可以使用对交易进行背书的各种方式。
在实施例中,每个背书节点105b执行在智能合约中定义的方法和在区块链侧适配器中定义的方法两者。每个背书节点105b基于(a)在智能合约中定义的方法的参数和/或(b)与智能合约相关联的当前状态来执行在智能合约中定义的方法。因此,每个背书节点105b基于合约交易来确定状态。该合约交易被视为“被模拟”。
另外,每个背书节点105b基于(a)在区块链侧适配器中定义的方法的参数和/或(b)与区块链侧适配器相关联的当前状态来执行在区块链侧适配器中定义的方法。因此,每个背书节点105b基于适配器交易来确定状态。该适配器交易被视为“被模拟”。
每个背书节点105b生成消息,该消息包括(a)合约交易、(b)适配器交易、(c)基于合约交易确定的状态,以及(d)基于适配器交易确定的状态。该消息还可以包括与智能合约相关联的当前状态,以及与区块链侧适配器相关联的当前状态。每个背书节点105b用该背书节点105b的签名签署该消息。每个背书节点105b将消息发送到客户端102。该消息构成从特定背书节点105b对合约交易和适配器交易的背书。
作为示例,区块链分类账可以维护关于汽车专卖行的库存的信息。广告应用可以用于产生关于汽车专卖行的库存中的汽车的广告。广告应用可能需要关于汽车的品牌、型号和年份的信息,以便为汽车产生广告。
继续该示例,客户端可以提议将新车添加到区块链分类账的合约交易。客户端可以调用由智能合约定义的添加新车的方法。由智能合约定义的该方法可以包括调用由区块链侧适配器定义的方法的命令。
背书节点可以执行由智能合约定义的方法和由区块链侧适配器定义的方法两者。通过执行由智能合约定义的方法,背书节点确定表示将新车添加到库存的状态。例如,该状态可以是:“键:ID 123,值:Toyota,Camry,2018,蓝色,专卖行,版本1”。通过执行由区块链侧适配器定义的方法,背书节点确定表示要与广告应用同步的信息的状态。例如,该状态可以是:“键:ID 123,值:Toyota,Camry,2018,未由应用获得,版本1”。信息“未由应用获得”是与该状态相关联的状况。信息“未由应用获得”指示该状态仍需要与广告应用同步。
背书节点可以生成包括基于合约交易确定的状态和基于适配器交易确定的状态两者的消息。背书节点可以签署该消息。背书节点可以将该消息发送到客户端。
其它背书节点可以执行相同的操作,从而将相应的背书发送到客户端。
作为另一个示例,基于由Elizabeth和Sean商定的智能合约,客户端可以提议将汽车的所有权从Elizabeth转移到Sean的合约交易。与智能合约相关联的当前状态可以指示Elizabeth是所有者。当前状态可以包括:“键:ID 542;值:Toyota,Camry,2018,蓝色,Elizabeth,版本42”。背书节点可以执行基于合约交易来确定状态的方法。新状态可以指示Sean是所有者。新状态可以包括:“键:ID 542;值:Toyota,Camry,2018,蓝色,Sean,版本43”。该方法还可以调用由区块链侧适配器定义的基于适配器交易来确定状态的另一个方法。
与区块链侧适配器相关联的当前状态可以包括:“键:ID 542;值:Toyota,Camry,2018,Elizabeth,版本55”。背书节点可以执行基于适配器交易来确定状态的该另一个方法。新状态可以包括:“键:ID 542;值:Toyota,Camry,2018,Sean,版本56”。
背书节点生成消息,该消息包括(a)与智能合约相关联的当前状态、(b)与区块链侧适配器相关联的当前状态、(c)基于合约交易确定的新状态,以及(d)基于适配器交易确定的新状态。背书节点可以签署该消息。背书节点可以将消息发送到客户端。
在一个或多个实施例中,客户端102请求合约交易和适配器交易两者的提交(操作208)。可以使用请求提交的各种方式。
在实施例中,客户端102从背书节点105b接收背书。该背书包括基于合约交易确定的状态和基于适配器交易确定的状态。客户端102确定是否已经接收到来自足够数量的背书节点105b的背书。如果接收到足够的背书,那么客户端102将背书发送到排序服务106。背书向排序服务106的传输构成提交合约交易和适配器交易的请求。
在一个或多个实施例中,排序服务106递送要提交的交易集合,包括合约交易和适配器交易(操作210)。可以使用递送交易以供提交的各种方式。在实施例中,排序服务106从各种客户端接收用于各种交易的背书,包括来自客户端102的用于合约交易和适配器交易的背书。排序服务106确定各种交易的特定排序。排序服务106将经排序的交易分组为区块。排序服务106确定前一个区块的散列和当前区块的散列。排序服务106将这两个散列添加到区块。排序服务106将交易的区块以及对应的状态递送到节点的集合105a以进行提交。节点的集合105a可以包括背书节点105b。
在一个或多个实施例中,节点的集合105a提交交易集合,包括合约交易和适配器交易(操作212)。可以使用提交交易的各种方式。在实施例中,每个节点从排序服务106接收交易的区块。每个节点对交易的区块执行各种验证。作为示例,节点验证区块中的每个交易是否与足够数量的背书相关联。节点验证每个背书是否由背书节点正确签署。节点验证自每个交易的模拟和/或背书起是否有任何状态发生改变。如果满足所有必要的验证,那么每个节点更新由该节点维护的区块链分类账的副本。每个节点将从排序服务接收的区块写入区块链日志。每个节点使用从排序服务接收的状态来更新状态的记录。因此,相同的信息被写入由节点的集合105a中的每个节点维护的区块链分类账的每个副本。将信息写入区块链分类账构成将信息提交到区块链分类账。
在一个或多个实施例中,一个或多个节点105a发布指示交易集合被提交的事件(操作214)。可以使用发布关于已提交的交易的事件或提供关于已提交的交易的通知的各种方式。
在实施例中,当区块被写入区块链分类账时,节点将事件发布到事件流。该事件表示该区块已被写入。该事件可以但不必包括区块中的交易的所有细节和对应的状态。发布节点可以是维护区块链分类账的节点的集合105a中的任何节点(包括但不限于背书节点105b)。应用可以订阅特定节点的事件流。基于订阅,应用获得由特定节点发布的事件。附加地或可替代地,客户端102可以订阅特定节点的事件流。基于订阅,客户端102获得由特定节点发布的事件。
在另一个实施例中,节点可以周期性地发布事件。该事件指示自上次发布事件起已经被写入的交易。在另一个实施例中,如果提交了特定交易类型的交易,那么节点可以发布事件。可以使用提供关于已提交的交易的通知的其它方式。
在一个或多个实施例中,应用侧适配器108调用读取区块链分类账的方法(操作216)。响应于提交了一个或多个交易的通知,应用侧适配器108调用读取区块链分类账的方法。应用侧适配器108可以将读取区块链分类账的命令发送到维护区块链分类账的节点的集合105a中的任何节点(包括但不限于背书节点105b)。
应用侧适配器108可以请求读取整个区块链分类账,或者仅读取区块链日志或仅读取状态的记录。应用侧适配器108可以请求读取区块链分类账中的交易的全部或子集。应用侧适配器108可以请求读取区块链分类账中的状态的全部或子集。
在一个或多个实施例中,节点将存储在区块链分类账中的一个或多个状态发送到应用侧适配器108(操作218)。响应于读取区块链分类账的请求,节点将存储在区块链分类账中的一个或多个状态发送到应用侧适配器108。所发送的状态包括(a)基于在操作202提议的合约交易而确定的状态,以及(b)基于在操作204提议的适配器交易而确定的状态。
应用侧适配器108将状态提供给应用。应用使用该状态来更新该应用。
作为示例,区块链分类账可以维护关于汽车专卖行的库存的信息。广告应用可以用于产生关于汽车专卖行的库存中的汽车的广告。广告应用可能需要关于汽车的品牌、型号和年份的信息,以便为汽车产生广告。
继续该示例,可以更新区块链分类账中的状态,以表示向库存添加新车。可以更新区块链分类账中的另一个状态,以表示要与广告应用同步的信息(即,与新车相关联的信息)。节点可以发布指示两个状态已被写入区块链分类账的事件。应用侧适配器可以获得该事件。应用侧适配器可以调用读取区块链分类账的命令。节点可以向应用侧适配器发送至少表示要与广告应用同步的信息的状态。表示要与广告应用同步的信息的状态可以是:“键:ID 123;值:Toyota,Camry,2018,未由应用获得,版本1”。
应用侧适配器可以将该状态发送到应用。应用可以使用状态来更新应用。应用可以根据该状态将新条目添加到数据库中。新条目可以陈述:“ID:123;品牌:Toyota;型号:Camry;年份:2018”。应用可以使用该新条目为该新车产生广告。
在一个或多个实施例中,应用侧适配器108调用修改与所发送的(一个或多个)状态相关联的状况的方法(操作220)。应用侧适配器108可以将与所发送的状态相关联的状况设置为各种值。该状况可以指示应用侧适配器108已成功获得所发送的状态。状况可以是例如“成功读取”。附加或可替代地,状况可以指示应用已经基于所发送的状态成功更新了应用。例如,状况可以是“成功更新应用”。
应用侧适配器108通过生成包括以下各项的的消息来调用修改状况的方法:(a)方法的标识符和(b)方法的参数。该方法修改与区块链分类账中的特定状态相关联的状况。方法的参数指示要指派的状况的值。该方法可以由区块链侧适配器定义。应用侧适配器108将消息发送到一个或多个背书节点105b。该消息构成对修改与状态相关联的状况的交易的提议。
对该交易的提议触发用于提交交易的操作集合。背书节点105b对用于修改状况的交易进行背书。应用侧适配器108将背书发送到排序服务106。排序服务106递送要提交的交易,包括用于修改状况的交易。节点的集合105a提交这些交易,包括用于修改状况的交易。
4.对要被写入区块链分类账并与应用集成的交易进行背书
图3图示了用于对要被写入区块链分类账并与应用集成的交易进行背书的示例操作集合。图3中所示的一个或多个操作可以被修改、重新布置或完全省略。因而,图3中所示的操作的特定序列不应当被解释为限制一个或多个实施例的范围。图3的操作可以由背书节点的集合105b中的每一个节点执行。
一个或多个实施例从客户端接收执行模拟合约交易的方法的命令(操作302)。背书节点105b接收执行模拟合约交易的方法的命令。该命令可以指定方法的参数。参数可以包括与合约交易相关联的信息。该方法包括用于基于合约交易确定要被写入区块链分类账的状态的操作。该方法可以由智能合约定义。模拟合约交易的命令构成对来自客户端102的合约交易的提议。
响应于执行模拟合约交易的方法的命令,背书节点105b执行模拟合约交易的方法。
一个或多个实施例接收执行模拟适配器交易的方法的命令(操作304)。背书节点105b接收执行模拟适配器交易的方法的命令。该命令可以指定方法的参数。参数可以包括与适配器交易相关联的信息。该方法包括用于基于适配器交易确定要被写入区块链分类账的状态的操作。该方法可以由区块链侧适配器定义。模拟适配器交易的命令构成对适配器交易的提议。可以响应于对由智能合约定义的方法的调用和/或执行来提议适配器交易,这在上面参考操作302进行了讨论。可以使用接收执行由区块链侧适配器定义的方法的命令的各种方式。
在实施例中,模拟合约交易的方法包括调用模拟适配器交易的方法的命令。该命令包括(a)模拟适配器交易的方法的标识符和(b)模拟适配器交易的方法的参数。当背书节点105b执行模拟合约交易的方法时,背书节点105b也调用模拟适配器交易的方法。
在另一个实施例中,监视服务可以监视被调用和/或执行的方法。基于对模拟合约交易的方法的调用和/或执行,监视服务可以调用模拟适配器交易的方法。
响应于执行模拟适配器交易的方法的命令,背书节点105b执行模拟适配器交易的方法。
一个或多个实施例验证适配器交易是否包括与应用相关联的信息集合(操作306)。背书节点105b执行模拟适配器交易的方法。模拟适配器交易的方法包括用于验证适配器交易是否包括与要与区块链分类账同步的特定应用相关联的信息集合的操作。
作为对模拟适配器交易的方法的执行的一部分,背书节点105b验证适配器交易是否包括与特定应用相关联的信息集合。可以使用验证适配器交易的各种方式。
基于适配器交易是否包括足够的信息以确定由特定应用使用的字段和/或属性的值,来验证该适配器交易。作为示例,应用可以维护书的数据库,其包括字段“标题”和“作者”。背书节点可以执行验证适配器交易包括指定“标题”和“作者”的值的信息的方法。如果适配器交易仅包括“标题”的信息但不包括“作者”的信息,那么验证会失败。
附加地或可替代地,适配器交易基于适配器交易是否包括对于被特定应用使用而言有效的信息。作为示例,应用可以维护书的数据库。该应用可以用英文存储书的标题。外文标题可以是无效的。背书节点可以执行验证适配器交易是否包括用于确定书的英文标题的信息的方法。如果适配器交易包括用于确定外文标题但不是英文标题的信息,那么验证会失败。
如果适配器交易不包括与应用相关联的信息集合,那么一个或多个实施例生成错误(操作308)。背书节点105b可以向客户端102发送错误消息。背书节点105b不基于适配器交易确定要被写入区块链分类账的状态。背书节点105b不发送对适配器交易的任何背书。此外,背书节点105b不发送对合约交易的任何背书。
一个或多个实施例基于合约交易确定第一状态,并且基于适配器交易确定第二状态(操作310)。基于模拟合约交易的方法的执行,背书节点105b基于合约交易确定第一状态。这两个状态都要被写入区块链分类账。基于模拟适配器交易的方法的执行,背书节点105b基于适配器交易确定第二状态。第二状态用于更新要与区块链分类账同步的应用。
一个或多个实施例向客户端发送对合约交易和适配器交易的背书,其中背书以包括第一状态和第二状态(操作312)。背书节点105b生成包括第一状态和第二状态的消息。该消息还可以包括合约交易和适配器交易。该消息还可以包括(a)在模拟合约交易之前的当前状态,以及(b)在模拟适配器交易之前的当前状态。背书节点105b签署消息。背书节点105b将消息发送到客户端102。该消息构成对合约交易和适配器交易的背书。
5.提交要被写入区块链分类账并与应用集成的交易
图4图示了用于提交要被写入区块链分类账并与应用集成的交易的示例操纵集合。图4中所示的一个或多个操作可以被修改、重新布置或完全省略。因而,图4中所示的操作的特定序列不应当被解释为限制一个或多个实施例的范围。图4的操作可以由维护区块链分类账的节点的集合104a-e中的每一个节点执行。
一个或多个实施例接收要提交到区块链分类账的交易集合和对应的状态,交易集合包括合约交易和适配器交易(操作402)。节点104a接收要提交到区块链分类账的交易集合和对应的状态。该交易集合包括合约交易。该合约交易可以是基于智能合约定义的方法而被模拟的。该交易集合包括适配器交易。该适配器交易可以是基于区块链侧适配器定义的方法而被模拟的。
节点104a从排序服务106接收作为区块的交易集合。该区块包括交易集合以及(a)由排序服务106生成的前一个区块的散列,以及(b)区块自己的散列。
一个或多个实施例确定交易集合和对应的状态是否有效(操作404)。节点104a确定交易集合和对应的状态是否有效。
在实施例中,节点104a确定每个交易是否与足够数量的背书相关联。合约交易所需的背书的数量可以由包括用于模拟合约交易的方法的智能合约来指定。适配器交易所需的背书的数量可以由包括用于模拟适配器交易的方法的区块链侧适配器来指定。
在实施例中,节点104a验证每个背书是否由背书节点105b正确签署。合约交易所需的背书节点的特定集合可以由包括用于模拟合约交易的方法的智能合约来指定。适配器交易所需的背书节点的特定集合可以由包括用于模拟适配器交易的方法的区块链侧适配器来指定。
在实施例中,节点104a验证区块链分类账中的任何状态自从对每个交易的模拟和/或背书起是否已经改变。节点104a可以验证自从对合约交易的模拟和/或背书起与智能合约相关联的状态是否已经改变。节点104a可以验证自从对适配器交易的模拟和/或背书起与区块链侧适配器相关联的状态是否已经改变。
如上所述,背书可以包括(a)基于合约交易确定的新状态和(b)在对合约交易的模拟之前的状态。节点104a确定在提交时与智能合约相关联的当前状态。节点104a通过比较(a)提交时的当前状态与(b)在对合约交易的模拟之前的状态来确定状态是否相同。在实施例中,由于每个状态与版本号相关联,因此节点104a可以通过仅比较(a)与当前状态相关联的版本号与(b)与在对合约交易的模拟之前的状态相关联的版本号来确定状态是否相同。
如上所述,背书可以包括(a)基于适配器交易确定的新状态和(b)在对适配器交易的模拟之前的状态。节点104a确定在提交时与区块链侧适配器相关联的当前状态。节点104a通过比较(a)提交时的当前状态与(b)在对适配器交易的模拟之前的状态来确定状态是否相同。在实施例中,由于每个状态与版本号相关联,因此节点104a可以通过仅比较(a)与当前状态相关联的版本号和(b)与在对适配器交易的模拟之前的状态相关联的版本号来确定状态是否相同。
在实施例中,节点104a验证合约交易是否伴随有对应的适配器交易。包括用于模拟合约交易的方法的智能合约可以要求在提交时进行这种验证。响应于确定要提交的交易集合包括合约交易,节点104a确定要提交的交易集合是否还包括适配器交易。节点104a确定是否基于合约交易调用了适配器交易。如果交易集合包括基于合约交易调用了的适配器交易,那么验证成功。如果交易集合不包括基于合约交易调用了的适配器交易,那么验证失败。
如果交易集合和对应的状态不是有效的,那么一个或多个实施例生成错误(操作406)。如果任何验证失败,那么节点104a可以向客户端102发送错误消息。节点104a不将在操作402处接收的任何交易或对应的状态写入区块链分类账。
一个或多个实施例将合约交易和对应的状态以及适配器交易和对应的状态写入区块链分类账(操作408)。节点104a将交易集合(包括合约交易和适配器交易)写入区块链分类账。在实施例中,交易集合作为包括必要散列的区块被接收。节点104a将区块添加到区块链分类账中的区块链日志。
节点104a将与交易对应的状态写入区块链分类账。节点104a可以将状态添加到区块链分类账中的状态的记录。附加地或可替代地,节点104a可以用在操作402处接收的状态覆写状态的记录中的现有状态。
在实施例中,写入与适配器交易对应的状态包括指派与该状态相关联的状况。可以向与区块链侧适配器的状态相关联的状况指派各种值,诸如“尚未读取”、“成功读取”、“未成功读取”、“成功更新应用”、“未成功更新应用”。当节点104a基于适配器交易更新区块链分类账中的状态时,节点104a指派状态“尚未读取”。节点104a更新区块链分类账中的状态,以指示相关联的状况是“尚未读取”。
一个或多个实施例发布指示适配器交易被写入了分类账的事件(操作410)。节点104a发布指示适配器交易被写入了区块链分类账的事件。该事件被发布到事件流。事件的发布可以由各种因素触发,诸如区块向区块链日志的提交、某种交易类型的交易的提交、阈值数量的交易的提交、和/或阈值时间间隔的过去。事件可以是陈述新区块被提交到了区块链日志、某种交易类型的交易被提交、阈值数量的交易被提交,和/或阈值时间间隔已经过去的消息。附加地或可替代地,事件可以是具体地陈述适配器交易被写入了区块链分类账的消息。
节点104a-e中的一个或多个可以各自管理分开的事件流。节点104a-e中的一个或多个可以在对应的事件流上发布指示适配器交易被写到了区块链分类账的事件。
如下面参考图5的操作502进一步描述的,应用侧适配器108订阅节点104a的事件流。应用侧适配器108经由事件流获得事件。
可以使用向应用侧适配器108通知将适配器交易写入了区块链分类账的其它方式。例如,节点104a可以直接向应用侧适配器108发送通知。
一个或多个实施例从应用侧适配器接收读取区块链分类账的请求(操作412)。
如下面参考图5的操作504进一步描述的,响应于获得事件,应用侧适配器108发送读取区块链分类账的请求。
节点104a从应用侧适配器108接收读取区块链分类账的请求。接收读取区块链分类账的请求的节点可以与在操作410处发布了事件的节点相同或不同。
一个或多个实施例向应用侧适配器发送与适配器交易对应的状态(操作414)。响应于读取区块链分类账的请求,节点104a从区块链分类账发送状态的至少子集。所发送的状态至少包括基于适配器交易确定的第二状态。基于适配器交易确定的第二状态可以用于更新要与区块链分类账同步的应用。
6.使用来自区块链分类账的信息更新应用
图5图示了使用来自区块链分类账的信息更新应用的示例操作集合。图5中所示的一个或多个操作可以被修改、重新布置或完全省略。因而,图5中所示的操作的特定次序不应当被解释为限制一个或多个实施例的范围。图5的操作可以由应用侧适配器108和/或应用110a-b中的任何应用来执行。
一个或多个实施例获得指示已将一个或多个适配器交易写入区块链分类账的事件(操作502)。应用侧适配器108获得指示已将一个或多个适配器交易写入区块链分类账的事件。应用侧适配器108可以经由订阅节点104a的事件流来获得该事件。
如上面参考图4的操作410所描述的,维护区块链分类账的节点的集合104a-e中的一个或多个节点可以管理分开的事件流。应用侧适配器108可以订阅所有节点104a-e的事件流。然而,由于区块链分类账对于所有节点104a-e是相同的,因此订阅单个节点104a的事件流就足够了。
一个或多个实施例发送读取分类账以获得与适配器交易对应的状态的命令(操作504)。响应于获得事件,应用侧适配器108发送读取区块链分类账的请求。该请求可以是读取区块链分类账的全部或其子集的请求。该请求可以是专门读取一个或多个适配器交易的请求。
应用侧适配器108可以将读取区块链分类账的请求发送到应用侧适配器108在操作502处从其获得事件的节点相同的节点104a。附加地或可替代地,应用侧适配器108可以向维护区块链分类账的不同节点发送读取区块链分类账的请求。
一个或多个实施例确定是否成功获得了状态(操作506)。应用侧适配器108确定是否响应于读取区块链分类账的请求而成功获得了与适配器交易对应的状态。
如果未成功获得状态,那么一个或多个实施例发送修改与状态相关联的状况以指示未成功获得状态的命令(操作510)。应用侧适配器108发送修改与状态相关联的状况以指示未成功获得状态的命令。应用侧适配器108将命令发送到一个或多个背书节点105b。用于修改状况的命令的背书节点105b可以与(上面参考图3的操作304所描述的)用于执行模拟适配器交易的方法的命令的背书节点相同或不同。修改状况的命令构成对修改与状态相关联的状态的交易的提议。
作为示例,广告应用可以产生汽车的广告。区块链分类账中的基于适配器交易被更新了的特定状态可以与状况“尚未读取”相关联。应用侧适配器可以发送读取区块链分类账的请求。应用侧适配器可以成功获得该特定状态。应用侧适配器可以发送将与该特定状态相关联的状况修改为“成功读取”的命令。该命令可以包括(a)修改与状态相关联的状况的方法的标识符,以及(b)方法的参数。该方法的参数可以指示要指派的状况是“成功读取”。应用侧适配器可以将命令发送到背书节点的集合。
对修改与状态相关联的状况的交易的提议触发用于提交该交易的操作集合。背书节点105b对修改状况的交易进行背书。背书可以以以下为条件:确定从当前状况到提议的状况的转变是有效的。可以基于状态机来确定哪些转变被认为是“有效”的。例如,从“尚未读取”到“成功读取”的转变是有效的;从“成功读取”到“成功更新应用”的转变是有效的;从“未成功读取”到“成功读取”的转变是有效的。例如,从“未成功读取”到“尚未读取”的转变是无效的;从“未成功更新应用”到“未成功读取”的转变是无效的。
响应于接收到背书,应用侧适配器108将背书发送到排序服务106。排序服务106递送要提交的交易,包括修改状态的交易。节点的集合105a提交这些交易,包括修改状态的交易。
在实施例中,操作504的读取区块链分类账的命令和操作510的修改与区块链分类账中的状态相关联的状况的命令被组合成一个命令。所组合的命令包括读取区块链分类账的命令和修改与读取的状态相关联的状况的命令。基于该命令,要指派的状态可以是:“请求被读取”。
如果状态被成功获得,那么一个或多个实施例发送修改与状态相关联的状况以指示状态已成功获得的命令(操作512)。应用侧适配器108发送修改与状态相关联的状况以指示状态已成功获得的命令。以上参考操作510描述了与发送修改与状态相关联的状况的命令相关的实施例和示例。
一个或多个实施例尝试使用状态来更新应用(操作514)。应用侧适配器108将状态发送到一个或多个应用110a-b。应用(诸如应用110a-b中的任何一个)基于该状态来更新与应用相关联的一个或多个数据库。附加地或可替代地,应用基于状态更新与应用相关联的一个或多个功能。
作为示例,云应用可以维护用于一组销售人员的联系人信息。每个销售人员可以访问仅与该销售人员相关联的联系人的信息。云应用可以向销售人员的用户账户指派安全设置。具体而言,云应用可以向销售人员Joe的用户账户指派安全设置“仅访问洛杉矶的联系人”。基于该安全设置,云应用的功能可以允许Joe仅访问洛杉矶的联系人。
区块链分类账可以维护关于每个销售人员被指派到哪个部门的信息。可以执行将销售人员Joe从“洛杉矶的销售部门”转移到“南加州的销售部门”的合约交易。该合约交易可以更新区块链分类账中的状态,以指示销售人员Joe现在在“南加州的销售部门”。可以执行对应的适配器交易。适配器交易可以更新区块链分类账中的状态,以指示要与云应用同步的更新后的信息。更新后的信息可以指示销售人员Joe现在位于“南加州的销售部门”。
应用侧适配器获得基于适配器交易确定的状态,该状态指示销售人员Joe现在位于“南加州的销售部门”。基于获得的状态,云应用将指派给销售人员Joe的用户账户的安全设置改变为“仅南加州的联系人”。基于新的安全设置,可以修改云应用的功能,以允许Joe访问南加州的联系人。
在实施例中,应用侧适配器108被授权对应用110a-b执行更新。应用侧适配器108可以基于状态更新应用110a-b的数据库和/或功能。
一个或多个实施例确定应用是否被成功更新(操作516)。应用侧适配器108确定应用是否已成功更新。应用侧适配器108可以基于从应用发送的消息来确定更新是否成功。作为示例,应用侧适配器可以从应用接收指示更新未成功的错误。作为另一个示例,应用侧适配器可以从应用接收指示更新成功的确认。作为另一个示例,应用侧适配器可以从应用接收指示应用正在按预期执行的消息。该消息可以指示更新成功。
如果应用未被成功更新,那么一个或多个实施例发送修改与状态相关联的状况以指示应用未被成功更新的命令(操作518)。应用侧适配器108发送修改与状态相关联的状况以指示应用未被成功更新的命令。以上参考操作510描述了与发送修改与状态相关联的状况的命令相关的实施例和示例。
如果应用被成功更新,那么一个或多个实施例发送修改与状态相关联的状况以指示应用被成功更新的命令(操作520)。应用侧适配器108发送修改与状态相关联的状况以指示应用已成功更新的命令。以上参考操作510描述了与发送修改与状态相关联的状况的命令相关的实施例和示例。
7.硬件概述
根据一个实施例,本文所描述的技术由一个或多个专用计算设备来实现。专用计算设备可以是硬连线的以执行技术,或者可以包括诸如被永久性地编程以执行技术的一个或多个专用集成电路(ASIC)、现场可编程门阵列(FPGA)或网络处理单元(NPU)的数字电子设备,或者可以包括编程为根据固件、存储器、其它存储装置或组合中的程序指令执行技术的一个或多个通用硬件处理器。这些专用计算设备还可以将自定义的硬接线逻辑、ASIC、FPGA或NPU与自定义的编程组合来实现技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或结合硬连线和/或程序逻辑来实现技术的任何其它设备。
例如,图6是图示可以在其上实现本发明的实施例的计算机系统600的框图。计算机系统600包括总线602或用于发送信息的其它通信机制,以及与总线602耦合用于处理信息的硬件处理器604。硬件处理器604可以是例如通用微处理器。
计算机系统600还包括耦合到总线602用于存储信息和要由处理器604执行的指令的主存储器606,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器606也可以用于在要由处理器604执行的指令执行期间存储临时变量或其它中间信息。当这些指令被存储在处理器604可访问的非暂态存储介质中时,它们使计算机系统600成为被定制以执行指令中指定的操作的专用机器。
计算机系统600还包括耦合到总线602用于存储静态信息和用于处理器604的指令的只读存储器(ROM)608或其它静态存储设备。提供了诸如磁盘或光盘的存储设备610,并且存储设备610被耦合到总线602,用于存储信息和指令。
计算机系统600可以经由总线602耦合到显示器612,诸如阴极射线管(CRT),用于向计算机用户显示信息。输入设备614(其包括字母数字和其它键)被耦合到总线602,用于将信息和命令选择传送到处理器604。另一种类型的用户输入设备是光标控件616,诸如鼠标、轨迹球、或光标方向键,用于向处理器604传送方向信息和命令选择并且用于控制光标在显示器612上的移动。这种输入设备通常具有在两个轴(第一轴(例如,x)和第二轴(例如,y))中的两个自由度,以允许设备在平面中指定位置。
计算机系统600可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文描述的技术,这些定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑与计算机系统结合使计算机系统600成为或将计算机系统600编程为专用机器。根据一个实施例,本文的技术由计算机系统600响应于处理器604执行主存储器606中包含的一条或多条指令的一个或多个序列而执行。这些指令可以从另一个存储介质(诸如存储设备610)读取到主存储器606中。包含在主存储器606中的指令序列的执行使处理器604执行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路系统代替软件指令或与软件指令组合使用。
如本文所使用的术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非瞬态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备610。易失性介质包括动态存储器,诸如主存储器606。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁性数据存储介质、CD-ROM、任何其它光学数据存储介质、具有孔模式的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒带、内容可寻址存储器(CAM)和三元内容可寻址存储器(TCAM)。
存储介质与传输介质不同但可以与传输介质结合使用。传输介质参与在存储介质之间传输信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线602的电线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外线数据通信期间生成的那些波。
各种形式的介质可以涉及将一条或多条指令的一个或多个序列携带到处理器604以供执行。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以将指令加载到其动态存储器中,并且使用调制解调器经电话线发送指令。计算机系统600本地的调制解调器可以接收电话线上的数据,并且使用红外线发射器将数据转换为红外线信号。红外线探测器可以接收在红外线信号中携带的数据,并且适当的电路系统可以将数据放在总线602上。总线602将数据携带到主存储器606,处理器604从该主存储器606检索并执行指令。由主存储器606接收到的指令可以可选地在被处理器604执行之前或执行之后存储在存储设备610上。
计算机系统600还包括耦合到总线602的通信接口618。通信接口618提供耦合到网络链路620的双向数据通信,其中网络链路620连接到本地网络622。例如,通信接口618可以是综合业务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器、或向对应类型的电话线提供数据通信连接的调制解调器。作为另一个示例,通信接口618可以是提供到兼容的局域网(LAN)的数据通信连接的LAN卡。也可以实现无线链路。在任何这种实现中,通信接口618都发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
网络链路620通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路620可以通过本地网络622提供到主计算机624或到由互联网服务提供商(ISP)626操作的数据设备的连接。ISP 626又通过现在通常称为“互联网”628的世界范围的分组数据通信网络提供数据通信服务。本地网络622和互联网628都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路620上并且通过通信接口618的信号是传输介质的示例形式,其中信息将数字数据携带到计算机系统600或者携带来自计算机系统600的数字数据。
计算机系统600可以通过(一个或多个)网络、网络链路620和通信接口618发送消息和接收数据,包括程序代码。在互联网示例中,服务器630可以通过互联网628、ISP 626、本地网络622和通信接口618发送对应用程序的请求代码。
接收到的代码可以在其被接收到时由处理器604执行,和/或存储在存储设备610或其它非易失性存储器中以供以后执行。
8.杂项;扩展
实施例针对具有一个或多个设备的系统,其中设备包括硬件处理器并且被配置为执行本文描述的和/或以下权利要求中任一项中阐述的任何操作。
在实施例中,一种非瞬态计算机可读存储介质包括指令,当由一个或多个硬件处理器执行时,所述指令使得执行本文描述的和/或权利要求中任一项中阐述的任何操作。
可以根据一个或多个实施例使用本文描述的特征和功能的任意组合。在前面的说明书中,已经参考因实现而异的许多具体细节描述了实施例。因此,说明书和附图应当被认为是说明性的而不是限制性的。本发明的范围的唯一且排他的指标以及申请人预期作为本发明的范围的内容是从本申请中发出的权利要求集合的字面和等同范围,以这种权利要求发出的具体形式,包括任何后续的更正。
Claims (21)
1.一种或多种包括指令的非瞬态计算机可读介质,所述指令当由一个或多个硬件处理器执行时导致操作的执行,所述操作包括:
接收执行第一方法的命令,该第一方法(a)验证第一交易是否包括与第一应用相关联的第一信息集合,以及(b)基于第一交易确定要被写入区块链分类账的第一状态;
其中第一方法由第二方法调用,该第二方法基于第二交易确定要被写入区块链分类账的第二状态;
其中多个节点维护区块链分类账;
其中第一应用不维护区块链分类账;
执行第一方法包括:
(a)验证第一交易包括与第一应用相关联的第一信息集合,以及
(b)基于第一交易确定要被写入区块链分类账的第一状态;
发送第一消息,该第一消息包括基于第一交易要被写入区块链分类账的第一状态,其中第一状态被用于更新第一应用。
2.如权利要求1所述的介质,其中所述操作还包括:
从与第一应用相关联的模块接收读取区块链分类账以获得第一状态的命令;
向所述模块发送第一状态。
3.如权利要求2所述的介质,其中所述操作还包括:
在向所述模块发送第一状态之后:
设置与第一状态相关联的状况,以指示所述模块获得了第一状态。
4.如权利要求1所述的介质,其中所述操作还包括:
生成第二消息,该第二消息指示区块链分类账被写有一个或多个交易的集合,其中一个或多个交易的所述集合包括第一交易。
5.如权利要求1所述的介质,其中所述操作还包括:
向所述多个节点中的节点发送读取区块链分类账以获得第一状态的命令;
从该节点获得第一状态。
6.如权利要求5所述的介质,其中所述操作还包括:
在从所述节点获得第一状态之后:
发送设置与第一状态相关联的状况以指示获得了第一状态的命令。
7.如权利要求1所述的介质,其中所述操作还包括:
使用第一状态更新第一应用。
8.如权利要求1所述的介质,其中所述操作还包括:
接收执行第二方法的命令,该第二方法(a)调用第一方法以及(b)基于第二交易确定要被写入第二区块链分类账的第二状态;
执行第二方法包括:调用第一方法。
9.如权利要求1所述的介质,其中验证第一交易包括与第一应用相关联的第一信息集合包括:
验证第一信息集合包括用于由第一应用维护的数据库的字段的值。
10.如权利要求1所述的介质,其中验证第一交易包括与第一应用相关联的第一信息集合包括:
验证第一信息集合包括用于由第一应用维护的特定属性的值。
11.如权利要求1所述的介质,其中验证第一交易包括与第一应用相关联的第一信息集合包括:
验证第一信息集合包括对由第一应用维护的数据库的字段而言有效的值。
12.如权利要求1所述的介质,其中第一消息包括基于第二交易要被写入区块链分类账的第二状态。
13.如权利要求1所述的介质,其中第一消息构成对第一交易的背书。
14.如权利要求1所述的介质,其中第一状态被用于更新由第一应用维护的数据库。
15.如权利要求1所述的介质,其中第一状态被用于更新第一应用的功能。
16.如权利要求1所述的介质,其中所述操作还包括:
接收执行第一方法的命令,该第一方法(a)验证第三交易是否包括与第一应用相关联的第一信息集合,以及(b)基于第三交易确定要被写入区块链分类账的第三状态;
其中(a)验证第三交易是否包括与第一应用相关联的第一信息集合,以及(b)基于第三交易确定要被写入区块链分类账的第三状态的第一方法由第三方法调用,该第三方法基于第四交易确定要被写入区块链分类账的第四状态;
执行第一方法包括:
(a)验证第三交易包括与第一应用相关联的第一信息集合,以及
(b)基于第三交易确定要被写入区块链分类账的第三状态;
发送第二消息,该第二消息包括基于第三交易要被写入区块链分类账的第三状态,其中第三状态被用于更新第一应用。
17.如权利要求1所述的介质,其中执行第一方法还包括:
验证第一交易包括与第二应用相关联的第二信息集合。
18.如权利要求1所述的介质,其中:
所述操作还包括:
接收执行第二方法的命令,该第二方法(a)调用第一方法以及(b)基于第二交易确定要被写入第二区块链分类账的第二状态;
执行第二方法包括:调用第一方法;
生成第二消息,该第二消息指示区块链分类账被写有一个或多个交易的集合,其中一个或多个交易的所述集合包括第一交易;
从与第一应用相关联的模块接收读取区块链分类账以获得第一状态的命令;
向所述模块发送第一状态;
设置与第一状态相关联的状况,以指示所述模块获得了第一状态;
使用第一状态更新第一应用的数据库和第一应用的功能;
接收执行第一方法的命令,该第一方法(a)验证第三交易是否包括与第一应用相关联的第一信息集合,以及(b)基于第三交易确定要被写入区块链分类账的第三状态;
其中(a)验证第三交易是否包括与第一应用相关联的第一信息集合以及(b)基于第三交易确定要被写入区块链分类账的第三状态的第一方法由第三方法调用,该第三方法基于第四交易确定要被写入区块链分类账的第四状态;
执行第一方法包括:
(a)验证第三交易包括与第一应用相关联的第一信息集合,以及
(b)基于第三交易确定要被写入区块链分类账的第三状态;
发送第三消息,该第三消息包括基于第三交易要被写入区块链分类账的第三状态,其中第三状态被用于更新第一应用;
验证第一交易包括与第一应用相关联的第一信息集合包括:
验证第一信息集合包括用于由第一应用维护的数据库的字段的值;
验证第一信息集合包括用于由第一应用维护的特定属性的值;
验证第一信息集合包括对由第一应用维护的数据库的字段而言有效的值;
第一消息包括基于第二交易要被写入区块链分类账的第二状态;
第一消息构成对第一交易的背书。
19.一种方法,包括:
接收执行第一方法的命令,该第一方法(a)验证第一交易是否包括与第一应用相关联的第一信息集合,以及(b)基于第一交易确定要被写入区块链分类账的第一状态;
其中第一方法由第二方法调用,该第二方法基于第二交易确定要被写入区块链分类账的第二状态;
其中多个节点维护区块链分类账;
其中第一应用不维护区块链分类账;
执行第一方法包括:
(a)验证第一交易包括与第一应用相关联的第一信息集合,以及
(b)基于第一交易确定要被写入区块链分类账的第一状态;
发送第一消息,该第一消息包括基于第一交易要被写入区块链分类账的第一状态,其中第一状态被用于更新第一应用;
其中该方法由包括硬件处理器的至少一个设备执行。
20.一种系统,包括:
包括硬件处理器的至少一个设备;
其中该系统被配置为执行操作,所述操作包括:
接收执行第一方法的命令,该第一方法(a)验证第一交易是否包括与第一应用相关联的第一信息集合,以及(b)基于第一交易确定要被写入区块链分类账的第一状态;
其中第一方法由第二方法调用,该第二方法基于第二交易确定要被写入区块链分类账的第二状态;
其中多个节点维护区块链分类账;
其中第一应用不维护区块链分类账;
执行第一方法包括:
(a)验证第一交易包括与第一应用相关联的第一信息集合,以及
(b)基于第一交易确定要被写入区块链分类账的第一状态;
发送第一消息,该第一消息包括基于第一交易要被写入区块链分类账的第一状态,其中第一状态被用于更新第一应用。
21.一种包括用于执行如权利要求1-18中任一项所述的操作的部件的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/974,513 US11257081B2 (en) | 2018-05-08 | 2018-05-08 | Integrating a blockchain ledger with an application external to the blockchain ledger |
US15/974,513 | 2018-05-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110458698A true CN110458698A (zh) | 2019-11-15 |
CN110458698B CN110458698B (zh) | 2024-08-13 |
Family
ID=66483819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910017543.7A Active CN110458698B (zh) | 2018-05-08 | 2019-01-09 | 对区块链分类账和区块链分类账外部的应用进行集成的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11257081B2 (zh) |
EP (1) | EP3567540A1 (zh) |
KR (1) | KR20190128590A (zh) |
CN (1) | CN110458698B (zh) |
AU (2) | AU2019202955A1 (zh) |
CA (1) | CA3043202A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352705A (zh) * | 2020-02-25 | 2020-06-30 | 百度在线网络技术(北京)有限公司 | 一种区块链的事务处理方法、装置、设备和介质 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110709872B (zh) * | 2017-05-22 | 2024-06-07 | 区块链控股有限公司 | 解锁交易字节码的约束注入 |
US11188920B2 (en) * | 2018-05-23 | 2021-11-30 | International Business Machines Corporation | Autocommit transaction management in a blockchain network |
US11676139B2 (en) * | 2018-06-29 | 2023-06-13 | Arcblock, Inc. | Blockchain adapter, protocol, and access layer |
US11223606B2 (en) | 2018-06-29 | 2022-01-11 | Intel Corporation | Technologies for attesting a deployed workload using blockchain |
US11010728B2 (en) * | 2018-07-12 | 2021-05-18 | International Business Machines Corporation | Timestamping changes to smart-contract state |
US11308073B2 (en) * | 2018-08-08 | 2022-04-19 | International Business Machines Corporation | Database node functional testing |
US11521202B2 (en) * | 2018-08-30 | 2022-12-06 | International Business Machines Corporation | Distributed computing and storage network implementing high integrity, high bandwidth, low latency, secure processing |
US11379828B2 (en) * | 2018-08-30 | 2022-07-05 | International Business Machines Corporation | Distributed computing and storage network implementing high integrity, high bandwidth, low latency, secure processing |
US11032063B2 (en) * | 2018-09-19 | 2021-06-08 | International Business Machines Corporation | Distributed platform for computation and trusted validation |
US11940978B2 (en) | 2018-09-19 | 2024-03-26 | International Business Machines Corporation | Distributed platform for computation and trusted validation |
US11488727B2 (en) * | 2018-10-30 | 2022-11-01 | LogicMatter, Inc. | Immutable system of records for IoT/control systems for compliance |
US20200153605A1 (en) * | 2018-11-13 | 2020-05-14 | Accelor Ltd. | Systems and methods for pre-executing transaction validation for blockchain applications |
US11720545B2 (en) * | 2018-12-19 | 2023-08-08 | International Business Machines Corporation | Optimization of chaincode statements |
US11348101B2 (en) * | 2018-12-19 | 2022-05-31 | International Business Machines Corporation | Post-settlement processes |
US10637644B1 (en) * | 2018-12-21 | 2020-04-28 | Capital One Services, Llc | System and method for authorizing transactions in an authorized member network |
US20200242595A1 (en) * | 2019-01-30 | 2020-07-30 | Salesforce.Com, Inc. | Systems, methods, and apparatuses utilizing a blended blockchain ledger in a cloud service to address local storage |
KR102318022B1 (ko) * | 2019-12-12 | 2021-10-27 | (주)포뎁스 | 블록체인을 기반으로 응용 애플리케이션에 대한 업데이트 처리 및 업데이트 데이터의 위변조 탐지를 가능하게 하는 전자 단말 장치 및 그 동작 방법 |
US12099997B1 (en) | 2020-01-31 | 2024-09-24 | Steven Mark Hoffberg | Tokenized fungible liabilities |
US11184436B2 (en) * | 2020-03-02 | 2021-11-23 | International Business Machines Corporation | Automated storage selection with blockchain and NLP |
CN111630545B (zh) | 2020-04-22 | 2022-05-27 | 支付宝(杭州)信息技术有限公司 | 管理账本系统中的交易请求 |
CN111656386B (zh) | 2020-04-22 | 2022-05-17 | 支付宝(杭州)信息技术有限公司 | 管理账本系统中的交易请求 |
EP3841549B1 (en) | 2020-04-22 | 2022-10-26 | Alipay (Hangzhou) Information Technology Co., Ltd. | Managing transaction requests in ledger systems |
WO2022010297A1 (ko) * | 2020-07-10 | 2022-01-13 | 주식회사 미디움 | 하이퍼레저 패브릭 구조에서 피어 단말기가 블록 데이터를 클라이언트 단말기로 전송하는 방법 |
KR102364479B1 (ko) | 2020-07-17 | 2022-02-17 | 주식회사 딥샌드 | 접속우회 서비스 제공 시스템 및 그 방법 |
US20220188882A1 (en) * | 2020-12-10 | 2022-06-16 | International Business Machines Corporation | Leaving hierarchical-embedded reviews for verified transactions |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017098519A1 (en) * | 2015-12-08 | 2017-06-15 | Tallysticks Limited | A system and method for automated financial transaction validation, processing and settlement using blockchain smart contracts |
CN107833060A (zh) * | 2017-11-13 | 2018-03-23 | 中国银行股份有限公司 | 一种区块链中智能合约交易的验证方法以及系统 |
US20180089683A1 (en) * | 2016-09-29 | 2018-03-29 | Microsoft Technology Licensing, Llc. | Heartbeats and consensus in verifiable outsourced ledgers |
US20180096163A1 (en) * | 2016-09-30 | 2018-04-05 | Amazon Technologies, Inc. | Immutable cryptographically secured ledger-backed databases |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10532268B2 (en) * | 2016-05-02 | 2020-01-14 | Bao Tran | Smart device |
US10698795B2 (en) * | 2016-09-16 | 2020-06-30 | Total Systems Services, Inc. | Virtual payments environment |
US11205178B2 (en) * | 2017-12-28 | 2021-12-21 | International Business Machines Corporation | Converting processes into multiple blockchain smart contracts |
-
2018
- 2018-05-08 US US15/974,513 patent/US11257081B2/en active Active
-
2019
- 2019-01-09 CN CN201910017543.7A patent/CN110458698B/zh active Active
- 2019-04-26 AU AU2019202955A patent/AU2019202955A1/en not_active Abandoned
- 2019-05-07 EP EP19172916.9A patent/EP3567540A1/en active Pending
- 2019-05-08 KR KR1020190053666A patent/KR20190128590A/ko active Search and Examination
- 2019-05-14 CA CA3043202A patent/CA3043202A1/en active Pending
-
2024
- 2024-05-29 AU AU2024203584A patent/AU2024203584A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017098519A1 (en) * | 2015-12-08 | 2017-06-15 | Tallysticks Limited | A system and method for automated financial transaction validation, processing and settlement using blockchain smart contracts |
US20180089683A1 (en) * | 2016-09-29 | 2018-03-29 | Microsoft Technology Licensing, Llc. | Heartbeats and consensus in verifiable outsourced ledgers |
US20180096163A1 (en) * | 2016-09-30 | 2018-04-05 | Amazon Technologies, Inc. | Immutable cryptographically secured ledger-backed databases |
CN107833060A (zh) * | 2017-11-13 | 2018-03-23 | 中国银行股份有限公司 | 一种区块链中智能合约交易的验证方法以及系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352705A (zh) * | 2020-02-25 | 2020-06-30 | 百度在线网络技术(北京)有限公司 | 一种区块链的事务处理方法、装置、设备和介质 |
CN111352705B (zh) * | 2020-02-25 | 2023-10-31 | 百度在线网络技术(北京)有限公司 | 一种区块链的事务处理方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
AU2024203584A1 (en) | 2024-06-20 |
US11257081B2 (en) | 2022-02-22 |
EP3567540A1 (en) | 2019-11-13 |
CA3043202A1 (en) | 2020-02-05 |
CN110458698B (zh) | 2024-08-13 |
KR20190128590A (ko) | 2019-11-18 |
AU2019202955A1 (en) | 2019-11-28 |
US20190347658A1 (en) | 2019-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110458698A (zh) | 对区块链分类账和区块链分类账外部的应用进行集成 | |
US7197466B1 (en) | Web-based system for managing software assets | |
CN103038752B (zh) | 一种用于管理软件问题报告的方法、系统和设备 | |
US8646093B2 (en) | Method and system for configuration management database software license compliance | |
CN103890773B (zh) | 角色工程范围确定和管理 | |
CN110199302A (zh) | 事件驱动的区块链工作流处理 | |
CN115485686A (zh) | 用于数据云服务的分布式和基于区块链的账簿 | |
US20030033241A1 (en) | Methods and systems for automated loan origination, processing and approval | |
US20010032094A1 (en) | System and method for managing licensing information | |
US20090216664A1 (en) | Method and Administration System for Management of Electronic Receipts | |
TW201933204A (zh) | 產生智能合約的方法及裝置 | |
US20080091551A1 (en) | Knowledge-based customizable product design system | |
WO2004099927A2 (en) | System and method for creating, managing and procuring real estate agreements | |
US20080027826A1 (en) | Method, system and computer program product for facilitating the telecommunication equipment ordering process | |
US20040220820A1 (en) | System and method for creating and managing real estate agreements | |
US20230410049A1 (en) | System, Method, and Computer Program Product for Generating and Executing a Workflow Program | |
CN111368262A (zh) | 一种基于区块链的人工智能模型保护、松耦合分布式训练方法 | |
US20170308906A1 (en) | Systems and Methods For Processing Vehicle Permits, Titles, Registrations, and Liens Using A Hub Configuration | |
US10839387B2 (en) | Blockchain based action and billing | |
US20080133385A1 (en) | Internet clearinghouse for homeowner association information | |
JP4121344B2 (ja) | ライセンス管理装置、方法及びプログラム | |
CN114596165A (zh) | 一种用于理财产品登记、销售、管理的区块链系统和方法 | |
US20070043638A1 (en) | System architecture and related methods for monitoring financial positions of an entity on a group-wide basis | |
Lee | Auditing as Pattern Recognition: Automated Analysis of Documentary Procedures | |
CA3090986C (en) | Method and system for overseeing execution of graph-based contracts using hash chains |
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 |