CN110874739B - 实现高完整性、高带宽、低延迟、安全处理的分布式计算和存储网络 - Google Patents

实现高完整性、高带宽、低延迟、安全处理的分布式计算和存储网络 Download PDF

Info

Publication number
CN110874739B
CN110874739B CN201910799915.6A CN201910799915A CN110874739B CN 110874739 B CN110874739 B CN 110874739B CN 201910799915 A CN201910799915 A CN 201910799915A CN 110874739 B CN110874739 B CN 110874739B
Authority
CN
China
Prior art keywords
blockchain
transaction
function
state
proposal
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
Application number
CN201910799915.6A
Other languages
English (en)
Other versions
CN110874739A (zh
Inventor
A·J·科尔曼
A·J·奥多德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN110874739A publication Critical patent/CN110874739A/zh
Application granted granted Critical
Publication of CN110874739B publication Critical patent/CN110874739B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, 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/401Transaction verification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q2220/00Business processing using cryptography

Abstract

示例操作可以包括如下中的一个或多个:由计算系统的客户端应用构建交易提议和向多个背书节点发送所构建的交易提议,其中,使用区块链命名系统(BNS)对交易提议的输入命名,由计算系统的客户端应用从该多个背书节点接收一组交易响应,该交易响应的每一个包括交易验证函数,由计算系统的客户端应用将所接收的交易响应组装到交易中,以及由计算系统的客户端应用向排序节点发送交易以供分发。

Description

实现高完整性、高带宽、低延迟、安全处理的分布式计算和存 储网络
技术领域
本申请一般涉及分布式计算和存储网络,并且更具体地,涉及实现高完整性、高带宽、低延迟、安全处理的分布式计算和存储网络。
背景技术
例如,在一个或多个数据库上存储信息的分布式计算和存储网络可以操作以共同执行各种网络操作。例如,这种网络可以促进安全通信并且可以提供安全的区块链交易。区块链通常是计算系统(即节点)的分布式网络。每个节点都托管账本(ledger)的副本,并且每个节点具有所属组织。可以在网络中的不同点处同时提交多个交易。然而,每个节点必须在其账本副本上记录共同商定的交易顺序序列。
至少以下问题与如今的区块链智能合约的传统处理相关联。交易仅记录状态转换,而不记录交易逻辑。交易被采集为在状态存储(例如,一个或多个数据库)上的读写(RW)集。例如,每个数据库可以在一个或多个单独的数据库服务器中存储和维护数据。这种服务器可以是台式计算机、机架式服务器、大型计算机等。存储在数据库上的信息通常可以从多个不同的点访问。例如,基于客户端/服务器配置,多个用户或客户端工作站可以同时在数据库上工作。在每个数据库内,数据冗余可以被最小化,因为所有数据的单个存储位置也意味着给定数据集仅具有一个主记录。然而,例如,数据冗余可以由各种RAID配置来管理。
传统上,交易语义立即丢失,这可能导致后续审计要求或作为灾难恢复场景的一部分的交易重放的问题。例如,记录物品的购买的交易可能只记录客户的新银行存款余额或供应商在RW集中的库存水平,而不是例如银行存款余额变更的原因或库存水平变化的原因的公开相关细节(如果由于出售或审计而导致库存水平降低)。换句话说,历史仅限于事实,而不是理由。
同时,必须能够维护交易的私有上下文-并非交易的所有部分都是公共的或所有部分都是私有的。例如,智能合约可以授予某个人5%的折扣,但不应该记录该私有交易上下文。然而,有必要记录该交易的关于交易的执行原因(例如,银行存款已借记或贷记)的公共方面。
此外,大型交易会花费带宽和延迟。如果交易导致在状态存储中对数据的广泛更新,则RW集可能非常大。由于该RW集围绕区块链网络(其本身可能包括许多广泛分布的对等方)传输,因此传统上,带宽和延迟影响导致成本高且性能差的系统。这是因为交易发送(ship)的数据必须生成,围绕网络移动,MVCC检查,并且然后最终应用。
此外,重叠状态改变浪费了良好的交易。传统区块链处理系统的弱点是,横跨网络的所有背书对等方(endorsing peer)必须在可将其提交到账本之前在相同的RW集上达成共识。在可能长的时间段期间,可能会调用另一个影响该RW集的重叠部分的交易。因此,新交易总是会无法达成共识,并且纯粹因为网络中的延迟而失败。
因此,克服这些缺陷中的一个、一些或全部缺陷的改进的分布式计算和存储网络和过程可能是有益的。
发明内容
一个示例实施例提供了一种系统,其包括至少一个处理器和存储计算机程序指令的存储器,该计算机程序指令包括能够由所述至少一个处理器访问的智能合约。计算机程序指令被配置为使该至少一个处理器执行如下中的一个或多个:基于所接收的交易提议和当前版本的账本从外部计算系统的客户端应用接收交易提议,生成验证函数,创建包括验证函数的交易响应,并向外部计算系统的客户端应用发送包括验证函数的交易响应。
一个示例实施例提供了一种系统,该系统包括至少一个处理器和存储计算机程序指令的存储器,该计算机程序指令包括能够由至少一个处理器访问的智能合约。计算机程序指令被配置为使该至少一个处理器执行如下中的一个或多个:构建交易提议,其中,基于包括账本状态寻址、用于寻址外部数据值的资料库(oracle)以及用户状态寻址的区块链命名系统(BNS)来对交易提议的输入命名,BNS提供了基于通用资源指示符(URI)对所有区块链资源命名的标准机制,向多个背书节点发送构建的交易提议。
另一示例实施例可以提供一种方法,该方法包括如下中的一个或多个:由计算系统的客户端应用构建交易提议并向多个背书节点发送所构建的交易提议,其中使用区块链命名系统(BNS)对交易提议的输入命名,由计算系统的客户端应用从多个背书节点接收一组交易响应,该交易响应中的每一个包括交易验证函数,由计算系统的客户端应用将所接收的交易响应组装到交易中,以及由计算系统的客户端应用向排序节点发送交易以供分发。
另一示例实施例可以提供一种方法,该方法包括如下中的一个或多个:由计算系统构建交易提议,其中,使用包括账本状态寻址、用于寻址外部数据值的资料库和用户状态寻址的区块链命名系统(BNS)来对交易提议的输入命名,BNS提供了使用通用资源指示符(URI)对所有区块链资源命名的标准机制。
另一示例实施例提供了在非暂态计算机可读介质上体现的计算机程序。该程序被配置为使至少一个处理器执行如下中的一个或多个:从排序节点接收打包成区块的交易,从区块中解包所接收的交易,以及使用验证函数来更新账本。
另一示例实施例提供了一种在非暂态计算机可读介质上实现的计算机程序。该程序被配置为使至少一个处理器执行如下中的一个或多个:接收交易以供分发,使用区块链命名系统(BNS)来基于交易分析和优化区块的打包和排序,其中对区块进行排序以使得流可以并行执行,同时按顺序执行序列,促进并行化,并向区块链网络的节点发送排序的区块以进行验证。
附图说明
图1示出根据示例实施例的分布式账本交易的交易生命周期。
图2示出根据示例实施例的示例功能交易(FT)函数。
图3A是示出根据示例实施例的用于生成闭包的示例函数代码的屏幕截图。
图3B是示出根据示例实施例的用于调用闭包的示例函数代码的屏幕截图。
图4示出根据示例实施例的组构(fabric)如何提交交易的五步过程。
图5示出根据示例实施例的区块链上下文。
图6示出根据示例实施例的区块链命名方案(BNS)。
图7示出根据示例实施例的世界状态。
图8A示出根据示例实施例的提议过程。
图8B示出根据示例实施例的执行过程。
图8C示出根据示例实施例的组装过程。
图8D示出根据示例实施例的排序处理。
图8E示出根据示例实施例的验证过程。
图9示出根据示例实施例的用于区块优化的过程。
图10示出根据示例实施例的用于并行验证的过程。
图11示出根据示例实施例的区块链网络的逻辑网络图。
图12A示出根据示例实施例的示例对等节点配置。
图12B示出根据示例实施例的另一对等节点配置。
图13示出根据示例实施例的示出促进功能交易的示例方法的流程图。
图14示出根据示例实施例的示出使用BNS促进区块链交易的示例方法的流程图。
图15A示出根据示例实施例的被配置为执行在此描述的一个或多个操作的示例系统。
图15B示出根据示例实施例的被配置为执行在此描述的一个或多个操作的另一示例系统。
图15C示出根据示例实施例的合约方和中介服务器之间的智能合约配置,该中介服务器被配置为在区块链上实施智能合约条款。
图15D示出根据示例实施例的另一示例系统。
图16示出支持一个或多个示例实施例的示例系统。
具体实施方式
容易理解的是,如本文附图中一般描述和说明的示例组件可以以各种不同的配置来布置和设计。因此,如附图中所示的方法、装置、非暂态计算机可读介质和系统中的至少一个的实施例的以下详细描述并非旨在限制所要求保护的本申请的范围,而仅仅是代表所选实施例。
贯穿本说明书描述的本发明特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。例如,贯穿本说明书,短语“示例实施例”、“一些实施例”或其它类似语言的使用指的是结合该实施例描述的特定特征、结构或特性可包括在至少一个实施例的事实。因此,贯穿本说明书出现的短语“示例实施例”、“在一些实施例中”、“在其它实施例中”或其它类似语言不一定都指代相同的一组实施例,并且所描述的特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。
另外,虽然术语“消息”可能已经在实施例的描述中使用,但是该应用可以应用于许多类型的网络数据,诸如分组、帧、数据报等。术语“消息”还包括分组、帧、数据报及其任何等同物。此外,虽然在示例性实施例中可以描绘某些类型的消息和信令,但是它们不限于某种类型的消息,并且该应用不限于某种类型的信令。
示例实施例提供了方法、系统、组件、非暂态计算机可读介质、设备、和/或网络,其提供采用区块链命名系统(BNS)和功能交易(FT)的分布式计算和存储网络。BNS提供与区块链系统相关的所有数据的明确命名,包括账本状态寻址、用于寻址外部数据值的资料库、用户状态寻址、清晰的资源结构,允许架构师和软件工程师对现实世界关系建模,允许区块链信息被分析和优化,或它们的任何组合。该系统使用FT而不是传统的区块链交易,以便比传统的区块链技术更有效地处理交易。
分散式数据库是包括彼此通信的多个节点的分布式存储系统。区块链是分散式数据库的示例,其包括类似于能够在相互不可信方之间维护记录的分布式账本的仅附加的不可变数据结构。不可信方在此称为“对等方”或“对等节点”。每个对等方维护数据库记录的副本,并且没有单个对等方可以修改数据库记录而不在分布式对等方之间达成共识。例如,对等方可以执行共识协议以验证区块链存储交易(在一些实施例中可以是功能交易),将存储交易分组为区块,并在区块上构建散列链。该过程在必要时通过排序存储交易来形成账本,以保持一致性。在公共或免许可(permission-less)的区块链中,任何人都可以在没有特定身份的情况下参与。公共区块链通常涉及本地加密货币,并使用基于各种协议(诸如工作证明(PoW))的共识。另一方面,许可的区块链数据库提供了一种系统,该系统可以保护共享共同目标但彼此不完全信任的一组实体之间的相互作用,诸如交换资金、商品、信息等的商业。
区块链操作任意的可编程逻辑,其适合于分散的存储方案并且被称为“智能合约”或“链码”。在一些情况下,可以存在用于管理函数和参数的专用链码,其被称为系统链码。智能合约是受信任的分布式应用,该分布式应用利用区块链数据库的防篡改属性和节点之间的底层协议,这被称为背书(endorsement)或背书策略。通常,区块链交易(例如,功能交易)通常必须在被提交到区块链之前被“背书”,而未被背书的交易被忽略。典型的背书策略允许链码以一组对等节点的形式指定交易的背书方,这对于背书是必需的。当客户端向背书策略中指定的对等方发送交易时,执行该交易以验证该交易。在验证之后,交易进入排序阶段,其中使用共识协议来产生分组为区块的排序的背书交易序列。
节点是区块链系统的通信实体。在不同类型的多个节点可以在同一物理服务器上运行的意义上,“节点”可以执行逻辑功能。节点在信任域中分组,并与以各种方式控制它们的逻辑实体相关联。节点可以包括不同类型,诸如客户端或提交客户端节点,其向背书方(endorser)(例如,对等方)提交交易调用,并且向排序服务(例如,排序节点)广播交易提议。另一种类型的节点是对等节点,该对等节点可以接收客户端提交的交易,提交交易并维护区块链交易的账本的状态和副本。对等方也可以扮演背书方的角色,尽管这不是必需的。排序服务节点或排序方是为所有节点运行通信服务的节点,并且该节点实现交付保证,诸如在提交交易和修改区块链的世界状态时,向系统中的每个对等节点广播,这是通常包括控制和设置信息的初始区块链交易的另一个名称。
账本是区块链的所有状态转换的有序防篡改记录。状态转换可以由参与方(例如,客户端节点、排序节点、背书方节点、对等节点等)提交的链码调用(即,交易)产生。交易可以导致一组资产密钥值对被提交给账本作为一个或多个操作数,诸如创建、更新、删除等。账本包括区块链(也称为链),其用于以区块的形式存储不可变的顺序记录。账本还包括状态数据库,该数据库维护区块链的当前状态。每个通道通常存在一个逻辑账本。每个对等节点为作为成员的每个信道维护账本的副本。
链是交易日志,其被构造为散列链接区块,并且每个区块包含具有N个交易的序列,其中N等于或大于1。区块报头包括区块的交易的散列,以及先前区块的报头的散列。通过这种方式,账本上的所有交易可以被排序并以加密方式链接在一起。因此,不可能在不破坏散列链接的情况下篡改账本数据。最近添加的区块链区块的散列表示在其之前来到的链上的每个交易,使得可以确保所有对等节点处于一致且可信的状态。链可以存储在对等节点文件系统(即,本地、附加存储、云等)上,有效地支持区块链工作负载的仅附加性质。
不可变账本的当前状态表示链交易日志中包括的所有密钥的最新值。因为当前状态表示通道已知的最新密钥值,所以它有时被称为世界状态。链码调用按照账本的当前状态数据来执行交易。为了使这些链码交互有效,可以将密钥的最新值存储在状态数据库中。状态数据库可以只是链的交易日志的索引视图。因此,可以随时从链中重新生成状态数据库。在对等节点启动时以及在接受交易之前,可以自动恢复(或在需要时生成)状态数据库。
本申请的一些实施例涉及采用BNS的分布式计算和存储网络,该BNS提供与区块链系统相关的所有数据的明确命名,并且包括账本状态寻址、用于寻址外部数据值的资料库、用户状态寻址、清晰的资源结构,允许架构师和软件工程师对现实世界关系建模,允许分析和优化区块链信息,或其任何组合。分布式计算和存储网络也可以利用FT。
相对于传统系统和方法,本申请的一些实施例的一些优点以及新颖区别至少包括以下内容。一些实施例通过将交易表示为生成函数闭包而不是RW集的函数来解决仅在交易中记录状态过渡所引起的限制。该函数闭包可以编码交易的语义,并且只能在提交到账本时在处理的最后阶段调用。一些实施例通过分发封装交易逻辑的函数闭包来解决大交易的高带宽和延迟成本。除了变得更小之外,纯函数(即,没有副作用且没有共享状态的函数)可以在没有与非函数程序相关联的“竞争条件”的情况下容易地与其它函数并行调用。一些实施例通过在共识过程的持续时间内不依赖于“冻结状态”来解决在重叠状态改变期间的良好交易的浪费。相反,对等方就函数闭包达成共识,该函数闭包是确定性的并且独立于当前状态。
区块链与传统的集中式数据库的不同之处在于区块链不是中央存储。相反,区块链是分散的、不可变的以及安全的存储,其中节点必须共享存储中的记录的变化。区块链中固有的并且有助于实现区块链的一些属性包括但不限于不可变的账本、智能合约、安全性、隐私、分散、共识、背书、可访问性等,这些将在此进一步描述。根据各个方面,由于关注于函数闭包的区块链特定的交易处理,实现了上面讨论的优点。这是相对于传统方法的RW集功能的根本不同的方法和新颖的方法。
一些实施例的益处之一是它们可以通过关注于函数闭包而不是RW集来改进计算系统的功能和/或计算系统的网络。通过在此描述的区块链系统,计算系统可以执行该功能,因为函数闭包状态被共同跟踪并且被系统中的节点用于账本操作。这些实施例还改变了如何将数据存储在区块链的区块结构中。例如,可以跟踪和存储函数闭包,产生上面讨论的优点和差异。通过使用针对区块链交易的FT所实现的一些进一步的优点包括但不限于:(1)函数可以采集现实世界的复杂性;(2)函数是确定性的,其为智能合约提供可预测性;(3)函数高度并行化,其适用于区块处理;(4)函数编程语言的使用很普遍;以及(5)采用函数,可以使用零知识证明(ZKP)提供安全提议和验证,可以使用完全同态加密(FHE)提供安全执行和承诺,并且函数非常适合于提供数据隐私和处理隐私。
FHE采用加密函数处理加密数据以产生相同的加密结果。FHE和功能区块链可以组合以在不安全的基础设施上执行智能合约,并可选地始终维护完全加密的账本。因此,FHE执行智能合约可以生成可以解密或保持原样的FHE验证函数。可选地,可以通过使用FHE验证函数在安全账本上执行安全提交,以生成FHE加密的W集。
总之,FHE执行和提交可以如下操作。首先,FHE智能合约被建立,安装在节点上并进行实例化。然后由客户端应用创建FHE提议。智能合约使用FHE提议和区块链上下文来产生FHE验证函数。FHE验证函数作为智能合约响应返回。区块链上下文可以是或可以不是FHE加密的。该交易被建立并分发给节点。每个区块交易包含FHE验证函数,该FHE验证函数维护FHE加密的区块链上下文(即,区块链账本和所有动态(in-flight)数据总是被加密)。
在一些实施例中,智能合约被表示为促进FT的功能程序。FT可以完全采集逻辑并保留交易语义,提供无损全面的出处。在一些实施例中,FT相对较小,使得它们可以在网络周围传递并在必要时执行,而不是像在传统的区块链交易中那样传递大数据图像。FT不能共享状态,因此不会发生重叠状态故障,这与传统的区块链交易不同。
在一些实施例中,智能合约(即,链码)是生成函数的函数。智能合约可以提供私有和公共函数以及HOF。由于智能合约执行生成公共函数闭包,以用于后续承诺。
现在参考图1,示出了用于分布式账本交易(DLT)的过程100。这种过程100可以包括具有包括以下内容的生命周期的交易处理:(1)由交易发起者生成提议;(2)提议由智能合约的多个独立实例执行,并且每个实例生成表示背书的数字签名交易响应;(3)背书的响应被组装到完全背书的交易中;(4)交易按区块排序以供分发(即,排序),并且区块经由排序服务在整个网络中分发到每个节点;以及(5)在将交易应用于其账本副本之前,网络中的每个节点根据背书策略单独验证区块交易中的每个交易。例如,在某些区块链系统的情况下,交易使用数据图像记录状态变化。执行采集之前和之后的状态作为状态数据库中的RW集。仅当在多版本并发控制(MVCC)检查之后RW集仍然有效时,提交才更新状态数据库。该模式很典型。
“状态”代表世界的方式。例如,状态可以是银行账户存款余额、燃料量等。“交易”采集世界方式的变化(例如,银行账户金额的减少、燃料量的增加等)。交易记录状态改变,但不记录状态值。必须批准交易,并且只有在交易可以将状态从一个值改变为另一个值时才会发生状态改变。例如,只有当帐户中有足够的资金并且银行批准转帐时,从银行帐户中扣除10.00美元的交易才有效。如果交易有效,则存款余额减少10.00美元。
状态可以是一方独占的,或者可以由多方共享。独占状态与单方隔离。共享状态由一些或所有方访问(例如,股票价格)。独占和共享状态二者通常可以经常变化(例如,频繁地在单个银行账户中支出或者快速更新股票价格)。在现实世界中,频繁改变独占或共享状态很难管理,因为交易可能彼此冲突,特别是在交易改变假定当前状态值的情况下。
图2示出了根据示例实施例的示例FT函数200。在该示例中,买方Daisy决定使用信用卡从加油站购买一些燃油。由于是忠诚的客户,加油站也为Daisy提供5%的折扣。在该示例中使用了三个函数:(1)公共“Fuel”函数,其作为智能合约的公共入口点;(2)可选的私有“buyFuel”函数,其采集智能合约的机密方面,并且不在网络上共享;以及(3)另一个公共“transferPayment”函数,其提供智能合约的其它公共方面,并作为整个网络的响应发送。
在一些实施例中,函数具有输出,该输出仅由函数输入参数和任何范围内变量绑定来确定。在一些实施例中,该函数不能修改封闭环境中的任何外部状态或任何范围内变量,因此该函数在该意义上可没有副作用。“环境”(也称为“上下文”)是一组变量绑定(即名称/值对),它们在评估函数时处于范围内。闭包是指函数和在其中声明该函数的词汇环境的组合。HOF是经由输入参数或生成函数作为返回值来对其它函数操作的函数。
在函数编程语言中,HOF是在运行时被调用的情况下生成并返回其它函数作为其结果的函数。这些生成的函数可以在程序执行后调用。在一些实施例中,由HOF生成的函数由两部分组成:(1)函数体,其在最终调用函数时对由函数执行的逻辑进行编码;以及(2)封闭环境,其是当在HOF内部生成函数时在范围内的一组变量绑定(有时称为“词汇范围”)。函数体和封闭环境的该组合称为“闭包”。当最终调用闭包时,闭包体中的逻辑被执行,并且将有读取闭包的封闭环境中变量的值的入口。HOF在一些实施例中是重要组件,因为它们为智能合约提供了指定行为并且延迟执行的机制。智能合约HOF在一些实施例中在集成于其中时提供该机制。
在一些实施例中,智能合约的部分是公共合约构造函数、私有交易逻辑和公共交易逻辑。公共合约构造函数是由客户端应用调用的HOF,它最终将生成交易函数闭包。私有交易逻辑是可以应用于创建交易参数的逻辑,并且在声明交易函数闭包之前不会公开共享。例如,在一个非限制性示例中,当计算黄金客户的折扣价格时,最终价格将是公开的,但是不会公开折扣和/或其原因。公共交易逻辑是生成交易闭包的HOF。公共交易逻辑定义了交易函数和环境(变量绑定和区块链上下文)二者,在该环境下在提交阶段期间将调用交易函数。
图3A是示出根据示例实施例的用于生成闭包的示例函数代码的屏幕截图300。公共交易构造函数调用私有交易逻辑,该逻辑准备并将交易闭包作为函数闭包返回。然而,在该阶段不会调用闭包。私有交易逻辑准备将在其下调用交易闭包的上下文。
图3B是示出根据示例实施例的用于调用闭包的示例函数代码的屏幕截图310。根据以上所述,在图3A中未调用交易闭包。当在图3B中最终调用闭包时,公共交易逻辑被评估并提交给账本。
图4示出根据示例实施例的组构如何提交交易的五步过程400。与图1一样,该过程包括提议、执行、组装、排序和提交步骤。然而,每个操作都采用函数执行。
在提议步骤410中,客户端应用创建已签名的交易提议,该交易提议包含用于智能合约函数的交易输入变量。使用命名系统(即,BNS)对交易提议的交易输入命名。如背书策略定义的,该提议将单独发送到所有组织的链码。然后,客户端应用等待所有必要的响应。
在执行步骤420中,私有智能合约(即,链码)使用交易提议来生成交易响应。响应被描述为公共验证函数。之后,响应将计算对账本世界状态的任何更新。应该注意,此时不生成RW集。然后,验证函数作为签名的交易响应返回到客户端应用。
在组装步骤430中,客户端应用构建包括单个提议、单个响应和多个背书(即,从每个组织来一个)的交易。然后经由排序服务将交易提交给账本。在一些实施例中,不必在交易中提供所有响应,因为它们应该都是相同的。在所有响应都不相同的情况下,对于由背书策略定义的多数响应将有足够的背书,在这种情况下,账本将持续更新,或者由于缺乏共识而导致交易失败。在任一种情况下,只要包括所有背书在一些实施例中不必包括多于一个的响应。
在排序步骤440中,来自不同客户端应用的交易被排序为区块。使用流和序列来优化区块以用于并行处理。区块也以加密方式散列化并彼此链接。
在提交步骤450中,使用验证函数将账本更新生成为W集(即,“写”集)。如果W集不是无(即,空)并且交易由必要组织背书,则该交易有效。所有有效和无效的交易都会添加到区块链中。账本采用W集进行更新,并向客户端应用通知账本更新。
图5示出根据示例实施例的区块链上下文500。区块链上下文是与区块链系统相关的一组参考信息,并支持函数闭包。区块链上下文包括一组绑定,该绑定包含与区块链系统有关的参考信息。在一些实施例中,闭包对区块链有帮助,因为它们为函数提供数据上下文并且它们延迟评估。闭包还允许围绕网络传送函数(例如,由智能合约定义的验证函数),并且仅在提交时进行评估。函数和环境组合以生成整个账本更新,并且实际更新可以是区块链上下文的任何部分。
区块链上下文包括账本、用于寻址外部数据值的资料库,以及它们出现时的其它相关区块链创新(例如,可散列化的外部数据存储)。账本包括世界状态和区块链,资料库用作可预测的参考信息源。可以经由通用资源指示符(URI)方案(例如,/ledger/worldstate,/oracle/fxprice等)来寻址上下文。应注意,在该实施例中,上下文不包括用户和外部系统输入。
智能合约通常是指随时间变化的外部数据值(例如,燃料价格,其在一天中变化)。确定性智能合约必须产生一致的结果。然而,该值可能会在执行和提交之间发生变化,并且在一些情况下,账本可能会在以后(有时是数年之后)重放。因此,资料库使用BNS,使得每个数据集合具有明确的资源名称,并且每个元素具有唯一的勾选(tick)标识符。资料库实施方式也可以针对数据访问模式进行优化。资料库URI查询可能会返回所需的值并勾选URI。在一些实施例中,勾选的URI也总是取得相同的值。
图6示出根据示例实施例的BNS 600。BNS提供了一种标准机制来使用URI对所有区块链资源命名,包括编程资源(例如,blocks://visa.com/ledger/worldstate/accounts/daisy)、操作资源(例如,blocks://ibmnet.com/orderer/consensus_mechanism)和查询资源(例如,blocks://tradenet.com/oracle/fxprice/?stock=IBM&tick=123456)。在一些实施例中,BNS可以识别区块链方案、主机网络、路径、查询和片段。例如,blocks://visanet.com/leger/worldstate/accounts?name=daisy#surname可以在VISA的帐户中识别Daisy的姓氏。分层路径可以被鼓励,因为它们可以揭示重要的结构(例如,blocks://visanet/.../worldstate/accounts/org/division/account/daisy)。BNS还可以对区块链上下文外部的信息命名,诸如对提议的用户和系统输入(例如,blocks://blocknet/.../inputs/system/SYSID-SAP-47/p1/161064)。
图7示出根据示例实施例的世界状态700。BNS世界状态提供了一种明确的方式来对区块链交易状态命名,而世界状态是区块链URI方案内的命名资源。在一些实施例中,用于世界状态的URI包括区块链方案、网络名称、世界状态、世界状态名称和状态名称。与图6的BNS 600一样,分层状态是可能的,并且在一些实施例中可以被鼓励。
世界状态和BNS命名在一些实施例中是有益的,因为它允许交易输入的形式化。可以为交易提供明确的语义,使得输入和输出二者都是清楚的。分层命名提供自然范围。BNS还允许分析和优化交易。并行处理也可以用于同时执行非重叠验证函数(例如,vf1(in={/account/daisy,/account/PE},out={/account/daisy,account/PE})||vf2(in={/account/petal,/account/IBM},out={/account/petal,account/IBM})。区块可以被优化为非重叠的一组交易以供并行处理。区块也可以被优化为非重叠的多组交易以供并行处理。可以更快地处理窄范围交易。例如,可以根据组织、帐户、人员等提供优先承诺。
图8A示出根据示例实施例的提议过程800。交易提议(tp)采集交易的一组输入。该组输入由来自用户(u)、外部系统(s)和当前区块链上下文(c)的输入的组合确定。(tp)由应用函数(afp)使用由用户(f(u))和/或系统(f(s))确定的输入以及区块链上下文(f(c))确定,使得:
tp=afp(f(u),f(s),f(c)) (1)
(tp)具有标识符(i)并且包含用于被表示为提议(p)的链码函数(cf)的输入。(tp)还具有应用签名。(tp)因此被定义使得:
tp={p,s,i,m,…} (2)
也可以存在由省略号表示的其它信息,但是p,s,i和m在一些实施例中是最重要的。
图8B示出根据示例实施例的执行过程810。交易响应(tr)计算对(tp)的响应。(tr)由(cf)生成。(tr)的关键元素是验证函数(vf),该验证函数(vf)将在验证时用于计算账本更新。应当注意,这与当前执行阶段不同,该当前执行阶段计算原本和未来账本世界状态的RW集。(tr)由(cf)使用(tp)和(c)确定,使得:
tr=cf(tp,c) (3)
(tr)包含原始(tp)和针对(tp)的链码计算响应(r)。(tr)也具有背书(e),该背书(e)是针对(r)的加密签名。(tr)因此包括以下内容:
tr={tp,r,s} (4)
r=vf(tp,c) (5)
注意,(r)表示为函数而不是一组之前和之后的世界状态值(RW集)。
图8C示出根据示例实施例的组装过程820。客户端应用组装将应用于账本的交易(t)。(t)包括原始(tp)。从一组所接收的交易响应{tr}(即{tr1,tr2,tr3,...}),(t)包括单个响应(r)和所有背书{e}。(t)由应用函数(afa)使用{tr}确定,使得
t=afa({tr}) (6)
(t)包括以下内容:
t={tp,r,{e}} (7)
理想地,{tr}中的所有响应应匹配,但在一些实施例中这不是必需的。由于tr.r是函数,所有(tr)应该用相同的编程语言编写。这可能被认为不如基于值的响应方法灵活,后者似乎对不同的链码编程语言不敏感。然而,实际上,相同的智能合约将以相同的编程语言编写。此外,作为开发治理的一部分,联盟中的每个组织也可以背书链码,以确保它们是等同的。
图8D示出根据示例实施例的排序流程830。区块(b)是由客户端应用创建的排序的交易序列。交易的顺序由使用一组交易{t}的排序函数(of)确定,由下式给出:
b=of({t}) (8)
图8E示出根据示例实施例的验证过程840。区块链(bx)和世界状态(w)的变化由交易验证函数(vf)计算。具有有效/无效指标的所有交易都被添加到(bx)。只有有效的交易才会导致(w)的更新。(bx)和(w)的变化是(vf)计算的(c)更大的一组潜在变化的一部分。
新的(c)由(vf)、(b)和(c)确定,后者包括当前(bx)、(w)和背书策略(p),使得:
c=vf(t,c) (9)
c={bx,w} (10)
bx={bx,b} (11)
(b)实际包含针对其中的每个(t)的(vf)。新的(c)包含新的(bx)和(w)。(bx)包含(b)。(w)针对(b)中的每个有效交易进行更新。如果需要,(c)的其它部分可以由(vf)更新。
图9示出根据示例实施例的用于区块优化的过程900。在一些实施例中,排序使用BNS来分析和优化区块打包。流可以并行执行,这提供了优化机会。然而,序列必须按顺序执行。
不同的区块优化策略是可能的。通常,希望区块具有许多流和很少的序列以促进并行化。一种选择是将低并行性交易延迟到更晚的更好的优化区块。具有重叠输入或输出的交易具有低并行性。使用BNS世界状态命名可以容易地检测到这种交易。通过查看命名系统中的公共根,对于交易输入和输出,可以检测顺序交易。例如,transactions/accounts/daisy和/accounts/rex彼此不重叠,但它们二者都与/accounts重叠。在一些实施例中,规则是任何一组交易输入和输出不得包含其完整路径是集合内任何其它交易路径的子路径的任何其它交易。
图10示出根据示例实施例的用于并行验证的过程1000。在一些实施例中,验证使用BNS世界状态命名来分析和优化区块处理。根据上述内容,流并行运行,而序列必须串行运行以确保正确性。当两个交易在同一资源上操作时,可能需要两个交易的序列。
区块链交易验证将已经排序的区块带入流和序列中,并横跨多个执行单元(即线程、处理器、内核、机器等)最优地分派它们。流可以并行执行,以支持处理、网络和内存资源的高利用率。可以根据需要最优地定义正确的执行机制。在一些实施例中,默认机制是将未处理的交易流分派给可用的执行单元,直到序列耗尽为止。该机制还使得能够引入复杂的缓冲器管理技术,其允许在单个输入/输出(I/O)操作中采集在执行单元上处理的一个或多个交易流。换句话说,I/O被推迟直到区块的结尾。这导致显著的I/O减少。
使用命名系统将交易分成序列允许将数据提取并存储在一个工作组的内存缓冲区中,同时确信受影响的数据不会被任何并行流改变。因此,交易序列中的该组数据可以在内存缓冲区中加载和修改,由交易更新,并且然后在单个I/O操作中放心地写回磁盘。一般而言,目标是最小化横跨固定的一组执行单元的总处理时间。
图11示出根据示例实施例的区块链网络1100的逻辑网络图。参考
图11,网络1100包括节点1110,每个节点维护账本1112的副本。网络1100还包括排序方1120和背书策略1130。
背书节点1140还维护账本1112的副本,但另外包括用于评估提议的智能合约1142。交易1150是输入(即,提议)、输出(即,响应)和多个背书的组合。应用1160、1162、1164(即,客户端应用)在背书节点1140上使用智能合约1142以从响应生成背书的提议。交易经由排序方1120分发给每个节点1110、1140(背书和非背书节点二者),以包含在每个节点的账本1112中。如果交易1150符合背书策略1130,则交易1150被记录为有效。
一般而言,应用(例如,应用1160、1162或1164)构建提议并向组织的背书节点1140发送提议。对于每个背书节点1140,智能合约1142使用提议和账本1112的当前版本创建包含交易验证函数的响应。然后,应用从每个背书节点1140接收提议响应。
一旦接收到响应,应用就将响应组装到交易1150中,并向排序方1120发送交易1150以供分发。排序方1120将交易1150打包成区块并将区块分发给网络1110中的每个节点1110、1140。节点1110、1140从区块解包每个交易1150并使用它们的嵌入验证函数来更新账本1112。节点1110/1140然后通知应用账本1112何时处理交易/区块。
图12A示出根据示例实施例的区块链体系结构配置1200。在一些实施例中,可以使用BNS、FT或两者来实现该体系结构。参考图12A,区块链体系结构1200可以包括某些区块链元素,例如,一组区块链节点1202。区块链节点1202可以包括一个或多个节点1204-1210(这四个节点仅通过示例描述)。这些节点参与许多活动,诸如区块链交易添加和验证过程(共识)。区块链节点1204-1210中的一个或多个可以基于背书策略来背书交易,并且可以为体系结构1200中的所有区块链节点提供排序服务。区块链节点可以发起区块链身份验证并且寻求写入存储在区块链层1216中的区块链不可变账本,其副本也可以存储在基础物理基础设施1214上。区块链配置可以包括一个或多个应用1224,其链接到应用编程接口(API)1222以访问和执行所存储的程序/应用代码1220(例如,链码、智能合约等),其可以根据参与者所寻求的定制配置来创建并且可以维持它们自己的状态,控制它们自己的资产,并接收外部信息。这可以作为交易部署,并经由附加到分布式账本安装在所有区块链节点1204-1210上。
区块链基础或平台1212可以包括区块链数据、服务(例如,加密信任服务、虚拟执行环境等)以及基础物理计算机基础设施的各种层,该基础物理计算机基础设施可用于接收和存储新交易并提供对正在寻求访问数据条目的审计者的访问。区块链层1216可以曝露接口,该接口提供对处理程序代码和参与物理基础设施1214所必需的虚拟执行环境的访问。加密信任服务1218可用于验证诸如资产交换交易的交易并保持信息私密。
图12A的区块链体系结构配置可以经由由区块链平台1212所公开的一个或多个接口以及由区块链平台1212提供的服务来处理和执行程序/应用代码1220。代码1220可以控制区块链资产。例如,代码1220可以存储和传输数据,并且可以由节点1204-1210以智能合约和相关联的链码的形式执行,其中条件或其它代码元素经受智能合约和相关联的链码的执行。作为非限制性示例,可以创建智能合约以执行提醒、更新和/或经受改变、更新等的其它通知。智能合约本身可以用于识别与授权和访问要求和账本的使用相关联的规则。例如,包括FT的信息1226可以由区块链层1216中包括的一个或多个处理实体(例如,虚拟机)处理。结果1228可以包括函数闭包。物理基础设施1214可用于取得在此描述的任何数据或信息。
在链码内,可以经由高级应用和编程语言创建智能合约,并且然后将其写入区块链中的区块。智能合约可以包括用区块链(例如,区块链对等方的分布式网络)注册、存储和/或复制的可执行代码。交易是智能合约代码的执行,该智能合约代码可以响应于与满足智能合约相关联的条件而执行。智能合约的执行可以触发对数字区块链账本的状态的可信任修改。由智能合约执行引起的对区块链账本的修改可以通过一个或多个共识协议在区块链对等方的整个分布式网络中自动复制。
智能合约可以以密钥值对的格式将数据写入区块链。此外,智能合约代码可以读取存储在区块链中的值并在应用操作中使用它们。智能合约代码可以将各种逻辑运算的输出写入区块链中。该代码可用于在虚拟机或其它计算平台中创建临时数据结构。写入区块链的数据可以是公共的和/或可以加密并保持为私密。智能合约使用/生成的临时数据由所提供的执行环境保存在存储器中,然后在识别出区块链所需的数据后删除。
链码可以包括具有附加特征的智能合约的代码解释。如在此所述,链码可以是部署在计算网络上的程序代码,其中它在共识过程期间由链验证器一起执行和验证。链码接收散列并从区块链中取得与通过使用先前存储的特征提取器所创建的数据模板相关联的散列。如果散列标识符的散列和从所存储的标识符模板数据创建的散列匹配,则链码将授权密钥发送到所请求的服务。链码可以写入与密码细节相关联的区块链数据。在图12A中,可以在1226处提交交易。可以在1228处提交FT以进行验证,其可以被提供给节点1204-1210中的一个或多个。
图12B示出根据示例实施例的区块链的节点之间的交易流程1250的示例。参考图12B,交易流程可以包括由应用客户端节点1260发送给背书对等节点1281的交易提议1291。背书对等方1281可以验证客户端签名并执行链码功能以发起交易。输出可以包括链码结果。如果批准,则将提议响应1292连同背书签名一起发送回客户端1260。客户端1260将背书组装到交易有效载荷1293中并将其广播到排序服务节点1284。然后,排序服务节点1284将所排序的交易作为区块递送到信道上的所有对等方1281-1283。在提交到区块链之前,每个对等方1281-1283可以验证该交易。例如,对等方可以检查背书策略以确保指定对等方的正确分配已经对结果进行了签名并且认证针对交易有效载荷1293的签名。
再次参见图12B,客户端节点1260通过构建并向作为背书方的对等节点1281发送请求来发起交易1291。客户端1260可以包括利用支持的软件开发工具包(SDK)(诸如NODE、JAVA、PYTHON等)的应用,其利用可用的API来生成交易提议。该提议是调用链码函数的请求,使得可以将数据写入账本。SDK可以用作填充程序(skim)以将交易提议打包成适当的体系结构格式(例如,远程过程调用(RPC)上的协议缓冲区)并且获取客户端的加密凭证以产生用于交易提议的唯一签名。
作为响应,背书对等节点1281可以验证:(a)交易提议已良好形成;(b)该交易过去尚未提交(重放-攻击保护);(c)签名有效;以及(d)提交者(在该示例中为客户端1260)被适当授权以在该信道上执行所提议的操作。背书对等节点1281可以将交易提议输入作为被调用的链码函数的参数。然后针对当前状态数据库执行链码以产生交易结果。然而,此时没有对账本进行更新。在1292中,将该组值以及背书对等节点1281签名一起作为提议响应1292传递回客户端1260的SDK,该客户端1260解析供应用使用的有效载荷。
作为响应,客户端1260的应用检查/验证背书对等方签名并比较提议响应以确定提议响应是否相同。如果链码仅查询账本,则应用将检查查询响应并且通常不将该交易提交给排序节点服务1284。如果客户端应用打算将该交易提交给排序节点服务1284以更新账本,则应用确定在提交之前是否已满足指定的背书策略(即,交易所需的所有对等节点都背书该交易)。这里,客户可以仅包括交易的多方中的一方。在该情况下,每个客户端可以拥有自己的背书节点,并且每个背书节点都需要背书该交易。该体系结构使得即使应用选择不检查响应或以其它方式转发未经许可的交易,该背书策略仍将由对等方强制执行并在提交验证阶段维持。
在成功检查之后,在步骤1293中,客户端1260将背书组装到交易中并且将交易消息内的交易提议和响应广播到排序节点1284。除了函数之外,交易可以包含背书对等签名和信道ID。在一些实施例中,排序节点1284不需要检查交易的整个内容以便执行其操作。相反,排序节点1284可以简单地从网络中的所有信道接收交易,按时间顺序按信道排序,并且创建每个信道的交易区块。
交易区块从排序节点1284传递到信道上的所有对等节点1281-1283。验证区块内的交易1294,以确保满足任何背书策略,并确保账本状态没有任何改变。区块中的交易被标记为有效或无效。此外,在步骤1295中,每个对等节点1281-1283将该区块附加到信道的链,并且对于每个有效交易,将写入集提交给当前状态数据库。发出事件,以通知客户端应用交易(调用)已不可变地附加到链,以及通知交易是否已经过验证或无效。
图13示出根据示例实施例的促进功能交易的示例方法的流程图1300。在1310处,该方法开始于客户端应用构建交易提议,并向多个背书节点发送所构建的交易提议。然后,在1320处,多个背书节点接收交易提议并使用所接收的交易提议和账本的当前版本来生成验证函数。在1330处,背书节点创建包括验证函数的交易响应,并向客户端应用发送包括验证函数的交易响应。
在1340处,客户端应用从多个背书节点接收一组交易响应,将所接收的交易响应组装到交易中,并向排序节点发送交易以供分发。排序节点将交易打包成区块并向区块链网络中的节点发送交易。然后,在1350处,节点从排序节点接收交易,从区块解包交易,并使用验证函数来更新账本。
图14示出根据示例实施例的使用BNS促进区块链交易的示例方法的流程图1400。在1410处交易提议被构建并发送给背书节点。交易提议的输入使用BNS命名,该BNS包括账本状态寻址、用于寻址外部数据值的资料库以及用户状态寻址。BNS提供了一种使用URI对所有区块链资源命名的标准机制。在1420处,从背书节点接收响应,并且交易被构建并发送到排序节点。
排序节点接收交易以供分发,使用BNS基于交易来分析和优化区块的打包和排序,并向区块链网络的节点发送排序的区块以进行验证。对这些区块进行排序,使得可以并行执行流,同时按顺序执行序列,从而促进并行化。在1440处,排序节点使用BNS的世界状态命名并查看BNS中的公共根来检测具有重叠输入或输出的交易。然后,在1450处,排序节点将具有重叠输入或输出的交易的打包延迟到稍后的更好的优化区块中。
图15A示出根据示例实施例的示例系统1500,该示例系统1500包括被配置为执行各种操作的物理基础设施1510。参考图15A,物理基础设施1510包括模块1512、1514。模块1514包括区块链1520和智能合约1530(其可以驻留在区块链1520上),其可以执行包括在任何示例实施例中的任何操作步骤1508(在模块1512中)。步骤/操作1508可以包括所描述或描绘的一个或多个实施例,并且可以表示从一个或多个智能合约1530和/或区块链1520写入或读取的输出或写入信息。物理基础设施1510、模块1512和模块1514可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,在一些实施例中,模块1512、1514可以是相同的模块。
图15B示出根据示例实施例的被配置为执行各种操作的示例系统1540。参考图15B,系统1540包括模块1512、1514。模块1514包括区块链1520和智能合约1530(其可以驻留在区块链1520上),其可以执行包括在任何示例实施例中的任何操作步骤1508(在模块1512中)。步骤/操作1508可以包括所描述或描绘的一个或多个实施例,并且可以表示从一个或多个智能合约1530和/或区块链1520写入或读取的输出或写入信息。物理基础设施1510、模块1512和模块1514可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,在一些实施例中,模块1512、1514可以是相同的模块。
图15C示出根据示例实施例的合约方和中介服务器之间的示例智能合约配置,该中介服务器被配置为在区块链上强制执行智能合约条款。参考图15C,配置1550可以表示通信会话、资产转移会话或由智能合约1530驱动的过程或程序,该智能合约1530明确地识别一个或多个用户设备1552和/或1556。智能合约执行的执行、操作和结果可以由服务器1554管理。智能合约1530的内容可能需要实体1552和1556中的一个或多个的数字签名,该实体1552和1556是智能合约交易的参与方。智能合约执行的结果可以作为区块链交易写入区块链1520。智能合约1530驻留在区块链1520上,该区块链1520可以驻留在一个或多个计算机、服务器、处理器、存储器和/或无线通信设备上。
图15D示出根据示例实施例的用于访问区块链的逻辑和数据的公共接口。参考图15D的示例,应用编程接口(API)网关1562提供用于访问区块链逻辑(例如,智能合约1530或其它链码)和数据(例如,分布式账本等)的公共接口。在该示例中,API网关1562是用于通过将一个或多个实体1552和1556连接到区块链对等方(即,服务器1554)来对区块链执行交易(调用、查询等)的公共接口。这里,服务器1554是区块链网络对等组件,其保存世界状态和分布式账本的副本,允许客户端1552和1556查询关于世界状态的数据以及将交易提交到区块链网络中,其中,取决于智能合约1530和背书策略,背书对等方将运行智能合约1530。
以上实施例可以以硬件,以由处理器执行的计算机程序,以固件或以上的组合来实现。计算机程序可以体现在诸如存储介质的计算机可读介质上。例如,计算机程序可以驻留在随机存取存储器(“RAM”)、闪存、只读存储器(“ROM”)、可擦除可编程只读存储器(“EPROM”)、电可擦除可编程只读存储器(“EEPROM”)、寄存器、硬盘、可移动磁盘、光盘只读存储器(“CD-ROM”)或本领域已知的任何其它形式的存储介质中。
示例性存储介质可以耦接到处理器,使得处理器可以从存储介质读取信息和向存储介质写入信息。在替代方案中,存储介质可以是处理器的组成部分。处理器和存储介质可以驻留在专用集成电路(“ASIC”)中。在替代方案中,处理器和存储介质可以作为分立组件驻留。
图16不旨在对在此描述的申请的实施例的使用范围或功能提出任何限制。无论如何,计算节点1600能够实现和/或执行上文阐述的任何功能。
云计算节点1600具有计算机系统/服务器1602或可移动电子装置(例如通讯装置),其可与众多其它通用或专用计算系统环境或配置一起操作。众所周知,适于与计算机系统/服务器1602一起操作的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统的分布式云计算技术环境,等等。
计算机系统/服务器1602可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器1602可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
如图16所示,在云计算节点1600中计算机系统/服务器1602以通用计算设备的形式表现。计算机系统/服务器1602的组件可以包括但不限于:一个或者多个处理器或者处理单元1604,系统存储器1606,连接不同系统组件(包括系统存储器1606和处理单元1604)的总线。
总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器1602典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器1602访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器1606,在某些实施例中,实现其他附图的流程图。系统存储器1606可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)1610和/或高速缓存存储器1612。计算机系统/服务器1602可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统1614可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线相连。存储器1606可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块1618的程序/实用工具1616,可以存储在例如存储器1606中,这样的程序模块1618包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块1618通常执行本申请所描述的实施例中的功能和/或方法。
如本领域技术人员将理解的,本申请的各方面可以体现为系统、方法或计算机程序产品。因此,本申请的各方面可以采用完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或者组合软件和硬件方面的实施例的形式,这些实施例在此通常都可以称为“电路”、“模块”或“系统”。此外,本申请的各方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有体现在其上的计算机可读程序代码。
计算机系统/服务器1602也可以与一个或多个外部设备1620(例如键盘、指向设备、显示器1622等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器1602交互的设备通信,和/或与使得该计算机系统/服务器1602能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1624进行。并且,计算机系统/服务器1602还可以通过网络适配器1626与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1626通过总线与计算机系统/服务器1602的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器1602使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
尽管在附图中示出了系统、方法和非暂态计算机可读介质中的至少一个的示例性实施例,并且在前面的详细描述中进行了描述,但是应该理解,本申请不限于在所公开的实施例中,但是能够进行如下权利要求所述和定义的许多重排、修改和替换。例如,各种图的系统的能力可以由在此描述的模块或组件中的一个或多个来执行或以分布式体系结构来执行,并且可以包括发射机、接收机或两者的对。例如,由各个模块执行的全部或部分功能可以由这些模块中的一个或多个执行。此外,在此描述的功能可以在不同时间并且与模块或组件内部或外部的各种事件相关地执行。此外,可以经由以下中的至少一个在模块之间发送在各个模块之间发送的信息:数据网络、因特网、语音网络、因特网协议网络、无线设备、有线设备和/或多个协议。此外,可以直接和/或经由一个或多个其它模块发送或接收由任何模块发送或接收的消息。
本领域技术人员将理解,“系统”可以体现为个人计算机、服务器、控制台、个人数字助理(PDA)、蜂窝电话、平板计算设备、智能手机或任何其它合适的计算设备或设备的组合。将上述功能呈现为由“系统”执行并不旨在以任何方式限制本申请的范围,而是旨在提供许多实施例的一个示例。实际上,在此公开的方法、系统和装置可以以与计算技术一致的本地化和分布式形式实现。
应当注意,本说明书中描述的一些系统特征已经作为模块呈现,以便更具体地强调它们的实现独立性。例如,模块可以被实现为硬件电路,该硬件电路包括:定制的超大规模集成(VLSI)电路或门阵列,诸如逻辑芯片的现成半导体、晶体管或其它分立元件。模块还可以在可编程硬件设备中实现,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等。
模块还可以至少部分地以软件实现,以由各种类型的处理器执行。所识别的可执行代码单元可以例如包括计算机指令的一个或多个物理或逻辑块,其可以例如被组织为对象、过程或功能。然而,所识别的模块的可执行文件不需要物理地位于一起,而是可以包括存储在不同位置的不同指令,当该位置逻辑上连接在一起时,该位置包括模块并实现模块的所述目的。此外,模块可以存储在计算机可读介质上,该计算机可读介质可以是例如硬盘驱动器、闪存设备、随机存取存储器(RAM)、磁带或用于存储数据的任何其它此类介质。
实际上,可执行代码的模块可以是单个指令或许多指令,并且甚至可以分布在几个不同的代码段上、不同的程序中以及几个存储器设备上。类似地,操作数据可以在此在模块内被识别和示出,并且可以以任何合适的形式体现并组织在任何合适类型的数据结构内。操作数据可以作为单个数据集收集,或者可以分布在包括不同存储设备的不同位置上,并且可以至少部分地仅作为系统或网络上的电子信号存在。
容易理解的是,如在本文附图中一般描述和说明的,本申请的组件可以以各种不同的配置来布置和设计。因此,实施例的详细描述不旨在限制所要求保护的本申请的范围,而仅仅代表本申请的所选实施例。
本领域普通技术人员将容易理解,可以以不同顺序的步骤和/或使用与所公开的配置不同的配置中的硬件元件来实践上述内容。因此,尽管已经基于这些优选实施例描述了本申请,但是对于本领域技术人员来说显而易见的是,某些修改、变化和替代构造将是显而易见的。
虽然已经描述了本申请的优选实施例,但是应该理解,所描述的实施例仅是说明性的,并且当考虑具有全范围的等同物及其修改(例如,协议、硬件设备、软件平台等)时,本申请的范围仅由所附权利要求限定。

Claims (18)

1.一种区块链系统,包括:
至少一个处理器;以及
存储计算机程序指令的存储器,所述计算机程序指令在由所述至少一个处理器执行时使所述至少一个处理器:
从外部计算系统的客户端应用接收区块链交易提议,所述区块链交易提议包括用于区块链智能合约的交易输入变量;
在背书阶段:
在所述交易输入变量上执行所述区块链智能合约,以生成采用函数编程语言的交易响应,所述交易响应包括:将要由区块链对等方调用和执行以改变区块链的状态的验证函数,以及当所述验证函数被执行以创建所述区块链的所述状态的变化时要由所述验证函数读取的变量绑定;
对所述交易响应进行签名;以及
向所述外部计算系统的所述客户端应用发送经签名的交易响应;
从排序节点接收包括具有所述验证函数和所述变量绑定的区块链交易的区块;以及
响应于接收到所述区块,在提交阶段,读取所述变量绑定,并基于所述变量绑定来执行所述验证函数以生成所述区块链的所述状态的变化,并将所述区块链的所述状态的所述变化写入区块链账本。
2.根据权利要求1所述的系统,其中,所述验证函数包括:
函数体,其对要执行的逻辑进行编码;以及
封闭环境,其包括所述变量绑定。
3.根据权利要求1所述的系统,其中,
所述验证函数由所述区块链智能合约生成,并且所述验证函数用于在验证时计算所述区块链账本上的所述区块链的所述状态的变化。
4.根据权利要求3所述的系统,其中,
所述验证函数由所述区块链智能合约的链码函数基于当前区块链上下文生成。
5.根据权利要求1所述的系统,其中,所述至少一个处理器被配置为用背书对等方的加密签名对所述交易响应进行签名。
6.根据权利要求1所述的系统,其中,所述至少一个处理器还被配置为创建包括所述区块链的所述状态的所述变化的写集,并将所述写集提交到所述区块链账本的区块。
7.根据权利要求1所述的系统,其中,
每个区块b是由所述外部计算系统的所述客户端应用创建的排序的交易序列,以及
所述交易的顺序由排序函数of使用一组交易{t}确定,其由下式给出:
b=of({t})。
8.根据权利要求7所述的系统,其中,所述验证函数vf还被配置为计算世界状态w的变化。
9.根据权利要求8所述的系统,其中,
采用有效/无效指示符将所有交易添加到区块链bx,以及
只有有效的交易导致对世界状态w的更新。
10.根据权利要求9所述的系统,其中,
新的区块链上下文c由验证函数vf、区块b和当前的区块链上下文c确定,
当前的区块链上下文c包括当前区块链bx、世界状态w和背书策略p,使得:
c=vf(t,c)
c={bx,w}
bx={bx,b}。
11.根据权利要求10所述的系统,其中,
所述新的区块链上下文c包括新的区块链bx和世界状态w,
区块链bx包括区块b,以及
世界状态w针对区块b中的每个有效交易来更新。
12.根据权利要求8所述的系统,其中,区块b包括针对其中的每个交易t的验证函数vf。
13.一种区块链系统中的计算机实现的方法,包括:
由计算系统的客户端应用构建区块链交易提议,并向多个背书节点发送所构建的区块链交易提议,其中,所述区块链交易提议包括用于区块链智能合约的交易输入变量;
由所述计算系统的所述客户端应用从所述多个背书节点接收一组经签名的交易响应,每一个所述交易响应包括:将要由区块链对等方调用和执行以改变区块链的状态的验证函数,以及当所述验证函数被执行以创建所述区块链的所述状态的变化时要由所述验证函数读取的变量绑定;
由所述计算系统的所述客户端应用将所接收的交易响应组装到交易中;以及
由所述计算系统的所述客户端应用向排序节点发送所述交易以供分发。
14.根据权利要求13所述的计算机实现的方法,其中,
所述区块链交易提议tp采集所述交易的一组输入,以及
所述一组输入由来自用户u的输入、来自外部系统s的输入以及当前区块链上下文c的组合确定。
15.根据权利要求13所述的计算机实现的方法,其中,
所述区块链交易提议tp由应用函数afp使用由用户f(u)和/或系统f(s)确定的输入以及区块链上下文f(c)确定,使得:
tp=afp(f(u),f(s),f(c))。
16.根据权利要求15所述的计算机实现的方法,其中,
所述区块链交易提议tp具有标识符i并且包括被表示为提议p的针对链码函数cf的输入,
所述区块链交易提议tp包括应用签名s,以及
所述区块链交易提议tp因此被定义使得:
tp={p,s,i,m,…}。
17.根据权利要求13所述的计算机实现的方法,其中,
所述交易t包括所述区块链交易提议tp,
在一组所接收的交易响应{tr}中的每个所接收的交易响应tr包括单个响应r和所有背书e。
18.根据权利要求17所述的计算机实现的方法,其中,所述交易t由应用函数afa使用{tr}确定,使得:
t=afa({tr})
并且所述交易t包括{tp,r,{e}}。
CN201910799915.6A 2018-08-30 2019-08-28 实现高完整性、高带宽、低延迟、安全处理的分布式计算和存储网络 Active CN110874739B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/116,988 US11521202B2 (en) 2018-08-30 2018-08-30 Distributed computing and storage network implementing high integrity, high bandwidth, low latency, secure processing
US16/116988 2018-08-30

Publications (2)

Publication Number Publication Date
CN110874739A CN110874739A (zh) 2020-03-10
CN110874739B true CN110874739B (zh) 2024-03-29

Family

ID=69639953

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910799915.6A Active CN110874739B (zh) 2018-08-30 2019-08-28 实现高完整性、高带宽、低延迟、安全处理的分布式计算和存储网络

Country Status (2)

Country Link
US (1) US11521202B2 (zh)
CN (1) CN110874739B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10915521B2 (en) * 2018-08-21 2021-02-09 Syniverse Technologies, Llc Blockchain gateway device and associated method of use
US11387979B2 (en) * 2019-12-23 2022-07-12 International Business Machines Corporation Partially-ordered blockchain
SG11202103218YA (en) 2020-04-22 2021-04-29 Alipay Hangzhou Inf Tech Co Ltd Managing transaction requests in ledger systems
CN111656386B (zh) 2020-04-22 2022-05-17 支付宝(杭州)信息技术有限公司 管理账本系统中的交易请求
CN111630545B (zh) 2020-04-22 2022-05-27 支付宝(杭州)信息技术有限公司 管理账本系统中的交易请求
CN111598650A (zh) * 2020-04-28 2020-08-28 深圳壹账通智能科技有限公司 基于区块链网络的资源请求交易方法及相关装置
CN111563093B (zh) * 2020-05-15 2023-04-25 电子科技大学 一种基于联盟区块链冲突交易检测与规避系统的方法
US11556517B2 (en) * 2020-05-17 2023-01-17 International Business Machines Corporation Blockchain maintenance
CN111629039B (zh) * 2020-05-20 2023-04-18 中国银联股份有限公司 一种区块链共识方法及客户端、背书节点、排序节点
CN111383031B (zh) * 2020-05-29 2020-09-22 支付宝(杭州)信息技术有限公司 一种区块链中的智能合约执行方法、系统和电子设备
CN112037058B (zh) * 2020-08-28 2024-03-26 平安科技(深圳)有限公司 数据验证方法、装置及存储介质
CN113867709B (zh) * 2021-12-01 2022-04-12 深圳前海微众银行股份有限公司 区块链智能合约读写集构建方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108376368A (zh) * 2018-03-07 2018-08-07 物数(上海)信息科技有限公司 背书策略确定方法、装置、电子设备、存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10586612B2 (en) 2013-03-01 2020-03-10 Actx, Inc. Cloud-like medical-information service
US9223941B2 (en) 2013-03-15 2015-12-29 Google Inc. Using a URI whitelist
US10497037B2 (en) * 2014-03-31 2019-12-03 Monticello Enterprises LLC System and method for managing cryptocurrency payments via the payment request API
US9704143B2 (en) * 2014-05-16 2017-07-11 Goldman Sachs & Co. LLC Cryptographic currency for securities settlement
US20170236123A1 (en) 2016-02-16 2017-08-17 Blockstack Inc. Decentralized processing of global naming systems
US10237184B2 (en) 2016-06-14 2019-03-19 Dell Products L.P. Resource management system
WO2018006072A1 (en) * 2016-06-30 2018-01-04 Clause, Inc. Systems and method for forming, storing, managing,and executing contracts
US10243731B2 (en) 2017-01-27 2019-03-26 Accenture Global Solutions Limited Hardware blockchain acceleration
US20180315141A1 (en) 2017-04-26 2018-11-01 Clause, Inc. System and method for business intelligence through data-driven contract analysis
WO2018213804A2 (en) * 2017-05-19 2018-11-22 Zest Labs, Inc. Process and condition recording and validation using a blockchain
WO2019033090A1 (en) * 2017-08-11 2019-02-14 Teluss Title Company SYSTEM AND METHODS BASED ON A DISTRIBUTED REGISTER FOR REGULATING AND TRANSFERRING A TITLE TO A REAL ESTATE
US11234033B2 (en) 2017-08-20 2022-01-25 Cisco Technology, Inc. Decentralized content distribution
CN107635028B (zh) 2017-10-19 2020-07-28 国网浙江省电力公司电力科学研究院 一种资源的命名方法、装置、区块链集群和电子设备
US20190158275A1 (en) * 2017-11-22 2019-05-23 Michael Beck Digital containers for smart contracts
US10574453B2 (en) * 2018-01-10 2020-02-25 Ranjit Notani System and computer program product for certified confidential data collaboration using blockchains
WO2020005328A2 (en) 2018-02-09 2020-01-02 Orbs Ltd. Decentralized application platform for private key management
US11257081B2 (en) * 2018-05-08 2022-02-22 Oracle International Corporation Integrating a blockchain ledger with an application external to the blockchain ledger
US10606669B2 (en) 2018-06-08 2020-03-31 Optum, Inc. Domain and event type-specific consensus process for a distributed ledger
CN109145205B (zh) 2018-07-27 2020-09-01 阿里巴巴集团控股有限公司 一种基于区块链的跨链数据操作方法和装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108376368A (zh) * 2018-03-07 2018-08-07 物数(上海)信息科技有限公司 背书策略确定方法、装置、电子设备、存储介质

Also Published As

Publication number Publication date
CN110874739A (zh) 2020-03-10
US20200074456A1 (en) 2020-03-05
US11521202B2 (en) 2022-12-06

Similar Documents

Publication Publication Date Title
CN110874739B (zh) 实现高完整性、高带宽、低延迟、安全处理的分布式计算和存储网络
US11875400B2 (en) Systems, methods, and apparatuses for dynamically assigning nodes to a group within blockchains based on transaction type and node intelligence using distributed ledger technology (DLT)
US11240001B2 (en) Selective access to asset transfer data
CN112136291B (zh) 用于区块链的验证的方法和系统
US20200302409A1 (en) Composite keys for authorization policies
US11100090B2 (en) Offloaded chaincode execution for a database
CN110620810B (zh) 在区块链上的连续资产转移的非链接所有权
US10671308B2 (en) Private and fault-tolerant storage of segmented data
US11379828B2 (en) Distributed computing and storage network implementing high integrity, high bandwidth, low latency, secure processing
US11341121B2 (en) Peer partitioning
US20200074458A1 (en) Privacy preserving transaction system
CN111488393B (zh) 虚拟区块链
US20200142965A1 (en) Migration of a legacy system
US11210512B2 (en) Fingerprinting of physical objects
US20200184470A1 (en) Identity ecosystem
US20190378134A1 (en) Annotations for protocol flow implementing transactions of a distributed ledger system
US20200143496A1 (en) Proof-carrying smart contract
US11176093B2 (en) Defensible disposition of data
US11032083B2 (en) Atomic transactional processing
CN111753009A (zh) 包括快速路径服务的分散式数据库中的信息管理
US20200242593A1 (en) Value optimizing data store
CN112084186A (zh) 拆分和合并存储
US20200074423A1 (en) Secure smart note
US11777738B2 (en) Metadata-based endorsement
US10970307B2 (en) Information transparency control

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