CN114365133A - 利用秘密共享和对读取的共识在元数据驱动的区块链上实现被遗忘的权利的系统或方法 - Google Patents

利用秘密共享和对读取的共识在元数据驱动的区块链上实现被遗忘的权利的系统或方法 Download PDF

Info

Publication number
CN114365133A
CN114365133A CN202080061463.2A CN202080061463A CN114365133A CN 114365133 A CN114365133 A CN 114365133A CN 202080061463 A CN202080061463 A CN 202080061463A CN 114365133 A CN114365133 A CN 114365133A
Authority
CN
China
Prior art keywords
blockchain
data
organization
metadata
stored
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.)
Pending
Application number
CN202080061463.2A
Other languages
English (en)
Inventor
P·K·帕德玛纳伯翰
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.)
Salesforce Inc
Original Assignee
Salesforce com Inc
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 Salesforce com Inc filed Critical Salesforce com Inc
Publication of CN114365133A publication Critical patent/CN114365133A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • G06F16/1837Management specially adapted to peer-to-peer storage networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/105Multiple levels of security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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
    • H04L9/3239Cryptographic 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 involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic 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)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Human Computer Interaction (AREA)
  • Medical Informatics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

一种由主机组织的系统执行的用于提供在区块链忘记数据的权利的方法,该系统代表主机组织的多个租户向区块链提供区块链接口,每个租户充当区块链网络中的节点。该方法包括:接收包括请求者标识符的请求,该请求要访问被指定为私有的交易数据;请求从区块链网络中的节点访问包括请求者标识符的交易数据;从区块链网络中的节点接收至少一个共享秘密,该共享秘密指示对请求者访问交易数据的共识;并且响应于从节点接收到指示交易数据永久不可访问的共享秘密不足,拒绝访问交易数据。

Description

利用秘密共享和对读取的共识在元数据驱动的区块链上实现 被遗忘的权利的系统或方法
相关申请的交叉引用
本申请要求2019年10月29日提交的美国申请号16/667,846的优先权,其要求2019年5月22日提交的美国临时申请号62/851,589的权益,这两个申请通过引用结合于此。
技术领域
本文公开的实施方案总体上涉及分布式分类账技术和区块链平台的领域。更具体地,所公开的实施方案涉及用于结合云计算环境实现使用分布式分类账技术(DLT)与在元数据驱动的区块链平台中从区块链读取数据相关的访问限制的系统、方法和设备。
背景技术
区块链是一个不断扩展的记录/块列表,这些记录/块使用加密技术进行链接和保护。特别地,区块链的每个区块可以包括紧接在前的块的加密散列、当前区块的时间戳和交易数据(例如,与区块链网络中的对等体相关联的信息的添加/修改)。此外,可以通过对等网络经由验证/确认要添加至链中的新区块的系统来共享和管理区块链,使得在不改变所有后续块的情况下不能改变区块链中的块,这需要网络共识。该架构允许通过使用加密技术来保护存储在块中的信息的安全;通过使用对等网络共享/分发信息;通过使用块加法的共识来信任;通过使用密码术、块的链接/连接以及对等体分发,存储在块内的信息的不变性(例如,区块链网络中的每个对等体可以维护网络中所有验证/确认的交易的分类账)。区块链可以用来存储许多不同类型的数据,包括金融数据。这种财务数据可以存储在用作分布式分类账的区块链中。
区块链的分布式分类账由该区块链的所有参与者共享。分布式分类账技术(DLT)有助于解决和克服传统金融系统的许多类型的缺点,然而,该技术仍可能扩展,以向那些利用这种DLT和相关区块链平台的人引入更多的好处。目前可用的DLT和利用这种DLT技术的区块链以固定的、不可变的和静态的方式存储数据。因此,一旦数据被写入区块链,就固定在那里,完全没有上下文、元数据或描述存储数据、描述数据形状或描述数据类型的任何其他信息。因此,由于缺乏描述存储数据的其他元数据的上下文,将从区块链获取的数据转换回经营目标可接受的格式可能会非常困难。
此外,目前可用的DLT和利用这种DLT技术的区块链要求对区块链的任何记录进行更新或修改,以便将其全部重新写入区块链,导致区块链上存储的数据总量激增,这可能是不可持续的,至少是资源密集型的。其他设想的方法仅将记录的修改部分写入区块链,这导致低效的数据获取,因为完整的记录现在在区块链的多个区块中分割,因此需要对修改的记录进行任何获取,以从区块链的多个区块中搜索、检查和获取数据。
此外,目前可用的DLT和区块链将数据存储在区块链,以便网络中的任何节点都可以访问。区块链的数据永远不会被删除。由于这些特点,DLT和区块链不适合用于需要永久删除数据或需要限制对存储在区块链的数据的访问权限的应用中。
附图说明
以下附图使用相同的附图标记来指代相同的要素。尽管以下附图描绘了各种示例性实施方式,但是替代实施方式在所附权利要求的精神和范围内。在图中:
图1A描绘了根据所描述的实施方案的示例性架构;
图1B描绘了根据所描述的实施方案的另一个示例性架构,具有与块验证器结合操作的区块链协议块的额外细节;
图1C描绘了根据所描述的实施方案的另一个示例性架构,其中,更详细地阐述了区块链元数据定义管理器的额外细节;
图1D描绘了根据所描述的实施方案的另一个示例性架构,其更详细地描绘了主机组织服务与区块链服务接口的集成;
图1E描绘了根据所描述的实施方案的另一个示例性架构,其描绘了利用区块链服务接口的示例性数据流;
图2A描绘了根据所描述的实施方案的另一个示例性架构,具有区块链和分叉区块链的额外细节;
图2B描绘了根据所描述的实施方案的具有侧链的额外细节的另一个示例性架构;
图3A描绘了根据所描述的实施方案的示例性架构;
图3B描绘了根据所描述的实施方案的另一个示例性架构;
图3C描绘了根据所描述的实施方案的另一个示例性架构;
图3D描绘了根据所描述的实施方案的另一个示例性架构;
图4A描绘了根据所描述的实施方案的另一个示例性架构,具有利用智能流合约引擎创建的区块链实现的智能合约的额外细节;
图4B描绘了根据所描述的实施方案的另一个示例性架构,具有利用Apex转化引擎创建的区块链实现的智能合约的额外细节;
图4C描绘了根据所描述的实施方案的另一个示例性架构,具有利用Apex转化引擎用于持久存储到区块链的记录的SQL过滤和查询转化器的额外细节;
图5A描绘了根据所描述的实施方案的另一个示例性架构;
图5B描绘了根据所描述的实施方案的用于执行存储数据的动态元数据验证的另一个示例性架构;
图5C描绘了根据所描述的实施方案的用于存储相关实体的另一个示例性架构;
图6A描绘了根据所描述的实施方案的使用索引方案从可寻址块中获取存储记录的另一个示例性架构;
图6B描绘了根据所描述的实施方案的用于从区块链中的记录构建索引并维护该索引的另一个示例性架构;
图6C描绘了根据所描述的实施方案的用于利用寻址结构来形成用于从索引中获取信息的地址的另一个示例性架构;
图6D描绘了根据所描述的实施方案的利用地址从索引中获取信息的另一个示例性架构;
图6E描绘了根据所描述的实施方案的用于使用索引存储当前更新来以增量方式更新所存储记录的区块链资产的另一个示例性架构;
图7A描绘了根据所描述的实施方案的另一个示例性架构;
图7B描绘了根据所描述的实施方案的另一个示例性架构;
图7C描绘了根据所描述的实施方案的另一个示例性架构;
图8A描绘了根据所描述的实施方案的另一个示例性架构;
图8B描绘了根据所描述的实施方案的另一个示例性架构;
图8C描绘了根据所描述的实施方案的另一个示例性架构;
图8D描绘了根据所描述的实施方案的另一个示例性架构;
图8E描绘了根据所描述的实施方案的另一个示例性架构;
图8F描绘了根据所描述的实施方案的另一个示例性架构;
图9A描绘了根据所描述的实施方案的另一个示例性架构;
图9B描绘了根据所描述的实施方案的另一个示例性架构;
图9C描绘了根据所描述的实施方案的另一个示例性架构;
图10是用于读取共识的过程的一个实施方案的流程图;
图11A至图11C是与用于在区块链服务接口内实现遗忘权功能的一组过程相关的流程图;
图11D是示例性欧盟通用数据保护条例(GDPR)实现的示意图;
图12A至图12C是与用于在区块链服务接口内实现访问控制功能的一组过程相关的流程图;
图12D是示例性访问控制过程实现的示意图。
图13描绘了示出根据所描述的实施方案的使用分布式分类账技术(DLT)在区块链内实现数据和元数据的有效存储和验证的方法的流程图;
图14示出了根据所描述的实施方案的可以在其中操作、安装、集成或配置实施方案的系统的图示;
图15A描绘了根据所描述的实施方案的另一个示例性架构;
图15B描绘了根据所描述的实施方案的另一个示例性架构;
图15C描绘了根据所描述的实施方案的另一个示例性架构;
图16描绘了示出根据所描述的实施方案的使用分布式分类账技术(DLT)结合基于云的计算环境来实现声明性和元数据驱动的区块链平台的方法的流程图;
图17描绘了示出根据所描述的实施方案的用于结合基于云的计算环境来实现声明性的、元数据驱动的、可密码验证的多网络(多租户)共享分类账的方法的流程图;
图18A示出了根据所描述的实施方案的按需数据库服务可以操作的环境的框图;
图18B示出了根据所描述的实施方案的图10A的元件的实施方案和这些元件之间的各种可能的互连的另一框图;和
图19示出了根据一些实施方案的计算机系统的示例形式的机器的图示。
具体实施方式
本文描述了用于在元数据驱动的区块链平台中基于对读取的共识过程来实现访问控制和遗忘权的系统、方法和设备。在一些实施方案中,元数据驱动的区块链平台结合基于云的计算环境使用分布式分类账技术(DLT)。
图1A描绘了根据所描述的实施方案的示例性架构100。
在一个实施方案中,托管计算环境111通过主机组织110与多个用户客户端装置106A-C(例如,移动设备、智能电话、平板电脑、PC等)可通信地接合。在一个实施方案中,数据库系统130包括数据库155A和155B,例如,存储应用程序代码、对象数据、表格、数据集和包括代表客户组织105A-C(例如,这种数据库系统130的用户或多租户数据库类型数据库系统的租户或这种数据库系统的附属用户)的用户数据的底层数据库记录。根据某些实施方案,这种数据库包括各种数据库系统类型,包括例如关系数据库系统155A和非关系数据库系统155B。
在某些实施方案中,客户端-服务器计算架构可用于补充数据库系统130的特征、功能或计算资源,或者可替换地,计算网格或工作服务器池,或者托管计算架构的一些组合可结合数据库系统130提供主机组织110所需的一些或全部计算工作量和处理。
在所示的实施方案中描述的数据库系统130包括多个底层硬件、软件和逻辑元件120,它们在主机组织110内实现数据库功能和代码执行环境。
根据一个实施方案,数据库系统130利用底层数据库系统实现155A和155B来服务数据库查询和与数据库系统130的其他数据交互,数据库系统通过查询接口180与数据库系统130通信。数据库系统130的硬件、软件和逻辑元件120与客户组织(105A、105B和105C)是分离和不同的,客户组织通过经由网络125与主机组织110可通信地接合,来利用由主机组织110提供的网络服务和其他服务。以这种方式,主机组织110可以向订阅客户组织105A-C实现按需服务、按需数据库服务或云计算服务。
在一个实施方案中,每个客户组织105A-C是从由以下组成的组中选择的实体:单独且不同的远程组织、主机组织110内的组织组、主机组织110的商业伙伴、或订阅由主机组织110提供的云计算服务的客户组织105A-C。
进一步描绘了主机组织110经由网络125(例如,公共网络、互联网或类似网络)从客户组织105A-C接收输入和其他请求115。例如,输入的搜索查询、数据库查询、API请求、与显示的图形用户接口的交互以及在用户客户端装置106A-C的显示,或可以从客户组织105A-C接收其他输入,以对照数据库系统130进行处理,或者可以从输入和其他请求115构建这样的查询,以对照数据库155或查询接口180执行,根据该查询,结果116然后被返回给发起者或请求者,例如,客户组织105A-C处的一个用户客户端装置106A-C的用户。
在一个实施方案中,请求115在主机组织110内的网络服务器175处接收或被提交到网络服务器175。主机组织110可以接收由主机组织110及其数据库系统130处理的各种请求。在网络服务器175接收的输入请求115可以指定将提供来自主机组织110的哪些服务,例如,查询请求、搜索请求、状态请求、数据库交易、图形用户接口请求和交互、代表一个客户组织105A-C获取、更新或存储数据的处理请求、代码执行请求等。网络服务器175可以代表查询接口180负责经由网络125从各种客户组织105A-C接收请求115,并负责向终端用户客户端装置106A-C或发起这种数据请求115的机器提供基于网络的接口或其他图形显示。
在主机组织处接收的某些请求115可以被引导至区块链,对于该请求,主机组织110的区块链服务接口190作为中介进行操作。
查询接口180能够接收和执行针对数据库系统130的数据库和存储组件的所请求的查询,并返回结果集、响应或其他所请求的数据,以推进所描述的方法。查询接口180另外提供将查询从网络服务器175传递到数据库系统130中,以针对数据库155执行来处理搜索查询的功能,或者传递到主机组织的计算环境111的其他可用数据存储中的功能。在一个实施方案中,查询接口180实现应用编程接口(API),通过该接口可以对数据库155或其他数据存储执行查询。此外,查询接口180提供与区块链服务接口190的互操作性,从而允许主机组织110经由查询接口180与数据库系统130进行交易,或者在主机组织110是参与节点或者与参与节点133通信的连接的区块链上进行区块链交易,或者主机组织110可以进行涉及由数据库系统130持久保存的数据(可经由查询接口180访问)和涉及由连接的区块链持久保存的数据(例如,可从参与节点133或直接从连接的区块链访问,其中,主机组织在这样的区块链上操作参与节点)的交易。
在某些实施方案中,查询接口180的应用编程接口(API)提供了API模型,程序员、开发人员和管理员可以根据API调用者的需求和特定要求,与区块链服务接口190或数据库系统130或两者进行交互。
主机组织110可以经由网络服务器175实现请求接口176,或者作为独立接口从用户客户端装置106A-C接收请求分组或其他请求115。请求接口176进一步支持响应分组或其他回复和响应116在从主机组织110到用户客户端装置106A-C的输出方向上的返回。认证器140代表主机组织进行操作,以验证、认证和以其他方式认证试图获得对主机组织的访问的用户。
在主机组织110内进一步描述区块链服务接口190,其中包括区块链共识管理器191,其有助于私有和公共区块链的共识管理,租户、客户组织或主机组织110本身作为支持的区块链上的参与节点在其上操作。此外,描绘了区块链元数据定义管理器196,其使得区块链服务接口190能够定义和创建元数据,该元数据然后被推送到经由区块链服务接口接合的区块链或者在该区块链上交易。例如,经由区块链元数据定义管理器196,主机组织的任何客户组织105A-C都可以定义和创建元数据,然后在区块链上记录或交易该元数据,以供该客户组织105A-C使用和区块链上的其他参与节点使用,而不管那些参与节点133是否也是主机组织110的客户组织105A-C。例如,一旦元数据经由区块链元数据定义管理器196被定义和创建并被推送到区块链,任何能够访问该元数据定义所驻留的区块链的参与节点133然后可以创建数据记录并将信息存储到区块链,该区块链采用所定义的元数据定义并因此符合新创建的元数据定义。以这种方式,所有参与节点可以利用符合新创建的元数据定义而存储的信息,因为存在用于存储这种数据的标准化和可定制的方式。
在一个实施方案中,区块链共识管理器191和区块链元数据定义管理器196协同工作,以实现关于读取功能的共识,如下面参考图10至图12进一步描述的。读取共识是一种特定类型的共识,用于控制对存储在区块链上的数据的读取访问。数据以加密格式存储,其中,加密密钥作为共享秘密与区块链平台中的其他节点分发。当请求访问数据时,网络的节点133执行读取共识操作。读取共识过程检查凭据或任何确定为必需的已配置标准,这些都在访问请求中提供。批准读取访问的每个节点都用其共享秘密的一部分进行响应,该部分使请求节点能够根据共享秘密生成密钥,以解密区块链上的数据并访问数据。必须返回阈值数量的秘密才能访问加密数据。阈值数可以由读取共识过程所使用的共享秘密算法(例如,Shamir的秘密共享算法)来配置和/或确定。
在进一步的实施方案中,权限管理器181操作,来强制执行在元数据中为存储在区块链中的数据定义的访问控制和特权。权限管理器181可以对访问记录、对象、字段或类似粒度级别的访问控制(包括读和写访问控制)实施限制。权限管理器181可以基于定义访问权限的元数据来实施区块链数据的管理。访问权限可以利用唯一用户标识符(UUTD)或类似的实体标识符。元数据可以定义有权在区块链读取或写入数据的实体列表。元数据还可以定义一组所有者,这些所有者控制用于管理对访问受控信息的访问的读取共识过程。在一些实施方案中,权限管理器181可以实现遗忘权过程(例如,符合欧盟通用数据保护条例(GDPR))或类似过程,以从区块链“擦除”数据。在此参考图10至图12进一步讨论和描述权限管理器181的操作和区块链共识管理器191的读取共识过程,包括遗忘权和访问特权。
如本文所示,区块链服务接口190将主机组织110与其他参与节点133通信地接合(例如,经由网络125),从而使得主机组织110能够通过充当区块链协议兼容节点来参与可用的区块链协议,这又允许主机组织110访问这样的区块链内的信息,并且使得主机组织110能够针对由主机组织110支持并提供给客户和订户的任意数量的区块链协议向其他参与节点133提供区块链服务。在某些实施方案中,主机组织110都提供区块链协议,然后主机组织也作为参与节点在该协议上操作。在其他实施方案中,主机组织仅作为参与节点操作,以便使主机组织110能够与其他人提供的区块链协议进行交互。
根据某些实施方案,区块链元数据定义管理器196还允许主机组织的非订户(例如,不是客户组织105A-C的实体)利用区块链元数据管理器196和经由用于这种非订阅客户的公开的API接口与区块链元数据定义管理器196相关联的图形用户接口(GUI)定义,然后可以创建和定义元数据定义,这些元数据定义然后经由主机组织的区块链服务接口190被推送到区块链。
区块链是一个不断增长的记录列表,按块分组,这些记录链接在一起并使用加密技术进行保护。每个块通常包含一个散列指针,作为指向前一个块的链接、时间戳和交易数据。根据设计,区块链天生就反对修改数据。区块链系统本质上是一个开放的分布式分类账,它以一种高效且可验证的方式记录双方之间的交易,这种方式也是不可改变且永久的。分布式分类账(也称为共享或通用分类账,或称为分布式分类账技术(DLT))是地理上分布在多个节点上的复制、共享和同步数字数据的共识。这些节点可以位于不同的站点、国家、机构、用户社区、客户组织、主机组织、托管计算环境或应用服务器中。没有中央管理员或集中式数据存储。
区块链系统使用对等(P2P)网络节点,共识算法确保数字数据跨节点复制。区块链系统可以是公共的,也可以是私有的。并非所有的分布式分类账都必须使用区块链来成功地提供安全有效的分布式共识:区块链只是被认为是分布式分类账的一种数据结构。
P2P计算或网络是一种分布式应用架构,在对等体之间划分任务或工作负载。在形成对等网络节点的应用程序中,对等体是同等特权、同等能力的参与者。对等体将其一部分资源(例如,处理能力、磁盘存储或网络带宽)直接提供给其他网络参与者,而无需服务器或主机进行集中协调。对等体既是资源的提供者,也是消费者,这与传统的客户端-服务器模式形成鲜明对比,在传统的客户端-服务器模式中,资源的消耗和供应是分开的。因此,对等网络是围绕对等节点同时充当网络上其他节点的客户端和服务器的概念而设计的。
为了用作分布式分类账,区块链通常由对等网络管理,共同遵守用于验证新区块的协议。一旦被记录,任何给定块中的数据在没有改变所有后续块的情况下不能被追溯改变,这需要网络多数的共谋。以这种方式,区块链通过设计是安全的,并且是具有高拜占庭容错性的分布式计算系统的示例。因此,与区块链达成了分权共识。这使得区块链适合记录事件、医疗记录、保险记录和其他记录管理活动,例如,身份管理、交易处理、记录来源或投票。
使用对等网络和分布式时间戳服务器自主管理区块链数据库。在区块链中,以块的形式通过节点间的协作来认证记录,这是出于集体私利。因此,参与者对数据安全性的不确定性被最小化。区块链的使用消除了数字资产再现性的特征。证实了每个价值单位(例如,资产)只转移了一次,解决了双重支出的问题。
区块链中的每个块都保存有效交易的批处理(“块”),这些交易被散列并编码成Merkle树。每个块包括区块链中前一个块的散列,将两者联系起来。链接的块形成一个链。这个迭代过程确认了前一个块的完整性,一直到链中的第一个块,有时称为起源区块或根块。
通过在网络上存储数据,区块链消除了由单一机构集中保存和控制数据带来的风险。虽然主机组织110提供广泛的数据处理和存储服务,包括向单个负责代理(例如,主机组织110)提供大量数据的能力,区块链服务的不同之处在于,主机组织110不是这种服务的单个授权机构,而是经由区块链服务接口190是可用区块链协议的许多节点之一,或者作为区块链协议管理器和提供者操作,而经由区块链服务接口190与主机组织110通信的其他参与节点133通过根据主机组织110提供的可用区块链协议实现兼容的分布式分类账技术(DLT)来共同作为存储在区块链内的信息的储存库来操作。
分散的区块链可以使用特别的消息传递和分布式网络。区块链网络缺乏计算机黑客可能利用的集中漏洞点。同样,也没有故障的中心点。区块链安全方法包括使用公钥加密技术。公钥是区块链的一个地址。通过网络发送的价值令牌被记录为属于该地址。私钥就像可以让所有者访问其数字资产的密码或者通过其他方式与区块链支持的各种功能进行交互的装置。存储在区块链的数据通常被认为是清廉的。这就是区块链的优势所在。虽然集中式数据更可控,但信息和数据操作很常见。通过分散这些数据,区块链使数据对所有相关人员透明。
分散系统内特定区块链协议的每个参与节点133都具有该特定区块链协议的区块链副本。由大规模数据库复制和计算信任来维护数据质量。不存在数据库的集中式官方副本,并且默认情况下,没有用户和参与节点133中的任何一个比任何其他节点更可信,尽管这种默认可以通过某些专用区块链协议来改变,这将在下面更详细地描述。使用软件将区块链交易广播到网络,经营该软件,任何参与节点133(包括作为节点操作的主机组织110)接收这样的交易广播。广播消息是在尽最大努力的基础上传递的。节点验证交易,将它们添加至正在构建的块中,然后将完成的块广播给其他节点。区块链使用各种时间戳方案(例如,工作证明)来序列化变化。备选共识可与主机组织提供和支持的各种区块链协议结合使用,这种共识机制包括例如利害关系证明、权威证明和无价值证明。
开放的区块链比传统的所有权记录更方便用户,传统的所有权记录虽然对公众开放,但仍然需要物理访问才能查看。因为大部分早期区块链是没有许可的,所以对于所谓的“区块链”的具体公认定义存在一些争论,例如,由中央当局指派和授权(许可)核查人员的私人系统是否被认为是区块链。许可验证器的概念不同于本文描述的许可访问控制过程。许可链或私有链的支持者认为,区块链这个术语可以应用于将数据分组为时间戳块的任何数据结构。这些区块链作为数据库中多版本并发控制(MVCC)的分布式版本。就像MVCC防止两个交易同时修改数据库中的一个对象一样,区块链防止两个交易在区块链使用同一个输出。不管应用于不同类型的区块链技术的语义或特定术语如何,本文关于“区块链”描述的方法扩展了传统的区块链协议实现,以提供额外的灵活性,为所描述的区块链实现开辟新的服务和用例,并且取决于由主机组织110的区块链服务接口190提供或支持的特定区块链协议,私有和公共机制在本文都被描述并根据需要用于主机组织110支持的不同实现。
开放的、无许可的或公共的区块链网络的优点是不需要防范不良行为者,并且通常不需要访问控制,尽管如本文所讨论的,实施方案为适用于许可的或公共的区块链的特定情况提供了区块链访问控制。这意味着应用程序可以使用区块链作为传输层,在未经他人批准或信任的情况下添加至网络中。相反,允许的(例如,私有的)区块链使用访问控制层来管理谁有权访问网络。这些实施方案还为私有或公共区块链内部或外部的实体提供访问控制。与公共区块链网络不同,私人区块链网络上的验证器由网络所有者或财团的一个或多个成员进行审查。他们依靠已知的节点来验证交易。许可的区块链也叫“财团”或“混合”区块链。今天,许多公司使用区块链网络与私人区块链或基于区块链的分布式分类账,独立于公共区块链系统。
图1B描绘了根据所描述的实施方案的另一个示例性架构101,具有与块验证器192结合操作的区块链协议块160的额外细节。区块链共识管理器191实现读取共识,并且权限管理器181支持访问控制和类似的操作,如下面参考图10至图12进一步描述的。
特别地,区块链协议块160在本文被描述为由主机组织110的块验证器192验证,其中,区块链协议块包括其各种子组件的额外细节以及根据经由区块链服务接口190使用的特定区块链协议可以结合区块链协议块160使用的某些可选元素。
根据特定实施方案,本文描述的区块链协议块160定义了特定结构,用于如何组织由主机组织110支持的任何给定区块链协议的基本块。
根据某些实施方案,本文所示的区块链元数据定义管理器196可以利用由主机组织110提供的特定区块链实现,因此,适用的区块链协议由主机组织110定义,或者可替换地,区块链元数据定义管理器196可以利用主机组织作为参与节点操作的任何可公开访问的区块链,以便建立访问,或者区块链元数据定义管理器196可以利用私人区块链,包括主机组织110没有提供的那些,只要主机组织能够用这样的私人区块链认证并且通过作为私人区块链上的参与节点操作来访问区块链。
如下文将更详细描述的,区块链元数据定义管理器196实现专门的元数据定义和创建方案,该方案可以包括使用GUI和其他用户友好接口,这些接口由主机组织经由API或经由主机组织的接口提供,例如,用户和客户组织可以经由其与主机组织交互的网络服务器175,更具体地,主机组织提供的服务和应用,包括使用由区块链元数据定义管理器196提供的GUI,该GUI可由主机组织的租户通过云计算平台访问,并且在某些实施方案中,可由主机组织110的非租户和非订户访问,这两者都可以利用GUI和由区块链元数据定义管理器196提供的功能。
根据某些实施方案,可能有必要由主机组织提供定制的区块链协议实现,以使用支持由区块链元数据定义管理器196实现的专用元数据定义和创建方案,然而,在元数据可以被主机组织110允许地定义并存储到区块链的实施方案中,则用于存储这种数据的任何区块链都将不受影响,因为区块链不知道主机组织定义或创建了什么类型的元数据并将其传送到区块链。换言之,虽然主机组织110促进了这种元数据的定义和创建,并将该信息传送到区块链,但是对于区块链来说,什么应用程序选择使用这种数据并不重要,而主机组织促进了一种平台,在该平台中,应用程序可以选择仅使用符合定义和创建的元数据的数据,从而允许这种数据的可传送性以及许多其他好处。
关于区块链协议块160(不管它是现有的和已经可用的区块链协议还是定制实现的区块链协议),在先散列161是使用来自在先块159的数据作为输入的不可逆数学计算的结果。在先块159又利用来自n个先前块158的数据来形成不可逆的数学计算,从而形成那些相应块的在先散列。例如,根据一个实施方案,所利用的不可逆数学计算是SHA 256散列函数,尽管也可以利用其他散列函数。根据这样的实施方案,散列函数导致对链中的在先块159或n个先前块158中的任何一个中的数据的任何变化,导致那些在先块的散列的不可预测的变化,并且因此使当前或目前区块链协议块160无效。在先散列161创建块之间的链接,将它们链接在一起,以形成当前区块链协议块160。
当块验证器192计算在先块159的在先散列161时,该散列必须满足由存储为证明标准165的数据定义的特定标准。例如,在一个实施方案中,该证明标准165是计算的散列必须小于的数字。因为散列函数的输出是不可预测的,所以在计算散列之前,不能知道什么输入将导致小于证明标准165的输出。随机数162用于改变块的数据内容,允许散列函数产生大量不同的输出,以追求满足证明标准165的输出,从而使得产生具有随机数162的有效块的计算成本非常高(因此统计上不可能),该随机数导致散列值满足证明标准165的标准。
有效载荷散列163提供存储在区块链协议块160的块有效载荷169部分中的数据的散列,并且不需要满足任何特定的证明标准165。然而,当为了存储作为下一个或后续块的在先散列161的目的而计算散列时,包括有效载荷散列,作为输入的一部分。时间戳164指示区块链协议块160在某一误差范围内创建的时间。根据经由区块链服务接口190提供的某些区块链协议实现,用户的分布式网络(例如,区块链协议节点)对照他们自己的已知时间检查时间戳164,并且将拒绝具有超过错误阈值的时间戳164的任何块,然而,这种功能是可选的,并且可能是某些区块链协议所需要的,并且不被其他协议使用。
区块链协议证明166定义了块有效载荷169的所需大小和/或数据结构,并且证明符合特定的区块链协议实现,并且因此证明区块链协议块订阅、实现和遵守所指示的区块链协议的特定要求和配置选项。区块链协议证明166还可以指示给定区块链协议的版本,并且区块链协议可以在节点将开始为了不遵守而拒绝新的区块链协议块之前允许块的有限向后和向前兼容性。
根据所使用的特定区块链协议,块类型167是可选的。在需要经由区块链服务接口190公开的特定区块链协议的情况下,块类型167必须被指示为允许的块类型167的枚举列表中的一个,这将在下面更详细地描述。某些区块链协议使用多个不同的块类型167,所有这些都可以具有不同的有效载荷,但是具有根据所使用的区块链协议先验已知的结构、声明的块类型167以及证明符合这些要求的区块链协议证明166。对于给定的声明的块类型167,不符合或无效的块类型或意外的结构或有效载荷将导致该块被网络节点拒绝。
在使用可变大小的块有效载荷169的情况下,块类型167可以指示这种可变大小的块有效载荷169的允许性以及指示块有效载荷169中第一字节的索引和块有效载荷169的总大小。块类型167可用于存储与块有效载荷169的读取、访问以及正确处理和解译相关的其他信息。
存储在块内的块有效载荷169数据可以涉及任意数量的交易数据,这取决于所使用的特定实现和区块链协议,包括与例如金融交易、所有权信息、数据访问记录、文档版本控制、医疗记录、投票记录、合规和认证、教育成绩单、购买收据、数字权利管理记录或者字面上任何种类的可经由区块链协议块160的有效载荷存储的数据相关的有效载荷信息,其本质上是任何能够被数字化的数据。根据所选择的特定区块链协议,有效载荷大小可以是固定大小或可变大小,在这两种情况下,其将用作产生有效载荷散列163的散列的输入的至少一部分。
根据所选择的特定区块链协议,可以使用各种证明标准165,例如,工作证明、散列值要求、利害关系证明、密钥或诸如共识或共识证明等某个其他指示符。在利用基于共识的技术的情况下,区块链共识管理器191代表主机组织110提供共识管理,然而,主机组织110可以仅作为主机组织110经由区块链服务接口190访问的给定区块链协议的许多节点之一来操作,或者,主机组织110可以经由区块链服务接口190将特定的区块链协议定义并提供给客户和订户(并且可能提供给未认证的公共节点参与者),作为基于云的服务。这种证明标准165可以作为要求散列值小于证明标准、大于证明标准的规则来应用,或者可以要求特定的比特序列(例如,10个零,或者定义的二进制序列)或者所需数量的前导或尾随零(例如,导致20个前导或尾随零的输入散列,如果没有已知的有效输入,这在计算上是不可行的)。
根据特定的区块链协议实现,用于在先散列161、有效载荷散列163或授权散列168的散列算法可以都是相同类型或不同类型。例如,允许的散列函数包括MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-515、SHA-515/224、SHA-515/256、SHA-3或任何抗预映像攻击的合适散列函数。也不要求散列只计算一次。一个散列函数的结果可以作为另一个或同一个散列函数的输入被重复使用多次,以便产生最终结果。
图1C描绘了根据所描述的实施方案的另一个示例性架构102,其中,更详细地阐述了区块链元数据定义管理器196的额外细节。
如本文可以看到的,存在包括区块链元数据定义管理器196的区块链服务接口190。集成构建器153以及区块链共识管理器191和块验证器192也被描绘为与区块链元数据定义管理器196的各种元素交互,集成构建器能够建立网络成员,来参与元数据定义和创建方案。
在区块链元数据定义管理器196内部有各种进一步的元素,包括信任层154和能够与主机组织的租户和客户组织以及主机组织的服务的非订户交互的中央信任接口152。还描绘了元数据层156,其具有创建并推送到可访问的区块链的所有当前定义的元数据定义的知识,随后是网络组织157层或共享分类账,其用作到各种可访问的区块链的接口。状态分类账159维护可访问的区块链的状态和任何连接或非连接状态,而历史块161维护平台的交易历史和记录。集成平台层158提供到主机组织110内的其他组件的接口,以与区块链元数据定义管理器196的组件接合,而访问控制层162将在下面更详细地描述,但是为未完全向公共访问开放的私有和许可的区块链提供某些访问权限和限制。
最后,描述了各种块分类账客户端,包括作为主机组织的订阅客户享有完整平台许可证的主机组织的客户164,而在框166具有主机组织的伙伴#1的下一个块分类账客户端仅享有主机组织提供的有限用户能力的基本许可证和块分类账许可证,随后是块167处的最后一个块分类账客户端,其具有主机组织的伙伴#2,该伙伴#2被严格限制为对所有各方可用的社区许可证,而无需订阅主机组织提供的任何订阅所需的用户服务。
从高层来看,所描绘的架构向公共区块链提供类似的服务,除了根据该特定实施方案,共享分类账157操作主机组织内部的区块链,并定义托管网络组织的区块链协议或本文所示的所谓“共享分类账157”。所描绘的共享分类账157因此允许客户和非客户与组织和客户以及非订阅客户交互,但不一定是第三方实例,因为该特定实施方案操作主机组织内部的共享分类账157。以这种方式,仍然可以实现和利用由公共和私人区块链提供的功能,然而,因为共享分类账157完全在主机组织110内部,所以有可能使用分布式分类账技术(DLT)来操作共享分类账,该技术被修改为依赖于主机组织110的信任层154作为中央信任机构(并且经由中央信任接口152提供信任的验证),而不是如本文所描述的其他相关实施方案中通常的那样更习惯地使用区块链共识管理器191。
不管信任机构如何(例如,无论是主机组织110还是由区块链共识管理器191管理的达成共识的分布式节点),所有数据都是透明的和可密码验证的,并且数据和用户不归一方所有,尽管在主机组织内部托管,并且历史161和状态分类账159提供了增强的审计跟踪。集成构建器153允许执行在共享数据上运行以及针对网络组织157本身拥有的数据运行的智能合约,例如,所有成员都可以访问但仍然由主机组织拥有的元数据定义。
在该特定实施方案中,如上所述,因为信任是由主机组织本身经由信任层154建立的,所以不需要共识,尽管根据实现方式可以可选地利用共识。
根据特定实施方案,存在在网络级工作的多租户分类账平台,其提供通过区块链可用的等量的透明度和来源,但完全在主机组织110的控制之内,并因此提供某些好处,例如,由主机组织110建立中央信任。
这种架构表示集中式和分散式数据库之间的折衷,特别是偏离了区块链的基本原则,该原则利用分布式分类账技术,因此作为分布式数据库运行。然而,本文描述了由并且通过区块链服务接口190作为中心方操作的主机组织110,其代表所有租户提供信任,这与区块链相反,其中,信任由网络传递,并且具体地由分布在达成共识的整个网络中的节点传递。
经由主机组织的共享分类账157保存的数据和信息完全由网络所有,特别是由已建立的网络成员所有,然而基础设施由中心方所有,在这种情况下,主机组织110拥有、控制和管理共享分类账157操作的计算基础设施和资源。因此,如果任何已建立的网络成员作为中心方托管主机组织,则该系统和架构适用于该特定已建立的网络成员。然而,值得注意的是,已建立的网络成员必须将其信任置于第三方,在这种情况下是主机组织110。如果这样做是不可能的,或者基于各种数据安全要求、规定或其他考虑是不允许的,则由区块链共识管理器191管理的需要分布式节点共识的分布式分类账技术(DLT)对于那些方来说更合适。
根据特定实施方案,提供了以租户为中心的网络组织或以租户为中心的共享分类账157,同样在主机组织110内部(具体地说,主机组织的区块链服务接口190),其中,所有用户由每个相应的客户组织控制,而不是由集中的客户控制。换言之,可能存在租户特定的客户控制,使得共享分类账157的给定实例的任何用户由对共享分类账157的该实例具有权限的租户或客户组织控制。以这种方式,可以存在共享分类账157的多个实例,每个实例具有由特定客户组织控制的用户集,而不必协商或依赖任何其他客户组织、租户或任何其他实体来批准或拒绝用户包含。这包括租户的客户组织能够自己确定允许哪些用户在其共享分类账157的实例中,而不必经过主机组织,尽管共享分类账157的实例由主机组织内部托管。这是因为主机组织110有效地将共享分类账157的每个相应实例的用户包含的完全控制委托给该特定共享分类账157为其操作的客户组织。
根据某些实施方案,共享分类账157体现了Merkle有向无环图(DAG)或“Merkle-DAG”,其是类似于本地Merkle树的数据结构,除了Merkle DAG结构不需要被平衡并且允许其非叶节点包含数据。在这种方式下,Merkle-DAG类似于本地Merkle树,因为它们都体现了散列树。虽然Merkle树按顺序连接交易,但Merkle-DAG的区别在于,通过散列连接交易。因此,在Merkle-DAG结构中,地址由Merkle散列表示。由此产生的Merkle散列蜘蛛网通过Merkle图将数据地址链接在一起。因此,Merkle-DAG的有向无环图(DAG)部分可用于对信息建模,例如,对特定地址存储特定数据进行建模。
根据另一个实施方案,数据在共享分类账157的每个实例内被加密和可密码验证。例如,利用区块链服务接口190平台的扩展,具有共享分类账157的实例的任何租户可以加密地验证共享分类账157的实例内的任何存储的加密数据。
如上所述,对于许多客户来说,租赁或订阅基于云的计算基础设施和软件比自己拥有、操作、维护和配置这样的计算基础设施更可取。当某些客户和伙伴只要求其数据和分类账透明时(例如,不一定要求分布式节点之间达成共识),这种解决方案表示对竞争对手的实质性改进。尽管区块链技术呈现出许多优点,其中许多优点在本文的其他地方有更详细的描述,但现实是某些客户根本不关心数据和分类账的分散,因此,可以从利用共享分类账157实例中获得显著的好处,该实例完全在具有中央信任接口152的主机组织110内操作,因此不需要参与分布式区块链分类账常见的其他共识机制。
根据一个实施方案,共享分类账157提供了由任何一方(包括主机组织110)不可改变的审计跟踪,因此,与竞争解决方案提供的标准审计跟踪相比,提供了更大的安全性、透明度和保证。因此,与标准集中式系统相比,当使用共享分类账157时,给租户和客户组织带来了附加值。
此外,因为共享分类账157是多租户感知的(例如,每个租户或客户组织可以利用其自己的共享分类账157的实例)和元数据驱动的,具有经由触发器的可执行智能合约,所以除了由主机组织提供的平台益处之外,对于主机组织的租户订户来说还有多个优点。
考虑一个大型零售商希望去利用区块链来管理其从服装到生鲜产品的供应链的市场的示例。这样的示例可能始于棉花作为服装的原材料,绿叶蔬菜作为包装产品在商店出售。最终,大型零售商可能会发展为完整的区块链解决方案,但最初,许多客户可能更喜欢使用完全受控的单点信任和托管解决方案,例如,由主机组织提供的共享分类账157。最初从托管共享分类账解决方案开始的原因可能是经由其当前的主机组织启用单一登录或单一身份验证门户,该组织已经为他们提供了基于云的服务,这将使大型零售商能够试验分布式分类账技术(DLT),同时允许大型零售商从单一登录门户查看其经过验证的分类账信息。
这样的结构将因此允许大型零售商(举例来说)由于数据存储在不可变共享分类账157内(尽管在主机组织110内)将其信任置于数据的不变性中。这是可能的,因为即使是主机组织也不能改变共享分类账157的审计跟踪。这与以前基于云的平台的使用形成对比,以前的平台提供了标准化的审计跟踪,但是因为审计跟踪不是所有各方都不可改变的,所以理论上可能被恶意行为者操纵,尽管这种情况极不可能发生。然而,利用经修改的DLT技术的共享分类账157就其审计跟踪而言在设计上是不可改变的,因此,考虑到即使是主机组织也缺乏改变存储在共享分类账157内的历史记录的能力,可以将更高的信任级别适当地置于中央信任机构,例如,主机组织。
同样的逻辑可能适用于希望在一家公司及其子公司内部使用这种分类账的公司,因为这样做将允许公司及其子公司之间更好的集成和数据共享,同时受益于共享分类账的不变性,除了竞争解决方案所能提供的,例如,本地和远程操作的数据库或严格按需的基于云的解决方案。
例如,考虑希望与其商业银行部门共享销售线索信息的抵押贷款部门或在全国范围内拥有多个部门的医疗保健公司,这些部门在各个部门之间没有很好地集成,从而导致重复的运营中心,例如,北加利福尼亚的索赔处理组和南加利福尼亚的另一索赔处理组,其目前缺乏完全集成,但是可以迁移到托管的共享分类账157解决方案,来实现更大的集成,通过写入平台的记录的不变性进行可信的审计跟踪,进而提高大型医疗保健提供商各个部门使用的数据的易用性和透明度。
因此,根据特定实施方案,存在主机组织的系统的操作,包括代表共享分类账的多个授权网络参与者操作共享分类账的接口,其中,共享分类账经由多个分布式共享分类账节点保存数据;在共享分类账内生成网络组织,以代表作为多个授权网络参与者中的第一个的创始人组织存储数据;接收来自创建者组织的输入,该输入将多个伙伴组织定义为网络组织的额外授权网络参与者,其中,所有授权网络参与者都具有经由共享分类账对网络组织存储的数据的读取访问权,而无需复制数据;从创建者组织接收输入,该输入定义了每个伙伴组织与共享分类账内的网络组织交互的权限;将元数据写入共享分类账,至少定义网络组织的授权网络参与者和为每个伙伴组织定义的权限;从授权的网络参与者接收与网络组织交互的请求;以及在满足请求时与共享分类账进行交易。
根据另一个实施方案的操作,共享分类账包括声明性的、元数据驱动的、可密码验证的多网络(多租户)共享分类账,其在主机组织内部的关系数据库系统上操作;其中,该方法还包括:为每个伙伴组织和创始人组织分配唯一的网络ID;并且按照网络ID划分其上存储有网络组织的数据的关系数据库系统的表。
根据另一个实施方案的操作,关系数据库系统不变地存储审计日志,该审计日志记录影响经由多个共享分类账节点存储在网络组织内的数据的所有插入、删除和更新。
根据另一个实施方案的操作,在满足请求时与共享分类账进行交易至少包括:(i)从共享分类账中获取网络组织的元数据;(ii)验证每个请求源自网络组织的一个授权网络参与者;(iii)验证每个请求指定创始人组织的交互或一个伙伴组织的交互,以符合由获取到的网络组织的元数据定义的权限;以及(iv)根据成功的验证,经由共享分类账与网络组织进行交易,以实现请求。
根据另一个实施方案的操作,由元数据为每个伙伴组织定义的权限包括以下一个或多个:应一个伙伴组织的请求对元数据的写访问,由创始人组织授予对元数据的写访问;以及应一个伙伴组织的请求对网络组织存储的数据的写访问,对数据的写访问由创建者组织授予。
根据另一个实施方案的操作,由元数据为每个伙伴组织定义的权限包括创建与一个伙伴组织相关联的新用户的权限。
根据另一个实施方案的操作,由每个伙伴组织的元数据定义的权限包括添加新伙伴组织,作为网络组织的授权网络参与者的权限。
根据另一个实施方案的操作,由元数据定义的权限还包括以下一个或多个:由创始人组织授予的创始人组织修改元数据的权限;创始人组织授予创始人组织修改网络组织存储的数据的权限;创始人组织授予创始人组织从网络组织中删除一个伙伴组织的权限,并将删除的伙伴组织作为网络组织的一个授权网络参与者删除;创始人组织授予创始人组织添加新的伙伴组织作为该网络组织的授权网络参与者的权限;创始人组织授予创始人组织的权限,以声明网络组织的所有授权网络参与者共有的新业务逻辑;以及由创始人组织授予的对创始人组织声明网络组织的所有授权网络参与者通用的新业务规则的权限。
根据另一个实施方案的操作,由网络组织存储在共享分类账内的数据包括以下一个或多个:网络组织的所有授权网络参与者共有的应用数据记录;网络组织的所有授权网络参与者共有的业务数据记录;网络组织的所有授权网络参与者共同声明的业务逻辑;以及网络组织的所有授权网络参与者通用的声明性业务规则。
根据另一个实施方案,这样的操作可以还包括:从一个授权网络参与者接收通过共享分类账存储本地化数据的请求;通过共享分类账存储本地化数据;并且其中,存储的本地化数据仅可由发起存储本地化数据的请求的授权网络参与者访问,并且其中,存储的本地化数据不向其他授权网络参与者公开。
根据另一个实施方案的操作,存储的本地化数据包括以下至少一个:对网络组织存储的数据的修改,该修改仅可由发起存储本地化数据的请求的授权网络参与者访问;对网络组织的所有授权网络参与者共有的应用数据记录的修改,其中,该修改仅可由发起存储本地化数据的请求的授权网络参与者访问;对网络组织的所有授权网络参与者共有的业务数据记录的修改,其中,该修改仅可由发起存储本地化数据的请求的授权网络参与者访问;对声明网络组织的所有授权网络参与者共有的业务逻辑的修改,其中,该修改仅可由发起存储本地化数据的请求的授权网络参与者访问;以及对声明网络组织的所有授权网络参与者共有的业务规则的修改,其中,该修改仅可由发起存储本地化数据的请求的授权网络参与者访问。
根据另一个实施方案的操作,所存储的本地化数据包括发起存储本地化数据的请求的授权网络参与者的新用户账户和为新用户账户定义的用户权限;并且其中,每个授权的网络参与者具有不同的用户控制,而不影响网络组织存储在共享分类账中的数据。
根据另一个实施方案的操作,发起存储本地化数据的请求的授权网络参与者是在主机组织内具有多个用户的客户组织;其中,存储的本地化数据包括发起存储本地化数据的请求的授权网络参与者的新用户账户;并且其中,新用户账户不同于与客户组织的多个用户账户相关联的任何用户账户。
根据另一个实施方案的操作,发起存储本地化数据的请求的授权网络参与者是在主机组织内具有租用权的客户组织;其中,存储的本地化数据包括客户组织特定的工作流,以基于影响网络组织存储的数据的变化针对客户组织的CRM数据执行。
根据另一个实施方案的操作,影响由网络组织存储的数据和元数据的所有变化都是可加密验证的,提供完整的审计日志,至少包括哪些数据改变、数据何时改变以及谁改变了数据。
根据另一个实施方案的操作,每个授权的网络参与者都是主机组织的租户。
根据另一个实施方案的操作,创始人组织是已经请求生成网络组织的主机组织的多个租户中的第一个;并且其中,每个伙伴组织是不同于创始人组织的主机组织的租户,并且已经被创始人组织添加为共享分类账的授权网络参与者。
根据另一个实施方案的操作,主机组织的系统包含硬件、软件和逻辑元件,以实现向订阅客户组织提供按需服务、按需数据库服务和云计算服务的基于云的功能;并且其中,创始人组织和每个伙伴组织是从订户客户组织中选择的;并且其中,基于云的功能可由订阅的客户组织通过公共互联网访问。
根据另一个实施方案的操作,网络组织由主机组织表示为主机组织的多个客户组织之一。
根据另一个实施方案的操作,共享分类账包括主机组织内部的关系数据库系统;其中,由网络组织存储的数据的副本可经由多个共享分类账节点中的一个或多个从主机组织的多个数据中心中的每一个访问;并且其中,该方法还包括:基于主机组织的多个数据中心之一处的中断或者根据来自多个共享分类账节点中的第一个的未响应,确定多个共享分类账节点中的第一个是不可访问的;以及在确定之后,从多个共享分类账节点中的第二个节点与共享分类账存储的网络组织进行交易。
根据另一个实施方案的操作,共享分类账实现主机组织内部的分布式分类账技术(DLT)数据存储;其中,由网络组织存储的数据的副本可从分布在主机组织的多个地理上分散的数据中心的多个共享分类账节点中的每一个访问;并且其中,DLT数据存储不变地存储添加至DLT数据存储的资产中的所有数据。
根据另一个实施方案的操作,网络组织处的数据删除交易由指定从网络组织删除的数据的新资产来表示,而不从DLT数据存储中移除任何数据;其中,网络组织处的数据更新交易由指定网络组织处更新的数据的当前版本的新资产来表示,而不从DLT数据存储中移除任何数据;并且其中,交易到网络组织的数据的所有先前版本由DLT数据存储不变地保持,并且可经由DLT数据存储的审计日志获得,该审计日志包括被指定为已经被删除的任何数据以及交易到网络组织的数据的所有先前版本已经受到一个或多个更新的影响。
根据另一个实施方案的操作,主机组织作为中央信任机构操作,以代表网络组织的授权网络参与者针对DLT数据存储验证任何交易。
根据另一个实施方案的操作,DLT数据存储经由完全在主机组织的专属控制下运行的硬件和软件基础架构实现。
根据另一个实施方案的操作,操作到共享分类账的接口包括代表共享分类账的授权网络参与者操作到区块链的区块链服务接口;其中,每个授权的网络参与者作为区块链上的参与节点操作,并经由主机组织操作的区块链服务接口与区块链进行交易。
根据另一个实施方案的操作,由网络组织存储的数据的副本可从作为区块链上的参与节点操作的任何授权网络参与者访问,并且还可从区块链上的任何其他参与节点访问;其中,区块链不变地存储所有添加至区块链的记录;并且其中,受删除和更新影响的网络组织所存储的数据作为非最新版本的数据仍然可以经由区块链的审计日志从区块链访问。
根据另一个实施方案的操作,主机组织操作区块链上的参与节点;并且区块链在主机组织外部操作,在主机组织的专属控制外面操作。
根据另一个实施方案的操作,网络组织包括经由共享分类账操作的多个不同网络组织之一;或者可替换地,其中,网络组织在主机组织的唯一共享分类账实例上操作,并且其中,不同的网络组织在主机组织内独立于网络组织操作的唯一共享分类账实例的其他共享分类账实例上操作。
根据另一个实施方案的操作,由网络组织存储的数据与第一声明的应用和第二声明的应用相关联,第一和第二声明的应用都由创始人组织和多个伙伴组织使用;并且其中,由元数据定义的权限基于每个伙伴组织是利用第一声明应用还是第二声明应用访问数据来指定对网络组织存储的数据的不同访问权限。
根据另一个实施方案的操作,写入共享分类账的元数据进一步定义多个实体类型和用于多个实体类型中的每一个的多个字段定义;并且其中,该方法还包括:在主机组织的数据库系统内生成虚拟表;基于写入共享分类账的元数据在主机组织的数据库系统处构造虚拟表,其中,来自写入共享分类账的元数据的实体类型被表示为虚拟表内的表,并且其中,多个实体类型中的每一个的一个或多个新字段定义被表示为虚拟表处的表内的列。
根据另一个实施方案的操作,虚拟表包括在主机组织的数据库系统处托管的物化视图,该物化视图基于为新应用声明的元数据而结构化;其中,在主机组织的数据库系统中托管的物化视图不存储与新应用相关联的任何数据;并且其中,通过将只读SQL查询转化成共享分类账交易以从共享分类账获取所请求的数据,针对物化视图处理请求只读取访问的SQL查询。
根据另一个实施方案的操作,写入共享分类账的元数据进一步定义多个实体类型和用于多个实体类型中的每一个的多个字段定义;并且其中,该方法还包括:从共享分类账中获取元数据,包括多个实体类型、多个实体类型的每一个的一个或多个新字段定义以及应用于一个或多个字段定义的任何字段类型;通过基于所定义的元数据构造虚拟表,在主机组织处的虚拟表内生成经由共享分类账存储的数据的物化视图;其中,物化视图表示由共享分类账存储的相关数据的结构,而不将数据存储在主机组织的物化视图中。
根据另一个实施方案,这样的操作可以还包括:在主机组织处接收来自用户装置的SQL语句,其中,该SQL语句指向物化视图,请求对保存到区块链并与新应用相关联的数据进行SQL更新或SQL插入;通过将请求SQL更新或SQL插入的SQL语句转化成相应的共享分类账交易来更新或添加与共享分类账处的新应用相关联的数据,针对物化视图处理该SQL语句;并且根据共享分类账接受的相应共享分类账交易,向用户装置发出确认,确认针对物化视图的SQL语句的成功处理,并且成功地更新或添加与共享分类账处的新应用相关联的数据。
根据另一个实施方案,这样的操作可以还包括:在主机组织处接收指向物化视图的SQL语句;其中,所述SQL语句指定以下一个或多个:(i)从SQL语句选择,(ii)插入到SQL语句,以及(iii)更新设定的SQL语句;并且其中,通过将该SQL语句转化成相应的共享分类账交易并针对共享分类账执行相应的共享分类账交易,来处理所接收的SQL语句,以实现指向主机组织处的物化视图的SQL语句。
根据特定实施方案,存在其上存储有指令的非暂时性计算机可读存储介质,当由其中至少具有处理器和存储器的系统的处理器执行时,所述指令使得系统执行包括以下操作的操作:代表共享分类账的多个授权网络参与者操作共享分类账的接口,其中,共享分类账经由多个分布式共享分类账节点保存数据;在共享分类账内生成网络组织,以代表作为多个授权网络参与者中的第一个的创始人组织存储数据;接收来自创建者组织的输入,该输入将多个伙伴组织定义为网络组织的额外授权网络参与者,其中,所有授权网络参与者都具有经由共享分类账对网络组织存储的数据的读取访问权,而无需复制数据;从创建者组织接收输入,该输入定义了每个伙伴组织与共享分类账内的网络组织交互的权限;将至少定义网络组织的授权网络参与者和为每个伙伴组织定义的权限的元数据写入共享分类账;从授权的网络参与者接收与网络组织交互的请求;以及在满足请求时与共享分类账进行交易。
根据另一个实施方案,存在一种在主机组织处执行的系统,其中,该系统包括:存储指令的存储器;要执行指令的处理器;其中,处理器代表共享分类账的多个授权网络参与者执行共享分类账的共享分类账接口,其中,共享分类账经由多个分布式共享分类账节点保存数据;其中,处理器将在共享分类账内生成网络组织,以代表作为多个授权网络参与者中的第一个的创始人组织存储数据;接收接口,用于接收来自创建者组织的输入,该输入将多个伙伴组织定义为网络组织的额外授权网络参与者,其中,所有授权网络参与者都具有经由共享分类账对网络组织存储的数据的读取访问权,而无需复制数据;接收接口,进一步接收来自创始人组织的输入,该输入定义了每个伙伴组织与共享分类账内的网络组织交互的权限;其中,共享分类账接口是到共享分类账的元数据,该共享分类账至少定义了网络组织的授权网络参与者和为每个伙伴组织定义的权限;接收接口,进一步从授权的网络参与者接收与网络组织交互的请求;并且其中,共享分类账接口还用于在满足请求时与共享分类账进行交易。
值得注意的是,共享分类账提供了与区块链类似的分散能力,尽管如上所述,共享分类账可以在主机组织内部的共享分类账实例上运行,可以在主机组织外部的公共区块链上运行,可以在主机组织外部的私有区块链或由主机组织实现的私有区块链上运行,或者共享分类账可以在分布式关系数据库系统上运行。
传统解决方案的一个问题是,每当两个或多个组织同意共享数据时,最终至少有一个组织必须回到数据存储库的创始人组织试图帮助,以更改访问权限,或者对共享数据的结构进行任何变化。更糟糕的是,在某些情况下,数据存储库的创建者组织必须向另一个第三方试图帮助,例如,委派某些管理权限。
共享分类账使创建者组织能够指定哪些其他实体可以作为伙伴组织运行,并进一步允许创建者组织将增强的管理权限委托给他们自己和其他伙伴组织。例如,伙伴组织可以创建用户或修改元数据,这些元数据定义了由共享分类账保存或保留的网络组织数据的结构。此外,根据某些实施方案,共享分类账实现了声明性的、元数据驱动的、可密码验证的多网络(多租户)共享分类账,其允许在创建者组织和伙伴组织之间共享数据,而不必复制任何数据来实现共享能力或受益于共享分类账的分布式节点的分布式特性。
以美国运通等信用卡公司实施的忠诚度奖励计划为例。Amex可能希望与多个不同的伙伴组织共享数据,以便在一个集中的位置收集信息,从而使Amex作为创始组织和伙伴组织受益。使用以前的解决方案,每当伙伴组织需要将用户添加至系统中进行数据访问时,每个伙伴组织都不断需要返回Amex试图帮助,或者对系统存储的数据进行任何更改,诸如此类。
然而,通过使用共享分类账,Amex等创始人组织可以将某些权利委托给伙伴组织。例如,Amex可以允许伙伴组织创建他们自己的用户账户,或者修改创始人组织和伙伴组织共享的业务逻辑,或者创建只针对其中一个伙伴组织的本地化数据(例如,为其中一个伙伴组织执行的CRM流),而不影响所有伙伴组织和创始人组织共享的共享分类账中的公共数据池,或者执行某些数据修改操作,例如,允许伙伴组织的某些应用程序对共享数据具有写访问权,诸如此类。
根据特定实施方案,主机组织实现、管理、维护和控制共享分类账的整个计算基础设施,但允许创建者组织代表给定网络组织的伙伴组织和创建者组织向他们自己(例如,创建者组织可以向创建者组织分配特权)或伙伴组织分配某些权限,例如,对存储数据的写访问或对定义存储数据结构的存储元数据的写和更新访问。
根据特定实施方案,创建者组织和伙伴组织中的每一个都是主机组织的现有客户组织或租户,并且因此能够通过作为授权的网络参与者参与共享分类账来为他们自己和其用户定义他们自己的访问控制,而不必请求主机组织的管理支持。
此外,由于共享分类账以加密方式提供所有信息,因此创建了一种审计跟踪或完全透明的审计日志,允许创始人组织和可能的伙伴组织查看谁在何时更改了哪些数据,从而允许完全追溯数据记录的更改者、更改内容、更改地点、更改时间和更改原因,这可能是法律、会计原则或合约义务所要求的。
值得注意的是,在共享分类账的情况下,主机组织的数据只有一个单独的储存库,并且没有为每个伙伴节点复制数据(尽管某些分布式技术确实提供了分布在多个节点中的单独的数据储存库)。然而,值得注意的是,没有提供同步机制,因为数据总是经由共享分类账保存,而不是像许多以前的数据共享问题解决方案那样复制到其他地方并被引用。
根据某些实施方案,一些或所有伙伴可以创建他们自己的业务规则和业务逻辑,这些规则和逻辑然后被写入由网络组织存储在共享分类账内的公共数据池。在其他实施方案中,伙伴可以编写他们自己的伙伴组织特定的规则和业务逻辑,这些规则和业务逻辑通过共享分类账保存,但不放在网络组织的公共数据池中,因此不向其他伙伴组织或创始人组织公开。当伙伴组织根据对共享分类账中网络组织存储的数据的修改创建要执行的CRM数据流时,可能会出现这种情况,在这种情况下,公共数据池由伙伴组织的CRM数据流引用,但CRM数据流本身只对该特定伙伴组织有用。然而,值得注意的是,针对所有授权网络参与者的通用业务规则和逻辑不仅是可行的,而且很可能出现在具有由多个不同实体共享的数据的任何给定网络组织上。
此外,尽管数据被保存在共享分类账内,但是根据某些实施方案,规定了在主机组织内创建无数据虚拟表,作为“物化视图”,在该“物化视图”中,创建者组织或和伙伴组织可以针对物化视图发出和处理基于SQL的查询,就好像它是传统的关系数据库表一样,尽管共享分类账的某些实施方案可以保存到非关系数据存储,例如,主机组织内基于DLT的数据存储或区块链(私有或公共),而在其他情况下,共享分类账可以被允许持久保存到关系数据库,只要它是可加密验证的。
利用这样的实施方案,可以为每个授权的网络参与者(例如,创建者和伙伴)提供物化视图,然后从这样的参与者的角度来看,允许要对照物化视图处理的SQL交易,然后主机组织提供从接收到的SQL语句到必要的共享分类账交易命令的必要转换,可以是区块链、DLT数据存储,甚至是另一关系数据库存储。
根据某些实施方案,共享分类账是多租户感知的和多网络感知的,每个授权的网络参与者被分配唯一的网络ID,并且其中,经由共享分类账存储在网络组织内的所有数据然后被网络ID分割和/或经由网络ID可引用,从而允许引用仅特定于一个或多个指定的授权网络参与者的数据。
根据另一个实施方案,网络组织的相同公共数据池可以基于用来访问这样的数据的声明的应用而受到不同的访问权限。例如,在Amex是创始人组织而Chevron是伙伴组织的情况下,网络组织使用的库存管理的第一应用程序可能允许Chevron对公共数据池进行只读取访问,然而,同一伙伴组织Chevron在利用不同的应用程序访问相同的公共数据池时,例如,客户奖励积分应用程序,允许Chevron对网络组织存储的一些数据进行写访问,从而允许基于声明应用而不仅仅是基于特定的伙伴组织的不同权限。
图1D描绘了根据所描述的实施方案的另一个示例性架构103,其更详细地描绘了主机组织服务与区块链服务接口190的集成。
特别地,现在描绘了集成构建器153和可访问云平台186,其中的每一个都被接合到区块链服务接口的区块链元数据定义管理器196中。集成构建器153提供各种功能,这些功能共同允许将实体和元数据定义到主机组织内部托管的共享分类账157中,或者允许将实体和元数据定义到可通过主机组织访问的区块链中,即使这样的区块链是不受主机组织最终控制的公共区块链。
在集成构建器153处具体描绘了单击区块链连接器131,其允许用户点击并拖动组件,以将其应用程序与主机组织内部的或可经由主机组织访问的可用区块链链接,从而指定应用程序和区块链之间的链接,而用户不必编写代码来建立链接。
网络形成管理器132允许用户定义什么实体(例如,应用等)、伙伴、租户、用户、客户组织等可以经由其应用程序访问写入区块链的信息。
实体定义设置GUI 133允许用户在不编写代码的情况下定义将应用指定元数据的应用程序或实体。例如,这可以是在实体定义设置GUI 133处指定的新实体,或者这可以是现有应用,其将与经由元数据定义GUI 134指定和建立的元数据定义兼容。
最后,区块链资产或硬币部署135允许用户使用定义的元数据和经由网络形成管理器132指定的任何相关联的应用程序、伙伴、客户组织、租户、用户等来将其指定实体部署到所连接的区块链上,以供应用程序或任何具有连接性以及适当的相关访问权限的人使用。一旦通过GUI定义的实体和元数据被部署到区块链,就可以被对有关区块链具有访问权和相关访问权的任何应用程序或实体所利用。换言之,区块链资产或硬币部署135组件用于“发布”或“上线”已定义的实体和元数据。
进一步描述了可访问的云平台186,通过该云平台,存储在链接的区块链之外但可经由主机组织访问的信息可以通过定义的实体链接。
因此,如果用户创建新应用并为该应用程序定义元数据,并将定义的实体和元数据部署到所选择的区块链上,则还允许获取、引用、读取和写入存储在可经由主机组织访问的各种可访问云平台171上的数据,这些数据不持久保存在针对该特定应用程序的所讨论的所选择的区块链内。
例如,共享分类账157上的应用程序或可通过主机组织访问的另一区块链可以从主机组织提供的商业云171中获取数据,或者从主机组织提供的营销云172中获取数据,或者可以参考来自第三方和外部链接云173的信息,例如,本文描述为173A、173B和173C的外部链接云,其实际上可以对应于例如亚马逊AWS云服务接口,或者微软Azure云服务接口,或者Oracle云服务接口等。只要这样的第三方云经由主机组织服务107被外部链接,就可以被实体和应用程序引用,这些实体和应用程序将其数据保存在可经由主机组织访问的或主机组织内部托管的区块链内。
进一步描述了网络组织共享分类账157的更详细的分解,如前所述,其可以向希望避免完全部署到公共区块链的客户组织提供某些分布式分类账技术(DLT)功能方面,但是提供内部托管的分类账能力(在主机组织内),其通过信任层154实现中央信任授权,而不需要共识。可选地,共享分类账157可以允许客户组织参考同意管理协议157A,用于测试或验证目的,其中,客户组织可以简单地为任何交易提供他们自己的共识,因为允许他们在内部托管的共享分类账157内进行,客户组织对该分类账具有其自己的实例,并因此具有最终权限。这在功能上类似于依赖中央信任接口152,但是允许客户组织利用基于DLT的共识管理,在公共区块链可以观察到,同时保留对共识管理决策的控制。稍后,如果客户组织将其应用程序转换到公共区块链,则其迁移路径将简化,因为已经集成了共识管理组件。
同意管理157A和157B允许客户组织利用共享分类账157来定义哪些实体、用户、伙伴、客户组织等有权引用、读取、写入、更新或删除与已定义的应用程序相关联的交易,并允许那些相同的实体、用户、伙伴、客户组织等授予引用其数据的权限。元数据定义部署157C模块允许将定义的元数据写入所讨论的区块链或作为资产或硬币写入共享分类账157,随后,实体、应用程序和与已经为其定义了元数据的信息交互的任何代码必须符合定义的元数据,并且可以经由执行元数据符合性验证的智能合约执行来强制符合。
图1E描绘了根据所描述的实施方案的另一个示例性架构104,其描绘了利用区块链服务接口190的示例性数据流。
特别地,如本文所示,伙伴用户与区块链服务接口190交互,特别是与区块链探索者交互,通过该探索者可以发现和引用可访问的区块链。如元素178所示,伙伴用户然后可以经由REST API从区块链更新和读取数据(如果许可合适)。区块链按照前面描述的元数据定义保存已定义实体应用程序的信息。
REST API 178或“表示状态转移”API是一种软件架构风格,其定义了一组用于创建和利用网络服务的约束。符合REST架构风格的网络服务称为RESTful网络服务(RWS),提供公共互联网上计算机系统之间的互操作性。RESTful网络服务允许请求系统通过使用一组统一的和预定义的无状态操作来访问和操作网络资源的文本表示,而其他受支持的网络服务(例如,SOAP网络服务)公开了它们自己的任意操作集。
这种网络服务可以包括任何应用程序实体,可以通过公共互联网以应用程序允许的任何方式识别、命名、寻址或处理这些应用程序实体,所谓的RESTful网络服务允许向资源的URI发出请求,然后该请求将反过来引出以HTML、XML、JSON或某种其他选择的格式格式化的响应有效载荷。利用无状态协议和标准操作,RESTful系统旨在通过重新使用可以管理和更新的组件来实现快速性能、可靠性和增长能力,而不会影响整个系统,甚至在系统运行时也是如此,从而允许所描述的区块链和所连接的元素(例如,伙伴用户、主机组织用户和集成构建器153)之间更充分的互操作性。
如本文所示,存在被转化成平台事件并被传输到可访问云平台186的区块链事件。
主机组织用户可以与这种可访问的云平台186交互,以创建和记录数据,并且在适当的情况下,数据和事件可以通过配置的虚拟对象推回到区块链,这些虚拟对象与RESTAPI通信,以将信息写入区块链或引用区块链的信息,或者更新区块链内管理事件的状态信息。
此处,另外描述区块链管理员,其例如可以利用先前描述的GUI在集成构建器153处定义元数据,从而允许区块链管理员定义记录在全局应用程序寄存器中的网络参与者,或者部署然后由区块链服务接口处的REST API引用的应用程序,以及为所部署的实体应用程序定义元数据和权限,从而确保所部署的应用程序的信息在写入区块链时必须符合为与该应用程序相关联的这种信息定义的元数据。这种遵从可以通过本文在区块链服务接口190处的区块链内描述的智能合约来实施。
如前所述,区块链可以是内部托管的区块链,例如,内部托管并完全由主机组织控制的共享分类账157,或者区块链可以是可经由主机组织访问的任何公共区块链。
图2A描绘了根据所描述的实施方案的具有区块链和分叉区块链的额外细节的另一个示例架构200。在该示例架构中,区块链共识管理器191和权限管理器181操作来支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
更具体地,现在描述了主要区块链(例如,共识区块链),其以起源块141(有时称为根块)开始,随后是一系列标准块142,每个标准块具有至少部分基于在其之前的块的报头的散列形成的报头。还描绘了由初始叉根块144形成的分叉区块链,随后是一系列标准块142。因为区块链中的每个块包含存储在前一个散列中的前一个块的散列,所以经由区块链有效地创建从每个块通过链返回的链接,并且是使得恶意修改链变得极其困难或在计算上不可行的关键组件。
如图所示,主要区块链包括源自分叉块143的单个叉。如本文所示,起源块141是从主要区块链开始的特殊块,并且不同于其他块,因为它是主要区块链中的第一块,因此根据定义,不能包括任何先前块的散列。起源块141标志着正在使用的特定区块链协议的主要区块链的开始。区块链协议管理主要区块链增长的方式、可以存储什么数据以及创建分叉区块链,以及任何块和任何链的有效性可以根据嵌入在起源块141中的区块链协议证明166提出的规则和要求经由主机组织的块验证器192或区块链的任何其他参与网络节点来验证,然后必须由主要区块链或任何分叉区块链中的每个后续块来认证和遵守。
起源链中每个块内的区块链协议证明166定义了默认的规则和配置参数集,其允许创建分叉以及修改那些分叉中的规则和配置参数(如果有的话)。一些区块链协议实现不允许改变或不符合经由区块链协议证明166建立的默认规则集,因此,任何分叉都将是多个竞争且潜在有效的主要区块链的待定共识的结果。一旦达成一致意见(通常在新区块形成的一个或两个周期之后),则将采用具有一致意见的分支,并且分叉截断,从而返回到单个主要共识区块链。相反,在其他实施方式中,可以允许创建分叉区块链并与主要区块链一起无限期地继续存在,只要分叉区块链符合区块链协议证明166以及该区块链协议内分叉区块链的规则和配置参数的允许变化。
分叉块143将分叉区块链锚定到主要区块链,使得主要区块链和分叉链都被认为是根据区块链协议证明166允许的有效和允许的链。通常,在区块链中,除了表示具有共识的最长链的一个链之外,最终忽略或截断所有非共识分叉,从而被认为是无效的。然而,分叉块143通过作为标准块142操作并表现得好像是标准块142而扩展到先前区块链协议的常规规范之外,同时还包括对识别可允许分叉区块链的第一块的分叉散列149的引用,此处表示为有效分叉区块链的分叉根块144。分叉区块链的分叉根块144之后是标准块,每个标准块具有基于先前有效块的散列的报头,并且将无限期地继续。
根据一个特定实施方案,分叉区块链利用了主共识区块链内默认使用的规则和配置参数的一些变化,导致需要有效的分叉区块链。因此,在分叉根块144的新区块链协议证明166内编码规则和配置参数的变化,如上所述,该分叉根块必须保持符合原始规则和配置参数的有效范围,如由用于主要区块链的原始起源块141的区块链协议认证166所规定的。因为分叉根块144必须继续携带原始区块链协议证明166,所以分叉区块链协议证明可以存储在分叉根块144的块有效载荷169段中,从而建立分叉区块链中后续标准块142的规则和允许的配置参数。
例如,分叉区块链可用于支持由主机组织启用的声明性智能动作,其中,公共或私有区块链的分叉区块链经由新的区块链协议证明166定制,以支持由管理员定义的智能动作的声明性建立及其所需的信息捕捉规定以及将通过利用这种声明性智能动作的交易捕捉的数据映射回由主机组织提供的云平台实体的能力。
当新的区块链协议证明166被应用于有效的分叉时,其规则和配置被应用于该分叉和所有后续子分叉的所有后续标准块,其中,允许额外的分叉,并且被参与节点强制执行,就好像分叉的区块链是原始的主要区块链一样。对于试图为特定群体应用一组专门的规则或配置的特定客户,例如,工作组、特定的交易子类型、或不需要或不希望完全独立的“侧链”的主要区块链的一些其他变体,这种分叉可能是所希望的。分叉的区块链与侧链是不同的,因为它仍然是同一区块链协议的一部分,并且在分叉块143处与主要区块链永久连接,返回的分叉散列149返回并不变地写入主要共识区块链,其中,它将经由主要区块链的所有后续标准块的链散列方案而保留。非常简单地说,分叉的区块链经由分叉块143明确地连接到主要区块链。相反,侧链可以是完全不同的区块链协议,对于该协议,商定的交换率或转换因子被应用于在主要区块链和任何侧链之间传递的所有信息或值,而没有嵌入在主要区块链中的任何显式引用或分叉散列149。
因此,侧链是一种机制,通过这种机制,来自一个区块链的资产、令牌、价值或有效载荷条目的声明的智能动作可以通过预先定义的交换或转换方案在完全独立的区块链安全地使用,然而,如果需要,可以被允许移回原始链。按照惯例,最初的区块链被称为主链或主要区块链,而允许用户在其中使用主链的令牌、值或有效载荷进行交易的任何额外区块链被称为侧链。例如,可能有一个与公共区块链有定义链接的私有区块链,从而允许令牌、值或有效负载数据在公共区块链和私有区块链之间安全地移动。
例如,考虑主机组织使用先前存在的区块链来实现由区块链元数据定义管理器196提供的服务。利用现有的区块链可能是有利的,但是然后专门为区块链元数据定义管理器196提供的服务创建专门的侧链或分叉的区块链,仍然符合主要(共识)区块链所要求的区块链协议证明166。在其他情况下,可以使用修改的分布式分类账技术,例如,图1C中的共享分类账157,其是完全在主机组织控制下的托管分类账,因此,可能没有必要从主链进行侧链。其他示例可以包括主机组织为公共区块链提供和定义区块链协议,在这种情况下,主机组织可以定义以这样一种方式使用的区块链协议,即区块链元数据定义管理器196(例如,参见图1A)的扩展能力是协议本地的,因此不需要侧链,或者相反,主机组织可以定义和操作公共区块链,该公共区块链具有对公众可用的有限功能子集,然后通过将公共区块链侧链分离来扩展区块链元数据定义管理器196的能力,以提供增强的功能。
根据所描述的实施方案,定义分叉链的协议规则的区块链协议证明166可以用任何相关的编程或脚本语言开发,例如,Python、Ruby、Perl、JavaScript、PHP、Scheme、VBScript、Java、Microsoft.Net、C++、C#、C或一种用于定义协议规则的自定义语言。
在正常操作条件下,即使是传统的区块链也不时自然分叉,然而,对于先前已知的区块链,最终只有单个分支可能形成主要共识链,所有其他分叉必须忽略或截断,只有主要共识区块链被认为是有效的。通过选择最长链,可以就哪个链是有效的达成共识,因此,最长链表示区块链投入最多的工作来完成。因此,有必要利用本文所述的分叉块143,以允许经由分叉散列149创建允许的分叉链并证明为授权的分叉,从而防止参与节点忽略或截断分叉。因为每个节点可以独立地验证分叉的区块链,所以不会被忽略,就像在达成共识后不会忽略已验证的主要区块链一样。
根据所描述的实施方案,图2B描绘了具有侧链的额外细节的另一个示例架构201。在该示例架构中,区块链共识管理器191和权限管理器181操作,以支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
更具体地,本文描述了一种机制,通过该机制来执行从母区块链188(例如,主链)到侧链189的对称双向固定传输,侧链可以是由主机组织110支持并提供的不同的区块链协议,或者侧链可以是外部区块链、公共或私有的,主机组织110的侧链交换管理器193作为节点参与其中,以便允许对侧链的访问和交易能力。
无论如何,根据所描述的实施方案,可以根据每个相应区块链的规则和条件允许地执行母区块链188和侧链189之间的链间转移。值得注意的是,如本文所描述的,每个区块链的视角是可互换的,以至于本文所描述的侧链189可以认为自己是主要或母区块链,并且认为所描述的母区块链188是子区块链或侧链。无论如何,每个区块链都是独立运作的,但都有一个定义好的交换机制,通过该机制,可以在它们之间交换资产、硬币、令牌、价值或其他有效载荷信息,这些信息是通过使用声明的智能操作的交易创建的。
如本文所示,在操作151,主机组织的侧链交换管理器193可以发送母链资产,作为母区块链188的输出。
生成与母区块链188资产相关联的简化支付验证(SPV)证明181,作为输出,并传送给侧链189。SPV证明可以包括工作的阈值水平,并且可以在预定的时间段内发生生成,该时间段也可以被称为确认周期152。链之间转移的确认周期可以是硬币、令牌或其他交换价值在成功转移到侧链189之前被锁定在母区块链188上的持续时间。这个确认周期可以允许创建足够的工作,以便在下一个等待周期中拒绝服务攻击变得更加计算困难。
例如,考虑可能在1-2天的量级的示例性确认周期。在这样的示例中,确认周期可以被实现为每侧链安全参数,该参数权衡跨链传输速度,以换取更高的安全性。在实现足够困难的工作条件证明的情况下,可以使用更短的其他确认周期,以确保足够的安全性,从而保护区块链的完整性并消除欺诈交易的可能性。
在母区块链188上创建的输出可以经由规则和配置参数(例如,存储在母区块链188的每个块的区块链协议证明部分中)指定除了管理母链内的转移的规则之外,由输出在将来接收的资产的任何花费、转移或消费都有额外条件的要求。例如,输出接收到的任何资产释放可能需要额外的条件来验证来自目的地链的证明,例如,验证目的地链证明的规则显示目的地链已经释放了资产并且显示资产已经被释放到哪里。在母区块链188上创建输出之后,用户等待确认周期,同时,链内转移153继续发生。在等待确认周期122之后,参考来自母区块链188的输出,在侧链189上创建交易。
使用侧链验证器服务的侧链(例如,主机组织的块验证器192)然后被提供SPV证明,该SPV证明显示母链资产是由母链内的足够工作创建和阻碍的。侧链验证器服务(例如,块验证器192,如果由主机组织的可用服务执行的话)然后将验证与母区块链188资产相关联的SPV证明满足在操作154由SPV证明指示的所需工作阈值水平,然后,生成对应于母区块链188资产的侧链189资产。
在操作154,所生成的侧链189资产也可以保持预定的竞争周期,在此期间,如果在母区块链中检测到与母区块链188资产相关联的重组证明183,则转移将无效。
操作154处的竞赛周期可以是一段持续时间,在此期间,新转移的令牌、硬币、价值或有效载荷数据不会在侧链189上花费、访问或消费。实施预定的竞赛周期,以通过在重组期间转移先前锁定的硬币、令牌、价值或有效载荷数据来防止母区块链188中双重花费的任何可能性。如果在该延迟期间的任何时间点,发布新的SPV证明184(称为“重组证明”),包含具有更多聚合工作的链,该链不包括创建SPV锁输出121的块,则转换被追溯无效。如果没有检测到重组证明,则可以释放侧链资产。如果可能的话,侧链上的所有参与节点都有产生重组证明的动机,因为被接受的错误证明的结果降低了所有侧链令牌、硬币的价值,或者降低了对侧链189存储的有效载荷数据的真实性的信任。
类似于上述,操作156处的示例性竞赛周期126也可以是1-2天的量级。为了避免这些延迟,只要有流动性市场,用户可以使用原子互换进行可替代的转移。如果交换的资产是唯一的或不太常见的令牌、值或有效载荷数据,原子交换将不可行,必须进行侧链转移,尽管可能需要1-2天的等待期。
在最终释放侧链资产时,对应于母链资产的侧链资产然后可以在侧链内转移或消费一次或多次侧链189的链内转移123。当锁定在母区块链188上时,资产可以在侧链内自由转移,并且不需要与母区块链188进行任何进一步的交互,因此允许侧链189再次完全独立地操作。尽管如上所述,侧链资产保留其作为母链令牌、硬币、价值或有效载荷数据的身份,因此,如果需要,可以转移回侧链资产起源的始发母区块链188。在某些实施方案中,转移仅被归入单跳,使得资产不能被转移到侧链189,然后再次转移到另一侧链,其中,需要防止混淆来源。这种限制取决于所选择的特定区块链协议和在母区块链188和侧链189之间建立的定义交换协议(例如,固定条件)。
在需要赎回母区块链188中的侧链资产的情况下,侧链资产可以被发送到侧链的输出,如操作157所示。因此,生成与侧链资产相关联的SPV证明182,并将其传送给母区块链188。在操作156,母链验证器服务(例如,主机组织110的块验证器192)可以验证与侧链资产相关联的SPV证明182。与侧链189资产相关联的经验证的SPV证明182可以包括例如验证与侧链资产相关联的SPV证明182满足由与侧链资产相关联的SPV证明182指示的工作阈值水平。
如前所述,在步骤129,与侧链资产相关联的母链资产可以保持第二预定竞争周期,在此期间,如果在侧链中检测到与侧链资产相关联的重组证明183,则在操作128拒绝释放母链资产,其中,竞争周期结束。如果没有检测到与侧链资产相关联的重组证明183,则可以释放母链资产。
如果发生关于新的第二SPV证明184的验证失败,则在接收到重组证明183之后,在操作159,与侧链资产相关联的新的第二SPV证明184可以由母区块链188在第三预定竞争期间接收和验证。如果在第三预定竞争周期期间没有检测到与侧链资产相关联的重组证明,则可以释放母区块链188资产,在此之后,母链资产可以经由在母区块链188流程的最右侧示出的所示链内转移123在母链内自由转移。
由于固定的侧链可能携带来自许多不同区块链的资产,对其他外部区块链的安全做出假设可能会有问题。因此,根据某些实施方案,要求不同的资产在侧链中是不可互换的(除非通过明确的交易)。否则,恶意用户可能通过创建具有无价值资产的无价值链来潜在地执行欺诈交易,然后继续将无价值资产从其无价值链移动到主要区块链188或主要区块链188与之交互并进行交换的侧链189中。这假定无价值链确保与侧链的固定交换协议。然而,因为侧链189的规则、配置选项和安全方案不受母区块链188的控制(假设侧链是外部侧链,而不是由主机组织110提供的另一区块链协议),所以不能确定地知道与之交互的侧链189不包含这样的漏洞。为了消除这种潜在的安全漏洞,根据固定的交换协议,可能需要侧链189将来自单独的母区块链的资产完全视为单独的资产类型,如图1B的元素167所示的区块链协议块的块类型部分所示。
利用对称双向固定侧链转移,母区块链188和侧链189都可以在彼此上执行数据的SPV验证服务,尤其是在母区块链188由主机组织提供并且侧链是外部侧链的情况下,对于该外部侧链,主机组织仅仅是经由侧链交换管理器节点193的参与节点。因为母区块链188客户端(例如,参与节点)不观察每个侧链,所以用户将工作证明从侧链导入母链,以证明拥有。在对称的双向固定中,情况正好相反。例如,为了使用比特币作为母区块链188,可以使用扩展脚本来识别和验证这种特殊目的SPV证明。为了促进此类交易,特殊目的SPV证明的尺寸足够小,以适合比特币交易的有效载荷。然而,如前所述,这种变化可以替代地实现为分叉交易,而不影响不涉及固定侧链交易的交易。换言之,使用如上所述的对称双向固定侧链,不需要对比特币内任何被视为有效的交易施加进一步的限制。
通过使用这种固定的侧链交易,独立的区块链变得足够灵活,可以支持许多资产,包括链最初创建时不存在的资产。这些资产中的每一项都可以贴上转移区块链的标签,以确保可以正确解除(例如,转回)转移。
根据某些实施方案,竞争周期的持续时间根据母链和侧链的相对散列能力进行,使得接收侧链(或具有传入转移的母区块链)可以仅解锁令牌、硬币、价值或数据有效载荷,给定其自己的工作证明的一天价值的SPV证明,这可以例如对应于发送区块链的工作证明的几天。特定侧链的区块链协议实现的安全参数因此可以被调整到每个特定侧链的实现。
根据所描述的实施方案,块验证器192可以对需要验证的块要求、利用或应用各种类型的共识管理。
当包含特定资产或交易的块将被添加至区块链时,使用将被添加至区块链的特定资产或交易的类型来查询交易类型数据库,以确定将用于将特定资产或交易或包含特定资产或交易的块提交到区块链的相应共识协议类型。例如,在数据库中,“贷款”的交易类型可以与“股份证明”(PoS)的共识协议类型相关联,“文件”的资产类型可以与“拜占庭容错”(BFT)的共识协议类型相关联,“货币”的资产或交易类型可以与“工作证明”(PoW)的共识协议类型相关联,并且在数据库中未列举的交易类型的情况下使用的默认交易类型可以与默认共识协议类型相关联,例如,PoS。另一交易类型可以对应于其中存储有元数据的资产类型,可能被键入为“元数据”,而密切相关的交易类型将“相关实体”存储为区块链内的元数据,如果其与普通元数据共享相同类型,则具有“元数据”的交易类型,或者如果分离,则具有“相关实体”的交易类型。此外,“存储的记录”交易类型可用于存储具有嵌入其中的多个不同数据元素的记录,这些数据元素通常由应用开发人员指定的元数据来定义。
例如,当具有对应于利用声明的智能动作的交易的特定交易类型的块或块内的交易将被添加至区块链时,用于将其中的块或交易提交给区块链的共识协议类型是PoS,当其中具有包括类型“文档”的特定资产的块或交易将被添加至区块链时,用于将其中的块或交易提交给区块链的共识协议类型是BFT,并且当其中具有数据库中未指定的交易类型的特定交易的块或交易将被添加至区块链时,则PoS的默认共识协议类型将用于将其中的块或交易提交给区块链。
该选择的共识协议类型可以被传送到联合体中的节点,用于验证向区块链添加其中的新区块或交易的请求。根据某些实施方案,当联合体中的节点根据所选择的共识协议达成共识以将其中的块或交易添加至区块链并将其传达给主机时,主机组织110接收将其中的新区块或交易添加至区块链的请求的验证。
任何相关因素可用于确定哪些节点参与共识协议,包括例如所选共识协议本身、特定节点的计算资源、特定节点在联合体或所选共识协议中的股份、特定节点具有的相关(领域)知识、该知识相对于区块链或联合体是在内部(链上)还是在外部(链外)、特定节点的先前或历史性能(无论是在速度还是准确性方面)、或没有参与所选择的共识协议、被添加至区块链的新区块的区块号、新区块中的交易数量、区块的大小以及被添加至区块链的区块中的资产或交易的信托或非信托性质。
根据特定实施方案,主机组织110从对等网络中的一个或多个节点中的每一个接收加权投票,以响应于该请求,或响应于区块链平台主机发出的投票请求,验证或向区块链添加新的块或交易。这些节点通过由生成请求的节点广播的区块链协议分组,或者通过与联合体中的其他节点或区块链平台主机的通信来获知该请求,该主机结合或组合由区块链平台主机发送的投票请求来提供该请求的通知。然后,当接收的加权投票的总和超过阈值时,主机组织响应性地验证或接收将其中的新区块或交易添加至区块链的请求的验证。
根据另一个实施方案,节点的联合体参与私有的或许可的区块链,其中,每个节点被分配一个权重,将给出其投票,例如,基于关于交易或交易类型的域(一般)知识,节点可以添加至区块链的新区块。在这种允许的区块链内,某些节点可以被赋予零权重,而其他节点可以被赋予如此大的权重,以至于当与有限数量的其他高权重节点组合时,其投票接近控制或者甚至是控制,这取决于特定的实现。
在节点将交易添加至区块链的新区块之前,或者在包括交易的新区块可以添加至区块链之前,联合体中的其他节点投票决定将交易添加至区块链的新区块和/或将新区块添加至区块链。当大多数节点同意交易和/或新区块是有效的并且因此可以被接受为主要区块链上的有效块时,交易和/或新区块被添加并被接受到该主要区块链,有时被称为主链或共识链。例如,虽然一个无效区块可能被添加至区块链,但这种无效区块实际上会产生一个未能达成共识的侧链,因此永远不会被接受为主或主要区块链内添加的有效区块。节点被加权,使得可以基于参与私有区块链的一个或多个节点的投票获得或拒绝“多数”,即,可以从参与区块链的不到所有节点获得多数。
根据该实施方案,联合体中的各方例如基于一方的领域知识和/或其他标准,包括例如一方对另一区块链或侧链的参与,就分配联合体中的每个节点的权重w达成一致。联合体中节点的总权重W等于单个节点权重的总和w1+w2+...wn,其中,n是联合体中的节点数。在一个实施方案中,任何一个构件的重量w或w/W的比率可以超过或不超过某个阈值。每个节点的权重归因于相应节点的投票。如果投票节点的权重总和超过某个阈值,则验证交易/新区块并将其添加至区块链。特别地,如果归因于投票的总权重W达到或超过阈值(例如,以w/W的百分比或w的绝对值表示的多个、多数、超多数,无论联合体同意什么),以达成区块链共识,则添加交易/新区块。在该实施方案中,区块链中的节点不需要一致同意将交易和/或新区块添加至区块链,并且实际上,在满足阈值之后,节点不需要开始或继续参与投票过程。
在一个实施方案中,至少最小数量的节点k投票决定将交易添加至区块链的新区块,或者将包括该交易的新区块添加至区块链,以减轻欺诈或双重花费的风险,或者防止具有大权重w的一个节点或具有集体大权重的一小组节点控制投票的结果。在一个实施方案中,参与投票的节点数量k或比率k/n必须满足最小阈值。
图3A描绘了根据所描述的实施方案的示例架构300。在该示例架构中,区块链共识管理器191和权限管理器181操作,来支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
如本文所描绘的,再次存在主机组织110,其包括具有处理器和存储器(例如,在数据库系统130的执行硬件、软件和逻辑120内)的托管计算环境111,用于操作包括区块链共识管理器191和区块链元数据定义管理器196的区块链服务接口190。还描绘了索引316,其为写入或交易到区块链的数据、元数据和记录提供寻址能力。
另外描绘了多个租户组织305A、305B和305C(有时也称为客户组织),每个租户组织具有租户客户端装置306A、306B和306C,租户和租户的用户可以经由这些装置与主机组织110及其服务交互。例如,租户组织可以向主机组织提交查询或数据311,以请求从区块链获取数据或将数据存储到区块链,两者都可以利用所描绘的索引316。
根据某些实施方案,索引316实现Merkle树索引或Merkle有向无环图或“Merkle-DAG”树索引。在密码学和计算机科学中,散列树或Merkle树是一种树,其中,每个叶节点都用数据块的散列标记,每个非叶节点都用其子节点的标签的加密散列标记。这种树允许对大型数据结构的内容进行有效和安全的验证,因此为从大型数据结构中获取数据提供了显著的效率。根据这样的实施方案,经由Merkle树或Merkle-DAG树实现索引316递归地将索引定义为散列列表的二叉树,其中,父节点是其子节点的散列,而叶节点是原始数据块的散列。Merkle-DAG树允许不平衡的树,并允许叶(终端)节点中的数据。
经由Merkle树实现索引316提供了一种方法来证明存储在索引中的数据的完整性和有效性,需要相对较少的内存或磁盘空间,因为证明在计算上是容易和快速的,此外,对Merkle树索引的证明和管理只需要通过网络传输非常少或极少量的信息,因此在网络资源消耗方面操作效率更高。尽管许多区块链严重依赖于使用Merkle树来进行块验证,但是利用Merkle树实现的索引316与区块链的块验证功能无关,并且在本文用作存储索引316信息的健壮且有效的手段。
图3B描绘了根据所描述的实施方案的另一个示例架构301。在该示例架构中,区块链共识管理器191和权限管理器181操作,来支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
还有主机组织110,其包括具有处理器和存储器(例如,在数据库系统130的执行硬件、软件和逻辑120内)的托管计算环境111,用于操作包括区块链共识管理器191和区块链元数据定义管理器196的区块链服务接口190。还描绘了索引316,其为写入或交易到区块链399上的数据、元数据和记录提供寻址能力。
如图所示,索引316存储在主机组织的数据库系统130中,然而,Merkle树索引316也可以被写入并存储在区块链本身上,从而使得法访问主机组织的查询接口180的区块链的参与节点能够获取Merkle树索引316(当存储在区块链上时),然后使用从Merkle树索引316获取的地址直接引用区块链上的可寻址块来获取期望的记录、数据或元数据,而不必遍历整个区块链或在区块链搜索所需的记录。
如图所示,在区块链399的最后一个标准块142中示出了另一索引316。只需要一个索引316,但是索引316可以被允许存储在任一位置。
在底部更详细描述的Merkle树索引316示出了具有散列ABODE的0级Merkle根,随后是具有两个散列节点的散列层,第一个散列节点具有散列ABC,第二个散列节点具有散列DE,随后是由散列A、B、C、D和E标识的数据叶内的数据块,每个数据块包含区块链上的可寻址块的寻址信息。
经由区块链元数据定义管理器196结合Merkle树索引316的使用在区块链399上存储数据和元数据比先前已知的数据存储方案更有效,因为不需要搜索区块链的多个块141和142来获取数据记录。相反,首先搜索索引316以获取期望块的地址,这是非常快速和有效的,然后使用从索引316获取的地址,直接从区块链399上的可寻址块获取记录。
由于使用传统技术将数据存储在区块链内,区块链的数据量在存储数据总量方面呈爆炸式增长,产生了可扩展性问题,并导致有问题的低效率。存储到区块链的数据总量往往会随着时间的推移而爆炸式增长或不可持续地增长,因为每次更新或修改存储的记录时,都需要将修改后的整个记录重新写回区块链,然后该记录将成为最新的记录,然而,所有以前的版本和副本都保留在区块链内,从而导致存储大量重复的数据条目。这种方法的好处是,可以从区块链的单个区块中获取整个记录,而不必为了同一记录而查阅区块链的先前区块。但是这种存储方案在存储方面效率很低。
或者,根据传统方法,可以仅存储对存储在区块链内的记录的修改,从而导致修改后的数据被写入区块链上的新区块中,不可修改的数据可从区块链的先前块中获取。这种方法减少了区块链存储的数据总量。不幸的是,对修改后的记录进行任何数据获取都需要从区块链的多个区块进行检查和获取,从而缓解了数据冗余和不可持续增长的问题,但却用这个问题换取了令人不快的数据获取低效问题。
这样,存储在区块链399中的记录和信息的数据管理得到了改进。此外,元数据可以另外存储在区块链内,以提供关于存储的记录的额外信息和上下文,其中,每个数据记录和描述这种数据记录的元数据通过使用索引316更容易获取。这种元数据允许企业或其他实体将从区块链获取的数据记录转换回可用格式,这比传统方法容易得多,传统方法丢失了写入区块链的任何记录的这种上下文和元数据。
图3C描绘了根据所描述的实施方案的另一个示例性架构302。在该示例架构中,区块链共识管理器191和权限管理器181操作,来支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
还有主机组织110,其包括具有处理器和存储器(例如,在数据库系统130的执行硬件、软件和逻辑120内)的托管计算环境111,用于操作包括区块链共识管理器191和区块链元数据定义管理器196的区块链服务接口190,该管理器利用索引316来识别区块链399的可寻址块,经由该区块链存储所需的记录。另外描述了在区块链399的第二到最后一个块处的示例性存储记录390。
在此处,存储记录390存储学生信息,包括学生名字315A、学生姓氏315B、学生电话号码315C和学生ID 315D。
一旦存储的记录390被交易到区块链,例如,通过将资产添加至包含存储的记录390的区块链,学生数据被区块链持久地存储,并且可被访问区块链399的参与节点访问,然而,当获取到这样的数据时,存储的记录本身并不描述如何使用这样的数据、这样的数据的任何特定格式或者如何验证这样的数据。因此,进一步允许在区块链内存储元数据,该元数据然后可以用于定义格式、验证手段以及用于这种数据,但是元数据的存储只会加剧从区块链搜索和获取数据的问题,因为现在存在存储的记录390以及与该记录相关联的存储的元数据391。因此,由区块链元数据定义管理器196实现的索引方案结合索引316的使用提供了一种组织方法,索引316为存储在区块链上的数据提供了更有效的存储、获取和验证。
根据一个实施方案,存储的记录390因此被转换成更有效的格式,以存储在区块链内。考虑存储学生信息的存储记录390。最初,存储的记录390可以仅包括学生名字315A和学生姓氏315B,然后被存储。随后,更新学生记录,以包括学生电话号码315C,并且因此,更新存储的记录390并且被全部重写到区块链,从而创建存储的记录390的第二副本,尽管被更新,或者可替换地,只创建新的部分,学生电话号码315C被写回到区块链,参考先前的记录,在这种情况下,总存储量减少,但是整个记录的获取需要在区块链上搜索并找到多个块,从这些块重建整个存储的记录390。更糟糕的是,如果随后分配学生ID 315D,则存储的记录390需要再次更新,从而将另一完整的存储的记录390写入区块链,导致现在在区块链上有三个不同的版本和副本,或者像以前一样,仅将存储的记录的新部分写入区块链399,在这种情况下,存储的记录390被分割成区块链的至少三个块。
这种分割是有问题的,因为如果正在查找学生信息,可能会导致第一块包含学生的名字和姓氏,第二块包含因更新而更改的学生姓氏,第三块仅包含学生的电话号码,诸如此类。因此,有必要遍历区块链的块,以拾取所有碎片,以便在整个存储的记录390可以用于任何需要数据的应用之前重建该记录。
图3D描绘了根据所描述的实施方案的另一个示例架构303。在该示例架构中,区块链共识管理器191和权限管理器181操作,来支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
根据一个实施方案,区块链元数据定义管理器196通过与区块链交易资产或经由与区块链的新交易将资产添加至区块链,将数据或元数据写入区块链。根据特定实施方案,交易具有特定的交易类型,例如,被定义为区块链存储交易类型,其触发智能合约的执行,以执行交易的验证,并且具体地执行被添加至或交易到区块链的资产内的数据或元数据的验证。
例如,这样的智能合约363可以经由主机组织的区块链服务接口190执行,该接口执行验证,然后根据存储在区块链的资产内的数据或元数据的成功验证,将新资产交易到区块链。如本文在元素363所示,智能合约执行并验证区块链的交易。随后,有效交易364被添加至或交易到区块链399上。
图4A描绘了根据所描述的实施方案的另一个示例性架构400,其具有利用智能流合约引擎405创建的区块链实现的智能合约的额外细节。在该示例架构中,区块链共识管理器191和权限管理器(未示出)操作,来支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
特别地,本文在主机组织内描绘了区块链服务接口190,其现在包括智能流合约引擎405并且另外包括GUI管理器410。
由于区块链使用分布式分类账,智能合约的创建和执行在技术上可能很复杂,尤其是对于新手用户。因此,智能流可视化设计器允许更容易地实现智能合约。所产生的智能流合约具有数学上可验证的自动生成代码,如由区块链转化器430创建的,从而使客户和用户不必担心在任何给定的区块链协议中使用的编程语言。此外,智能流合约引擎实现了与区块链转化器430协调的视觉设计器,以生成能够在区块链的每个参与节点上执行的必要的本地代码,从而进一步允许容易处理和验证智能合约。根据某些实施方案,每个智能流合约利用基于数学代码的可验证加密方案。
流程设计器通过基于GUI的引导式流程设计体验,为用户提供简单、直观、基于网络的接口,用于设计应用程序和定制流程。流程设计器甚至可以让新手用户创建复杂的功能,而不需要编码专业知识或熟悉区块链。
GUI管理器410向用户装置呈现流程设计器GUI 411,用户可以经由该接口与主机组织交互。智能流合约引擎405与GUI管理器协作,解译用户提供的各种规则、条件和操作,以生成智能流合约,然后将其转化或写入目标区块链协议。
通过流程设计器GUI 411,用户可以利用可视流元素完全定义特定过程、事件、协议、合约、购买或一些其他交易需要如何发生,包括依赖性、检查、所需的过程输入和输出、触发器等。
使用流程设计器GUI 411,用户简单地拖放操作块并定义各种条件,“如果,则”事件,例如,如果该事件发生,则采取该动作。如本文所描述的,存在各种用户定义的智能合约块,包括用户定义的条件421、要监控的事件421、“如果”,则“否则”触发423和资产标识符424。
一旦用户已经完成定义包括其所有操作块、条件、触发器和事件的流,则智能流合约引擎就获取每个单独的块,并经由区块链转化器430将其转化成本地目标区块链协议,然后生成交易,以经由区块链服务接口190将转化后的智能流合约445写入区块链440。
一旦交易到区块链,区块链的每个参与节点都将拥有智能合约的副本,因此,如果发生任何给定事件,所有参与节点都可以查看相应的触发器或规则或条件,其中一些节点随后可以根据智能合约定义的事件采取行动。
主机组织的区块链服务接口190向客户、用户和订户提供对不同区块链的访问,其中一些由主机组织110管理,例如,私有的区块链,其他的是可通过主机组织110访问的公共区块链,主机组织作为这样的公共区块链上的节点参与。无论如何,每个区块链都使用不同的区块链协议,并且有不同的规则、配置和可能不同的语言,接口必须通过这些语言与相应的区块链通信。因此,本文描述的区块链转化器430将用户定义的智能合约块转化成目标区块链440的本地或所需语言和结构,在目标区块链上将写入或交易最终的智能合约。
一旦智能合约被交易并广播到区块链445,就在区块链内执行,然后执行和实施由用户定义的智能合约块阐述的规定。
根据一个实施方案,利用Salesforce.com视觉流程设计器来生成用户定义的智能合约块,然后将其转化成区块链智能合约。根据其他实施方案,利用不同的视觉流程设计器,并且区块链转化器430将用户定义的智能合约块转化成区块链智能合约。
所得到的本地区块链协议智能合约元素435可以包含在由智能合约将被写入的区块链440规定的代码、结构或语言中。例如,如果智能合约将被写入以太网,则区块链转化器430必须将用户定义的智能合约块转化成符合以太网的“可靠性”编程语言。可靠性是一种面向合约的高级语言,专门用于在Ethereum上实现智能合约。受C++、Python和JavaScript的影响,该语言旨在针对以太网虚拟机(EVM)。智能合约元素包括支持投票、众筹、盲目拍卖、多签名钱包以及许多其他功能。
相反,如果要将智能合约写入超级账本,则语言不同,使用Go编程语言,该语言允许将分布式分类账区块链用于智能合约以及其他功能。
虽然智能合约是有益的,并且得到了许多区块链协议的支持,但是根据所针对的特定区块链,它们可能难以实现以不同语言编程的要求。因此,用户不仅必须理解编程结构,而且还必须理解所讨论的区块链协议所需的编程语言的特殊语法细微差别。
通过利用智能流合约引擎405,即使是新手用户也可以通过与流程设计器一起生成智能合约元素,然后利用区块链转化器430来实际呈现包含用户定义的智能合约元素的本地区块链编程语言代码,来创建兼容的智能合约,随后区块链服务接口190处理智能合约到区块链的交易。
例如,考虑供应商向Home Depot销售产品,并希望与使用Ethereum的Home Depot签订智能合约。供应商登录到主机组织,假设他是经认证的用户并且可以访问云订阅服务,然后访问智能流合约引擎405,用户可以通过该引擎生成他想要的任何流。当完成时,用户经由流程设计器GUI 411指示区块链服务接口190执行智能合约,从而使智能流合约引擎将用户定制设计的智能流合约转化成符合以太网的“可靠性”代码,随后智能合约被写入区块链,以供执行。供应商不需要知道如何编程,甚至不需要了解与区块链交易的细节。相反,可通过主机组织110访问的基于云的服务消除了该过程的复杂性,并向用户呈现简单的流程设计器GUI 411,由此可以通过该GUI执行所有必要的操作。
根据这样的实施方案,向区块链写入智能合约需要在区块链存储定义智能合约的元数据,如特定区块链协议所支持的。根据一个实施方案,当交易发生在其中具有智能合约的元数据的区块链上时,执行智能合约,然后实现各种用户定义的智能合约事件、条件和操作。
根据某些实施方案,已经被转化和交易到区块链上的用户定义的智能合约触发在主机组织内的事件。
例如,考虑沃尔玛和雀巢达成协议,货物必须总是在35至39华氏温度范围内的气候控制拖车内运输。此外,如果温度在任何时候超过39°,则付款无效。
在主机组织内,客户关系管理(CRM)平台定义并管理客户、供应商、潜在客户、供应商等之间的各种关系和交互。术语CRM通常是指CRM系统,这是一种帮助企业进行联系管理、销售管理、工作流程、生产力等的工具。
在沃尔玛和雀巢的上述示例中,CRM系统将拥有装运要求。因为主机组织通过CRM系统监控装运并订阅装运事件,例如,温度数据,CRM系统将监控并意识到特定装运的温度相关事件,然后该事件可以自动链接回智能合约。更具体地,因为主机组织作为智能合约正在其中执行的区块链的参与节点来操作,所以主机组织能够看到经由区块链可访问的智能合约条款和条件以及装运的CRM要求,例如,所需的温度范围。
因此,一旦出现智能合约条件违规,主机组织将根据执行智能合约的条款,将违规与CRM系统(不属于区块链)同步,以停止与该特定装运相关的付款。
根据一个实施方案,区块链发送主机组织的CRM系统将监听的事件,然后根据用户定义的智能合约流指定的内容,基于该事件进行一些实质性动作。就上述示例而言,实质性行动是根据关于区块链的智能合约停止支付运费。
执行智能合约的每个参与方将可能使其相应的CRM系统订阅与执行智能合约相关联的区块链事件,因此,双方都可能知道该事件。
根据一个实施方案,逻辑被写入到CRM系统中,以便于响应区块链事件的特定动作。换言之,非区块链行动可以根据正在执行的区块链智能合约进行。
图4B描绘了根据所描述的实施方案的另一个示例架构401,具有利用Apex转化引擎455创建的区块链实现的智能合约的额外细节。在该示例架构中,区块链共识管理器191和权限管理器(未示出)操作,来支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
如本文所描述的,在区块链服务接口190内有一个Apex转化引擎455。
Apex是Force.com平台为开发人员提供的编程语言。Apex与Java和C#相似,因为它是一种强类型的、面向对象的语言,使用点符号和波形括号语法。Apex可用于在Force.com平台的大多数过程中执行编程功能,包括自定义按钮和链接、记录插入、更新或删除的事件处理程序、经由调度或经由Visualforce页面的自定义控制器。
Salesforce.com主机组织的开发人员经常利用Apex来实现SQL编程、数据库交互、GUI接口的自定义事件、报告生成以及大量其他功能。因此,存在与主机组织110相关联的大量开发人员,他们非常熟悉Apex,并且更喜欢用Apex语言编程,而不是必须使用不太熟悉的编程语言。
有问题的是,智能合约必须以区块链协议的本地语言编写,以便在相应的区块链执行智能合约。
例如,如上所述,如果要将智能合约写入Ethereum,则智能合约必须使用符合Ethereum的“可靠性”编程语言编写。
和智能合约一样,Apex也是一种元数据。因此,Apex转化引擎455允许熟悉Apex的开发人员利用Apex编程语言而不是利用本地智能合约协议编程语言来为区块链编程其智能合约。
如此处所述,开发人员利用Apex编程语言编写其智能合约,然后经由所描绘的Apex代码接口,例如,通过上传开发人员的Apex代码嵌入其中的文本文件,来向Apex转化引擎455提供Apex输入456。
Apex转化引擎455解析Apex输入456,以识别Apex定义的智能合约块,并将其分解,为转化做准备。如此处所述,还有Apex定义的条件471、要监控的Apex事件472、“如果”则“否则”Apex触发器473、以及如前所述,不是Apex特定的资产标识符424。
然后,Apex定义的智能合约块被提供给Apex块转换器480,该转换器将它们转换成目标区块链协议的本地区块链协议智能合约元素435。一旦被转化,该过程如上所述,其中,转化的智能合约被交易并广播445给区块链440,以供执行445。
与可视化流GUI不同,由于Apex是程序化的,编写Apex代码的用户可以编写程序,以在智能合约上执行,并且不受可视化流GUI内可用功能的限制。
根据特定实施方案,Apex输入456首先被转化成JavaScript,随后被转化成适用于目标区块链协议的特定区块链API接口,智能合约将在该协议上执行。
根据另一个实施方案,可以使用Apex语言编写并在Apex输入456中提供监听事件,然而,这种监听事件将由主机组织执行。因此,Apex块转化器480分离出任何已识别的Apex监听器478,并将其返回给它们可能所在适当的CRM系统或其他事件监控系统中实施的主机组织110。以这种方式,开发人员可以将Apex输入456编写为单个程序,而不必在单独的系统中单独创建智能合约以及相关的监听事件。
图4C描绘了根据所描述的实施方案的另一个示例架构402,其具有利用Apex转化引擎455用于持久存储到区块链的记录的SQL过滤和查询转化器的额外细节。在该示例架构中,区块链共识管理器191和权限管理器181操作,来支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
如本文可以看到的,现在存在Apex转化引擎455,该引擎将接收针对主机组织110的查询接口180提交的SQL过滤器或SQL查询,然而,对于由区块链440持久保存的记录,查询接口180需要将一些工作委托给区块链服务接口190。
有问题的是,由于区块链不是关系数据库系统,所以区块链根本没有能力接收、处理或交易基于SQL的查询或过滤器。然而,主机组织110至少部分地在向用户提供更大的技术能力(例如,允许使用区块链440)但使用简化的工具的前提下,向其用户提供按需和基于云的服务,从而不会给主机组织的用户带来技术复杂性的负担。
因此,主机组织实现本文描述的Apex转化引擎455,该引擎结合Apex代码接口454操作,以从主机组织110的查询接口180接收SQL过滤器/查询457。
SQL过滤器/查询457被传送到Apex转化引擎455中,作为其Apex定义的SQL查询和过滤器术语转化块的一部分,该引擎现在被描述为包括SQL术语映射器458,该映射器能够将输入的SQL过滤器/查询457读取、解析和剖析成其组成部分,从而可以引用实际上在区块链的资产中存储各种有效载荷数据的适当的资产标识符424,从而可以从区块链440中获取底层数据记录。
解析的术语和适当的资产标识符424然后通过Apex块转化器480传输,然后在元素459处转换成用于有效载荷数据获取的本地区块链协议。
然后,通过将区块链读取请求461交易到区块链440上,可以针对区块链440执行在元素459处用于有效载荷数据获取的本地区块链协议,导致从区块链440返回在元素462处从区块链获取的有效载荷数据。
由从区块链462获取的有效载荷数据表示的该记录集对于SQL过滤器/查询457不是合适的格式,然而,确实包括最终实现接收的SQL过滤器/查询457所必需的数据。换言之,从区块链的资产中获取的有效载荷数据包括表示被查询的记录的数据,尽管是以与区块链的格式相对应的完全不兼容的格式,通常数据被散列或串行化,因此需要基于从区块链获取的描述存储数据结构的元数据489转换回可读格式。
接下来,从区块链462获取的有效载荷数据返回到Apex转化引擎455,该引擎将来自区块链的数据转换成可读格式。接下来,转化的记录在返回的记录集的临时视图463内被传送到数据库系统130,在该点上,利用原始的SQL过滤器/查询术语或利用转化的和优化的SQL过滤器/查询术语,将SQL查询/过滤器(例如,元素457)应用于数据库系统130处的临时视图463,以便响应于输入的SQL过滤器/查询返回原始请求的记录集。
以这种方式,用户因此可以针对存储在区块链440上的数据发布SQL查询/过滤器,而不需要用户了解如何与区块链交互或如何与区块链交易,实际上,甚至不需要用户知道这些数据存储在区块链440上。
根据一个实施方案,使用SQL过滤器/查询457请求来查询或过滤存储在区块链上的数据,并且更具体地,基于存储在区块链内的数据元素之间的关系来完成所请求的过滤。
然而,值得注意的是,由于区块链不是关系数据库系统,因此区块链资产中存储的有效载荷数据的数据元素之间没有“关系”结构。
然而,这种SQL过滤器/查询457请求可以通过主机组织110基于已定义的元数据489来实现,所述已定义的元数据通过向区块链交易元数据来声明、定义和存储到区块链,以描述例如由已声明应用写入区块链的数据的结构和关系。这种元数据可以通过根据相关实施方案的应用的创建和声明来定义,如下面更详细描述的。
以这种方式,可以定义彼此相关的实体,类似于关系数据库系统中实体彼此相关的方式,区别在于这种记录被写入诸如区块链440等DLT平台。值得注意的是,区块链内的记录并不像关系数据库那样固有地相互关联,而是需要获取数据和定义这些记录的元数据。
因此,根据这样的实施方案,Apex转化引擎455代表区块链转化定义的实体之间的关系,这继而允许主机组织的数据库系统130和/或查询接口180对数据执行必要的JOIN操作,以形成统一的表或JOIN表视图,然后可以对其应用SQL过滤器/查询457请求。
根据特定实施方案,写入到区块链上的任何交易导致叶节点将数据持久化为链外存储的数据库表示,该数据库表示随后可以由Apex转化引擎455与RDBMS格式相关联。
根据这样的实施方案,关系表随后由Apex转化引擎基于从区块链获取到的有效载荷数据和基于在区块链上交易并与获取到的有效载荷数据同时获取到的元数据489来创建。
根据所描述的实施方案,每当定义这种数据的结构的元数据发生变化时,通过将新的元数据定义交易到区块链上来更新元数据变化,因此,对元数据的任何这种变化都被自动转化成对获取到的数据构建的任何RDBMS格式化表,因为Apex转化引擎获取和引用更新的元数据定义。
根据这样的实施方案,一旦由Apex转化引擎构建了RDBMS格式化表,则在主机组织110的数据库系统130上针对构建的RDBMS表查询SQL过滤器/查询457请求。根据另一个实施方案,首先通过从区块链获取元数据489来建立RDBMS表,但是不获取有效载荷数据。随后,将SQL过滤器/查询457请求应用于RDBMS格式化表,并且基于该查询,Apex转化引擎识别在区块链440上存储有效载荷数据的适当资产标识符424,在随后从区块链获取有效载荷数据并将获取到的数据填充到结构化的但为空的先前格式化的RDBMS表中之前,识别区块链上的数据的相应块号。然后,将获取到的有效载荷数据填充到空的RDBMS表中,以便于对现在填充的RDBMS表应用SQL过滤器/查询457请求来实现该请求。
以这种方式,就有可能利用SQL查询对区块链的数据进行查询,并且有可能基于关系使用SQL进行过滤,尽管数据的权威来源最终是写入到区块链440上交易的资产的有效载荷数据,而不是关系数据库系统。
通过创建单独的表视图,该表视图具有保存到区块链的块ID和块号,以便进行任何更改,可以利用该单独的视图执行更快的查找,同时通过利用块ID检查区块链的数据来验证参考数据是最新的,而不必为所讨论的数据在区块链执行时间密集的搜索,因为块ID允许直接参考单个块。
要清楚的是,根据这样的实施方案,有两个查询。通过RDBMS格式化表对数据库系统中的临时视图进行第一次基于SQL的查询,然后执行块ID和块号的快速查找,然后Apex转化引擎返回到区块链,以基于块ID和块号的表查找来验证所查询的数据是当前的和准确的,块ID和块号由Apex转化引擎维护为资产标识符424。
此外,因为数据是以RDBMS格式表示的,所以还允许对存储在区块链内的数据执行JOIN。这种JOIN很重要,因为它们允许利用存储在区块链的数据进行分析,否则这是不可能的。
根据这样的实施方案,数据库系统130中的RDBMS格式化表表示不是不可变的表,然而,它以这样的方式受到限制,即除了下面讨论的Apex转化引擎的交易回放机制之外,没有实体有权对RDBMS格式化表进行改变。
因此,只有区块链监控/事件监听器组件能够更新该表,并在事件监听器观察到元数据的变化或存储到区块链的持久化数据的变化的任何时候,执行从区块链权威来源回到主机组织的数据库系统130中的RDBMS格式化表和临时视图的必要同步。
根据进一步的实施方案,另外还有:交易回放机制,用于在区块链不可访问时处理SQL过滤器/查询457请求;以及恢复机制,用于在区块链永久不可访问或在区块链上的数据极不可能被破坏的情况下恢复区块链数据。
根据这样的实施方案,回放机制允许SQL过滤器/查询457请求由主机组织110处理,而不验证存储在区块链内的数据,以验证临时主机组织对数据的查看是最近的。
当区块链440不可访问时,可能会接收到SQL过滤器/查询457请求。因此,Apex转化引擎与主机组织的数据库系统130一起记录为临时视图添加、更新或删除数据的所有交易。当这种变化在区块链上进行交易时,这些变化会记录为一系列更新,并在主机组织中进行维护。这些变化表示非权威来源,但仍可参考。
因此,在区块链440不可访问的情况下,数据库系统130可以重放记录的对数据的变化,以利用重放的添加、删除和更新交易更新主机组织处的数据的临时视图,从而使临时视图与存储在区块链上的相同数据的权威来源同步。一旦重放完成,就可以针对数据的临时视图来处理SQL过滤器/查询457请求,而不需要Apex转化引擎的中间操作来为存储在区块链上的数据定位资产标识符424,以验证和确认数据是最近的。
因此,可以使用基于SQL的语言查询和过滤器来查询区块链,并且满足SQL过滤器/查询457请求,即使在暂时不能访问区块链的情况下。
这样的交易回放机制允许RDBMS格式化表和临时视图自我修复,并在区块链级别返回到完全恢复的状态,而不需要引用区块链。例如,主机组织的系统将识别出区块链节点已关闭或不可访问,因此,将重放观察到的所有交易,并重新应用元数据来确定正确的状态,类似于区块链上所有参与节点将自我更新的方式,不同之处在于不引用区块链的节点,并且可能比直接从区块链获取状态数据和当前信息慢得多。尽管存在速度损失,但好处是尽管区块链节点关闭,仍然可以获取到有效数据。
根据另一个实施方案,在区块链440变得永久不可访问的情况下,存在用于存储在区块链上的数据的恢复和复原机制。虽然这种情况不太可能发生,但确实提供了在必要时执行数据恢复的机会。还允许从区块链440执行数据迁移的能力,其中,数据作为权威来源保存到新的区块链,如果主机组织或用户希望重新定位其数据。
这种实施方案的操作类似于上面描述的所有记录的交易的回放,增加了这样的额外内容,即一旦回放完成,所有元数据489和来自主机组织的数据库系统130处的临时视图的记录然后被写入恢复的区块链440上或者被写入新的区块链储存库,从而在区块链上创建新的资产,在该资产中记录作为有效载荷数据被持久保存,并且更新这种数据的块ID和资产标识符424,以便在灾难性故障之后或根据有意的数据迁移完全恢复或修复区块链440上的所有数据。
根据特定实施方案,主机组织的事件监听器识别元数据的变化,该事件监听器在区块链寻找影响存储这种元数据的任何资产的变化。因此,一旦元数据根据对交易资产的共识被提交给区块链,区块链服务接口将获取元数据的更新版本,使得用于主机组织110内的临时视图的RDBMS格式化表可以基于元数据的新版本被重新构建。例如,元数据被转化成SQL数据定义语言,然后基于元数据,空的RDBMS数据表或用于填充的表的RDBMS数据表示根据新的元数据利用转化的SQL数据定义语言被重建或重组。
根据所描述的实施方案,每当区块链事件发生时,返回加密数据,然后数据以元数据格式保存。加密数据被转换成其他系统可以理解的格式,例如,使用SQL数据定义或REST标准或某种其他标准化的解密格式,供其他系统参考和使用。然后,该数据被推出到依赖于存储在区块链的数据的其他系统,该数据现在是不可访问的,使得这些系统也可以用数据的临时视图同步任何其他数据库,或者同步来自区块链的影响该数据的事件的任何实体列表。例如,分析引擎可以不断地监听来自事件监听器的数据馈送,以了解区块链的变化,从而可以馈送分析引擎。类似地,AI引擎可以监听馈送,以便可以向AI输入训练数据等。
图5A描绘了根据所描述的实施方案的另一个示例性架构501。在该示例架构中,区块链共识管理器191和权限管理器181操作,来支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
传统的解决方案允许在区块链交易的资产内存储自由形式的文本,例如,将这样的数据存储在资产的有效载荷部分内,然而,因为没有验证这样的数据,所以存在损坏或不正确的数据被写入区块链并且随后在假设这样的数据有效的情况下被获取的风险。
通过执行智能合约来执行在区块链上交易的实体或资产的交易验证,因此有可能在这样的数据被写入区块链399之前实施各种掩码、数据结构、数据类型、数据格式或其他要求。
根据这样的实施方案,区块链元数据定义管理器196执行智能合约验证563,并且如果要写入区块链的数据不符合所执行的智能合约提出的要求,则拒绝565交易,例如,将交易发送回查询接口,以通知交易的发起者。否则,假设交易符合智能合约执行,则验证564交易并将其写入区块链。
根据一个实施方案,智能合约应用数据掩码来验证要写入区块链的数据或元数据的符合性。在其他实施方案中,智能合约实施应用于数据的规则,作为验证过程的一部分。
根据一个实施方案,智能合约作为预定义智能合约系统的一部分执行,该系统与允许使用智能合约的任何区块链一起执行,并且智能合约执行必要的数据验证。
根据一个实施方案,要写入区块链399的数据或元数据被转换成JSON格式,以提高存储效率。JavaScript对象符号(JSON)提供了一种开放标准的文件格式,使用人类可读的文本来传输由属性值对和数组数据类型或任何其他可序列化的值组成的数据对象。这是一种非常常见的用于异步浏览器-服务器通信的数据格式,包括在一些AJ AX风格的系统中作为XML的替代。此外,因为JSON是一种独立于语言的数据格式,所以可以在各种不同的智能合约执行平台和区块链平台上由智能合约验证,而不管这种平台使用的底层编程语言是什么。
因此,如本文所描述的,要写入区块链的数据或元数据可以被转换成JSON格式566(例如,在主机组织110的数据库系统130内),然后,经过验证和转换的JSON数据被交易到区块链上。
图5B描绘了根据所描述的实施方案的用于执行存储数据的动态元数据验证的另一个示例架构502。在这个示例架构中,区块链共识管理器191和权限管理器181操作,来支持读取共识和访问控制过程,如参考图10至图12进一步描述的。
根据某些实施方案,希望提高存储在区块链399上的数据的效率,因此,具有要写入区块链的数据的所有新交易在将新数据写入区块链之前执行数据合并569过程。这是通过首先获取旧数据来执行,例如,来自区块链的先前写入的存储记录,例如,将获取到的数据566拉入主机组织的数据库系统130,然后将获取到的数据566与已经被执行的智能合约检查过的新的有效数据567合并,产生合并数据568。然后,合并数据568被写入区块链,例如,通过将合并数据568嵌入到添加至区块链的新资产中,或者通过更新现有资产并用合并数据568替换现有资产的有效载荷部分,从而将整个更新和验证的记录存储在区块链的一个块上,以便更有效地获取。
根据一个实施方案,数据合并569过程由静态库(protobuf)生成器599执行,除了将获取到的数据566与新验证的数据567合并之外,静态库生成器还减小了数据的总大小。例如,经由用新的有效数据567对获取到的数据566执行动态静态库生成,数据变得非常小和有效。
协议缓冲器(称为静态库或静态库f)提供了用于串行化结构化数据的手段,从而在静态库生成器599处将获取到的数据566和新验证的数据567转换成合并的串行化字节流。这具有额外的好处,即允许对合并的数据进行加密,并以字节流格式提供这种数据,这种格式可由以后获取存储数据的任何其他应用程序轻松使用。静态库生成器599利用接口描述语言,该语言描述要与程序一起存储的数据的结构,该程序根据该描述生成源代码,用于生成或解析表示由获取的数据566和新验证的数据567表示的结构化数据的字节流。
这种方法能够存储和交换各种结构化信息。例如,软件开发人员可以定义数据结构(例如,获取的数据566和新验证的数据567),然后静态库生成器599将数据串行化为二进制格式,该二进制格式是紧凑的、向前和向后兼容的,但不是自描述的(即,如果没有外部规范,就没有办法说出字段的名称、含义或完整数据类型),因此为存储的数据提供了一层加密和数据安全性。
通过这种方式,静态库生成器599提高了网络通信的效率,并改善了与以后可能引用这种数据的其他语言或系统的互操作性。
因此,考虑前面描述的带有学生名字、姓氏、电话号码和学生ID的学生存储记录的示例。
根据特定实施方案,处理从生成描述学生记录的元数据的静态库开始,由试图在区块链上存储数据的应用程序提供和定义,从而产生协议缓冲的学生记录元数据或串行化的(例如,JSON)兼容的学生记录元数据。接下来,处理根据元数据验证存储记录中的学生数据,以确保符合性(例如,通过执行智能合约),然后处理生成存储记录中的学生数据的静态库,从而产生协议缓冲的学生记录数据。接下来,描述学生记录的协议缓冲或串行化元数据和学生记录的协议缓冲或串行化数据都被写入区块链。因此,存储数据的协议缓冲或串行化版本导致在区块链上更有效地存储这种数据。根据这样的实施方案,由用于验证目的的应用定义的元数据也以其协议缓冲或串行化版本存储,从而导致协议缓冲或串行化元数据在区块链上的有效存储。
根据这样的实施方案,数据合并569过程包括向存储的记录添加新字段和新数据,该记录随后被重新写入区块链399,随后使用元数据动态验证新字段。
例如,根据这样的实施方案,处理包括获取获取的数据566,在新的字段中添加,例如,在先前存储的学生的名字、姓氏和电话号码中添加学生新分配的通用ID(例如,通用唯一标识符(UUID)或全球唯一标识符(GUID),作为用于标识主机组织内的信息的128位数字),以便生成合并数据568,随后,通过执行智能合约,处理基于元数据动态地验证合并数据568。如果元数据先前已经被写入区块链,则不需要再次更新或存储元数据,这可能是合并数据568的情况,合并数据将构成更新的记录。因此,只有合并的数据568被写入区块链。如果数据是新的(例如,未获取和未合并),则处理使用应用程序提供的元数据动态验证新数据,然后将新数据和元数据存储到区块链。
由试图将数据存储到区块链的应用程序定义的元数据可以指定例如学生记录具有三个强制字段和一个可选字段,例如,强制的名字、姓氏和学生ID以及可选的学生电话号码,从而允许验证要写入区块链的数据。元数据可以进一步定义数据字段的格式、数据掩码或限制,例如,名称不能有数字,电话号码必须有一定数量的数字等。
多个不同的应用程序可以将数据存储到区块链上,多个不同的应用程序中的每一个为它们相应存储的记录定义不同的元数据,因此允许智能合约执行基于针对相应应用程序的不同定义的元数据来执行不同种类的数据的验证。例如,具有学生姓名、电话号码、UUID的学生记录将具有不同的元数据,要求对具有信用卡号码、到期数据、安全代码等的信用卡记录进行不同的数据验证。无论如何,应用相同的处理,因为动态应用的元数据验证过程与底层数据无关,只要这样的数据符合为要存储的数据记录的数据定义的元数据。
图5C描绘了根据所描述的实施方案的用于存储相关实体的另一个示例架构503。在该示例架构中,区块链共识管理器191和权限管理器181操作,来支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
在如上所述的保存的学生记录的示例中,具有保存到区块链的学生记录,例如,具有学生名字、学生姓氏、学生电话号码和学生ID。还存储了由试图存储学生记录的应用程序定义的元数据,这些元数据用于学生记录的动态验证。
根据进一步的实施方案,相关实体被存储在区块链上并与先前存储的记录链接。例如,考虑存储在区块链的学生记录,为其提供了新的学生成绩单。
如本文所描述的,执行链接相关实体579过程,其中,修改获取的数据572,以添加识别相关实体的UUID字段573,提供相关实体571和先前存储在区块链上并获取572用于修改的数据记录之间的链接。现在导致了还没有存储的具有UUID字段574的数据。接下来,具有链接和识别新的相关实体571的UUID字段574的数据然后被写入并存储在区块链内,导致存储的记录现在具有存储的记录的原始数据,而且还有链接和识别新的相关实体的UUID字段574。接下来,相关实体571作为具有相同UUID数据字段的元数据被写入区块链,从而允许通过首先参考存储记录中的UUID,然后获取作为元数据存储在区块链的链接相关实体571,来随后从区块链获取相关实体571。
因此,如果学生记录定义了学生的姓名、电话号码和学生ID,则该学生的成绩单可以作为元数据存储在区块链上。为要存储的成绩单自动生成新的UUID,然后在学生记录中,更新学生记录中的相关实体字段,以存储为成绩单生成的新的UUID,从而将用识别成绩单UUID的相关实体字段更新的学生记录与作为存储的元数据写入区块链的单独存储的成绩单相链接。以这种方式,可以将任意数量的相关实体添加至区块链,每个相关实体作为元数据存储在区块链内,并且经由相关实体的数据字段链接到另一存储的记录。可以将多个相关实体字段添加至任何记录中,每个字段使用不同的UUID链接并识别所讨论的相关实体。例如,如果学生有一份成绩单和医疗记录,每一份都作为元数据单独保存到区块链,每一份都由唯一的UUID单独标识,每个UUID都在学生存储的记录中作为单独的相关实体字段进行更新。如前所述,具有识别单独存储的相关实体的UUID的相关实体字段的更新记录可以存储在其协议缓冲或串行化版本中。
图6A描绘了根据所描述的实施方案的用于使用索引方案从可寻址块中获取存储的记录的另一个示例架构601。在该示例架构中,区块链共识管理器191和权限管理器(未示出)操作,来支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
使用Merkle树索引616或Merkle DAG树索引允许通过基于Merkle树索引前往区块链的特定区块来从区块链获取存储的记录,从而允许以更有效的方式获取存储的记录。例如,Merkle树索引识别区块链上的许多可寻址块618之一的地址,则存储记录的获取不需要遍历区块链寻找所讨论的存储记录,而是允许直接从Merkle树索引识别的块中获取存储记录。
因此,如本文所描述的,处理执行对索引616的查询651,以识别期望数据的地址,随后执行对特定块617的查询,以基于地址在可寻址块618获取存储的数据,而不必遍历区块链或遍历树来找到数据。
根据某些实施方案,索引616作为实体存储在区块链399内,例如,索引可以作为区块链上的资产存储。此外,通过将存储的记录存储在Merkle树索引616中,Merkle树索引本身存储在区块链上,可以通过前往具有索引的特定块来从索引616中获取任何数据。因此,如果该索引是已知的,则没有必要查询651该地址的索引616,而是直接到一个节点寻找该索引内的已知地址,并在该节点接收回任何内容。如果该地址指向索引616中的一个叶,则基于对索引616中该地址的直接查询,返回存储在该叶中的数据。如果地址指向其下有一个子树的节点,例如,额外节点或简单的多个叶,则返回整个子树。例如,如果使用地址ABC,则返回具有散列ABC的整个节点,包括该节点下的三个叶,包括具有散列A的叶、具有散列B的叶和具有散列C的叶。
如果索引616存储区块链内特定块的寻址信息,则基于返回的寻址信息,可以检查区块链的特定块,以获取要获取的存储记录。或者,如果寻址与存储记录的最新信息一起存储在索引616中,则使用地址去索引616将返回存储记录所在的区块链上的块的寻址信息以及返回该存储记录的最新信息,从而不再需要进一步查询区块链。
图6B描绘了根据所描述的实施方案的用于从区块链中的记录构建索引并维护该索引的另一个示例架构602。在该示例架构中,区块链共识管理器191和权限管理器(未示出)操作,来支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
根据特定实施方案,希望通过使用索引616能够极其快速地访问存储在区块链内的数据记录。如上所述,索引616可以仅存储区块链上的可寻址块的地址,在该可寻址块中保存有底层存储的记录,从而允许使用从索引616获取的地址从区块链获取记录。或者,最新信息(即,区块链存储的特定记录的最新和当前版本)都可以与区块链的可寻址块一起存储在索引中,其中,底层存储的记录由区块链保存。明确地说,这会导致重复的记录被持久化。记录的最新和当前版本被保存在区块链内,被认为是权威记录,然而,为了提高查询速度,同一记录的第二副本连同维护该记录的权威版本的区块链上的地址一起被保存在索引616内。
根据这样的实施方案,因此,可以由主机组织通过参考区块链内的底层存储记录来构建或生成索引616。
如本文所示,在区块链699中,在区块链的不同可寻址区块有多个存储记录。存储记录691位于根块684。位于块685A的存储记录692、位于块685B的存储记录693A以及最后的更新记录693B被存储在块685C,更新记录不考虑先前存储的记录693A,不再是当前的。
这些存储的记录中的任何一个都可以通过穿越或遍历区块链搜索相关记录,定位相关记录,然后从定位的块中获取存储的记录,来从区块链获取。
建立索引616通过至少提供保存存储记录的区块链内的块的地址来提高该过程的获取效率。如上所述,可以检查具有这种寻址信息的索引616,为存储的记录返回区块链的可寻址块,然后可以从区块链获取存储的记录,而不必遍历或穿越区块链的多个块。例如,可以检查索引616,用于更新记录693B的位置,其中,索引返回可寻址区块链块685C的位置,然后,可直接查询块685C,以获取权威存储记录的最近和最新版本,该记录是标准块685C处的更新记录693B。
或者,识别保留权威存储记录693B的最新版本的更新记录693B的内容或数据和可寻址区块链块685C的位置可以保存在索引616中,因此完全不需要从区块链获取任何东西。虽然这导致更新的记录693B的额外副本被存储在索引616中,但是极大地提高可以获取更新的记录693B的数据的速度。这在索引616本身存储在主机组织内而不是被写入区块链的情况下尤其如此。在这样的实施方案中,在主机组织110内检查索引616,并且返回存储记录的位置以及存储记录的内容或数据,其中,对应于来自区块链的存储记录的数据副本的这种数据从存储在主机组织的索引616返回。因此,随后检查接收这种信息的应用程序,以通过使用由索引616返回的区块链内的存储记录的位置从区块链获取存储记录来验证存储在区块链内的信息,或者该应用程序可以简单地利用从索引616本身返回的数据的副本,这取决于该特定应用程序的数据一致性要求和关注点。
因此,如本文可以观察到的,索引616的数据叶现在不仅包括提供所讨论的块在区块链内的位置的寻址信息,而且还在区块链内保存存储记录的副本,从而提供从中获取这种数据的重复位置。可从区块链本身获取存储记录的一个副本,但是也可从索引616获取在区块链的存储记录的副本。
如本文所描述的,叶散列A现在具有到位置684的链接,因此提供了保存存储记录691的区块链699上的块684的位置或寻址信息。然而,叶散列A现在另外具有保存在索引616本身内的存储记录691的副本,因此允许从存储在主机组织上的索引616直接获取存储记录618的数据或内容,而不必从区块链获取存储记录,尽管区块链具有存储记录691的权威副本。通过识别要被索引的记录(例如,所有学生记录),然后从区块链搜索和获取那些记录,并记录那些记录在索引616中的位置以及获取到的存储记录的副本,可以建立这样的索引616并用于非常快速地获取记录内容。还描绘了具有到区块链块位置685A的链接以及位于索引616内的存储记录692的副本的叶散列B,并且因为更新存储记录693A并因此被存储记录693B否决,所以叶散列C被构建为具有到区块链块位置685C的链接以及来自区块链的存储记录693B的副本,以保存在存储在主机组织110处的索引616内(例如,在主机组织110的数据库系统130内)。在索引616保存在区块链内的替代实施方案中,由于只需要获取索引616,如上所述,索引616内将具有存储记录的复制副本,因此仍然提高了获取效率。
然后可以比搜索区块链更快地搜索索引616,或者在散列或地址对于索引616内的叶或节点是已知的情况下,则可以利用该地址直接转到索引616内的叶或节点,由此可以从该叶或节点获取所有内容。例如,如果地址或散列指向一个叶,则区块链内的可寻址块的位置信息将与存储在该区块链位置的记录的持久副本一起返回。如果地址或散列指向下面有子节点或多个分叶的节点,则将返回整个子树,从而在返回的子树的相应叶(端点)内提供多个记录的内容。
图6C描绘了根据所描述的实施方案的另一个示例架构603,用于利用寻址结构来形成用于从索引中获取信息的地址。在该示例架构中,区块链共识管理器191和权限管理器181操作,来支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
在Merkle树索引内的地址的结构化允许非常快速地访问特定的节点或叶,在该节点或叶内提供区块链上的块内的存储记录的位置信息以及根据某些实施方案,存储记录的副本。在没有结构化地址的情况下,必须从Merkle树索引616的根开始,然后穿过每一级,直到找到所需的节点或叶。虽然索引616的这种遍历比穿过或遍历区块链的块更快,但是通过经由结构化地址直接引用单个叶子或节点(因此是子节点或叶子)来实现更快的访问,如经由本文所示的寻址结构640所描述的。
本文具体描述利用Merkle树索引616的索引方案的寻址数据结构640,该索引被分成组成十六进制串的四个主要部分。第一部分提供了示例性的6-10位(尽管大小可能不同)的应用命名空间,其中,可以编码特定的应用。例如,上面讨论的学生记录可以由编码为“SLDB”的学生记录查找API或接口(例如,学生查找数据库)定义并与其结合使用,该接口转换为十六进制“534c4442”。该应用命名空间字段之后是示例性的3-4位的实体类型标识符(尽管大小可能不同),以识别所存储的信息的类型或种类,例如,所存储的记录或元数据实体或作为元数据存储的相关实体等。例如,该信息可以是学生记录的内容,其可以被编码为转换为十六进制“5352”的SR,或者该信息可以是定义学生记录的元数据,其可以被编码为转换为十六进制“4d44”的MD,或者该信息可以是相关实体。某些相关实体被存储为具有相同类型标识符的元数据(例如,MD/4d44),或者可替换地,可以被存储为具有唯一实体类型标识符的元数据,例如,被编码为可转换为十六进制“5245”的相关实体的RE。
接下来,在寻址结构640中是示例性的10-20位的实体或数据记录的名称(尽管大小可能不同),以指定正在存储什么(不是内容,而是存储信息的名称)。因此,定义学生记录的元数据可以被编码为转换成十六进制“5352414d4420”的SRAMD(例如,用于学生记录应用元数据),或者存储的信息可以是学生记录本身,因此被命名为转换成十六进制“5354554452454320”的STUDREC(例如,用于学生记录),或者存储的信息可能是存储有名为TRNSCRPT的学生成绩单的相关实体,该成绩单被转换成十六进制“54524e5343330”,或者存储的信息可以是名为MEDREC的存储的学生病历,该学生病历被转换为十六进制“4d454452454320”,该信息可以是相关的实体。根据应用程序的用途和解析此类数据的方式,寻址结构的各个部分的任何额外空间都可以用前导零填充。
最后,在寻址结构的内容或有效载荷部分内具有要存储的实际信息,例如,存储记录的内容(例如,组成学生记录的值)或定义记录的元数据(例如,用来定义、验证、构造、屏蔽或键入实际存储内容的元数据)。类似地,可以在寻址结构640的有效载荷或内容部分内存储元数据,该元数据经由对应于存储记录内的UUID字段的链接的UUTD来标识相关实体(例如,学生记录可以包括具有学生成绩单的UUID的相关实体字段,从而将学生记录与学生在区块链上的相关实体元数据存储资产内单独存储的成绩单相链接)。
在寻址结构640的有效载荷或内容部分内,利用索引方案的应用开发人员对于可以存储的内容具有几乎无限的灵活性,直到所施加的大小限制,例如,对于非常小的、有效的、尽管限制性的寻址结构640的70位总限制,直到可以存储更多信息的n位(例如,根据使用情况,数百或数千位)。
因为信息被存储为十六进制字符串,所以信息可以容易地被协议缓冲、串行化、加密和解密以及在网络上被异质应用程序有效地传输和利用,而不考虑任何专门的格式。
图6D描绘了根据所描述的实施方案的利用地址从索引中获取信息的另一个示例性架构604。在该示例架构中,区块链共识管理器191和权限管理器181操作,来支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
如本文所描述的,查询接口180提供地址653,经由该地址使用该地址对索引执行查询652,从而允许根据经由该地址查询的获取数据,从索引616直接获取索引616的叶或子树。
考虑使用来自上述示例的索引方案和地址结构针对索引616地址的查询652。
例如,学生记录查找API或接口的应用程序命名空间编码为“SLDB”(例如,学生查找数据库),转换为十六进制“534c4442”,然后是存储的信息类型或种类被编码为MD(用于元数据),转换为十六进制“4d44”,接着是定义学生记录的元数据,该学生记录被编码为SRAMD,转换为十六进制“5352414d4420”。
这导致地址为534c4442+4d44+5352414d4420或534c44424d445352414d4420。没有必要定义内容或有效载荷的地址,因为这是被获取的数据,然而,这种数据可以使用与内容或有效载荷的十六进制表示相连接的上述地址被写入索引。
然而,使用地址534c4442+4d44+5352414d4420对索引616的查询提供了一个完全合格的地址,一直到Merkle树索引中的叶子,在其中具有要获取的有效载荷或内容,在这种情况下,该有效载荷或内容是被称为“SLDB”(例如,学生查找数据库)的应用程序的元数据,定义了该应用程序的学生记录的编码。
类似地,如果要获取学生记录,则使用地址534c4442(针对学生查找数据库)+5352(针对SR或学生记录)+5354554452454320查询索引616,提供了一个完全合格的地址,一直到Merkle树索引中的叶子,在其中具有要获取的学生记录有效载荷或内容,在这种情况下,该有效载荷或内容是被称为“SLDB”(例如,学生查找数据库)的应用程序的学生记录信息,由上面获取的元数据定义。如果学生的UUID或学生ID用作存储的学生记录有效载荷的前导部分,则该地址可以进一步合格,以仅获取该特定学生的特定记录的内容。
这种索引方案的另一个好处是能够使用非完全合格的地址或部分地址来查询信息。例如,继续上述示例,开发人员可以通过向索引616提交部分地址来触发索引返回其特定应用的所有元数据,以便通过指定其地址和其元数据的实体类型标识符来直接获取。因此,这样的部分地址形成了对应于“SLDB”(例如,学生查找数据库)的应用程序名称空间部分的十六进制字符串,该字符串转换成十六进制“534c4442”,然后是被编码为MD(用于元数据)的存储的信息的类型或种类,转换成十六进制“4d44”,从而产生534c4442+4d44或简单的534c44424d44。
使用该部分地址查询索引616,以便直接获取,将导致索引返回“SLDB”(例如,学生查找数据库)应用程序的所有元数据,而不管这种元数据被命名为什么,或者消耗多少叶子或子树来存储这种数据。更具体地,使用部分地址查询索引616,将返回用十六进制字符串534c4442+4d44散列的Merkle树索引的节点下的整个子树。类似地,可以通过指定用于直接获取的部分地址来获取所有学生记录(经由返回的整个子树),例如,向索引616的查询指定地址534c4442(用于学生查找数据库)+5352(用于SR或学生记录),而没有任何特定命名的学生记录。
如果索引中的内容或有效载荷信息包括区块链内存储记录的位置信息以及从区块链复制到索引616中的存储记录的内容,则没有必要从区块链获取任何进一步的内容。如果仅提供区块链的指定块内的内容的位置信息(因此由于较小的索引而导致小得多的存储容量和更快的获取),则区块链服务接口190随后将利用位置信息直接从区块链的指定块中获取存储记录的内容,而不必遍历或穿过区块链的多个块来搜索指定的存储记录。
图6E描绘了根据所描述的实施方案的另一个示例性架构605,用于使用索引来存储当前更新,以增量方式更新存储记录的区块链资产。在该示例架构中,区块链共识管理器191和权限管理器181操作,来支持读取共识和访问控制过程,如关于图10至图12进一步描述的。
在某些情况下,希望在区块链境内存储信息,然而,鉴于区块链存储非常不适合以高频率进行多次更新的信息存储,存储记录的信息更新量和频率使得使用区块链不切实际。
如本文所示,在主机组织处接收具有许多更新的输入数据流681,并且更新被写入索引616,导致经由索引存储数据流更新,如元素682所示。定期地,通过例如与区块链进行交易,以添加具有存储记录的新资产,增量更新被周期性地写入区块链,其中,增量更新取自索引616并作为存储记录被推入区块链。例如,存储的记录684A最初存储在区块链699上,具有来自数据流的初始数据批。接下来,更多的数据流更新首先被写入主机组织处的索引616,并且在一段时间之后,增量更新然后被再次写入区块链,导致重复的增量更新,在此显示为增量更新684B,然后是增量更新684C,然后是增量更新684D,诸如此类。
例如,考虑存储来自IoT装置(物联网)的信息流,这些装置报告各种遥测数据,例如,状态、错误、位置、事件、配置变化等。如果此类数据的收集扩展到数百台的大量IoT装置,区块链可能会因数据存储请求的频率而不堪重负。
然而,将信息存储在索引616中,特别是当索引存储在主机组织中时,克服了这个问题,因为主机组织的数据库系统130容易适应数据库更新和交互的高频率。
因此,如果仍然希望使这样的数据在区块链上可用并存储在区块链上,则可以通过首先将许多更新(例如,来自IoT装置或其他这样的更新)直接写入主机组织110内的索引616,然后周期性地将增量更新写入区块链,以在区块链内持久存储数据,来克服频率问题。例如,IoT装置数据流可以由主机组织110收集到索引中,然后每24小时(或某个其他周期)一次,对IoT装置数据流的增量更新(从对区块链的最后更新到当前可用的数据来测量)然后被推送、刷新、添加或交易到区块链上。因此,区块链的最新区块然后持久地存储IoT装置数据流的最新部分,并且因此可从区块链直接访问,或者可从主机组织处的索引616获得。
在某些实施方案中,索引通过将增量更新存储到区块链来清除或刷新增量数据,然后索引从索引616中移除存储的内容或有效载荷部分,并且仅保留区块链上的块位置信息,通过该信息来定位底层存储的记录。换言之,一旦增量信息被写入区块链,可以清理索引616,使得保留在定位在区块链的特定块上具有增量信息的存储记录的位置,但是索引616本身不再保留这样的存储记录的内容,因为它们在区块链内是可用的,并且因为增长非常快的这种数据可能以不期望的方式减慢索引。
将整个变化(例如,曾经收集的所有IoT数据流)全部推送到区块链是有问题的,因为增量更新之前的所有数据在区块链内一次又一次地复制。因此,仅将增量变化或更新推送到区块链,提供了出于存储目的的区块链的有效使用和索引616的有效使用,通过索引来缓冲传入的数据流或传入的高频更新,并且索引616允许快速识别位置信息,该位置信息指示增量信息存储在区块链上的位置(例如,在哪个块内)。
图7A描绘了根据所描述的实施方案的另一个示例架构701。
许多客户组织和企业以网络为中心的方式操作,因为市场要求他们解决客户问题。因此,企业(有时包括不相关的企业组织)有必要代表客户在彼此之间共享数据。
然而,可以理解的是,不同的企业从根本上缺乏对彼此的信任。因此,许多企业发现他们现在需要共享数据来满足其客户,然而,他们不能相信与他们共享数据的其他企业是可信的。
分布式分类账技术和区块链平台专门解决了信任问题,如上所述。这是真的,因为写在区块链上的数据是不可变的,因此可以提供更新,但是历史数据总是可访问的,此外,区块链的所有参与节点基于同意的共识模型合作地为共识做出贡献。这种情况的例外是上面讨论的修改的DLT技术,对于该技术,共享分类账(例如,图1C中的元素157以及下列等等)在内部托管给主机组织,并且主机组织作为单一和集中的信任机构对其进行操作,或者可替换地,对其信任确定被委托给操作修改的DLT共享分类账实例157的客户组织,根据该实例,客户组织然后自己确定谁具有访问权限,例如,什么伙伴组织或用户等获得客户组织同意访问修改的DLT共享分类账中的数据。
因此,特别考虑利用DLT技术和区块链技术来解决希望共享数据的企业之间的信任问题。
尽管信任问题已基本解决,但还有两个障碍阻止了该技术的采用。
首先,采用区块链在技术上很复杂,对于大多数企业来说,单独实施非常困难。即使对这类数据进行技术评估,也需要专业的计算机程序员和开发人员在这一特定专业领域具有足够的技能,并了解企业的需求(通常由技术业务分析师提供),然后采购额外的计算基础设施,开发区块链平台和协议本身,或者识别并参与满足企业需求的现有公共或私人区块链。这些开发人员必须了解如何将资产(有时称为“硬币”)打包并交易到区块链以及如何在节点之间转移这些资产(其中嵌入了他们感兴趣的信息),并使这些数据可供区块链的其他参与节点使用,以便共享信息。此外,这样一个区块链需要有企业可以接受的共识模式。仅因为这些原因,采用区块链技术虽然前景看好,但对许多企业来说仍然是一个不可克服的负担。
其次,即使假设克服了上述障碍,对于区块链写入、存储或保存的信息,应用程序之间的数据标准化仍然存在重大问题。例如,即使假设企业设法向区块链交易信息,并使该数据可供另一家企业访问,也不能保证第一家企业写入区块链的信息会被第二家企业理解。因此,由于写在各种可用的区块链平台上的数据缺乏标准化,希望共享数据的企业之间的数据可传输性提出了另一重大问题。
考虑图7所示的示例性描述,其中,有两个企业705A和705B,它们设法同意彼此共享数据,并成功实现了与区块链699交易所需的计算架构。
在所有数据共享协议就绪的情况下,企业705A经由其在用户客户端装置706A处执行的应用#1创建资产,并且如图所示,将客户记录嵌入到该资产714中,该资产随后将在区块链699上交易。如本文所示,应用#1使用以下信息创建资产:
使用的数据格式:
First_Name=John
Last_Name=Doe
Phone_Number=###-###-####
E_Mail_Address=J.Doe@Email.com
值得注意的是,对于该记录,有四个字段,包括“First_Name”和“Last_Name”,后面是“Phone_Number”,使用了特定的格式掩码,并且带有在某些数字之间必需的连字符“-”,最后是一个电子邮件地址,其字段标识符为“E_Mail_Address”。
然后,用数据填充各个字段。
所创建的资产然后被交易到区块链699上,如写在区块链上的资产715所描绘的,并且在某个稍后的时间,企业705B选择经由其自己的应用#2获取信息。
如本文所示,企业705B与区块链和资产进行交易,获取的资产716被成功传输到在用户客户端装置706B上执行的应用#2。
一切似乎都很好,直到应用#2利用自己对数据的理解,经由在应用#2上执行的代码来解译资产717,期望以下信息:
期望的数据格式:
Customer_Name=“John Doe”
Phone=#######m#
email=“J.Doe@Email.com”
RETRIEVAL ERROR:
-->No Data Found in Asset
如所预期的,应用#2遇到获取错误消息:“在资产中找不到数据。”
这是应用#2查找名为“Customer_Name”的字段,但没有这样的字段时的结果。应用#2另外寻找字段“Phone”并且没有找到这样的字段,并且最后搜索“email”并且再次没有找到这样的字段。
虽然人类读者可以容易地理解具有该值“John”的“First_Name”表示字段“Customer_Name”的子部分,但是这种逻辑在应用程序和计算程序中是不可用的,应用程序和计算程序只是搜索它们被指示(例如,被编程)搜索的字段名称,即“Customer_Name”,而不是“First_Name”和“Last_Name”的组合。
虽然这两种字段类型之间的转换对于任何程序员来说都是微不足道的,但事实仍然是,相应企业的两个应用程序完全不兼容,如果要使它们兼容,则需要对这些字段的定制转化进行编程。
从根本上说,该日期的不可转让性是由于缺乏数据标准化。这两个不同的应用程序实体都能够写入区块链并从中获取,而且企业之间也有共享此类数据的协议,然而,这两个实体应用程序缺乏共享数据的能力,因为没有定义客户的名称。一个应用程序期望这是“First_Name”和“Last_Name”字段的组合,而另一个应用程序期望该字段“Customer_Name”用作客户全名的单个字段。
图7B描绘了根据所描述的实施方案的另一个示例性架构702。
具体来说,现在描述了区块链管理员为应用程序使用的数据定义元数据,该应用程序然后标准化代表两个企业(企业705A和企业705B)写入区块链的数据。
如本文所描述的,区块链管理员通过集成构建器的GUI或者通过集成构建器的API定义元数据,并且该定义的元数据721然后被推送到指定的区块链799上。
现在,在区块链上进行交易时,有一个明确定义的元数据,规定了声明应用“Application XYZ”的要求,特别是“Customer_Record”的要求,现在根据定义的元数据,该元数据的结构如下:
定义的元数据要求
Declared Appli cation=ApplicationX YZ
Customer_Record
First_Name=$string
Last_Name=$string
Phone_Number=$NumericString
E_Mail_Address=$email String
因为定义的元数据721被交易到区块链上,所以任何被允许访问区块链799上的数据记录的应用程序都将能够按照定义的元数据721指定的要求读写数据。这可能是特别声明应用“Application XYZ”,也可能是利用声明应用生成或管理的数据的其他应用程序。任何应用程序都可以读出定义的元数据721,并按照要求进行操作。
图7C描绘了根据所描述的实施方案的另一个示例性架构703。
特别地,现在描述了企业705A和705B能够共享在区块链799上交易的数据,并且因为定义的元数据721规定了格式化这种数据的要求,所以写入区块链799和从区块链获取的数据将体现已知的格式,并且因此可以在各种企业之间转移。
如本文所示,区块链管理员通过区块链服务接口190定义元数据,该元数据被交易到区块链,然后稍后,企业705A通过应用#1创建资产714,并且将具有客户记录细节的资产写入区块链。随后,企业705B从区块链获取资产,并且当经由在企业705B执行的应用#2解译717该资产时,该数据被应用程序成功地解译和理解,因为对于客户记录数据存在已知和定义的元数据结构。
因此,根据特定实施方案,存在由主机组织的系统进行的操作,这些操作声明新应用并将新应用的定义的元数据交易到区块链上。例如,这样的操作可以包括代表主机组织的多个租户操作到区块链的区块链接口,其中,多个租户中的每一个都作为能够访问区块链的参与节点来操作。这样的操作还可以包括从与系统可通信地接合的用户装置接收声明新应用的第一输入。这样的操作还可以包括从用户装置接收第二输入,为新应用添加多个网络参与者,其中,网络参与者被授予对新应用的访问权限。这种操作还可以包括从用户装置接收第三输入,该第三输入声明新应用的多个实体类型。这样的操作还可以包括从用户装置接收第四输入,该第四输入为多个实体类型中的每一个声明一个或多个新的字段定义。这样的操作可以还包括生成其中编码有作为新应用的已定义元数据的区块链资产,至少(i)声明的多个网络参与者,(ii)声明的多个实体类型,以及(iii)为多个实体类型中的每一个声明的一个或多个新字段定义。这样的操作还可以包括将其中编码了新应用的定义的元数据的区块链资产交易到区块链上。
根据另一个实施方案的操作,区块链资产具有定义的交易类型;并且其中,具有在其中编码的已定义元数据的区块链资产的已定义交易类型将新应用的已定义元数据与智能合约相关联,以对新应用在区块链上交易的任何数据执行数据验证;其中,智能合约验证为新应用在区块链上交易的数据符合为在区块链上交易的新应用定义的元数据。
根据另一个实施方案,这样的操作可以还包括:在区块链接收为新应用指定数据的交易;并且基于所接收的为新应用指定数据的交易来触发智能合约;并且执行智能合约,以验证新应用的指定数据符合新应用的定义的元数据;并且其中,如果指定的数据不符合为新应用定义的元数据,则拒绝交易。
根据另一个实施方案的操作,将区块链资产交易到区块链包括:将交易添加至区块链上的新区块,该新区块将为新应用定义的元数据指定为交易的有效载荷数据;由区块链的参与节点对所添加的交易进行共识,其中,在所添加的交易被区块链的参与节点接受为区块链主链的一部分之前,所添加的交易由区块链的参与节点进行共识协议;并且其中,根据对添加的交易的成功共识,新应用的定义的元数据被保存在区块链的新区块上的接受的交易中。
根据另一个实施方案,这样的操作可以还包括:在系统处接收新输入,其中,新输入声明第二新应用;并且在系统处接收额外输入,选择为第一新应用声明的多个实体类型之一,作为为第二新应用选择的实体类型,其中,所选择的实体类型继承经由为与第一新应用相关联的相应一个或多个实体类型定义的元数据指定的一个或多个新字段定义。
根据另一个实施方案的操作,多个不同声明的应用指定为第一新应用声明的多个实体类型中的至少一个,作为多个不同声明的应用的选定实体类型;并且其中,对应于为第一新应用声明的多个实体类型中的相应一个实体类型以及与为第一新应用声明的相应实体类型相关联的所有一个或多个新字段定义的已定义元数据的单个实例控制(i)为第一新应用声明的多个实体类型中的相应一个实体类型和(ii)为已经选择了为第一应用声明的相应实体类型的所有多个不同的已声明应用所选择的实体类型。
根据另一个实施方案的操作,从用户装置接收为多个实体类型中的每一个声明一个或多个新字段定义的第四输入还包括接收为一个或多个新字段定义中的每一个定义字段定义类型的第四输入;并且其中,每个字段定义类型从包括整数、布尔、数字、字母数字、日期、超链接、计算或自定义的组中选择。
根据另一个实施方案,这样的操作可以还包括:向主机组织认证用户装置与多个租户之一相关联;并且其中,多个租户中的一个是主机组织通过公共互联网提供的基于云的按需服务的订户。
根据另一个实施方案,这样的操作可以还包括:执行事件监听器来监视与新应用相关联的区块链的任何变化;以及当事件监听器观察到与新应用相关联的区块链的变化时,触发事件。
根据另一个实施方案,这样的操作可以还包括:从用户装置接收第五输入,声明事件和声明的新应用的一个或多个监控的事件条件;其中,声明的事件指定以下之一:(i)响应于在区块链发生事件而在主机组织处执行的处理流程,或者(ii)响应于在区块链发生事件而针对主机组织内部的数据库系统执行的数据库交易;并且经由事件监听器监视满足指定事件和一个或多个事件条件的区块链的任何变化。
根据另一个实施方案的操作,每个网络参与者被授予对新应用和与新应用相关联的区块链上的数据的访问权限。
根据另一个实施方案的操作,多个网络参与者中的每一个从包括以下内容的组中选择:与主机组织的多个租户之一相关联的主机组织的用户;对应于主机组织的多个租户之一的伙伴用户;对应于主机组织的多个租户之一的客户组织;主机组织的非用户;不是主机组织的多个租户之一的伙伴组织;以及区块链上的一个或多个参与节点,其对应于主机组织的租户或从主机组织订阅云计算服务的客户组织;以及区块链上的一个或多个参与节点,其不订阅来自主机组织的云计算服务。
根据另一个实施方案的操作,从声明应用的用户装置接收第一输入还包括:用声明的新应用的第一输入接收声明的新应用的指定管理控制或声明的新应用的所有权中的一个或两个。
根据另一个实施方案,这样的操作可以还包括:接收指令,以将声明的新应用和为新应用定义的元数据部署到区块链上;并且其中,将其中编码有针对新应用的定义的元数据的区块链资产交易到区块链包括响应于接收到部署指令经由区块链部署新应用和定义的元数据。
根据另一个实施方案的操作,接收输入,定义(i)声明的多个网络参与者、(ii)声明的多个实体类型和(iii)为多个实体类型中的每一个声明的一个或多个新字段定义中的每一个,包括经由主机组织公开的区块链元数据定义管理器处的API接收作为编程代码的输入。
根据另一个实施方案,这样的操作可以还包括:从区块链元数据定义管理器向用户装置传输GUI,其中GUI提示定义输入,定义(i)声明的多个网络参与者、(ii)声明的多个实体类型和(iii)为多个实体类型中的每一个声明的一个或多个新字段定义中的每一个;其中,经由一个或多个交互式点击事件、拖动事件、下拉选择事件、文本输入事件和触摸事件在GUI接收输入;并且其中,接收输入包括接收从GUI发送到用户装置的输入。
根据另一个实施方案的操作,区块链的区块链协议由主机组织定义,并且进一步地,其中,主机组织允许作为区块链上的参与节点操作的主机组织的多个租户访问区块链;或者替代地,其中,区块链的区块链协议由不同于主机组织的第三方区块链提供商定义,并且进一步地,其中,主机组织也作为区块链上的参与节点来操作,主机组织经由该参与节点访问区块链。
根据另一个实施方案,这样的操作可以还包括:在接收接口接收请求与新应用相关联的数据的SQL查询;经由主机组织处的Apex转化器引擎将该SQL查询转化成本地区块链可执行代码;针对区块链执行本地区块链可执行代码,以获取所请求的数据;以及响应于接收到该SQL查询,返回所请求的数据。
根据另一个实施方案,这样的操作可以还包括:在主机组织的数据库系统内生成虚拟表;以及基于为新应用声明的元数据,在主机组织的数据库系统处构造虚拟表;其中,实体类型被表示为虚拟表中的表,并且进一步地,其中,为新应用的多个实体类型中的每一个声明的一个或多个新字段定义被表示为虚拟表中的表内的列。
根据另一个实施方案的操作,虚拟表包括托管在主机组织的数据库系统处的物化视图,该物化视图基于为新应用声明的元数据而结构化;并且其中,主机组织的数据库系统中托管的物化视图不存储与新应用相关联的任何数据;并且其中,通过将只读SQL查询转换成区块链交易来针对物化视图处理请求只读取访问的SQL查询,以从区块链获取与新应用相关联的所请求的数据。
根据另一个实施方案,这样的操作可以还包括:从区块链获取为新应用定义的元数据,包括为新应用声明的多个实体类型、为多个实体类型中的每一个声明的一个或多个新字段定义、以及应用于一个或多个新字段定义的任何字段类型;通过基于为新应用定义的元数据来结构化虚拟表,在主机组织处的虚拟表内生成与区块链一起保存的数据的物化视图;其中,物化视图表示与新应用相关联的数据结构,该数据结构被保存到区块链,而不将与新应用相关联的数据存储在主机组织的物化视图中。
根据另一个实施方案,这样的操作可以还包括:在主机组织处接收来自用户装置的SQL语句,其中,该SQL语句指向物化视图,请求对保存到区块链并与新应用相关联的数据进行SQL更新或SQL插入;通过将请求SQL更新或SQL插入的SQL语句转化成相应的区块链交易来更新或添加与在区块链的新应用相关联的数据,来针对物化视图处理该SQL语句;并且向用户装置发出确认,确认根据区块链一致接受的相应区块链交易成功处理针对物化视图的SQL语句,并且在区块链成功更新或添加了与新应用相关联的数据。
根据另一个实施方案,这样的操作可以还包括:在主机组织处接收指向物化视图的SQL语句;其中,所述SQL语句指定以下一个或多个:(i)从SQL语句选择,(ii)插入到SQL语句,以及(iii)更新设定的SQL语句;并且其中,通过将该SQL语句转化成相应的共享分类账交易并针对区块链执行相应的区块链交易,来处理所接收的SQL语句,以实现指向主机组织处的物化视图的SQL语句。
根据另一个实施方案,这样的操作可以还包括:其中,为新应用定义的元数据通过将区块链的资产链接在一起来表示多个实体类型中的两个或多个实体类型之间的用户指定的关系。
根据另一个实施方案,这样的操作可以还包括:在主机组织处,在表结构内声明新应用的新业务逻辑,该表结构在新业务逻辑的元素和新应用的多个实体类型中的一个或多个之间具有一个或多个关系;并且定义新的业务逻辑,元数据中的所有关系都保存到区块链。
根据另一个实施方案,这样的操作可以还包括:执行事件监听器,以监视在区块链的新应用的定义的元数据的任何变化;以及当事件监听器观察到在区块链的新应用的元数据的变化时,触发事件;并且其中,所触发的事件自动将元数据更新推送到主机组织,以通过基于由事件监听器触发的元数据更新在主机组织处重新构造物化视图,来更新与新应用相关联的数据的物化视图。
根据另一个实施方案的操作,基于新应用的元数据的变化经由事件监听器触发事件还包括:触发以下一个或多个:业务用户定义的处理流程,用于响应于持久保存到区块链的定义的元数据的变化而执行;业务用户定义的数据获取操作,用于响应于持久保存到区块链的定义的元数据的变化而执行;业务用户定义的数据过滤操作,用于响应于持久保存到区块链的定义的元数据的变化而执行;管理员定义的处理流程,用于响应于持久保存到区块链的定义的元数据的变化来更新数据分析馈送;以及管理员定义的处理流程,用于响应于持久保存到区块链的定义的元数据的变化来更新人工智能(AI)训练数据流。
根据特定实施方案,存在其上存储有指令的非暂时性计算机可读存储介质,当该指令被其中至少具有处理器和存储器的系统的处理器执行时,该指令使得该系统执行包括以下操作的操作:代表主机组织的多个租户操作到区块链的区块链接口,其中,多个租户中的每一个都作为能够访问区块链的参与节点来操作;从与系统可通信地接合的用户装置接收第一输入,声明新的应用;从用户装置接收添加新应用的多个网络参与者的第二输入,其中,网络参与者被授予对新应用的访问权限;从用户装置接收声明新应用的多个实体类型的第三输入;从用户装置接收第四输入,为多个实体类型中的每一个声明一个或多个新的字段定义;,生成其中编码有作为新应用的定义元数据的区块链资产,至少(i)声明的多个网络参与者,(ii)声明的多个实体类型,以及(iii)为多个实体类型中的每一个声明的一个或多个新字段定义;并且将其中编码有新应用的定义的元数据的区块链资产交易到区块链上。
根据又一个实施方案,存在一种在主机组织处执行的系统,其中,该系统包括:存储指令的存储器;执行指令的处理器;其中,处理器代表主机组织的多个租户执行区块链服务接口,其中,多个租户中的每一个都作为能够访问区块链的参与节点操作;接收接口,用于从与系统可通信地接合的用户装置接收第一输入,所接收的第一输入声明新的应用;所述接收接口进一步接收来自用户装置的第二输入,为新应用添加多个网络参与者,其中,网络参与者被授予对新应用的访问权限;该接收接口进一步接收来自用户装置的第三输入,声明新应用的多个实体类型;所述接收接口进一步接收来自用户装置的第四输入,为多个实体类型中的每一个声明一个或多个新字段定义;区块链服务接口,用于生成区块链资产,该资产中编码有作为新应用的定义的元数据,至少(i)声明的多个网络参与者,(ii)声明的多个实体类型,以及(iii)为多个实体类型中的每一个声明的一个或多个新字段定义;并且其中,区块链服务接口还将在区块链上交易区块链资产,该资产具有为新应用在其中编码的定义的元数据。
根据该系统的实施方案,接收接口还用于从用户装置接收声明事件的第五输入和声明的新应用的一个或多个监控的事件条件;其中,声明的事件指定以下之一:(i)响应于在区块链发生事件而在主机组织处执行的处理流程,或者(ii)响应于在区块链发生事件而针对主机组织内部的数据库系统执行的数据库交易;并且其中,该系统还包括事件监听器,其中,该事件监听器监视满足指定事件和一个或多个事件条件的区块链的任何变化,并且响应于区块链上的被监视的变化来触发声明的事件。
图8A描绘了根据所描述的实施方案的另一个示例性架构801。
如本文所示,存在在计算装置899(例如,区块链管理员的用户装置)处执行的GUI810,GUI 810被主机组织的区块链元数据定义管理器196推送到计算装置800。
如本文所示,区块链管理员可以查看如GUI 810顶部所示的部署的应用程序,并且通过点击GUI 810处的“新建”按钮,为区块链管理员提供声明能力,来声明新应用。虽然本文描述了经由GUI 810声明新应用,但是区块链管理员也可以利用经由区块链元数据定义管理器196提供的API来创建新应用。
图8B描绘了根据所描述的实施方案的另一个示例性架构802。
除了新应用的声明或声明新应用之外,区块链管理员还能够定义哪些参与者有权访问与该特定应用程序相关联的数据,从而为该新声明应用定义网络参与者。
图8C描绘了根据所描述的实施方案的另一个示例性架构803。
再次描绘了GUI 810,然而,现在描绘区块链管理员通过点击“银行记录应用”来查看和编辑该应用的实体。
因此,区块链管理员可以首先声明或创建新的“应用程序”,然后一旦创建,区块链管理员可以编辑或查看该应用程序,并且可以在该应用程序内创建或声明新的“实体”,其中,每个声明性实体为特定的定制字段定义元数据,该应用程序最终可以在该定制字段内存储符合定义的元数据的信息,并且其他应用程序也可以与这样的数据交互并引用这样的数据,并且可能在存在足够的许可的情况下更新、添加或删除这样的数据,但是再次,这样做符合所定义的元数据。
例如,本文为银行记录应用程序定义了实体名称为“Auto_Claim”的“索赔”,因此,任何希望向区块链写入与索赔相关的信息的应用程序,至少在银行记录应用程序将使用此类信息的范围内,都需要遵守定义的实体“Auto_Claim”的要求。
图8D描绘了根据所描述的实施方案的另一个示例性架构804。
本文描述了GUI 810,由区块链管理员点击先前屏幕上的“新”按钮以在新创建的应用程序中或在查看的应用程序中声明和创建新实体而产生。
如本文所示,呈现了“新实体定义”GUI,其中,区块链管理员现在可以通过输入实体名称、实体标签和选择实体的所有者来创建一个新实体,默认情况下,所有者是创建实体的用户。然后点击保存创建并声明这个新实体。区块链管理员可以另外将状态改变为“已部署”,并且一旦保存,该实体将被交易到区块链,而在草稿状态下,将仅被保留在主机组织的区块链元数据定义管理器196。
根据特定实施方案,每个GUI具有对应的API,经由该API与区块链元数据定义管理器196交互。
图8E描绘了根据所描述的实施方案的另一个示例性架构805。
点击现有的实体,包括刚刚在图8D所示的先前GUI 810上创建的实体,将导致呈现字段定义GUI,经由该GUI,区块链管理员现在可以创建任何数量的要存储在该特定实体内的字段。
通过类比,将声明应用视为计算机程序可能会有所帮助,尽管该应用程序经由云运行,声明的实体是可与关系数据库中的表相比较的表,最后声明的字段是表中的列标识符或可填充的字段,最后,字段的集合将因此形成记录。虽然比较并不精确,但是各种声明性元素和为其定义的元数据之间的关系应该有助于说明其使用。
因为定义的元数据精确地指定了什么数据是允许的以及该数据的格式和类型,所以任何允许的应用程序都可以成功地以元数据指定的可预测的和预定义的格式将信息写入区块链,此外,与它们共享的应用程序也可以成功地从区块链获取信息,基于定义的元数据,知道该信息应该是什么样子和如何被结构化,从而知道应该如何解译该信息。
因为信息是在区块链通过元数据定义的,基于定义的元数据,所有参与者都知道每个数据元素的含义,因此,对于参与者网络,所有参与节点都可以经由区块链共享信息。
此外,参与者不限于在区块链上交易的现有元数据,而是他们可以创建额外元素、创建新的元数据定义、改变元数据定义等。
例如,Bank Wells Fargo可以决定,作为参与者,他们需要具有字段X、Y和Z的新实体。因此,该参与者可以定义具有字段X、Y和Z的新实体的元数据(经由API或GUI),然后将新实体交易到区块链。
然后,新实体将接受其他参与节点的共识。如果其他参与节点不同意,则不能达成共识,而不考虑变化。然而,如果达成共识,则具有字段X、Y和Z的新实体通过将该新实体的定义的元数据写入共识块内的区块链而被交易到区块链,或者换言之,一旦达成共识,已经被写入区块链的实体成为区块链的“主要”链的一部分,该链被所有参与者接受为主链。
根据另一个实施方案,为区块链上的交易执行智能合约,该交易试图为具有定义的元数据的实体写入或更新区块链上的数据。例如,可能存在导致执行智能合约的触发器,在这种情况下,智能合约获取或应用定义的元数据,来验证实体内的每个字段都具有数据类型、数据命名符合性以及符合定义的元数据的要求的日期掩码。
在智能合约强制执行定义的元数据的情况下,禁止任何不符合规定的交易在区块链上交易,或者如果被写入区块链,则该交易将永远不会被接受到主链上的区块中,因为智能合约验证失败将阻止交易达成共识,以供接受。
因此,通过使用所描述的GUI,缺乏编程和程序开发专业知识的业务用户仍然可以声明新应用和声明新的实体名称,并且声明性地为这些实体名称创建新的字段定义。对于那些具有更强技术专长的人来说,他们可以利用API来与区块链元数据定义管理器196交互,如果他们这样做是优选的话。
不管选择什么方法,区块链管理员都可以声明性地创建新应用、新实体和新字段定义,而不需要写入任何代码,并且区块链元数据定义管理器196然后将为新应用、新实体和/或新字段定义而定义的元数据交易到区块链上,用于投票和共识。
在达成共识之前,无法使用定义的元数据。然而,一旦在区块链上进行交易并达成共识,则区块链上的其他参与节点或参与者可以与所声明的应用的所有数据进行交互,并且区块链服务接口190的智能合约执行将强制或强迫遵守这些交互。
图8F描绘了根据所描述的实施方案的另一个示例性架构806。
此处描述了代表区块链管理员的声明性操作创建的生成的代码,用于定义应用程序,声明实体和声明各种定义的字段,导致在定义的元数据中表示符合API的代码,尽管区块链管理员没有编写任何代码。在其他实施方案中,程序员或开发人员可以选择利用API来生成该代码,在这种情况下,GUI将反映编码的实体和编码的定义字段,就像它们最初是通过GUI声明的一样。
因此,所公开的平台允许创建必要的代码来与区块链进行交易,与区块链进行交互,定义和声明应用程序以及该应用程序的实体(如下所述,可以经由物化视图在数据库系统中被描述为表),并且进一步定义和声明每个实体的新字段定义,并且还定义可以利用声明应用的允许的网络参与者。
通过这种方式,声明性元数据平台代表区块链管理员执行所有繁重的工作,允许非程序员通过一系列GUI仅使用点击操作来为新声明应用创建与区块链交互所需的所有代码。
此外,应用程序的结构、允许的网络参与者以及新的声明性实体和新的声明性字段定义以区块链管理员熟悉的方式呈现,因为各种元素可以被认为是数据库表、列、字段和记录等,尽管没有创建数据库条目和数据库表。相反,这些信息作为资产在区块链进行交易,同时允许区块链管理员在整个流程中点击,而不需要知道或要求区块链管理员了解如何在底层区块链进行交易,或者如何在区块链添加、更新或转移资产。因此,所公开的实施方案的实践极大地降低了作为区块链管理员操作的非程序员用户的复杂性。
然而,对于具有编程知识和理解区块链的更复杂用户,可以经由由区块链服务接口190,特别是由主机组织提供的区块链元数据定义管理器196所展示的API来编写和生成相同的代码。
图9A描绘了根据所描述的实施方案的另一个示例性架构901。
如本文所示,区块链管理员将定义的元数据910交易到区块链,一旦达成共识,这大概将被接受,并且伙伴用户接下来将符合元数据的交易915交易到区块链。
本文进一步描述了物化视图920,其允许主机组织用户925与经由元数据兼容交易915从主机组织110可用的可访问云平台186交易到区块链的数据交互。
在计算中,物化视图920是包含查询结果的数据库对象。例如,物化视图920可以是位于远程的数据的本地副本,或者可以是表或连接结果的行和/或列的子集,或者可以是使用聚合函数的汇总。
设置物化视图的过程有时称为物质化。从某种意义上说,数据物质化是缓存查询结果的一种形式,类似于其他形式的预计算,其中,数据库管理员出于性能原因利用物质化视图进行优化。
在遵循关系模型的任何数据库管理系统中,视图都是表示数据库查询结果的虚拟表。每当查询或更新处理普通视图的虚拟表时,数据库管理系统就将这些转换成对底层基表的查询或更新。
相反,物化视图采用不同的方法,因为查询结果被缓存为具体的(“物化的”)表,该表可以与原始基表分开更新。这种方法允许更有效的访问,代价是额外的存储和一些数据可能过时。物化视图尤其适用于数据仓库场景,在这种场景中,频繁查询实际基表可能会很昂贵。
在本文描述的示例中,可访问云平台186通常利用存储在主机组织110的数据库130中的信息,然而,在某些信息被交易到区块链并因此保存在区块链的情况下,物化视图允许可访问云平台186经由物化视图920与区块链存储的数据交互。以这种方式,主机组织用户925和可访问云平台都可以与区块链数据交互,就好像它是存储在主机组织的数据库130内的数据一样,只需参考物化视图。
因此,根据某些实施方案,任何时间信息被交易到区块链,智能合约触发并执行对交易到区块链的数据的验证方案,以确保其符合定义的元数据910,并且智能合约另外生成物化视图920,以便在主机组织110的数据库130内创建可引用的副本,从而允许主机组织的标准查询接口引用物化视图内的信息,该信息又对应于交易到区块链的信息。
因此,为区块链声明和创建的并且数据随后被写入或处理到区块链上的任何实体将自动具有在物化视图内的主机组织110的数据库内创建的等效实体(例如,关系数据库中的表),并且当创建定义的字段并接受到区块链上时,将随后在主机组织数据库系统130内创建那些相应的列,然后当数据被交易到区块链上时,主机组织的数据库系统130内的相应实体表将填充到物化视图内,使得从主机组织一侧与数据交互的用户和过程可以访问来自物化视图的信息。
因此,开发人员和用户可以与声明应用交互,该应用程序使用保存在区块链的数据和定义的元数据,而不知道他们实际上正在使用区块链,也不要求这些用户知道如何与区块链交互。
根据某些实施方案,在主机组织的数据库130内不创建新表,因此,没有必要在主机组织的数据库130和区块链之间同步任何数据。相反,通过主机组织的数据库130处的物化视图来表示由主机外部的区块链持久保存的数据的通道、管道或视图,但是虽然物化视图是可引用的,但不是同步回区块链的副本,并且不允许更新或修改。物化视图仅允许从主机组织的数据库130进行只读引用。所有修改、更新、变更等必须在区块链上交易,然后,刷新的物化视图将从区块链提取那些变化,并在数据库130反映那些修改。虽然这种安排产生了额外的开销,但是这种安排明确地否定了在物化视图内同步数据的需要,因为这种数据是完全非权威的。
因此,开发人员、程序、进程和用户可以通过引用物化视图920,利用标准的SQL查询来与区块链数据交互。例如,当指定实体名称作为物化视图920的表名时,从$Table_NameWHERE...指定SELECT将导致主机组织的数据库130返回数据库查询结果,尽管数据的权威副本驻留在区块链本身内。虽然这种结构确实创建了一些重复的数据,因此可以说导致了存储的浪费,但是这种结构具有极大地简化源自任何可访问云平台186的查询的好处,该云平台可以利用标准的SQL,而不必识别区块链或构造更复杂的区块链交易来获取数据,因为数据到物化视图920的复制是由智能合约触发器自动执行的。根据这样的实施方案,不允许针对物化视图执行更新、创建或删除记录的SQL命令,然而,这样的更新、创建或删除记录的SQL命令将被接受并被转化到apex转化引擎和Apex代码接口454(在图4B处示出),转换成本地区块链可执行兼容代码,以执行SQL更新、创建或删除命令的等效动作,但是作为区块链交易,然后针对区块链进行交易,提交,以达成共识,然后假设投票或共识成功,则被接受到区块链。还要注意,将执行智能合约,根据区块链验证交易,以强制数据符合在区块链保留的已定义元数据。
例如,从主机组织用户提交的SQL查询可能会请求更新指定应用程序的客户记录John Doe。因为这样的信息保存在区块链,所以不能对主机组织的数据库系统130执行SQL。此外,区块链不接受SQL查询,请求“请返回客户记录John Doe的所有数据”。关于区块链的信息是不可读的,也不允许这种查询。
因此,Apex代码接口454将把接收到的SQL代码转化成本地区块链代码,以便为指定应用的客户记录John Doe在区块链上交易更新的有效载荷数据。注意,当发生这种情况时,客户记录John Doe的最新信息现在将在区块链反映为最新信息,并反映在同一数据的任何物质化视图中,然而,客户记录John Doe的旧信息仍保留在区块链内,因为区块链记录是不可变的,因此创建了不可变的审计跟踪,可以随时引用。因此,对这种数据具有访问权限的任何一方可以回头查看区块链的先前块,以确定先前为客户记录John Doe记录了什么信息,或者在删除客户记录John Doe的情况下,这种变化将再次由区块链反映,但是旧记录本身在区块链的先前块内保持不变,尽管应用程序将理解这种信息被指示为“已删除”,因此,根据DLT区块链技术的固有设计,删除的记录将不会被引用为实时数据,但始终保持可用。
在替代实施方案中,Apex代码接口454(如图4B所示)用于将SQL数据库查询转化成本地区块链协议,允许随后针对区块链执行转化后的SQL查询,并生成结果集,然后该结果集被转化回符合SQL的格式并响应于SQL查询而返回。在其他实施方案中,智能合约引擎针对区块链执行交易,以获取定义的实体和定义的字段,并将它们转化成物化视图,然后将其存储在主机组织数据库系统130中,随后可以执行未转化的SQL查询,以直接从物化视图中获取区块链数据。
因为应用程序本身是声明性的,声明的实体和这些实体声明的定义字段也是声明性的,所以所有数据结构都是完全可定制的,并且可以根据业务的特定需求进行定制,只需网络参与者或在特定区块链上运行的参与节点就区块链达成共识。
图9B描绘了根据所描述的实施方案的另一个示例性架构902。
如本文所示,定义的元数据910现在已经被部署到区块链,如元素911所示。因此,声明性定义的应用程序、其实体和字段定义现在可以被任何授权的网络参与者使用。在许多情况下,授权的网络参与者将是主机组织用户925,其可以访问主机组织110的各种云服务,因此,一旦被部署到区块链,主机应用920就被展示给客户使用。
然而,在某些情况下,伙伴用户需要作为授权网络参与者访问软件。有问题的是,已经被授权为网络参与者并因此被授予与所声明应用交互的权限的这种伙伴用户不一定是主机组织的客户,并且可能不希望强迫他们成为主机组织的订阅客户。
根据某些实施方案,为了部署声明应用,以供主机组织的非客户使用,有两个要求。首先,根据某些实施方案,区块链管理员必须定义允许的网络参与者,这可以通过为那些网络参与者定义互联网协议(IP)地址来完成。该IP地址可以对应于由IP识别的主机组织用户,或者网络参与者可以是主机组织的非客户,同样由IP识别。以这种方式,可以识别区块链上的参与节点,这些参与节点可以被允许访问该应用程序并使用该应用程序,并且可以彼此通信并彼此共享数据,假设它们可以被区块链管理员定义为该特定应用程序的添加网络参与者的IP地址正确识别。
在某些实施方案中,添加的网络参与者中的一些或全部是主机组织的非用户或非订户,因此,他们不能向主机组织认证,因此不能经由认证凭证向主机组织识别他们自己。因此,根据这样的实施方案,作为主机组织的非客户并且希望将应用程序用作允许的网络参与者(由区块链管理员定义)但又是主机组织的非客户的被识别的网络参与者通过两步认证过程进行。首先,他们必须提供其IP,该IP必须与添加的网络参与者相对应。然后,非客户将面临一个挑战,对此,他们需要返回一个公钥。区块链管理员将事先向非客户提供公钥,以便他们可以成功通过身份验证质询。
一旦非客户既提供了其IP并且用公钥响应了挑战,则每当非客户试图利用声明应用在区块链上的参与节点之间协商信任时,就利用该公钥。
因此,根据特定实施方案,可部署安装包925被传送给伙伴用户,其中,可部署安装包925为非客户运行软件,允许他们访问声明应用。
根据特定实施方案,可部署安装包925是不包括声明应用的功能的通用软件包,而是向非客户伙伴组织提供对主机组织的区块链服务接口的访问,使得非客户伙伴组织然后可以通过主机组织通过使用该特定非客户伙伴组织作为授权网络参与者添加至的声明应用与区块链进行交易。
根据这样的实施方案,一旦安装和执行通用可部署安装包925,将提示非客户伙伴组织共享公钥,该公钥将由区块链管理员单独发送给他们,该管理员将非客户伙伴组织添加为该特定声明应用的授权网络参与者。
根据一个实施方案,当将非客户伙伴组织添加为授权网络参与者时,可部署安装包925基于非客户伙伴组织的IP地址发出挑战,该IP地址已被区块链管理员配置为声明应用的元数据的一部分。
因此,相同的通用可部署安装包925将根据其执行位置而不同地运行。如果可部署安装包925是从具有不在范围内或不对应于授权网络参与者的已配置IP的IP地址的系统执行的,则可部署安装包925在执行时将简单地指示与该IP地址相关联的位置不是任何已声明应用的授权网络参与者。
如果相同的可部署安装包925被传送给作为不同声明应用的授权网络参与者的不同的人,则可部署安装包925在被执行时将提示用户输入不同声明应用的共享公钥,因此需要提供正确的共享公钥,并且从已经被配置为对应于授权网络参与者的IP地址执行可部署安装包925。
以这种方式,可部署安装包925可以经由主机组织的支持页面共享、分发或者甚至发布,而没有任何未授权的用户被授予所讨论的声明的应用,只要他们不能欺骗IP并且响应于挑战提供正确的共享公钥。
在某些实施方案中,可以另外为已知用户提供基于用户的认证质询,而不需要这样的用户或与用户相关联的非客户伙伴组织订阅来自主机组织的任何服务。
虽然声明应用的用户可以利用API与声明应用交互,从而通过声明应用间接与区块链交互,但是他们没有必要这样做。
相反,根据特定实施方案,可部署安装包925提供了从保存在区块链的元数据中动态生成的用户接口,用于可部署安装包925的执行者是授权的网络参与者的声明的应用。
因此,可部署安装包925没有必要具有任何专用的UI。相反,声明应用所需的任何GUI、API或UI将由可部署安装包925基于声明应用的相关元数据来动态构建。
以这种方式,未从主机组织订阅任何服务的非客户伙伴组织仍然可以利用主机组织的区块链服务接口(通过声明应用),并利用、交互和存储通过主机组织的区块链服务接口可访问的区块链上的数据。
根据特定实施方案,一旦执行可部署安装包925,用户就可以通过动态构建的UI向所声明的应用进行认证,该UI将关联由用户响应于初始询问而提供的公钥,然后基于所声明的应用的定义的元数据,包括任何定义的实体和任何定义的字段定义,继续生成GUI显示屏,主机组织的非客户可以经由显示屏输入在区块链上交易的数据,在区块链上更新这样的数据,并且从区块链获取数据,包括由另一组织写入区块链的数据,但是与该另一组织共享与所声明应用相关联的数据,从而为使用新声明应用的所有授权网络参与者形成区块链上的数据的共同集合。
因此,GUI允许区块链管理员定义应用程序、定义实体、为每个实体定义字段、定义允许的网络参与者,然后允许主机组织用户和非客户用户访问托管软件,其中,所有声明性元数据驻留在区块链内。这种区块链可以完全在主机组织之外操作,甚至不受主机组织的控制,只要主机组织可以进入区块链。在替代实施方案中,声明性元数据驻留在修改后的DLT中,该DLT在主机组织内部操作,并且主机组织是其单个中央信任机构。
在声明性元数据托管在主机组织之外的可访问区块链上的情况下,例如,本文所示的区块链999,声明应用通过与区块链进行交易来与区块链上的信息交互,以从资产中获取有效载荷数据、更新资产、创建资产等。
然而,值得注意的是,数据的权威副本在主机组织外部托管在可访问的区块链999上,并且不由主机组织的数据库130内的任何表存储。上面讨论的物质化视图是一个可选功能,但是即使使用,物质化视图中的信息也不是权威副本。对与应用程序相关联的数据进行修改的任何交易不仅必须符合定义的元数据,还必须在区块链999上更新。如果修改后的DLT在内部运行,与应用程序相关的数据必须在修改后的DLT内作为权威来源进行更新。因此,此类应用程序数据由可访问的区块链999作为数据的最终权威副本保存。因此,即使删除或损坏物化视图,或者变得与可访问的区块链不同步,也不会影响声明应用的操作,因为该应用程序的数据和定义这种数据的结构和元数据由可访问的区块链999存储。
图9C描绘了根据所描述的实施方案的另一个示例性架构903。
如本文所示,在区块链服务接口190中有一个事件监听器960,其接受来自区块链管理员的定义的触发器961,然后操作,来监听在区块链上发生的指定事件,作为响应,触发或激发事件,本文显示为事件触发962,以便将交易推送到主机组织,或者启动流或数据处理流的执行,或者由区块链管理员指定的任何定义的操作。虽然这是一种类似于用于自动触发智能合约执行以强制数据符合所定义的元数据的机制,但是事件监听器和所定义的触发器961允许区块链管理员基于他们自己的定制标准来定义要发生的任何可执行操作,而不管智能合约执行进行的操作如何。
因此,根据特定实施方案,任何时候在可访问的区块链内发生任何与事件监听器960所拥有的定义的触发器961相匹配的变化,事件监听器将触发一个或多个事件(事件触发器962)回到可访问的云平台186,并且区块链管理员可以通过经由API提交给区块链服务接口190的代码或经由允许区块链管理员创建该流的GUI(例如,经由集成生成器和相关的GUI)来编写任何种类的流,例如,创建要执行的智能合约或由区块链管理员定义的某个其他流,然后该流将响应于由事件监听器960监控的区块链上发生的变化,在由事件触发器962定义的可访问云平台186内引起更新。根据一个实施方案,响应于事件触发962,在主机组织的数据库130内或可访问的云平台内执行数据库交易。在另一个实施方案中,如事件监听器960所监视的,基于在区块链内已经发生的变化,触发GUI并将其推送到呈现信息的用户客户端装置。
图10是用于读取共识过程的一个实施方案的流程图。该过程可以由块共识管理器191或区块链服务接口190的类似组件来实现。读取共识过程可以由区块链网络中的节点133触发,试图访问区块链的数据,以读取该数据,其中,该数据由许可方案或类似机制保护,以控制对该数据的访问。该过程独立于区块链服务接口190中的访问控制层162。如果要访问的数据由读取共识过程管理,则必须满足读取共识过程,以使请求节点能够从受加密保护的区块链访问数据。在区块链读取数据的请求可以具有任何粒度级别,在该级别中,区块链的字段、记录、元数据或类似数据可以由该进程单独保护。
当数据首次存储在将被限制读取访问的区块链中时,该交易由区块链服务接口190接收(框1001)。区块链共识管理器191根据区块链网络的共识协议确定是否要向区块链确认交易。在要提交交易的情况下,区块链共识管理器191生成密钥,来加密要存储的数据(框1003)。该密钥用于加密数据,并且该密钥也将恢复并用于解密数据,以访问。用于加密的密钥被转换成一组共享秘密(框1005)。可以使用任何秘密共享过程或协议(例如,Shamir的秘密共享算法),其可以将密钥转换成一组共享秘密,该组共享秘密的数量等于区块链网络中参与共识的节点的数量。类似地,可以选择具有期望阈值或可配置阈值的任何秘密共享算法来生成共享秘密。使用这种共享秘密算法确保了只有当阈值数量的共享秘密由区块链网络中的其他节点提供以重建解密所需的密钥时,才能访问数据。阈值可以是固定的或可配置的。阈值可以是任何值,例如,等于参与节点数量的一半或三分之二的数字。
由于每个共享秘密都是由秘密共享算法生成的,所以为区块链网络中的特定节点指定的共享秘密是使用该节点的公钥加密的(框1007)。因此,只有相关联的节点可以解密向其分配的共享秘密,并在作为读取共识过程的一部分的授权读取请求的情况下提供。在将交易提交给区块链达成共识时,这些加密的共享秘密被存储为相关交易数据的元数据(框1009)。
随后,在受保护数据存储在区块链之后,试图服务于访问受保护数据的请求的任何节点(框1011)必须发起向区块链网络的其他节点广播的读取请求。该读取请求识别要访问的数据,并且可以包括关于请求访问数据的节点或实体的信息(例如,该实体的一组证书)(框1013)。然后,每个节点执行其读取共识过程,并确定是否满足访问所请求数据的凭证或其他标准。确定满足读取数据的标准的每个节点向请求节点提供其共享秘密(框1015)。请求节点可以收集共享秘密并确定是否已经提供了定义的阈值数量的共享秘密(框1017)。如果没有返回共享秘密的阈值数量,则读取共识过程拒绝读取请求,并且不能完成(框1019)。在一些实施方案中,读取共识过程可以具有时间限制或窗口,在该时间限制或窗口内,过程必须接收共享秘密的阈值数量。如果共享秘密的阈值数量由其他节点提供,则请求节点可以利用共享秘密算法将共享秘密转换成用于加密所请求的数据的密钥,然后可以解密和访问所请求的数据(框1021)。在已经访问数据之后,请求节点可以丢弃密钥,使得在随后的访问中必须再次请求和重组密钥。
当来自初始交易的加密数据存储在区块链时,包括区块链网络中每个节点的共享秘密的相关元数据也存储在区块链。元数据格式可以如本文结合其他公开的实施方案所详细描述的那样定义和组织。元数据可以识别共享秘密、交易数据的所有者、与交易数据相关联的访问控制的许可或特权、与交易数据相关的隐私信息、交易数据的所有权信息以及类似信息。元数据可以在对象、记录、字段或与交易数据格式一致的类似组件级别上定义交易的这些属性。交易数据的所有者可以是在区块链网络上运行和利用该网络的用户、节点或类似实体。下文中定义了访问控制过程和遗忘权过程的进一步实施方案,这些实施方案利用了该额外的详细元数据以及读取共识过程的原理。
图11A至图11C是与用于在区块链服务接口190内实现遗忘权功能的一组过程相关的流程图。遗忘权功能利用读取共识过程的各个方面,使实体能够将数据指定为私人数据,并根据实体的请求,让区块链“遗忘”私人数据。该功能有助于实现遗忘权功能的区块链符合GDPR标准。图11A至图11C的流程图描述了遗忘权过程的三个相关方面,即,也称为私人信息或PI信息的私人数据的初始存储、对要“遗忘”的数据的请求以及访问请求。这些功能一起为区块链提供了“遗忘”数据的能力,通过加密私人数据,然后根据控制实体的请求删除加密密钥,以确保不能再次访问数据,因此遗忘权功能能够有效地将数据指定为被区块链“忘记”,因为即使数据以加密形式存在于区块链,也不能随后被访问。
在图11A中,遗忘权过程由节点发起,该节点在区块链接口接收要存储到区块链的交易,其中,该交易包括与该数据相关联的实体的唯一用户标识符(UUID)(框1101)。此外,所接收的交易包括将被指定为私有的数据方面的指示符。任何粒度级别的数据整体或数据的任何方面都可以被指定为私有的,例如,对象、记录、数据字段和/或元数据。在基于区块链中的节点的共识确定交易被提交给区块链时,确定用于将数据存储在区块链上的交易数据的对象和元数据格式,其中,对象和元数据将包括拥有实体UUID或类似标识符以及一组指示符,以识别被指定为私有的数据的对象、记录、字段或类似组件(框1103)。
区块链共识管理器191或权限管理器生成密钥来加密要存储的数据(框1105)。密钥用于加密数据并将用于解密数据,以访问数据。该密钥然后被转换成一组共享秘密(框1107)。可以使用任何秘密共享过程或协议(例如,Shamir的秘密共享算法),其可以将密钥转换成一组共享秘密,该组共享秘密的数量等于区块链网络中参与共识的节点的数量。类似地,可以选择具有期望阈值或可配置阈值的秘密共享算法来生成共享秘密。使用这种共享秘密算法确保了只有当阈值数量的共享秘密由区块链网络中的其他节点提供以重建解密所需的密钥时,才能访问数据。阈值可以是固定的或可配置的。阈值可以是任何值,例如,等于参与节点数量的一半或三分之二的数字。
由于每个共享秘密都是由秘密共享算法生成的,所以为区块链网络中的特定节点指定的共享秘密是使用该节点的公钥加密的(框1109)。因此,只有相关联的节点可以解密向其分配的共享秘密,并在授权读取请求的情况下提供该共享秘密,作为读取共识的一部分。在将交易提交给区块链达成共识时,这些加密的共享秘密被存储为相关交易数据的元数据(框1111)。
图11B是在区块链网络中服务于“遗忘”私人数据的请求的过程的流程图。权限管理器181从实体接收遗忘与UUID相关联的指定数据的请求(框1121)。权限管理器181或相关组件可以认证该请求,以验证已经呈现了足够的凭证,来确保请求者被授权发起遗忘所识别的数据的过程。请求者可以出示安全令牌、密码、加密密钥和/或类似的凭证来验证授权。如果被认证,则处理该请求,以添加要遗忘的数据的UUID和/或标识符(框1123)。该过程可以被配置为“遗忘”与UUID相关联的所有数据或者请求所识别的特定对象、记录或字段。然后,UUID和任何数据识别信息都可以被记录到“遗忘”物品的列表中。如果存在任何特定于UUID或与UUID相关联的识别信息的密钥或共享秘密,则节点可以删除该本地信息(框1125)。此外,该节点还可以广播或类似地将遗忘的UUID和/或信息的列表与区块链的其他节点同步。
图11C是服务于访问区块链网络中“被遗忘的”私人数据的请求的过程的流程图。随后,在私人数据存储在区块链之后,任何试图服务于访问受保护数据的请求的节点(框1131)对照被遗忘的UUID/数据列表对请求者的UUID和/或被请求数据的识别信息进行初始检查(框1133)。如果UUID或请求的数据被列为“被遗忘”,则拒绝访问该数据的请求(框1135)。如果在列表上没有找到UUID或所请求的数据,则权限管理器181必须发起读取请求,该读取请求被广播到区块链网络的其他节点,并且识别要访问的数据,并且包括关于请求访问数据的节点或实体(即,UUID和可能的实体的一组证书)的信息(框1137)。然后,每个节点针对私有信息执行其共识过程,并确定是否满足访问所请求数据的凭证或其他标准。确定满足读取数据的标准的每个节点向请求节点提供其共享秘密(框1139)。然后,请求节点可以收集共享秘密,并确定是否已经提供了定义的阈值数量的共享秘密(框1141)。如果未返回共享秘密的阈值数量,则共识过程拒绝读取请求,并且无法完成(框1143)。在一些实施方案中,共识过程可以具有时间限制或窗口,在该时间限制或窗口内,过程必须接收共享秘密的阈值数量。如果共享秘密的阈值数量由其他节点提供,则请求节点可以利用共享秘密算法将共享秘密转换成密钥,然后可以解密和访问所请求的数据(框1145)。在已经访问数据之后,请求节点可以丢弃密钥,使得在随后的访问中必须再次请求和重组密钥。
图11D是GDPR的示例实现的示意图。在图11D所示的示例中,私有信息(PI信息)可以直接存储在区块链或分布式存储中。试图将PI信息添加至区块链的节点可以与REST API交互,以创建/更新PI信息。与PI信息相关联的元数据、PI元数据是经由区块链平台的元数据API定义的。反过来,REST API管理具有PI信息的记录的密钥的创建以及PIN信息在区块链或分布式存储器中的存储(如图所示)。非PI数据和PI数据的散列可以经由REST API存储在区块链。元数据可以经由元数据API作为单独的元数据和/或作为同意和GDPR模型的一部分存储在区块链。
在分布式存储的情况下,PI数据的散列存储在区块链,而实际的PI数据存储在区块链之外。删除链外存储位置的PI信息只会在区块链留下PI信息的散列。散列是单向函数,删除后不能用于获取PI信息。在某些情况下,散列可以与密文一起存储,以进一步保护。
图12A至图12C是与用于在区块链服务接口190内实现访问控制功能的一组过程相关的流程图。访问控制功能利用读取共识过程的各个方面,使实体能够指定数据访问控制,从而为区块链启用读写权限。图12A至图12C的流程图描述了访问控制的三个相关方面,即具有一组权限的数据的初始存储、对数据的写请求和对数据的读取请求。这些功能共同为区块链提供了实现数据访问控制的能力,通过加密数据,然后使用智能合约控制对数据的写入,同时使用共识读取控制对数据的读取。这些访问控制功能适用于许可(即私有)和公共区块链,并且独立于与许可区块链相关联的访问控制层。
在图12A中,访问控制过程由节点发起,该节点在区块链接口接收要存储到区块链的交易,其中,该交易包括与该数据相关联的实体的唯一用户标识符(UUID)以及该数据的所有权和访问特权(即许可)的指示(框1201)。此外,接收到的交易包括具有定义的权限的数据方面的指示符。任何粒度级别的整个数据或数据的任何方面可以具有定义的权限,例如,数据的对象、记录、字段和/或元数据。在基于区块链中的节点的共识确定交易被提交给区块链时,确定用于将数据存储在区块链上的交易数据的对象和元数据格式,其中,对象和元数据将包括拥有实体UUID或类似标识符以及一组许可,以识别被指定为私有的数据的对象、记录、字段或类似组件(框1203)。
区块链共识管理器191或权限管理器181生成密钥来加密要存储的数据(框1205)。然后,用于加密数据并且还将用于解密数据以访问数据的密钥被转换成一组共享秘密(框1207)。可以使用任何秘密共享过程或协议(例如,Shamir的秘密共享算法),其可以将密钥转换成数量等于区块链网络中指定所有者节点数量的一组共享秘密。类似地,可以选择具有期望阈值或可配置阈值的秘密共享算法来生成共享秘密。使用这种共享秘密算法确保了只有当阈值数量的共享秘密由区块链网络中的所有者节点提供以重建解密所需的密钥时,才能访问数据。
由于每个共享秘密都是由秘密共享算法生成的,所以为区块链网络中的特定所有者节点指定的共享秘密是使用该节点的公钥加密的(框1209)。因此,只有相关联的节点可以解密向其分配的共享秘密,并在授权读取请求的情况下提供该共享秘密,作为读取共识的一部分。在将交易连同数据的访问权限一起提交给区块链达成共识时,这些加密的共享秘密被存储为相关交易数据的元数据(框1211)。
图12B是在区块链网络中服务于写数据请求的过程的流程图。权限管理器181从实体接收写入与UUID和访问控制特权相关联的指定数据的请求(框1221)。权限管理器181或相关组件可以认证该请求,以验证已经呈现了足够的凭证,来确保请求者被授权发起写过程,以改变所识别的数据。请求者可以出示安全令牌、密码、加密密钥和/或类似的凭证来验证授权。如果被认证,则处理该请求,以确定绑定到UUID的智能合约和/或要写入的数据的标识符(框1223)。智能合约可以规定和管理将数据添加至区块链的过程,该过程用作数据的写入,使得添加至区块链的数据用于替换区块链的先前数据,尽管该数据本身不能修改。在区块链查找UUID的智能合约或与UUID相关联的数据或请求所识别的特定对象、记录或字段,并检查与要写入的数据相关联的元数据,以确定权限是否允许写入(框1225)。如果元数据和管理智能合约不允许请求者写入数据,则该过程拒绝写入,并且不提交相关联的交易,或者不提交与由访问控制管理的特定数据相关的部分(框1227)。如果智能合约以及与所识别的数据和请求者的UUID相关联的特权确实允许写入,则交易和/或交易中被识别为要写入的数据部分可以被提交给区块链,并且将引用被写入的数据,使得将起到替换的作用。
图12C是在区块链网络中服务于读取具有访问控制特权的数据的请求的过程的流程图。在访问控制数据被存储在区块链之后,试图服务于访问数据的请求的任何节点(框1131)对请求者的许可和/或所请求数据的标识信息进行初始检查,以检查相关元数据中的权限(框1233)。如果权限指示请求者没有权限,则拒绝访问该数据的请求(框1235)。如果所请求数据的UUID和元数据不禁止访问,则权限管理器181必须发起读取请求,该读取请求被广播到被指示为区块链网络中的数据所有者的其他节点,识别要访问的数据,并且包括关于请求访问数据的节点或实体(即,UUID以及可能的实体的一组证书)的信息(框1237)。然后,每个节点执行其访问受控数据的共识过程,并确定是否满足访问所请求数据的凭证或其他标准。确定满足读取数据的标准的每个节点向请求节点提供其共享秘密(框1239)。然后,请求节点可以收集共享秘密,并确定是否已经提供了定义的阈值数量的共享秘密(框1241)。如果未返回共享秘密的阈值数量,则共识过程拒绝读取请求,并且不能完成读取请求(框1243)。在一些实施方案中,共识过程可以具有时间限制或窗口,在该时间限制或窗口内,过程必须接收共享秘密的阈值数量。如果共享秘密的阈值数量由其他节点提供,则请求节点可以利用共享秘密算法将共享秘密转换成密钥,然后可以解密和访问所请求的数据(框1245)。阈值可以是固定的或可配置的。阈值可以是任何值,例如,等于参与节点数量的一半或三分之二的数字。在已经访问数据之后,请求节点可以丢弃密钥,使得在随后的访问中必须再次请求和重组密钥。
图12D是访问控制的示例用例的示意图。示例用例可以结合本文描述的访问控制和处理的读取共识来实现。用例支持权限规则的定义,也称为策略。在分布式企业平台的环境中,基于角色和基于属性的控制都可以实现。基于角色的控制定义用户的访问权限,基于属性的控制将访问权限扩展到属性,例如,资源属性、实体和执行环境。结合区块链,访问控制可分为实体级和记录级访问。实体级访问类似于对象或字段级控制,允许一组定义的用户或伙伴访问区块链的实体以及相关字段。记录级访问可以类似于其他平台中的共享设置,所述共享设置允许基于记录所有者定义的权限访问记录。
在这个示例用例中,可以根据参与者、记录、记录策略和记录授权来定义访问控制。该用例中的参与者用区块链的参与者元数据表示,参与者元数据可以是对区块链的指定数据拥有所有权或访问权限的一组定义的用户或实体。该上下文中的记录可以是元数据实体,其包含扩展该记录的实体的标识符(例如,客户实体包括记录实体的标识符)。在本示例中,参与者与记录实体相关联。访问是在记录级别定义的,用于管理实体访问。
在这个用例中,记录策略可以是保存记录和参与者访问策略的连接对象。访问级别可以定义为两种类型,一种是权限级别(例如,读、写和读/写),另一种是共识级别(例如,当有多个所有者时),例如,一个或多个。记录授权可以跟踪与记录策略相关的每个记录所有者的个人授权交易。
关于图12D,针对来自第三方(即,非所有者)的访问请求描述了访问控制的示例用例。出于示例的目的,第三方可以是学院,其要求查看来自另一机构(例如,高中)的学生(即,所有者)的成绩单,该机构使用本文所述的区块链来管理成绩单。这个过程从第三部分(大学)要求查看成绩单开始。访问请求处理程序查询区块链,以确定访问权限。如果已经授予了访问权限,则可以返回验证。
如果尚未授予访问权限,则访问请求处理程序可以向所有者发送访问请求。当所有所有者(或大多数)都批准访问时,则在区块链更新成绩单的策略/权限。然后,可以接受第三方的访问请求,以准许在区块链访问所请求的记录(例如,成绩单)。如果所有者不批准访问,则阻止访问。
图13描绘了示出方法1200的流程图,该方法使用分布式分类账技术(DLT)结合基于云的计算环境(例如,由处理器和存储器支持的数据库系统实现)在区块链内实现数据和元数据的有效存储和验证,以执行这样的功能来向用户、客户和订户提供基于云的按需功能。
根据本文描述的系统和方法,方法1300以及本文描述的其他过程可以由处理逻辑来执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微码等)、软件(例如,在处理装置上运行的指令)来执行各种操作,例如,操作、定义、声明、关联、写入、接收、获取、添加、交易、训练、分发、处理、传输、分析、触发、推送、推荐、解析、持久保存、展示、加载、生成、存储、维护、创建、返回、呈现、接合、通信、查询、提供、确定、显示、更新、发送等。例如,托管计算环境111、区块链服务接口1350以及如图1A所示的其数据库系统130等以及本文描述的其他系统和组件可以实现所描述的方法。根据某些实施方案,下面列出的一些框和/或操作是可选的。所呈现的框的编号是为了清楚起见,并不旨在规定必须出现各种框的操作顺序。
参考图13所示的方法1300,在框1305,处理逻辑代表主机组织的多个租户操作到区块链的区块链接口,其中,多个租户中的每一个都作为访问区块链的参与节点操作。
在框1310,处理逻辑接收针对区块链的交易,请求主机组织更新持久存储在区块链上的数据记录,该交易指定数据记录的多个数据元素中的一个或多个的更新值。
在框1315,处理逻辑执行智能合约,以在允许交易被添加至区块链,以用更新的值更新区块链上的数据记录之前,验证由交易指定的更新的值。
在框1320,处理逻辑根据智能合约对更新数据值的成功验证,通过将交易添加至区块链上的新区块,将数据记录的更新值写入区块链。
根据另一个实施方案,方法1300还包括:对持久存储在区块链上的数据记录执行数据合并操作,其中,数据合并操作包括:从区块链获取整个数据记录,以获取数据记录的所有多个数据元素;将交易为区块链指定的经验证的更新值合并到数据记录的多个数据元素中,以形成其中包含验证的更新值的完整数据记录;其中,通过将交易添加至区块链上的新区块来将数据记录的更新值写入区块链包括将其中包含验证的更新值的完整数据记录写入区块链的新区块;其中,完整的数据记录不考虑存储在区块链的数据记录的所有先前版本,并且不引用存储在区块链的数据记录的任何先前版本。
例如,数据合并操作允许从区块链的单个块中获取数据记录的数据,而不管该数据记录先前经历了多少次更新。因此,复制一些数据(例如,未更新的值现在将出现在先前的块中,并且已经合并的完整记录也被写入到新区块中)。尽管存在数据冗余,但数据获取变得更加高效和快速。
根据方法1300的另一个实施方案,通过将交易添加至区块链上的新区块,将数据记录的更新值写入区块链包括:参考区块链上的先前块,将更新值写入区块链上的新区块;其中,基于对区块链上的新区块的更新值的引用和获取,而从区块链上的先前块中获取数据记录的完整和当前版本的获取需要存储的数据记录中未被更新值修改的任何数据元素。
例如,不是执行改进获取但导致存储数据冗余的数据合并操作,而是由区块链上的多个块来表示存储的数据记录,较新的更新信息与指向区块链上先前位置的参考指针一起存储在区块链的新区块中,从该先前位置可以获取存储的数据记录的未更新值。
根据另一个实施方案,方法1300还包括:对持久存储在区块链上的数据记录执行数据合并操作和数据串行化;其中,数据合并操作包括(i)从区块链获取整个数据记录,以及(ii)将更新值合并到从其中包含更新值的完整数据记录获取到的数据记录中;其中,数据串行化操作包括将由数据合并操作形成的和其中包含更新值的完整数据记录转换成串行化字节流;并且其中,通过将交易添加至区块链上的新区块来将数据记录的更新值写入区块链包括将串行化字节流写入区块链上的新区块。
例如,由数据合并操作产生的更新记录可以被串行化(例如,经由静态库生成器或其他串行化装置),以形成要存储到区块链的更小和更有效的记录,并且潜在地通过由串行化产生的抽象提供数据安全层,并且可选地允许在保证高度数据安全的情况下进一步加密串行化的更新记录。
根据另一个实施方案,方法1300还包括:执行静态库生成器,以将由数据合并操作形成的并且其中包含更新值的完整数据记录转换成串行化字节流。
根据方法1300的另一个实施方案,串行化字节流形成以下至少一个:二进制格式串行化字节流;JavaScript对象符号(JSON)兼容格式的序列化字节流;纯文本或信息交换的美国标准代码(ASCII)兼容格式序列化字节流;加密的串行化字节流;协议缓冲的串行化字节流;以及十六进制格式的串行化字节流。
例如,数据串行化操作可以产生多种格式中的任何一种,这取决于应用开发人员对串行化数据的安全性和易操作性的需求。
根据另一个实施方案,方法1300还包括:接收针对区块链的第一交易,该第一交易请求主机组织将数据记录作为新存储的数据记录存储在区块链上,其中,新存储的数据记录包括由第一交易指定的嵌入其中的多个数据元素;并且其中,接收请求主机组织更新持久存储在区块链上的数据记录的针对区块链的交易包括接收区块链的第二交易,其中,第二交易指定先前交易到区块链上的新存储数据记录的更新值。
例如,要存储到区块链的原始记录和新记录仍然需要进行数据验证,然而,没有必要更新原始记录和新记录。随后,对原始数据记录的更新可以应用并存储在区块链上,以进行数据验证。
根据另一个实施方案,方法1300还包括:接收区块链的第一交易,请求主机组织在区块链上存储元数据,该元数据定义数据记录和由数据记录存储的多个数据元素的有效格式;其中,接收请求主机组织更新持久存储在区块链上的数据记录的区块链的交易包括接收区块链的第二交易,其中,第二交易指定先前交易到区块链上的存储数据记录的更新值;并且其中,执行智能合约以验证由交易指定的更新值,包括从根据第一交易存储的区块链获取元数据,并且使用获取到的元数据验证更新值。
例如,定义记录的适当格式的元数据可以被允许存储在区块链上,然后获取,以供执行的智能合约在执行数据验证时使用。此外,如果需要,还允许将存储的元数据协议缓冲或序列化到区块链。
根据另一个实施方案,方法1300还包括:拒绝交易,并且当交易指定的更新值验证失败时,禁止将更新值写入持久存储到区块链的数据记录。
根据另一个实施方案,方法1300还包括:基于接收的交易确定交易类型;基于所确定的交易类型识别要执行的智能合约;并且其中,执行智能合约以验证更新的值,包括执行基于交易类型识别的智能合约。
例如,可以“键入”与区块链的交易,使得不同的交易对应于不同的交易类型。根据这样的实施方案,基于交易类型,可以根据所确定的交易类型来识别或查找智能合约。随后,智能合约的执行基于所确定的交易类型和智能合约标识。在某些实施方案中,用交易明确指定交易类型,而在其他实施方案中,基于交易内容导出交易类型。
根据方法1300的另一个实施方案,其中,执行智能合约以验证由交易指定的更新值包括:获取定义持久存储在区块链上的数据记录的有效格式的元数据;使用获取到的元数据验证由交易指定的更新值;并且基于验证发布成功的验证结果或失败的验证结果,其中,根据失败的验证结果禁止将交易添加至区块链,并且其中,根据成功的验证结果允许将交易添加至区块链。
例如,智能合约的执行起到质量控制的作用,并可用于确保损坏的、恶意的或格式错误的数据不会在区块链上进行交易。
根据方法1300的另一个实施方案,数据记录经由用于区块链的CREATE资产命令项被存储在资产的有效载荷部分内的区块链上;并且其中,数据记录与所存储的数据记录的交易类型相关联,所存储的数据记录将随着区块链的新区块内的任何更新而完整地存储,而不考虑该数据记录的任何先前版本。
根据方法1300的另一个实施方案,数据记录经由用于区块链的CREATE资产命令项存储在资产的有效载荷部分内的区块链上;并且其中,数据记录与将要被增量存储的存储数据记录的交易类型相关联;其中,对所存储的数据记录的任何更新都将由交易指定的更新值写入区块链上的新区块,参考先前存储了所存储的数据记录的区块链上的先前块;并且其中,从区块链获取存储的数据记录需要从区块链上的新区块获取更新的值,并且从区块链上的先前块获取未被更新的值修改的任何剩余值。
例如,在区块链上存储记录可以利用CREATE资产命令项将新资产交易到区块链上,然后,编码或体现在其中存储的数据记录,例如,在新资产的有效载荷部分中。对所存储的数据记录的后续更新然后可以使用UPDATE资产命令功能来更新资产,或者使用经由上述数据合并操作生成的更新信息来生成完整记录的全新资产,在这种情况下,可以利用UPDATE资产命令功能,在这种情况下,完整地创建新版本,但是参考存储的数据记录的先前不推荐使用的版本,或者可以利用CREATE资产命令项来简单地移除对任何先前版本的所有引用,并且将完整的更新记录作为新的资产写入区块链,这取决于区块链协议和应用开发人员的考虑。
根据另一个实施方案,方法1300还包括:接收区块链的第二交易,请求主机组织存储相关实体,该相关实体将经由与第一资产分离且不同的第二资产被持久存储到区块链,其中,存储的数据记录被持久存储在区块链上;经由CREATE资产交易与区块链进行交易,以将第二资产添加至区块链,并将相关实体存储在第二资产的有效载荷部分中;并且经由分配给相关实体的通用唯一标识符(UUID)将存储在第二资产中的相关实体与存储在第一资产中的数据记录相关联。
根据另一个实施方案,方法1300还包括:从区块链获取存储的数据记录;更新存储的数据记录,以包括分配给相关实体的UUID;以及将其中包括UUID的更新的存储数据记录写入区块链。
根据方法1300的另一个实施方案,存储的数据记录包括学生记录,该学生记录经由多个数据元素在其中嵌入了至少学生名字、学生姓氏和学生ID;其中,相关实体包括学生成绩单;经由分配给相关实体的通用唯一标识符(UUID)将存储在第二资产内的相关实体与存储在第一资产内的数据记录相关联,包括经由分配给学生成绩单的UUID链接学生成绩单和学生记录;其中,更新存储的数据记录,以包括UUID,包括更新学生记录,以包括将学生记录与学生成绩单链接的UUID;并且其中,将其中包括UUID的更新的存储数据记录写入区块链,包括将其中嵌入了经由单独且不同的第二资产分配给存储在区块链的学生成绩单的学生名字、学生姓氏、学生ID和UUID的学生记录写入区块链。
例如,不是所存储数据记录的一个数据元素的一部分的其他信息的存储仍然可以经由相关实体功能被存储到区块链上,其中,相关实体(例如,学生成绩单或学生病历等)作为存储在与存储的数据记录分开的资产中的元数据被写入区块链,然后通过在存储的数据记录的多个数据元素中包括自动分配给相关实体的UUID来与存储的数据记录链接,因此需要更新存储的数据记录,以实现链接。
根据方法1300的另一个实施方案,定义数据记录的有效格式的元数据经由区块链的CREATE资产命令项存储在资产的有效载荷部分内的区块链上;并且其中,元数据与存储的元数据的交易类型相关联。
例如,元数据的存储也可以利用CREATE资产命令项,尽管就其交易类型和存储的内容而言,它是不同的。
根据方法1300的另一个实施方案,在所添加的交易被区块链的参与节点接受为区块链主链的一部分之前,所添加的交易受到区块链的参与节点的共识协议的约束。
例如,在区块链交易保留了该区块链所需的共识方案,以确保交易有效性。
根据方法1300的另一个实施方案,元数据仅可由已经定义元数据并将其交易到区块链上的主机组织的多个租户之一访问;或者可替换地,其中,元数据可被作为对区块链访问的一个参与节点操作的所有多个租户访问,而不管多个租户中的哪一个定义了元数据并将其交易到区块链上。
例如,可以为区块链定义和存储元数据,目的是使域特定于为其特定应用程序创建元数据的特定租户组织。然而,在某些情况下,主机组织的管理员希望创建非特定于域的元数据,该元数据随后可被作为区块链内的参与节点操作的任何租户组织访问,或者在某些情况下,租户组织可能希望为特定应用创建这样的元数据,该元数据随后可被其他租户组织访问。
根据方法1300的另一个实施方案,在区块链上交易的元数据的修改在已经经由区块链将元数据交易到区块链用于永久存储的多个租户之一的独占控制下;其中,当元数据可由作为对区块链访问的一个参与节点操作的多个租户中的任何一个访问时,需要新的共识来将对元数据的变化写入到区块链上;并且其中,当元数据仅可由最初将元数据交易到区块链上的多个租户中的一个租户专用时,不需要共识将对元数据的变化写到区块链上。
例如,在元数据可被其他租户组织访问的情况下,修改受到共识控制,然而,如果元数据是特定于域的,并且仅限于创建并最初将其存储在区块链上的租户组织专用,则没有必要强制这种修改的共识,尽管可选地,区块链协议可能需要共识操作。
根据方法1300的另一个实施方案,区块链的区块链协议由主机组织定义,并且进一步地,其中,主机组织允许作为区块链上的参与节点操作的主机组织的多个租户访问区块链;或者替代地,其中,区块链的区块链协议由不同于主机组织的第三方区块链提供商定义,并且进一步地,其中,主机组织也作为区块链上的参与节点来操作,主机组织经由该参与节点访问区块链。
例如,某些区块链是由主机组织自己实施的,其中,主机组织定义了区块链协议,并代表其租户组织便于访问区块链,这些租户组织随后在区块链提供的主机组织上作为参与节点操作,可选地,也可以根据主机组织的判断允许非租户组织作为参与节点。然而,也有一些现有的区块链实施方案不是由主机组织定义或实施的,因此,在主机组织之外操作,这些区块链协议是由第三方或外部联合体或标准机构定义的。在这种情况下,主机组织仍然可以通过在区块链作为参与节点本身操作来促进对区块链的访问,然后主机组织可以经由该节点访问区块链的功能。在这种情况下,租户组织可以向主机组织授予许可和访问权限,以代表他们作为代理,或者主机组织可以在区块链上实现虚拟参与节点,每个租户组织在其中可以作为参与节点操作,因此,在租户组织和由主机组织实现的虚拟节点之间提供了1:1的对应关系,或者主机组织可以执行相关联的智能合约,并对区块链的存储数据记录更新交易进行验证,但是随后允许租户组织自己的参与节点进行自我认证,然后例如经由主机组织提供的API与区块链进行实际交易。以这种方式,租户组织可以将交易添加至区块链(经过共识),而不管哪个区块链是由主机组织或第三方实施的。
根据另一个实施方案,方法1300还包括:维护持久存储到区块链的多个数据记录的索引;其中,该索引至少定义了持久存储到区块链的多个数据记录中的每一个的位置,该位置定义了区块链的一个可寻址块,从该块中获取持久存储到区块链的相应数据记录。
根据方法1300的另一个实施方案,索引包括Merkle树兼容索引;并且其中,索引被持久地存储在主机组织处或者持久地存储到区块链或者持久地存储在主机组织和区块链处。
例如,这样的索引可以用来提高获取速度,其中,索引保持在主机组织和/或区块链内。当重复数据持久存储时,由于索引定义了数据在区块链内的特定位置,例如,这种数据存储在哪个块,因此用于获取索引记录的获取时间大大减少。
根据方法1300的另一个实施方案,索引为持久存储到区块链的多个数据记录中的每一个定义(i)持久存储到区块链的多个记录中的每一个的位置和(ii)持久存储到区块链的多个记录中的任何内容的副本;并且其中,保持索引包括当根据更新值的成功验证将数据记录的更新值写入区块链时,将数据记录的更新值写入索引。
根据另一个实施方案,方法1300还包括:接收第二交易,请求从区块链获取先前写入区块链的更新数据记录;在不与区块链交互的情况下从索引中获取更新的数据记录;并且响应于请求获取的第二交易,返回从索引中获取的更新的数据记录。
例如,除了索引位置信息之外,还可以获取记录的内容,完全不需要与区块链就先前已被索引的只读获取请求进行交易。在以这种方式索引这种存储记录的内容的情况下,与传统的区块链获取交易相比,获取速度将显著提高,尤其是当索引在主机组织处持久保存和保持时,因此消除了与区块链的任何交互,无论如何进行只读获取。
根据方法1300的另一个实施方案,索引的节点和叶可以通过由索引的寻址结构定义的全部或部分地址来获取;其中,该方法还包括维护索引的寻址结构,其中,该寻址结构至少包括:定义应用命名空间的寻址结构的第一部分;定义实体类型标识符的寻址结构的第二部分;以及寻址结构的第三部分,定义由区块链存储并由索引索引的实体或数据记录的名称。
例如,节点下的任何节点或叶或子树654都可以直接从索引中引用和获取,而不必在地址已知时穿过、遍历或搜索索引,从而进一步提高获取速度。
根据方法1300的另一个实施方案,用完全合格的地址引用索引,将从索引返回叶的内容,即叶的内容;并且其中,引用具有部分地址的索引将在匹配部分地址的索引节点下返回子树,其中,子树包括在匹配部分地址的索引节点下构造的索引的多个叶。
例如,任何叶的内容都可以通过调用具有完整地址的索引来返回,指定应用程序名称空间、实体类型标识符以及实体或记录的名称,然而,使用部分地址可能是非常有益的,因为允许返回节点下的子树内的所有匹配记录。例如,如果需要,存储学生记录的应用程序可以通过用应用程序名称空间和实体类型标识符指定部分地址来返回该应用程序的所有元数据,但是不指定任何特定的实体名称。类似地,可以使用指定应用程序名称空间代码和指定学生数据记录的实体类型标识符的部分地址来返回所有学生记录,但是不指定任何特定的实体名称。
根据另一个实施方案,方法1300还包括:接收多个后续交易,为持久存储到区块链的数据记录的多个数据元素中的一个或多个指定额外更新值;通过在接收时用多个后续交易中的每一个更新索引而不向区块链写入相应更新,缓冲多个后续交易,将额外的更新值指定给索引;并且通过周期性地将单个增量更新交易添加至表示经由多个后续交易接收的所有额外更新值的区块链,来增量更新持久存储到区块链的数据记录。
例如,某些应用程序(例如,来自一组IoT装置(物联网信息)的数据流)会导致变化频率过高的更新和无休止的数据流对于在区块链内存储来说是不切实际的更新。然而,经由索引缓冲这样的信息,然后经由单个增量更新交易周期性地将这样的数据刷新到区块链,克服了这个问题,因此允许这样的高频数据记录更新仍然被交易并存储在区块链上。
根据特定实施方案,存在其上存储有指令的非暂时性计算机可读存储介质,当由其中至少具有处理器和存储器的主机组织的系统执行时,所述指令使得所述系统执行以下操作:代表主机组织的多个租户操作到区块链的区块链接口,其中,所述多个租户中的每一个作为能够访问区块链的参与节点操作;接收区块链的交易,请求主机组织更新持久存储在区块链上的数据记录,该交易指定数据记录的多个数据元素中的一个或多个的更新值;在允许交易被添加至区块链,以用更新的值更新区块链上的数据记录之前,执行智能合约,以验证由交易指定的更新的值;并且根据智能合约对更新数据值的成功验证,通过将交易添加至区块链上的新区块,将数据记录的更新值写入区块链。
图14示出了系统1401的图示,实施方案可以在该系统内操作、安装、集成或配置。根据一个实施方案,存在至少具有处理器1490和存储器1495的系统1401,以执行实现本文描述的方法的应用代码。这样的系统1401可以与托管计算环境(例如,主机组织、多租户环境、按需服务提供商、基于云的服务提供商、客户端-服务器环境等)通信地接合并协同执行。
根据所描绘的实施方案,可以在主机组织内操作的系统1401包括处理器1490和存储器1495,以在系统1401处执行指令。根据这样的实施方案,处理器1490将代表主机组织的多个租户1498执行区块链服务接口1465,其中,多个租户1498中的每一个都作为能够访问区块链1499的参与节点来操作。在区块链服务接口1465的内部,描绘了区块链元数据定义管理器1492,本文描绘为通过其对区块链1499的访问将元数据写入区块链,如区块链服务接口1465所提供的。
系统1401的接收接口1426将接收区块链的交易1441,请求主机组织更新持久存储在区块链上的数据记录,其中,该交易指定数据记录的多个数据元素中的一个或多个的更新值。这种系统还包括可经由处理器1490和智能合约执行器和验证器1443执行的智能合约1439,经由该执行器和验证器在允许将交易添加至区块链之前,验证由交易1441指定的更新值,以用更新值更新区块链上的数据记录。还提供了区块链服务接口1465,经由该接口,系统1401将根据智能合约1439对更新数据值的成功验证,通过将交易1441添加至区块链上的新区块,将数据记录的更新值写入区块链。
区块链的区块链协议1486定义了区块链的一组功能(例如,由区块链实现管理器1485提供),其中,该组基本功能可由区块链的任何参与节点1498访问。系统1401可以进一步将元数据1489保存到区块链上;其中,接收接口1426进一步接收请求将这种元数据1489存储到区块链的交易1441,有时用于验证接收的交易1441的更新值。根据这样的系统1401,区块链服务接口1465进一步根据智能合约1439的成功验证将交易1441添加至区块链的新区块。
根据系统1401的这种实施方案,接收接口1426可以传递交易1441的交易数据内容,以存储在由数据库系统1446保存的索引中。
根据系统1401的这种实施方案,GUI 1440可以被推送到用户装置1497,用户装置或管理计算装置可以经由该用户装置与区块链元数据定义管理器1492交互。
根据系统1401的另一个实施方案,区块链服务接口1465将与区块链1499交互并提供对其的访问。
根据系统1401的另一个实施方案,接收接口1426与远离系统的用户客户端装置1497通信,并且经由公共互联网将用户装置与系统通信链接。根据这样的实施方案,系统在主机组织作为用户装置1499的基于云的服务提供商操作;其中,基于云的服务提供商托管经由公共互联网暴露给用户客户端装置的接收接口1426,并且进一步地,其中,接收接口(或网络应用接口1445)从用户装置接收作为来自基于云的服务提供商的服务请求的输入。
总线1416将系统1401的各种组件相互之间、与系统1401的任何其他外围设备以及与诸如外部网络元件、其他机器、客户端装置、云计算服务等外部组件进行接合。通信还可以包括通过LAN、WAN或公共互联网上的网络接口与外部装置通信,同时认证器1450认证用户装置和用户,试图访问由系统1401展示的主机组织的数据。
图15A描绘了根据所描述的实施方案的另一个示例性架构1501。
具体而言,现在描述了元数据规则用户1550,其利用计算装置1599并且具体地利用图形用户接口(GUI)1510来配置要应用于在区块链上发生的交易的元数据规则。
如本文所示,存在应用选择GUI,经由该GUI,元数据规则用户1550可以首先选择要应用新的元数据规则的一个或多个应用,然后在底部,存在规则创建GUI,经由该GUI,元数据规则用户1550可以创建要部署到区块链的新规则。
如本文所示,规则创建GUI向元数据规则用户1550提供了条件构建器接口,经由该接口,用户可以通过GUI选择必须存在的状态,以及操作符,例如,“是”或“不是”或“包括”或“不包括”或“等于”或“大于”或“小于”等,然后是描述符,例如,当“状态是待定变化”或当“状态是已知错误”时要应用的规则的“待定变化”,或者某个其他要添加的新标准。
GUI还允许用户加载已经声明并经由系统可用的现有过滤器或规则,或者保存新创建的规则或过滤器,或者进行排序等。此外,下面更详细讨论的“运行”能力允许元数据规则用户1550模拟新定义的规则的执行,而无需实际交易区块链上的任何事情,也无需将新创建的规则推给区块链,以获得共识和接受。
值得注意的是,应用程序选择GUI允许元数据规则用户1550创建将被应用于与特定应用程序相关联的交易的规则,例如,“银行记录应用程序”,其在本文被描述为已经在应用程序选择GUI内选择。然而,也允许将元数据规则应用于区块链的特定交易或区块链的所有交易。
图15B描绘了根据所描述的实施方案的另一个示例性架构1502。
再次描绘了元数据规则用户1550利用计算装置1599,并且具体地利用图形用户接口(GUI)1510来配置要应用于区块链上发生的交易的元数据规则。
尽管先前的GUI允许元数据规则用户应用新定义的规则或将先前创建的规则应用于与先前声明的特定应用相关联的交易,但是本文描述的交易选择GUI允许元数据规则用户1550将规则专门应用于给定类型的交易或区块链上的所有交易,而不管类型如何,也不管这些交易是否碰巧与任何声明的应用相关联。
如本文所示,对于新定义的元数据规则或可用的先前定义的元数据规则,有各种允许的配置。例如,元数据规则用户1550可以将新的或现有的规则应用于“所有交易-预执行”,在这种情况下,如上所述,为在执行交易本身之前到达区块链的每个交易执行该规则。这种预执行规则可以用于任何定义的标准和条件,但是理想地适用于验证过程,例如,验证字母数字字符没有输入到数字字段中,或者输入到日期字段中的日期对应于有效的日期格式,或者符合某些限制,例如,在允许的天数内,或者表示不在未来或不在过去的日期,诸如此类。在区块链执行所接收的交易之前发生的额外验证方案可以包括例如验证账户持有人有足够的资金可用于所请求的资金转移。例如,如果用户想要向另一用户转移1个比特币价值或某个其他价值单位,则预执行规则可以检查,以验证用户或账户持有人拥有的资金等于或大于要转移的资金量。
此外,还允许所有交易的执行后元数据规则。此类规则可用于在区块链发生交易后采取一些行动,例如,触发通知或向交易请求者发出确认,或将交易数据推送到日志或分析引擎或AI引擎等。存在许多可能性,但规则创建和应用于执行后交易,意味着该规则将在交易执行后应用于区块链的每笔交易,或者根据规则的条件和标准,在区块链执行交易后应用于区块链的每笔匹配定义的标准和条件的交易。
还允许将定义的元数据规则应用于具有特定交易类型(用于交易前执行或交易后执行)的任何交易,或者应用于具有特定交易类型的任何交易,并且根据由规则创建GUI提出的定义的规则满足某些定义的标准和条件。例如,本文描述了元数据规则用户1550已经选择了“贷款审批交易类型”,用于特定规则的应用,如GUI所示,碰巧已经定义并部署到区块链进行预执行。部署状态表示已经就此现有元数据规则达成共识,而任何新定义的规则都需要在状态表示“部署”状态之前达成共识。
最终,GUI将使用元数据规则用户1550提供的输入数据,并自动生成适用的代码。例如,本文描述的示例性代码可以由GUI输出,并在区块链上进行交易以达成一致,然后对匹配的交易执行:
#COMMENT:current inventory<5
#COMMENT:OR
#COMMENT:(current month="December"
#COMMENT:AND
#COMMENT:current_inventory<20)
{
"rules":
[{
"name":"inventory_rule",
"criteria":{"any":
[
{"name":"inventory",
"operator":"less_than",
"value":5,
},
]},
"actions":
[
{"name":"order_more",
"params":{"number_to_order":40},
},
]
}]
}
因此,如本文所描述的,GUI输出适当的语法,根据这个示例,该语法将应用于“当前库存”小于5的交易,或者应用于“当前月份”是12月并且“当前库存”小于20的情况,大概是因为12月的需求激增,因此元数据规则创建者已经指示,每当库存低于5或者在12月的特殊情况下当库存低于20时,将应用这样的规则。
这样的语法然后可以通过Apex转化引擎来处理,以将区块链平台不可知语法转换成针对目标区块链的本地区块链语法,将经由该相应区块链上的智能合约应用和执行该规则,如之前关于例如图4A和图4B所描述的,在图4C描绘了向区块链发布(部署)元数据及其获取。
代码遵循语法,然后经由智能合约执行实现必要的规则。值得注意的是,代码是由GUI代表元数据规则用户1550创建的,因此极大地简化了这种规则的配置和创建。
对于试图利用区块链技术能力的业务用户来说,最大的问题之一是为智能合约执行创建业务规则并进行编程。
问题在于,每个不同的区块链平台对于执行这样的业务规则具有不同的智能合约要求,导致不同的语法、不同的允许条件和标准以及不同的机制,通过这些机制将任何创建的规则部署到相应的区块链。
因此,执行这种业务规则的任何验证方案和工作流都是经由智能合约编写的,然后部署到相应的区块链,并且由于语法不同,这种规则必须由程序员和开发人员专门为要应用和使用这种规则的特定区块链手动编写。
因此,根据所描述的实施方案,利用元数据驱动的区块链平台的元数据规则用户、区块链管理员和程序员可以创建元数据驱动的业务规则,该业务规则随后经由相应的区块链平台上的相同智能合约来执行,但是不需要元数据规则用户、区块链管理员和程序员为每个不同的平台创建不同的规则语法。
因此,允许区块链管理员和元数据规则用户利用主机组织提供的GUI在他们自己的云环境中定义业务规则,然后主机组织生成定义这种规则的必要语法和元数据,这些语法和元数据随后作为元数据存储在区块链中,并且根据某些实施方案,被转换成本地区块链智能合约执行格式。
随着利用区块链的软件系统在复杂性和使用上的增长,如果系统的逻辑和/或行为的每一个变化都打破了先前配置的智能合约和业务规则,则就成为业务用户的负担,因此需要业务用户编写和部署新的代码,这是分散网络的一个重大问题,因为业务用户通常不能规定他们正在使用的区块链平台如何以及何时更新或修改。
因此,在区块链使用元数据驱动的业务规则引擎为这类业务用户提供了简单的接口,允许任何人捕捉定义系统行为的新规则和逻辑,包括通过使用GUI的非程序员。由写入区块链的元数据表示的这样的规则然后可以由区块链通过智能合约执行来执行。当区块链平台的行为发生变化时,不需要重写或重新编码元数据,而是根据区块链平台的新行为简单地读取和执行存储在区块链上的元数据,因为所定义的元数据规则对于底层区块链平台的这种变化是不可知的。然而,在某些情况下,主机组织区块链元数据定义管理器196可能需要触发所定义的元数据规则到所讨论的区块链本地智能合约可执行代码的重新转换,但是这种事件可以是自动化的,并且不需要业务用户的任何特定动作,并且当然不需要业务用户重新编写其业务规则或相关代码来实现这种规则。在其他实施方案中,已经被写入区块链的元数据可以简单地由智能合约执行引擎重新读取,并且在区块链的后端处理器处被适当地解译和执行,而无需主机组织或业务用户的任何动作,这取决于已经应用了业务规则的特定区块链平台的能力。
根据特定实施方案,区块链管理员可以为特定声明应用(DApp)定义营销逻辑和业务规则,例如,经由图15A的应用程序选择GUI选择的应用程序。例如,具有适当权限的区块链管理员或其他元数据规则用户然后可以定义指定某些客户或项目何时有资格基于区块链的交易获得折扣的条件。这些条件可能是为某些客户或某些项目指定的,也可能是其他标准,例如,库存水平、日期范围或任何适合经营目标需要的业务逻辑。
通常,这种业务规则的创建需要程序员开发专门的语法,以便经由区块链平台的智能合约执行引擎执行,不同的区块链平台使用不同的语法。然而,在元数据规则用户或区块链管理员利用由主机组织的区块链服务套件提供的区块链元数据定义管理器196的情况下,则区块链管理员只需要经由GUI定义规则,将它们与特定声明应用或特定类型的交易(或所有交易)相关联,然后,一旦提交的规则被区块链网络的共识机制批准,所定义的规则将由主机组织的区块链服务接口和相关联的智能合约执行和管理引擎自动执行。
图15C描绘了根据所描述的实施方案的另一个示例性架构1503。
如本文所示,在元数据规则编程器1551或开发人员希望手动创建规则语法的情况下,或者在另一应用用来将适当的语法推送到元数据规则创建引擎的情况下,也允许经由元数据规则用户经由应用编程接口(API)1511输入元数据规则,这可以允许经由元数据规则API来实现,具有与元数据规则用户经由GUI配置这样的规则相同的效果。
不管这种元数据规则是如何编写的,无论是经由所提供的GUI还是API接口,所定义的规则都可以用来强制执行对提交给应用程序的数据输入和输入的验证要求,或者触发各种执行流程,例如,对某些客户的商品进行折扣,或者基于如上所述的某些库存水平。
一旦定义,写入区块链的元数据规则将在区块链网络级别使用区块链的智能合约执行引擎(如果可用)来执行,或者在此类功能无法经由区块链平台获得时,经由主机组织的智能合约执行引擎来执行。
利用这种元数据规则驱动的智能合约,示例性验证可以包括例如禁止输入不正确的数据(例如,具有不正确数字的电话号码或格式错误的电子邮件地址等)或输入不正确的类型数据,例如,在仅数字字段中输入字母字符等。
然而,通常,规则不是验证特定的,而是表示要经由区块链元数据定义管理器196定义的更复杂的业务规则。例如,如上面在库存应用示例中所述,基于库存水平过高或库存水平降低等,可以采取各种动作。因此,这种元数据规则可以用于管理多个伙伴之间的库存水平,每个伙伴都可以有自己的本地库存,但是这些规则是基于总库存等来应用的。
以前的解决方案要求程序员和开发人员将规则编码为本地区块链可执行格式,以实现智能合约执行,并且该过程复杂、容易出错,新手或非程序员业务用户根本无法使用,他们是最有可能精心设计和定义此类规则的个人。因此,对于希望利用区块链技术并利用智能合约执行能力的企业来说,这种安排增加了成本和复杂性,因为有必要向高技能开发人员支付费用,将规则编码到引擎中,同时不解决出错可能性高的问题。
因为元数据规则是使用区块链不可知格式定义并写入区块链的,所以有可能创建一次相同的元数据规则,然后应用于多个不同的区块链平台。此外,因为UI允许用户创建完整的语法(经由GUI或API),GUI条件构建器还可以指定特定于业务开发人员需求的条件,或者通过API对这些条件进行编程。
此外,无论是使用GUI还是API,定义的元数据规则都被限制为创建关联应用程序或关联交易的允许实体、字段定义和字段类型,因为元数据驱动的区块链平台不允许创建违反已声明应用程序或已声明实体的已定义元数据或其相关字段定义和字段类型的规则或条件。
以这种方式,元数据规则的创建仅限制为那些条件、标准、交易和声明的应用,其中,区块链管理员或元数据规则用户具有与之交互的权限,并且这种定义的业务规则符合相关联的声明的应用(DApp)、实体等的元数据。
通过将元数据规则的定义限制为仅允许符合先前为现有应用程序、实体、交易类型等定义的元数据定义的条目。因此,还可以显著降低安全漏洞、逻辑错误或其他格式错误的业务规则的可能性,如果这些规则的代码以自由形式编写,而不局限于这些元数据定义或条件构建器GUI上的允许标准,则可能会出现这些问题。
根据又一个实施方案,一旦元数据规则代码从GUI输出或被API接受,则在元数据规则代码被提交给区块链之前,通过元数据管理模型对其进行处理和遍历。
通过管理模型处理代码,然后向元数据规则用户或创建元数据规则的区块链管理员呈现关于所创建的代码将如何影响区块链交易和资产的信息,从而允许用户在模拟或沙箱环境中动态地看到规则在为区块链交易执行时将如何执行。例如,管理模型和规则模拟可以模仿或模拟某些值,以显示规则在区块链执行时将创建什么以及数据、资产和交易执行将如何在区块链受到影响。
根据另一个实施方案,一旦通过管理模型创建并处理了代码,用户就可以将代码提交给区块链平台上的伙伴(例如,将代码提交给其他区块链参与节点),用于进行评估并达成共识,在区块链上接受在先元数据规则和定义这些规则的代码。
根据这样的实施方案,区块链上的伙伴和任何参与节点可以应用相同的管理模型,并且还模拟所创建的元数据规则的执行,以观察该规则将如何影响区块链的数据、资产以及交易,实际上没有对区块链本身执行任何操作。
基于模拟执行,伙伴和参与节点然后可以投票达成共识或投票拒绝规则等,以便确定是否在区块链上接受所定义的元数据规则。
根据特定实施方案,规则的代码和语法是以JSON兼容格式创建的,但是后来,当在达成共识后被写入区块链时,被转化成网络汇编语言,从而采用更安全的二进制格式,该格式具有合约的加密属性,一旦部署到区块链,任何人都不能改变该格式。换言之,所有参与的节点都可以看到其网络汇编语言格式的已部署和已接受的代码,但是它们不能改变,而不再次在规则的整个创建/编辑过程中继续进行,根据元数据定义进行验证,服从管理,并再次提交以获得共识,然后在区块链上接受。
WebAssembly(通常简称为Wasm或WASM)是一种标准,该标准为网页使用的可执行文件定义了二进制格式和相应的类似组件的文本格式。Wasm的目的是使网络浏览器的JavaScript引擎能够以几乎与本机机器代码相同的速度执行页面脚本。虽然不能完全替代JavaScript,但Wasm为页面脚本的性能关键部分提供了改进的执行,并与常规脚本代码在同一个沙箱中运行。
WebAssembly代码或Wasm代码的表示旨在运行在可移植的抽象结构化堆栈机器上,该机器设计为比解析JavaScript更快,并且执行更快,并且适合极其紧凑的代码表示。
一旦被区块链接受,将根据交易类型或所有交易或根据定义和接受的任何定义的标准和条件触发和执行智能合约。
根据这样的实施方案,智能合约的执行由区块链上的多个节点或区块链上的所有节点来执行,然后由多个区块链节点来比较输出,以确保来自并发执行的输出是相同的,从而防止篡改或任何欺骗尝试,或者将恶意或欺诈性智能合约执行输出提交为真实的。
假设已执行智能合约的多个参与节点的输出相同,则达成共识,将在区块链上接受智能合约执行的结果或输出。
如上所述,存在允许的交易前和交易后执行结构,其中,在甚至尝试执行在区块链接收的交易之前,预执行通常优选用于数据验证,并且其中,后执行用于评估事件或交易是否以特定方式发生,然后在交易执行之后经由智能合约采取一些行动。
元数据规则被认为是动态的元数据驱动和声明性的,因为规则可以利用条件构建器来创建,并被模拟,以测试交易或规则执行在沙箱环境中的样子。这样,区块链上的伙伴和其他参与节点就放心了,因为他们也可以通过GUI查看规则,而不必付钱给程序员或开发人员来查看1000行代码,这是一个成本高、耗时且繁琐的过程,这进而通过将可以从GUI和API编码到智能合约中的条件和值限制为与声明应用或其关联的实体的定义的元数据以及特定交易的实体和字段定义等兼容的条件和值,极大地提高了安全性。
此外,因为代码被转换为WebAssembly(WASM)格式并表示为二进制,所以不会受到篡改和恶意行为者的攻击。
根据另外的实施方案,经由元数据规则指定的条件可以根据区块链上的交易是由声明的应用的“所有者”还是声明的应用(DApp)的“一方”来进一步限制。例如,应用程序的所有者可能具有增强的权利,例如修改在区块链上交易的记录,而声明应用的授权网络参与者可能仅仅是应用程序的“一方”,因此可能具有创建新记录,提交记录的额外信息以及读取记录的权限,但是他们可能缺乏修改或更改某些记录的权限,从而允许对区块链上的数据的许可实施机制,其中,元数据规则将定义一个规则,该规则要求例如试图改变现有记录的交易必须首先在交易执行前智能合约中“验证”交易提交者是应用的“所有者”,而不仅仅是应用的“一方”。许可实施的许多其他变化也是可能的。此外,当“一方”而非“所有者”提交记录变化交易时,可以利用这样的规则来触发通知,其中,定义的元数据是定义是否处理或拒绝该交易的规则。
图16描绘了示出方法1600的流程图,该方法使用分布式分类账技术(DLT)结合基于云的计算环境(例如,由处理器和存储器支持的数据库系统实现)来实现声明性和元数据驱动的区块链平台,以执行这样的功能来向用户、客户和订户提供基于云的按需功能。
根据本文描述的系统和方法,方法1600可以由包括硬件(例如,电路、专用逻辑、可编程逻辑、微码等)、软件(例如,在处理装置上运行的指令)的处理逻辑来执行,以执行各种操作,例如,操作、定义、声明、关联、写入、接收、获取、添加、交易、训练、分发、处理、传输、分析、触发、推送、推荐、解析、持久保存、展示、加载、生成、存储、维护、创建、返回、呈现、接合、通信、查询、提供、确定、显示、更新、发送等。例如,如图1等所示,托管计算环境111、区块链服务接口1650及其数据库系统130以及本文描述的其他系统和组件可以实现所描述的方法。根据某些实施方案,下面列出的一些框和/或操作是可选的。所呈现的块的编号是为了清楚起见,并不旨在规定各种框必须出现的操作顺序。
参考图16所示的方法1600,从框1605开始,描述了主机组织的系统通过以下操作来声明新应用并将为新应用定义的元数据交易处理到区块链上的操作。
在框1610,处理逻辑代表主机组织的多个租户操作到区块链的区块链接口,其中,多个租户中的每一个都作为能够访问区块链的参与节点操作。
在框1615,处理逻辑从与系统可通信地接合的用户装置接收声明新应用的第一输入。
在框1620,处理逻辑从用户装置接收第二输入,为新应用添加多个网络参与者,其中,网络参与者被授予对新应用的访问权限。
在框1625,处理逻辑从用户装置接收第三输入,声明新应用的多个实体类型。
在框1630,处理逻辑从用户装置接收第四输入,为多个实体类型中的每一个声明一个或多个新的字段定义。
在框1635,处理逻辑生成其中编码有作为新应用的已定义元数据的区块链资产,至少(i)声明的多个网络参与者,(ii)声明的多个实体类型,以及(iii)为多个实体类型中的每一个声明的一个或多个新字段定义。
在框1640,处理逻辑将其中编码了新应用的已定义元数据的区块链资产交易到区块链。
图17描绘了示出方法1700的流程图,用于结合基于云的计算环境(例如,由处理器和存储器支持的数据库系统实现)来实现声明性的、元数据驱动的、可密码验证的多网络(多租户)共享分类账,以执行这样的功能来向用户、客户和订户提供基于云的按需功能。
根据本文描述的系统和方法,方法1700可以由包括硬件(例如电路、专用逻辑、可编程逻辑、微码等)、软件(例如,在处理装置上运行的指令)的处理逻辑来执行,以执行各种操作,例如,操作、定义、声明、关联、写入、接收、获取、添加、交易、训练、分发、处理、传输、分析、触发、推送、推荐、解析、持久保存、展示、加载、生成、存储、维护、创建、返回、呈现、接合、通信、查询、提供、确定、显示、更新、发送等。例如,如图1等所示,托管计算环境111、区块链服务接口1750及其数据库系统130以及本文描述的其他系统和组件可以实现所描述的方法。根据某些实施方案,下面列出的一些框和/或操作是可选的。所呈现的块的编号是为了清楚起见,并不旨在规定各种框必须出现的操作顺序。
参考图17所示的方法1700,从框1705开始,处理逻辑代表共享分类账的多个授权网络参与者操作到共享分类账的接口,其中,共享分类账经由多个分布式共享分类账节点保存数据。
在框1710,处理逻辑在共享分类账内生成网络组织,以代表作为多个授权网络参与者中的第一个的创始人组织存储数据。
在框1715,处理逻辑从创始人组织接收输入,将多个伙伴组织定义为网络组织的额外授权网络参与者,其中,所有授权网络参与者都具有经由共享分类账对网络组织存储的数据的读取访问权,而无需复制数据。
在框1720,处理逻辑从创始人组织接收输入,定义了每个伙伴组织与共享分类账内的网络组织交互的权限。
在框1725,处理逻辑将元数据写入共享分类账,至少定义了网络组织的授权网络参与者和为每个伙伴组织定义的权限。
在框1730,处理逻辑从授权的网络参与者接收与网络组织交互的请求。
在框1735,处理逻辑在满足请求时与共享分类账进行交易。
图18A示出了环境1898的框图,其中,按需数据库服务可以根据所描述的实施方案进行操作。环境1898可以包括用户系统1812、网络1814、系统1816、处理器系统1817、应用平台1818、网络接口1820、租户数据存储器1822、系统数据存储器1824、程序代码1826和处理空间1828。在其他实施方案中,环境1898可以不具有列出的所有组件和/或可以具有替代或除了上面列出的那些之外的其他元素。
环境1898是存在按需数据库服务的环境。用户系统1812可以是用户用来访问数据库用户系统的任何机器或系统。例如,任何用户系统1812可以是手持计算装置、移动电话、膝上型计算机、工作站和/或计算装置网络。如图18A所示(并且在图18B中更详细地示出),用户系统1812可能经由网络1814与按需数据库服务交互,该按需数据库服务是系统1816。
诸如系统1816之类的按需数据库服务是一种可供外部用户使用的数据库系统,这些用户不一定需要关心数据库系统的建立和/或维护,而是可以在用户需要数据库系统时(例如,根据用户的需求)供他们使用。一些按需数据库服务可以将来自一个或多个租户的信息存储到公共数据库映像的表中,以形成多租户数据库系统(MTS)。因此,“按需数据库服务1816”和“系统1816”在本文可互换使用。数据库映像可以包括一个或多个数据库对象。关系数据库管理系统(RDMS)或等效系统可以针对数据库对象执行信息的存储和获取。应用平台1818可以是允许系统1816的应用运行的框架,例如,硬件和/或软件,例如,操作系统。在一个实施方案中,按需数据库服务1816可以包括应用平台1818,其能够创建、管理和执行由按需数据库服务的提供商开发的一个或多个应用、经由用户系统1812访问按需数据库服务的用户、或者经由用户系统1812访问按需数据库服务的第三方应用开发人员。
用户系统1812的用户可能在他们相应的能力上不同,并且特定用户系统1812的能力可能完全由当前用户的权限(权限级别)决定。例如,当销售人员使用特定用户系统1812与系统1816交互时,该用户系统具有分配给该销售人员的能力。然而,当管理员使用该用户系统与系统1816交互时,该用户系统具有分配给该管理员的能力。在具有分层角色模型的系统中,一个权限级别的用户可以访问较低权限级别的用户可以访问的应用程序、数据和数据库信息,但是不能访问较高权限级别的用户可以访问的某些应用程序、数据库信息和数据。因此,不同的用户在访问和修改应用程序和数据库信息方面会有不同的能力,这取决于用户的安全或权限级别。
网络1814是任何网络或彼此通信的装置网络的组合。例如,网络1814可以是LAN(局域网)、WAN(广域网)、电话网络、无线网络、点对点网络、星形网络、令牌环网、集线器网络或其他适当配置中的任何一种或任意组合。由于当前使用的最常见的计算机网络类型是TCP/IP(传输控制协议和互联网协议)网络,例如,通常被称为“互联网”并带有大写“I”的网络的全球互联网,该网络将在本文的许多示例中使用。然而,应当理解,所要求保护的实施方案的可以利用的网络不限于此,尽管TCP/IP是经常实现的协议。
用户系统1812可以使用TCP/IP与系统1816通信,并且在更高的网络级别,使用其他常见的互联网协议来通信,例如,HTTP、FTP、AFS、WAP等。在使用HTTP的示例中,用户系统1812可能包括通常被称为“浏览器”的HTTP客户端,用于在系统1816向HTTP服务器发送和从HTTP服务器接收HTTP消息。这种HTTP服务器可以被实现为系统1816和网络1814之间的唯一网络接口,但是也可能使用其他技术或替代技术。在一些实施方式中,系统1816和网络1814之间的接口包括负载共享功能,例如,循环HTTP请求分配器,以平衡负载并将传入的HTTP请求均匀地分配到多个服务器上。至少对于正在访问该服务器的用户,多个服务器中的每一个都可以访问MTS的数据;然而,也可以使用其他替代配置。
在一个实施方案中,图18A所示的系统1816实现了基于网络的客户关系管理(CRM)系统。例如,在一个实施方案中,系统1816包括应用服务器,该应用服务器被配置为实现和执行CRM软件应用,并且向和从用户系统1812提供相关数据、代码、表格、网页和其他信息,并且向和从数据库系统存储和获取相关数据、对象和网页内容。对于多租户系统,多个租户的数据可以存储在同一个物理数据库对象中,然而,租户数据通常被安排成使得一个租户的数据在逻辑上与其他租户的数据分开,从而一个租户不能访问另一租户的数据,除非明确共享这样的数据。在某些实施方案中,系统1816实现除了CRM应用之外的或者补充CRM应用的应用。例如,系统1816可以向租户提供对多个托管(标准和定制)应用的访问,包括CRM应用。用户(或第三方开发人员)应用可以包括或不包括CRM,可以由应用平台1818支持,应用平台管理创建、将应用存储到一个或多个数据库对象中并且在系统1816的进程空间中的虚拟机中执行应用。
图18A中示出了系统1816的元件的一种设置,包括网络接口1820、应用平台1818、用于租户数据1823的租户数据存储器1822、用于系统1816和可能的多个租户可访问的系统数据1825的系统数据存储器1824、用于实现系统1816的各种功能的程序代码1826、以及用于执行MTS系统进程和租户专用进程的进程空间1828,例如,作为应用托管服务的一部分运行应用。可以在系统1816上执行的额外过程包括数据库索引过程。
图18A所示系统中的几个元件包括传统的、众所周知的元件,在此仅简要说明。例如,每个用户系统1812可以包括台式个人计算机、工作站、膝上型电脑、PDA、蜂窝电话或任何支持无线接入协议(WAP)的装置或能够直接或间接连接到互联网或其他网络连接的任何其他计算装置。用户系统1812通常运行HTTP客户端,例如,浏览程序,例如,微软的互联网浏览器、Mozilla或Firefox浏览器、Opera、或者在智能手机、平板电脑、PDA或其他无线装置等的情况下支持WAP的浏览器,允许用户系统1812的用户(例如,多租户数据库系统的订户)通过网络1814访问、处理和查看系统1816向其提供的信息、页面和应用。每个用户系统1812通常还包括一个或多个用户接口装置,例如,键盘、鼠标、轨迹球、触摸板、触摸屏、笔等,用于结合由系统1816或其他系统或服务器提供的页面、表格、应用程序和其他信息,与浏览器在显示器(例如,监视器屏幕、LCD显示器等)上提供的图形用户接口(GUI)进行交互。例如,用户接口装置可以用于访问由系统1816托管的数据和应用程序,并对存储的数据执行搜索,并且以其他方式允许用户与可以呈现给用户的各种GUI页面进行交互。如上所述,实施方案适用于互联网,互联网是指网络的特定全球互联网络。然而,应当理解,可以使用其他网络来代替互联网,例如,内联网、外联网、虚拟专用网络(VPN)、基于非TCP/IP的网络、任何LAN或WAN等。
根据一个实施方案,每个用户系统1812及其所有组件都是可使用应用程序(例如,浏览器)配置的操作者,包括使用中央处理单元(例如,Intel
Figure BDA0003484949840001341
处理器等)运行的计算机代码。类似地,系统1816(以及MTS的额外实例,其中,存在一个以上的MTS)及其所有组件可以是操作员可配置的,使用包括计算机代码的应用,来使用中央处理单元运行,例如,处理器系统1817,其可以包括Intel
Figure BDA0003484949840001342
处理器等和/或多个处理器单元。
根据一个实施方案,每个系统1816被配置为向用户(客户端)系统1812提供网页、表格、应用程序、数据和媒体内容,以支持作为系统1816的租户的用户系统1812的访问。这样,系统1816提供安全机制来保持每个租户的数据分开,除非数据是共享的。如果使用一个以上的MTS,它们可能位于彼此非常接近的位置(例如,位于单个建筑物或校园中的服务器群),或者它们可能分布在彼此远离的位置(例如,位于城市A的一个或多个服务器和位于城市B的一个或多个服务器)。如本文所使用的,每个MTS可以包括一个或多个逻辑和/或物理连接的服务器,这些服务器分布在本地或一个或多个地理位置。此外,术语“服务器”意在包括计算机系统,包括处理硬件和处理空间以及相关的存储系统和数据库应用程序(例如,OODBMS或RDBMS),如本领域公知的。应当理解,“服务器系统”和“服务器”在本文经常互换使用。类似地,本文描述的数据库对象可以被实现为单个数据库、分布式数据库、分布式数据库的集合、具有冗余在线或离线备份或其他冗余的数据库等,并且可能包括分布式数据库或存储网络以及相关联的处理智能。
图18B示出了根据所描述的实施方案的图18A的元件和这些元件之间的各种可能的互连的实施方案的另一框图。图18B还示出了环境1899。然而,在图18B中,更详细地示出了实施方案中的系统1816的元件和各种互连。更具体地,图18B示出用户系统1812可以包括处理器系统1812A、存储器系统1812B、输入系统1812C和输出系统1812D。图18B示出了网络1814和系统1816。图18B还示出了系统1816可以包括租户数据存储器1822,其中具有租户数据1823,其包括例如租户存储空间1827、租户数据1829和应用元数据1831。系统数据存储器1824被描述为其中具有系统数据1825。在应用服务器18001-N的扩展细节中进一步描述用户接口(UI)1830、应用程序接口1832、应用平台1818,包括PL/SOQL 1834、保存例程1836、应用程序设置机制1838、进程空间1828,包括系统进程空间1802、租户1-N进程空间1804和租户管理进程空间1810。在其他实施方案中,环境1899可以不具有与上面列出的那些相同的元素和/或可以具有代替上面列出的那些或除了上面列出的那些之外的其他元素。
在上面的图18A中讨论用户系统1812、网络1814、系统1816、租户数据存储器1822和系统数据存储器1824。如图18B所示,系统1816可以包括(图18A的)网络接口1820,其被实现为一组HTTP应用服务器1800、应用平台1818、租户数据存储器1822和系统数据存储器1824。还示出了系统进程空间1802,包括个体租户进程空间1804和租户管理进程空间1810。每个应用服务器1800可以被配置为其中的租户数据存储器1822和租户数据1823以及其中的系统数据存储器1824和系统数据1825,以服务于用户系统1812的请求。租户数据1823可以被分成单独的租户存储区域(例如,租户存储空间1827),其可以是数据的物理排列和/或逻辑排列。在每个租户存储空间1827内,租户数据1829和应用元数据1831可以类似地分配给每个用户。例如,用户最近使用的(MRU)项目的副本可以存储到租户数据1829。类似地,作为租户的整个组织的MRU项目的副本可以存储到租户存储空间1827。UI 1830提供用户接口,API 1832向用户系统1812处的用户和/或开发人员提供进入系统1816驻留进程的应用编程接口。租户数据和系统数据可以存储在各种数据库中,例如,一个或多个OracleTM数据库。
应用平台1818包括支持应用程序开发人员创建和管理应用程序的应用程序设置机制1838,应用程序可以通过保存例程1836作为元数据保存到租户数据存储器1822中,以供订户执行,作为例如由租户管理进程空间1810管理的一个或多个租户进程空间1804。对这种应用程序的调用可以使用PL/SOQL 1834来编码,为API 1832提供了编程语言风格的接口扩展。对应用程序的调用可能被一个或多个管理获取应用元数据1831的系统进程检测,用于订户进行调用并在虚拟机中作为应用程序执行元数据。
每个应用服务器1800可以可通信地耦合至数据库例如经由不同的网络连接访问系统数据1825和租户数据1823的系统。例如,一个应用服务器18001可能经由网络1814(例如,因特网)耦合,另一应用服务器1800N-1可以经由直接网络链接耦合,而另一应用服务器1800N可以通过另一不同的网络连接耦合。传输控制协议和互联网协议(TCP/IP)是用于在应用服务器1800和数据库系统之间通信的典型协议。然而,对于本领域技术人员来说,很明显,根据所使用的网络互连,可以使用其他传输协议来优化系统。
在某些实施方案中,每个应用服务器1800被配置为处理与作为租户的任何组织相关联的任何用户的请求。因为希望能够出于任何原因在任何时间从服务器池中添加和移除应用服务器,所以优选地,用户和/或组织对特定应用服务器1800没有服务器关联性。因此,在一个实施方案中,实现负载平衡功能的接口系统(例如,F5大IP负载平衡器)可通信地耦合在应用服务器1800和用户系统1812之间,以向应用服务器1800分发请求。在一个实施方案中,负载平衡器使用最少连接算法将用户请求路由到应用服务器1800。也可以使用负载平衡算法的其他示例,例如,循环和观察到的响应时间。例如,在某些实施方案中,来自同一用户的三个连续请求可以命中三个不同的应用服务器1800,并且来自不同用户的三个请求可以命中同一应用服务器1800。以这种方式,系统1816是多租户的,其中,系统1816在不同的用户和组织上处理不同对象、数据和应用的存储和访问。
作为存储的一个示例,一个租户可能是雇用销售人员的公司,其中,每个销售人员使用系统1816来管理其销售过程。因此,用户可以维护联系数据、销售线索数据、客户跟踪数据、绩效数据、目标和进度数据等,所有这些都适用于该用户的个人销售过程(例如,在租户数据存储器1822中)。在MTS设置的一个示例中,由于要访问、查看、修改、报告、传输、计算等的所有的数据和应用程序可以由仅具有网络访问的用户系统来维护和访问,用户可以从许多不同的用户系统中的任何一个系统管理他或她的销售努力和周期。例如,如果销售人员正在拜访客户,并且客户在其大厅中有互联网接入,则销售人员可以在等待客户到达大厅时获得关于该客户的关键更新。
尽管每个用户的数据可能与其他用户的数据分开,而不管每个用户的雇主是谁,但是一些数据可能是由多个用户或作为租户的给定组织的所有用户共享或访问的组织范围的数据。因此,可能在租户级别分配一些由系统1816管理的数据结构,而其他数据结构可能在用户级别管理。因为MTS可能支持多个租户,包括可能的竞争对手,所以MTS可能有安全协议,将数据、应用程序和应用程序使用分开。此外,因为许多租户可以选择访问MTS而不是维护他们自己的系统,所以冗余、启动时间和备份是可以在MTS中实现的额外功能。除了用户特定数据和租户特定数据之外,系统1816还可以维护多个租户可用的系统级数据或其他数据。这样的系统级数据可能包括可在租户之间共享的行业报告、新闻、帖子等。
在某些实施方案中,用户系统1812(可以是客户端系统)与应用服务器1800通信,以从系统1816请求和更新系统级和租户级数据,这可能需要向租户数据存储器1822和/或系统数据存储器1824发送一个或多个查询。系统1816(例如,系统1816中的应用服务器1800)自动生成一个或多个被设计为访问所需信息的SQL语句(例如,一个或多个SQL查询)。系统数据存储器1824可以生成查询计划,以从数据库访问所请求的数据。
每个数据库通常可以被视为对象的集合,例如,一组逻辑表,包含符合预定义类别的数据。“表”是数据对象的一种表示,并且可以在本文用来简化本文描述的对象和定制对象的概念描述。应当理解,“表”和“对象”在本文可以互换使用。每个表通常包含一个或多个数据类别,这些数据类别在逻辑上排列为可视模式中的列或字段。表的每一行或每一条记录都包含由字段定义的每个类别的数据实例。例如,CRM数据库可以包括描述客户的表格,该表格具有用于基本联系信息的字段,例如,姓名、地址、电话号码、传真号码等。另一个表可能描述采购订单,包括客户、产品、销售价格、日期等信息字段。在一些多租户数据库系统中,标准实体表可能提供给所有租户使用。对于CRM数据库应用程序,此类标准实体可能包括客户、联系人、潜在客户和机会数据表,每个表都包含预定义字段。应当理解,词语“实体”在本文也可以与“对象”和“表”互换使用。
在一些多租户数据库系统中,可以允许租户创建和存储自定义对象,或者可以允许他们自定义标准实体或对象,例如,通过为标准对象创建自定义字段,包括自定义索引字段。例如,在某些实施方案中,所有自定义实体数据行都存储在单个多租户物理表中,每个组织可以包含多个逻辑表。对客户来说,透明的是,其多个“表”实际上存储在一个大表中,或者其数据可能与其他客户的数据存储在同一个表中。
图19示出了根据一个实施方案的计算机系统的示例性形式的机器1900的图示,其中,可以执行一组指令,用于使机器/计算机系统1900执行本文讨论的任何一种或多种方法。在替代实施方案中,机器可以连接(例如,联网)到局域网(LAN)、内联网、外联网或公共互联网中的其他机器。该机器可以以客户端-服务器网络环境中的服务器或客户端的身份运行,作为对等(或分布式)网络环境中的对等机器,作为按需服务环境中的服务器或一系列服务器。机器的某些实施方案可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥、计算系统或能够执行指定该机器要采取的动作的一组指令(顺序的或其他的)的任何机器的形式。此外,虽然仅示出了单个机器,但是术语“机器”也应当被理解为包括单独或联合执行一组(或多组)指令以执行本文讨论的任何一种或多种方法的机器(例如,计算机)的任何集合。
示例性计算机系统1900包括处理器1902、主存储器1904(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(例如,同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器(例如,闪存、静态随机存取存储器(SRAM))、易失性但高数据速率的RAM等)和次存储器1918(例如,包括硬盘驱动器和持久数据库和/或多租户数据库实现的持久存储装置),它们经由总线1930相互通信。主存储器1904包括区块链元数据定义管理器1924和权限管理器1923以及区块链接口1925(包括区块链共识管理器(未示出))。主存储器1904及其子元件可结合处理逻辑1926和处理器1902操作,以执行本文讨论的方法。
处理器1902表示一个或多个通用处理装置,例如,微处理器、中央处理单元等。更具体地,处理器1902可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现其他指令集的处理器或实现指令集组合的处理器。处理器1902也可以是一个或多个专用处理装置,例如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理器1902被配置为执行处理逻辑1926,用于执行本文讨论的操作和功能。
计算机系统1900可以还包括网络接口卡1908。计算机系统1900还可以包括用户接口1910(例如,视频显示单元、液晶显示器等)、字母数字输入装置1912(例如,键盘)、光标控制装置1914(例如,鼠标)以及信号生成装置1916(例如,集成扬声器)。计算机系统1900还可以包括外围装置1936(例如,无线或有线通信装置、内存装置、存储装置、音频处理装置、视频处理装置等).
次存储器1918可以包括非暂时性机器可读存储介质或非暂时性计算机可读存储介质或非暂时性机器可访问存储介质1931,其上存储了体现本文描述的任何一种或多种方法或功能的一组或多组指令(例如,软件1922)。软件1922也可以在其执行期间由计算机系统1900完全或至少部分地驻留在主存储器1904和/或处理器1902内,主存储器1904和处理器1902也构成机器可读存储介质。软件1922还可以经由网络接口卡1908在网络1920上发送或接收。
实施方案
实施方案A:一种由主机组织的系统执行的用于提供在区块链忘记数据的权利的方法,所述系统代表主机组织的多个租户向区块链提供区块链接口,每个租户充当区块链网络中的节点,所述方法包括:接收包括请求者的标识符的请求,该请求要访问被指定为私有的交易数据;请求从区块链网络中的节点访问包括请求者标识符的交易数据;从区块链网络中的节点接收至少一个共享秘密,该共享秘密指示对请求者访问交易数据的共识;并且响应于从节点接收到指示交易数据永久不可访问的共享秘密不足,拒绝访问交易数据。
实施方案A的方法,所述方法还包括:在请求访问交易数据之前,确定请求者的标识符是否在遗忘列表上。
实施方案A的方法,所述方法还包括:接收忘记与唯一用户标识符相关联的数据的请求;并且将唯一用户标识符添加至遗忘列表。
实施方案A的方法,其中,响应于接收到阈值数量的共享秘密解密所述交易数据。
实施方案A的方法,其中,从接收到的共享秘密中恢复解密密钥。
实施方案A的方法,其中,拒绝访问交易数据是响应于接收到的共享秘密的数量低于用于恢复加密密钥的阈值。
实施方案A的方法,还包括:定义要存储在区块链的交易数据的对象和元数据,包括对象和字段的私有信息的标识。
实施方案B:一种主机组织的计算系统,所述计算系统被配置为执行用于提供在区块链忘记数据的权利的方法,所述计算机系统代表主机组织的多个租户向区块链提供区块链接口,每个租户充当区块链网络中的节点,所述计算机系统包括:计算机可读介质装置,在其中存储了区块链接口和权限管理器;以及处理器装置,所述处理器装置耦合至区块链接口,所述处理器被配置为执行区块链接口和权限管理器,权限管理器用于:接收包括请求者标识符的请求,该请求要访问被指定为私有的交易数据;请求从区块链网络中的节点访问包括请求者标识符的交易数据;从区块链网络中的节点接收至少一个共享秘密,该共享秘密指示对请求者访问交易数据的共识;并且响应于从节点接收到指示交易数据永久不可访问的共享秘密不足,拒绝访问交易数据。
实施方案B的计算机系统,其中,权限管理器还用于在请求访问交易数据之前,确定请求者的标识符是否在遗忘列表上。
实施方案B的计算机系统,其中,权限管理器还接收忘记与唯一用户标识符相关联的数据的请求;并且将唯一用户标识符添加至遗忘列表。
实施方案B的计算机系统,其中,响应于接收到阈值数量的共享秘密解密所述交易数据。
实施方案B的计算机系统,其中,从接收到的共享秘密中恢复解密密钥。
实施方案B的计算机系统,其中,拒绝访问交易数据是响应于接收到的共享秘密的数量低于用于恢复加密密钥的阈值。
实施方案B的计算机系统,其中,权限管理器进一步定义要存储在区块链的交易数据的对象和元数据,包括对象和字段的私有信息的标识。
实施方案C:一种计算机可读介质,在其中存储有一组指令,当执行这组指令时,使得主机组织的计算机系统执行用于管理区块链中数据的读取访问的方法的一组操作,所述计算机系统代表主机组织的多个租户向区块链提供区块链接口,该组操作包括:接收包括请求者标识符的请求,该请求要访问被指定为私有的交易数据;请求从区块链网络中的节点访问包括请求者标识符的交易数据;从区块链网络中的节点接收至少一个共享秘密,该共享秘密指示对请求者访问交易数据的共识;并且响应于从节点接收到指示交易数据永久不可访问的共享秘密不足,拒绝访问交易数据。
实施方案C的计算机可读介质,操作还包括:在请求访问交易数据之前,确定请求者的标识符是否在遗忘列表上。
实施方案C的计算机可读介质,操作还包括:接收忘记与唯一用户标识符相关联的数据的请求;并且将唯一用户标识符添加至遗忘列表。
实施方案C的计算机可读介质,其中,响应于接收到阈值数量的共享秘密解密所述交易数据。
实施方案C的计算机可读介质,其中,从接收到的共享秘密中恢复解密密钥。
实施方案C的计算机可读介质,其中,拒绝访问交易数据是响应于接收到的共享秘密的数量低于用于恢复加密密钥的阈值。
在前面的描述中,阐述了许多具体细节,例如,具体系统、语言、组件等的示例,以便提供对各种实施方案的透彻理解。然而,对于本领域技术人员来说,显然不需要采用这些具体细节来实施本文公开的实施方案。在其他情况下,没有详细描述众所周知的材料或方法,以避免不必要地模糊所公开的实施方案。
除了附图中描绘的和本文描述的各种硬件组件之外,实施方案还包括上文描述的各种操作。根据这些实施方案描述的操作可以由硬件组件来执行,或者可以包含在机器可执行指令中,这些指令可以用于使用指令编程的通用或专用处理器来执行这些操作。或者,操作可以由硬件和软件的组合来执行。
实施方案还涉及用于执行本文公开的操作的设备。该设备可以是为所需目的专门构造的,或者可以是由存储在计算机中的计算机程序选择性激活或重新配置的通用计算机。这种计算机程序可以存储在计算机可读存储介质中,例如但不限于任何类型的盘,包括光盘、CD-ROM和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或任何适合存储电子指令的介质,每一种都耦合至计算机系统总线。
本文呈现的算法和显示并不固有地与任何特定的计算机或其他设备相关。根据本文的教导,各种通用系统可以与程序一起使用,或者可以证明构建更专用的设备来执行所需的方法步骤是方便的。各种这些系统所需的结构将在下面的描述中出现。此外,没有参考任何特定的编程语言来描述实施方案。应当理解,可以使用各种编程语言来实现本文描述的实施方案的教导。
可以作为计算机程序产品或软件来提供实施方案,该计算机程序产品或软件可以包括其上存储有指令的机器可读介质,该指令可以用于对计算机系统(或其他电子装置)进行编程,以执行根据所公开的实施方案的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质(例如,只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存装置等)、机器(例如,计算机)可读传输介质(电、光、声)等。
任何公开的实施方案可以单独使用或者彼此结合使用。尽管各种实施方案可能部分是由传统技术和方法的缺陷引起的,在说明书中描述或暗示其中一些缺陷,但是实施方案不需要处理或解决这些缺陷中的任何一个,而是可以仅解决一些缺陷,不解决任何缺陷,或者针对不直接讨论的不同缺陷和问题。

Claims (12)

1.一种由主机组织(110)的计算系统(1816)执行的用于提供在区块链中忘记数据的权利的方法,所述计算系统代表所述主机组织的多个租户向区块链提供区块链接口(190),每个租户充当区块链网络中的节点,所述方法包括:
接收包括请求者的标识符的请求,所述请求要访问被指定为私有的交易数据(1131);
请求从所述区块链网络中的节点访问所述交易数据(1137),所述请求包括所述请求者的标识符;
从所述区块链网络中的节点接收至少一个共享秘密,其指示对所述请求者访问所述交易数据(1139)的共识;和
响应于从所述节点接收到指示所述交易数据永久不可访问的不充分的共享秘密,拒绝访问所述交易数据(1143)。
2.根据权利要求1所述的方法,所述方法还包括:
在请求访问所述交易数据(1137)之前,确定所述请求者的标识符是否在遗忘列表上(1133)。
3.根据前述权利要求中任一项所述的方法,所述方法还包括:
接收忘记与唯一用户标识符相关联的数据的请求(1121);并且
将所述唯一用户标识符添加至遗忘列表(1123)。
4.根据前述权利要求中任一项所述的方法,其中响应于接收到阈值数量的共享秘密(1141),解密所述交易数据(1145)。
5.根据前述权利要求中任一项所述的方法,其中从接收到的共享秘密中恢复解密密钥(1145)。
6.根据前述权利要求中任一项所述的方法,其中拒绝访问所述交易数据是响应于接收到的共享秘密的数量低于用于恢复加密密钥的阈值(1143)。
7.根据前述权利要求中任一项所述的方法,还包括:
定义要存储在所述区块链中的所述交易数据的对象和元数据,包括标识对象和字段的私有信息(1103)。
8.根据前述权利要求中任一项所述的方法,其中被指定为私有的所述交易数据被加密,并且具有针对所述共享秘密导出的解密密钥。
9.根据前述权利要求中任一项所述的方法,其中在所述唯一用户标识符在所述遗忘列表上时,丢弃相关联的共享秘密,以使得用于解密被指定为私有的所述交易数据的密钥不可恢复。
10.根据前述权利要求中任一项所述的方法,其中所述唯一用户标识符被用于关联所述请求者和被指定为私有的所述交易数据之间的访问控制许可。
11.一种主机组织(110)的计算系统(1816),其配置为执行用于提供在区块链中忘记数据的权利的方法,所述计算机系统代表所述主机组织的多个租户向区块链提供区块链接口(190),每个租户充当区块链网络中的节点,所述计算机系统包括:
计算机可读介质装置(1931),具有在其中存储的所述区块链接口和权限管理器(181);和
处理器装置(1902),其耦合至所述计算机可读介质装置,所述处理器配置为执行所述区块链接口和所述权限管理器,所述权限管理器执行根据前述权利要求中任一项所述的方法。
12.一种计算机可读介质(1931),具有在其中存储的一组指令,当被执行时,所述一组指令使得主机组织(110)的计算机系统(1816)执行用于管理区块链中数据的读取访问的方法的一组操作,所述计算机系统代表所述主机组织的多个租户向区块链提供区块链接口(110),所述一组操作实现根据权利要求1-7中任一项所述的方法。
CN202080061463.2A 2019-05-22 2020-05-21 利用秘密共享和对读取的共识在元数据驱动的区块链上实现被遗忘的权利的系统或方法 Pending CN114365133A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962851589P 2019-05-22 2019-05-22
US62/851,589 2019-05-22
US16/667,846 US11764950B2 (en) 2019-05-22 2019-10-29 System or method to implement right to be forgotten on metadata driven blockchain using shared secrets and consensus on read
US16/667,846 2019-10-29
PCT/IB2020/054809 WO2020234814A1 (en) 2019-05-22 2020-05-21 System or method to implement right to be forgotten on metadata driven blockchain using secret sharing and consensus on read

Publications (1)

Publication Number Publication Date
CN114365133A true CN114365133A (zh) 2022-04-15

Family

ID=73456312

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080061463.2A Pending CN114365133A (zh) 2019-05-22 2020-05-21 利用秘密共享和对读取的共识在元数据驱动的区块链上实现被遗忘的权利的系统或方法

Country Status (5)

Country Link
US (3) US11469886B2 (zh)
EP (1) EP3973431A1 (zh)
JP (1) JP7451565B2 (zh)
CN (1) CN114365133A (zh)
WO (1) WO2020234814A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114978668A (zh) * 2022-05-19 2022-08-30 中国人民大学 一种跨链数据实体身份管理和认证方法及系统
CN116189911A (zh) * 2023-04-24 2023-05-30 江西莱普特信息技术有限公司 基于区块链侧链技术的医院信息系统互通方法及其系统
CN116405188A (zh) * 2023-06-07 2023-07-07 湖南元数科技有限公司 一种基于区块链的保险投保流程数据存储方法及系统
CN118660053A (zh) * 2024-08-19 2024-09-17 国网信息通信产业集团有限公司 一种基于邀约机制和联邦学习的数据处理方法及相关设备

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX2019002573A (es) * 2016-09-09 2019-08-01 Microsoft Technology Licensing Llc Rastreo de objetos a traves de diferentes partes.
CN111466096B (zh) * 2017-09-08 2021-12-31 尤利杰公司 提供不可变记录的系统和方法
US11157484B2 (en) 2018-09-19 2021-10-26 Salesforce.Com, Inc. Advanced smart contract with decentralized ledger in a multi-tenant environment
US11809409B2 (en) 2018-09-19 2023-11-07 Salesforce, Inc. Multi-tenant distributed ledger interfaces
EP3877818A1 (de) * 2018-11-09 2021-09-15 FRAUNHOFER-GESELLSCHAFT zur Förderung der angewandten Forschung e.V. System, überprüfungsmodul, servicemodul und verfahren zur überprüfung der konfiguration mindestens einer produktionseinheit basierend auf blockchain-technologie
US11171774B2 (en) * 2018-11-28 2021-11-09 Intel Corporation System for synchronizing a cryptographic key state through a blockchain
US11194961B2 (en) * 2018-12-31 2021-12-07 Salesforce.Com, Inc. Systems, methods, and apparatuses for adding a document history graph and corresponding hash value to a blockchain in a cloud based computing environment
US11449491B2 (en) * 2019-01-14 2022-09-20 PolySign, Inc. Preventing a transmission of an incorrect copy of a record of data to a distributed ledger system
US11616652B2 (en) * 2019-03-15 2023-03-28 Hcl Technologies Limited Data security using a blockchain ledger
US11048693B2 (en) * 2019-06-05 2021-06-29 International Business Machines Corporation Resolution of ordering inversions
US11606442B2 (en) 2019-06-07 2023-03-14 Microsoft Technology Licensing, Llc Subscription to edits of blockchain transaction
US11586614B2 (en) * 2019-07-30 2023-02-21 Oracle International Corporation Native persistent store support for blockchains
US11640391B2 (en) 2019-09-11 2023-05-02 Oracle International Corporation Supporting blockchain collections in a database
US11336455B2 (en) * 2019-09-25 2022-05-17 International Business Machines Corporation Consensus protocol for blockchain DAG structure
US11115804B2 (en) * 2019-10-04 2021-09-07 Microsoft Technology Licensing, Llc Subscription to dependencies in smart contracts
US11288380B2 (en) * 2019-10-14 2022-03-29 Oracle International Corporation Securely sharing selected fields in a blockchain with runtime access determination
CN112787837A (zh) * 2019-11-07 2021-05-11 华为技术有限公司 数据共享的方法、设备及系统
JP7273312B2 (ja) * 2019-11-12 2023-05-15 富士通株式会社 通信プログラム、通信方法および通信装置
US11587652B1 (en) * 2019-11-26 2023-02-21 Moxe Health Corporation System and method for handling exceptions during healthcare record processing
US11354653B2 (en) * 2019-12-03 2022-06-07 Jpmorgan Chase Bank, N.A. Systems and methods for using distributed ledger micro reporting tools
US11621826B2 (en) * 2019-12-06 2023-04-04 Mastercard International Incorporated Method and system for HTTP session management using hash chains
US11836071B2 (en) * 2019-12-10 2023-12-05 Hitachi, Ltd. Method and apparatus creating test environments for blockchain systems
US11888965B2 (en) * 2019-12-10 2024-01-30 Mastercard Asia/Pacific Pte. Ltd. Method and system for IOT device digital asset permission transfer system using blockchain network
US11823120B2 (en) 2019-12-13 2023-11-21 Salesforce, Inc. System or method of verifying an asset using blockchain and collected asset and device information
KR102094705B1 (ko) * 2020-01-17 2020-03-30 주식회사 에프엔에스벨류 블록 체인을 기반으로 한 다중 노드 인증 방법 및 이를 위한 장치
US11144335B2 (en) 2020-01-30 2021-10-12 Salesforce.Com, Inc. System or method to display blockchain information with centralized information in a tenant interface on a multi-tenant platform
CN111338567B (zh) * 2020-02-13 2021-09-17 苏州浪潮智能科技有限公司 一种基于Protocol Buffer的镜像缓存方法
US20210287209A1 (en) * 2020-03-10 2021-09-16 Bank Of America Corporation Permissioned ledger for real-time resource distribution reconciliation
US11646900B2 (en) * 2020-03-18 2023-05-09 International Business Machines Corporation Subscription service for networks
US11580240B2 (en) * 2020-03-24 2023-02-14 Kyndryl, Inc. Protecting sensitive data
US11316840B2 (en) * 2020-04-16 2022-04-26 Dell Products L.P. System and method of utilizing remote information handling systems to securely store files
US12105833B2 (en) * 2020-04-22 2024-10-01 T-Mobile Usa, Inc. Blockchain-based subscriber data protection and access
US11893002B2 (en) 2020-05-04 2024-02-06 Salesforce, Inc. System or method to run distributed validation of workflows across a network in a shared distributed ledger in multi-tenant cloud environment
KR20210140851A (ko) * 2020-05-14 2021-11-23 삼성에스디에스 주식회사 복수의 블록체인 네트워크 간 데이터를 연동하는 방법 및 그 장치
US11212171B1 (en) * 2020-06-30 2021-12-28 Oracle International Corporation Customer self-service cloud application provisioning
US20230254155A1 (en) * 2020-07-01 2023-08-10 Nippon Telegraph And Telephone Corporation Registration terminal, verification terminal, management system and program
CN111737368B (zh) * 2020-07-24 2020-12-18 支付宝(杭州)信息技术有限公司 一种数据处理方法、装置、设备及介质
US11875178B2 (en) 2020-07-30 2024-01-16 Oracle International Corporation Using multiple blockchains for applying transactions to a set of persistent data objects in persistent storage systems
EP4210847A1 (en) 2020-09-02 2023-07-19 Daniel Choi Systems and methods for augmented reality environments and tokens
US11847136B2 (en) * 2020-09-02 2023-12-19 Sequoia Games, Inc. Systems and methods for distributed entity tracking
US11917088B2 (en) * 2020-09-21 2024-02-27 International Business Machines Corporation Integrating device identity into a permissioning framework of a blockchain
US11954183B2 (en) 2020-10-09 2024-04-09 Salesforce, Inc. System and method using metadata to manage packaged applications components based on tenant licenses
WO2022109215A1 (en) * 2020-11-20 2022-05-27 TripleBlind, Inc. Systems and methods for providing a blind de-identification of privacy data
CN112527898B (zh) * 2020-12-03 2022-06-07 杭州趣链科技有限公司 安全计算方法、装置、计算机及存储介质
JP2022091308A (ja) * 2020-12-09 2022-06-21 株式会社日立製作所 ストレージシステム及びデータ削除方法
CN115280717B (zh) 2021-01-11 2024-06-07 微福斯有限责任公司 区块链审计系统和方法
US11853285B1 (en) * 2021-01-22 2023-12-26 Pure Storage, Inc. Blockchain logging of volume-level events in a storage system
EP4033725A1 (en) * 2021-01-22 2022-07-27 Nokia Technologies Oy Methods and devices for blockchain-based patch management
CN112910982B (zh) * 2021-01-27 2023-06-16 网易(杭州)网络有限公司 一种联盟链的节点准入方法、装置、电子设备及存储介质
CN112966001B (zh) * 2021-02-26 2023-08-04 东北大学 一种基于区块链的BCTkPQ查询方法
CN112837043B (zh) * 2021-03-04 2023-07-18 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置及电子设备
CN112685790B (zh) * 2021-03-19 2021-06-25 中企链信(北京)科技有限公司 一种区块链数据安全及隐私保护方法
US11727453B2 (en) * 2021-04-06 2023-08-15 Stripe, Inc. Deterministic validation of billing integrations through simulated time
US20220353298A1 (en) * 2021-05-01 2022-11-03 AtScale, Inc. Embedded and distributable policy enforcement
EP4087209A1 (en) * 2021-05-06 2022-11-09 Siemens Aktiengesellschaft Encrypted data transmission between channels of a decentralized distributed database
WO2022241571A1 (en) * 2021-05-21 2022-11-24 Zeu Technologies, Inc. System and method for the safe custody of private data using blockchain
US11797274B2 (en) * 2021-06-22 2023-10-24 Altered State Machine Limited Interoperable composite data units for use in distributed computing execution environments
CN113259105B (zh) * 2021-06-23 2021-09-28 发明之家(北京)科技有限公司 一种区块链数据共享方法和系统
CN113572825B (zh) * 2021-07-09 2023-03-21 中国科学院计算技术研究所 面向中继链跨链架构的接入控制与资源访问控制方法及系统
US11528197B1 (en) * 2021-08-04 2022-12-13 International Business Machines Corporation Request facilitation for approaching consensus for a service transaction
US20230043731A1 (en) 2021-08-06 2023-02-09 Salesforce.Com, Inc. Database system public trust ledger architecture
CN113986865A (zh) * 2021-08-17 2022-01-28 哈尔滨海邻科信息技术有限公司 一种基于区块链的跨部门业务协同系统及方法
EP4141719A1 (en) 2021-08-27 2023-03-01 Siemens Aktiengesellschaft Monitoring and controlling a data flow to a distributed database system
US12002039B2 (en) 2021-09-13 2024-06-04 Salesforce, Inc. Database system public trust ledger multi-owner token architecture
US11989726B2 (en) 2021-09-13 2024-05-21 Salesforce, Inc. Database system public trust ledger token creation and exchange
US11811931B2 (en) * 2021-09-15 2023-11-07 Bank Of America Corporation System for real-time assessment of authenticity of a resource using non-fungible tokens
CN114331430B (zh) * 2021-12-24 2023-03-31 杭州钛度科技有限公司 区块链共识方法、装置、设备和介质
US11921887B2 (en) 2022-01-25 2024-03-05 Salesforce, Inc. Decentralized identity metaverse database system
US11770445B2 (en) 2022-01-25 2023-09-26 Salesforce, Inc. Decentralized information management database system
US11595202B1 (en) 2022-02-09 2023-02-28 My Job Matcher, Inc. Apparatus and methods for mapping user-associated data to an identifier
KR102443019B1 (ko) 2022-02-16 2022-09-15 주식회사 클리노믹스 블록체인 기반의 디지털 정보 검색 시스템
WO2023159203A2 (en) * 2022-02-17 2023-08-24 Artema Labs, Inc. Systems and methods for abuse safeguards in nft-directed environments
CN114546271B (zh) * 2022-02-18 2024-02-06 蚂蚁区块链科技(上海)有限公司 基于区块链的数据读写方法及装置、系统
US11880372B2 (en) 2022-05-10 2024-01-23 Salesforce, Inc. Distributed metadata definition and storage in a database system for public trust ledger smart contracts
IT202200011369A1 (it) * 2022-05-30 2023-11-30 Traent S R L Memorizzazione di dati in un registro per applicazioni in tempo reale basate sui dati
IT202200011378A1 (it) * 2022-05-30 2023-11-30 Traent S R L Verifica di accettazione di dati condivisi tra una pluralità di nodi
IT202200011360A1 (it) * 2022-05-30 2023-11-30 Traent S R L Gestione di dati selettiva su strutture di dati persistenti verificabili
US12111930B2 (en) 2022-08-08 2024-10-08 Saudi Arabian Oil Company Utilizing machine learning to detect ransomware in code
US12001443B2 (en) 2022-08-10 2024-06-04 Google Llc Authoritative factual service for blockchain smart contracts
WO2024055103A1 (en) * 2022-09-12 2024-03-21 Laboratoires Octav Inc. System and method for indexing blockchain transactions
US20240095220A1 (en) * 2022-09-20 2024-03-21 Salesforce, Inc. Ensuring trust throughout lifecycle of a non-fungible token
US20240119168A1 (en) * 2022-10-07 2024-04-11 Microsoft Technology Licensing, Llc Blind subpoena protection
JP2024081029A (ja) 2022-12-05 2024-06-17 富士通株式会社 ブロックチェーン管理プログラム、ブロックチェーン管理装置及びブロックチェーン管理方法
US20240267412A1 (en) * 2023-02-02 2024-08-08 Truist Bank Access layer systems of peer data processing nodes providing a security framework and trust controls
US12034726B1 (en) * 2023-05-31 2024-07-09 Cloudflare, Inc. Logging access types based on inserting tenant control headers into requests
US11921876B1 (en) 2023-06-14 2024-03-05 Snowflake Inc. Organization-level global data object on data platform
US11973874B1 (en) * 2023-06-16 2024-04-30 Dk Crown Holdings Inc. Systems and methods for token metadata management
US11909743B1 (en) * 2023-07-13 2024-02-20 Snowflake Inc. Organization-level account on data platform

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140331061A1 (en) 2013-05-02 2014-11-06 Solidfire, Inc Drive level encryption key management in a distributed storage system
US11128448B1 (en) * 2013-11-06 2021-09-21 Pure Storage, Inc. Quorum-aware secret sharing
US20170364911A1 (en) 2014-12-12 2017-12-21 Cryptomathic Ltd Systems and method for enabling secure transaction
US10033702B2 (en) * 2015-08-05 2018-07-24 Intralinks, Inc. Systems and methods of secure data exchange
EP3394818A4 (en) * 2015-12-21 2019-08-14 Kochava Inc. AUTOREGULATING TRANSACTION SYSTEM AND ASSOCIATED METHODS
US9774578B1 (en) 2016-05-23 2017-09-26 Accenture Global Solutions Limited Distributed key secret for rewritable blockchain
LU93377B1 (en) 2016-12-15 2018-07-03 Luxembourg Inst Science & Tech List P2p network data distribution and retrieval using blockchain log
US10637658B2 (en) * 2017-01-25 2020-04-28 Salesforce.Com, Inc. Secure internal user authentication leveraging public key cryptography and key splitting
CN107018125B (zh) 2017-02-17 2019-08-09 阿里巴巴集团控股有限公司 一种区块链系统、数据存储方法及装置
US11132451B2 (en) 2017-08-31 2021-09-28 Parity Technologies Ltd. Secret data access control systems and methods
US20190156923A1 (en) * 2017-11-17 2019-05-23 LunaPBC Personal, omic, and phenotype data community aggregation platform
US20190236062A1 (en) 2018-01-26 2019-08-01 Tranquil Data, Inc. System and method for using policy to achieve data segmentation
US20190236559A1 (en) 2018-01-31 2019-08-01 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing smart flow contracts using distributed ledger technologies in a cloud based computing environment
US20190238316A1 (en) 2018-01-31 2019-08-01 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing intelligent consensus, smart consensus, and weighted consensus models for distributed ledger technologies in a cloud based computing environment
US20190236606A1 (en) 2018-01-31 2019-08-01 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing a virtual chain model for distributed ledger technologies in a cloud based computing environment
US10701054B2 (en) 2018-01-31 2020-06-30 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing super community and community sidechains with consent management for distributed ledger technologies in a cloud based computing environment
US20190236562A1 (en) 2018-01-31 2019-08-01 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing document interface and collaboration using quipchain in a cloud based computing environment
US11257073B2 (en) 2018-01-31 2022-02-22 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing machine learning models for smart contracts using distributed ledger technologies in a cloud based computing environment
KR102240120B1 (ko) * 2018-03-06 2021-04-13 아메리코프 인베스트먼트스 엘엘씨 블록체인에 기록된 제한된 정보의 맞춤형 뷰
US20190304578A1 (en) * 2018-03-23 2019-10-03 LunaPBC Omic data aggregation with data quality valuation
FR3079323B1 (fr) 2018-03-26 2020-04-17 Commissariat A L'energie Atomique Et Aux Energies Alternatives Methode et systeme d'acces a des donnees anonymisees
US10901974B2 (en) 2018-03-29 2021-01-26 Salesforce.Com, Inc. Hybrid cloud chain management of centralized and decentralized data
US10585657B2 (en) 2018-03-29 2020-03-10 Salesforce.Com, Inc. Setup, management, and packaging of applications accessing centralized and decentralized data
US11868321B2 (en) 2018-06-12 2024-01-09 Salesforce, Inc. Cryptographically secure multi-tenant data exchange platform
US20200035341A1 (en) 2018-07-30 2020-01-30 LunaPBC De-identification omic data aggregation platform with permitted third party access
US11468406B2 (en) 2018-07-31 2022-10-11 Salesforce, Inc. Method of converting language-based written contract to smart legal contract using natural language processing
US11676142B2 (en) 2018-09-05 2023-06-13 Atrium Separate Ip Holdings Number 4, Llc Blockchain architecture, system, method and device for automated cybersecurity and data privacy law compliance with proprietary off-chain storage mechanism
US11157484B2 (en) 2018-09-19 2021-10-26 Salesforce.Com, Inc. Advanced smart contract with decentralized ledger in a multi-tenant environment
US11080247B2 (en) 2018-09-19 2021-08-03 Salesforce.Com, Inc. Field-based peer permissions in a blockchain network
US11809409B2 (en) 2018-09-19 2023-11-07 Salesforce, Inc. Multi-tenant distributed ledger interfaces
US11100091B2 (en) 2018-09-19 2021-08-24 Salesforce.Com, Inc. Lightweight node in a multi-tenant blockchain network
US11568437B2 (en) 2018-10-31 2023-01-31 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing commerce rewards across tenants for commerce cloud customers utilizing blockchain
US11288280B2 (en) 2018-10-31 2022-03-29 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing consumer data validation, matching, and merging across tenants with optional verification prompts utilizing blockchain
BR112019008168A2 (pt) 2018-11-07 2019-09-10 Alibaba Group Holding Ltd métodos implementados por computador, meio de armazenamento legível por computador e sistema
EP3903316A1 (en) 2018-12-28 2021-11-03 LunaPBC Community data aggregation, completion, correction, and use
US11875400B2 (en) 2019-01-31 2024-01-16 Salesforce, Inc. 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)
US11811769B2 (en) 2019-01-31 2023-11-07 Salesforce, Inc. Systems, methods, and apparatuses for implementing a declarative, metadata driven, cryptographically verifiable multi-network (multi-tenant) shared ledger
US11803537B2 (en) 2019-01-31 2023-10-31 Salesforce, Inc. Systems, methods, and apparatuses for implementing an SQL query and filter mechanism for blockchain stored data using distributed ledger technology (DLT)
US11244313B2 (en) 2019-01-31 2022-02-08 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing declarative smart actions for coins and assets transacted onto a blockchain using distributed ledger technology (DLT)
US11783024B2 (en) 2019-01-31 2023-10-10 Salesforce, Inc. Systems, methods, and apparatuses for protecting consumer data privacy using solid, blockchain and IPFS integration
US11876910B2 (en) 2019-01-31 2024-01-16 Salesforce, Inc. Systems, methods, and apparatuses for implementing a multi tenant blockchain platform for managing Einstein platform decisions using distributed ledger technology (DLT)
US11824864B2 (en) 2019-01-31 2023-11-21 Salesforce, Inc. Systems, methods, and apparatuses for implementing a declarative and metadata driven blockchain platform using distributed ledger technology (DLT)
US11488176B2 (en) 2019-01-31 2022-11-01 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing certificates of authenticity of digital twins transacted onto a blockchain using distributed ledger technology (DLT)
US11886421B2 (en) 2019-01-31 2024-01-30 Salesforce, Inc. Systems, methods, and apparatuses for distributing a metadata driven application to customers and non-customers of a host organization using distributed ledger technology (DLT)
US11971874B2 (en) 2019-01-31 2024-04-30 Salesforce, Inc. Systems, methods, and apparatuses for implementing efficient storage and validation of data and metadata within a blockchain using distributed ledger technology (DLT)
US11128465B2 (en) 2019-03-06 2021-09-21 Salesforce.Com, Inc. Zero-knowledge identity verification in a distributed computing system
US11082226B2 (en) 2019-03-06 2021-08-03 Salesforce.Com, Inc. Zero-knowledge identity verification in a distributed computing system
US11443065B2 (en) 2019-04-08 2022-09-13 Immuta, Inc. Systems and methods for obscuring data from a data source
US11297500B2 (en) 2019-04-16 2022-04-05 Research Foundation Of The City University Of New York Authenticating digital evidence
US11038771B2 (en) 2019-04-26 2021-06-15 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing a metadata driven rules engine on blockchain using distributed ledger technology (DLT)
US11880349B2 (en) 2019-04-30 2024-01-23 Salesforce, Inc. System or method to query or search a metadata driven distributed ledger or blockchain
US11995647B2 (en) 2019-04-30 2024-05-28 Salesforce, Inc. System and method of providing interoperable distributed and decentralized ledgers using consensus on consensus and delegated consensus

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114978668A (zh) * 2022-05-19 2022-08-30 中国人民大学 一种跨链数据实体身份管理和认证方法及系统
CN114978668B (zh) * 2022-05-19 2023-05-02 中国人民大学 一种跨链数据实体身份管理和认证方法及系统
CN116189911A (zh) * 2023-04-24 2023-05-30 江西莱普特信息技术有限公司 基于区块链侧链技术的医院信息系统互通方法及其系统
CN116405188A (zh) * 2023-06-07 2023-07-07 湖南元数科技有限公司 一种基于区块链的保险投保流程数据存储方法及系统
CN116405188B (zh) * 2023-06-07 2023-08-22 湖南元数科技有限公司 一种基于区块链的保险投保流程数据存储方法及系统
CN118660053A (zh) * 2024-08-19 2024-09-17 国网信息通信产业集团有限公司 一种基于邀约机制和联邦学习的数据处理方法及相关设备

Also Published As

Publication number Publication date
WO2020234814A1 (en) 2020-11-26
US11764950B2 (en) 2023-09-19
US20200374106A1 (en) 2020-11-26
US20200374105A1 (en) 2020-11-26
JP7451565B2 (ja) 2024-03-18
US11469886B2 (en) 2022-10-11
JP2022533770A (ja) 2022-07-25
US11431486B2 (en) 2022-08-30
EP3973431A1 (en) 2022-03-30
US20200371995A1 (en) 2020-11-26

Similar Documents

Publication Publication Date Title
US11431486B2 (en) System or method to implement consensus on read on distributed ledger/blockchain
US11811769B2 (en) Systems, methods, and apparatuses for implementing a declarative, metadata driven, cryptographically verifiable multi-network (multi-tenant) shared ledger
US11824864B2 (en) Systems, methods, and apparatuses for implementing a declarative and metadata driven blockchain platform using distributed ledger technology (DLT)
US11824970B2 (en) Systems, methods, and apparatuses for implementing user access controls in a metadata driven blockchain operating via distributed ledger technology (DLT) using granular access objects and ALFA/XACML visibility rules
US11743137B2 (en) Systems, methods, and apparatuses for implementing a metadata driven rules engine on blockchain using distributed ledger technology (DLT)
US11886421B2 (en) Systems, methods, and apparatuses for distributing a metadata driven application to customers and non-customers of a host organization using distributed ledger technology (DLT)
US11899817B2 (en) Systems, methods, and apparatuses for storing PII information via a metadata driven blockchain using distributed and decentralized storage for sensitive user information
US11611560B2 (en) Systems, methods, and apparatuses for implementing consensus on read via a consensus on write smart contract trigger for a distributed ledger technology (DLT) platform
US11803537B2 (en) Systems, methods, and apparatuses for implementing an SQL query and filter mechanism for blockchain stored data using distributed ledger technology (DLT)
US11783024B2 (en) Systems, methods, and apparatuses for protecting consumer data privacy using solid, blockchain and IPFS integration
US11431696B2 (en) Systems, methods, and apparatuses for implementing super community and community sidechains with consent management for distributed ledger technologies in a cloud based computing environment
US11971874B2 (en) Systems, methods, and apparatuses for implementing efficient storage and validation of data and metadata within a blockchain using distributed ledger technology (DLT)
US20230342734A1 (en) Systems, methods, and apparatuses for implementing smart flow contracts using distributed ledger technologies in a cloud based computing environment
US20190238316A1 (en) Systems, methods, and apparatuses for implementing intelligent consensus, smart consensus, and weighted consensus models for distributed ledger technologies in a cloud based computing environment
US20190236606A1 (en) Systems, methods, and apparatuses for implementing a virtual chain model for distributed ledger technologies in a cloud based computing environment
US20190236562A1 (en) Systems, methods, and apparatuses for implementing document interface and collaboration using quipchain in a cloud based computing environment

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: California, USA

Applicant after: Shuo Power Co.

Address before: California, USA

Applicant before: SALESFORCE.COM, Inc.