CN112514319A - 在超级账本架构区块链中支持基于sql的丰富查询的系统和方法 - Google Patents
在超级账本架构区块链中支持基于sql的丰富查询的系统和方法 Download PDFInfo
- Publication number
- CN112514319A CN112514319A CN201980050205.1A CN201980050205A CN112514319A CN 112514319 A CN112514319 A CN 112514319A CN 201980050205 A CN201980050205 A CN 201980050205A CN 112514319 A CN112514319 A CN 112514319A
- Authority
- CN
- China
- Prior art keywords
- bcs
- peer
- architecture
- ledger
- blockchain
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 86
- 238000003860 storage Methods 0.000 abstract description 61
- 238000001914 filtration Methods 0.000 abstract description 9
- 239000004744 fabric Substances 0.000 description 56
- 239000008186 active pharmaceutical agent Substances 0.000 description 53
- 238000007726 management method Methods 0.000 description 51
- 230000006870 function Effects 0.000 description 41
- 239000003795 chemical substances by application Substances 0.000 description 40
- 230000008520 organization Effects 0.000 description 23
- 238000013475 authorization Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 19
- 230000002688 persistence Effects 0.000 description 18
- 238000004891 communication Methods 0.000 description 15
- 238000012795 verification Methods 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 10
- 230000008901 benefit Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 238000010200 validation analysis Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 238000011084 recovery Methods 0.000 description 6
- 238000012163 sequencing technique Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 238000009434 installation Methods 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000012384 transportation and delivery Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 239000004579 marble Substances 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 102100022523 Acetoacetyl-CoA synthetase Human genes 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- RWSOTUBLDIXVET-UHFFFAOYSA-N Dihydrogen sulfide Chemical compound S RWSOTUBLDIXVET-UHFFFAOYSA-N 0.000 description 1
- 101000678027 Homo sapiens Acetoacetyl-CoA synthetase Proteins 0.000 description 1
- 102100027891 Mitochondrial chaperone BCS1 Human genes 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000001295 genetical effect Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 230000002147 killing effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000001404 mediated effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 150000003839 salts Chemical class 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/22—Payment schemes or models
- G06Q20/223—Payment schemes or models based on the use of peer-to-peer networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/08—Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Strategic Management (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Human Resources & Organizations (AREA)
- General Business, Economics & Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Marketing (AREA)
- Economics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Accounting & Taxation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本文描述了用于在区块链架构中支持基于SQL的丰富查询的系统和方法。根据实施例,本文提供的系统和方法提供执行SQL查询以允许以更容易和更可维护的方式创建复杂智能合约的能力。此外,通过将数据过滤推回到存储引擎(而不是在智能合约级别发生)以及通过能够依赖于支持并发的读和写数据访问的关系引擎,性能得以提高。同样,世界状态数据库还可以提供并发的读/写访问。
Description
版权声明
本专利文档公开内容的一部分包含受版权保护的素材。版权拥有者不反对任何人对专利文档或专利公开内容按照在专利商标局的专利文件或记录中出现得那样进行的传真复制,但是除此之外在任何情况下都保留所有版权。
优先权要求:
本申请要求于2019年1月29日提交的标题为“SYSTEM AND METHOD FORSUPPORTING SQL-BASED RICH QUERIES IN HYPERLEDGER FABRIC BLOCKCHAINS”申请号为16/261,363的美国专利申请、于2018年7月27日提交的标题为“SYSTEM AND METHOD FORSUPPORTING SQL-BASED RICH QUERIES IN HYPERLEDGER FABRIC BLOCKCHAINS”申请号为62/711,385的美国临时专利申请的优先权权益;上述申请中的每个申请通过引用并入本文。
技术领域
本公开一般而言涉及用于提供分布式账本(ledger)的系统和方法。更特别地,本公开描述了用于在诸如超级账本架构区块链之类的分布式许可账本中支持基于SQL(或类SQL)的丰富查询的系统、方法及其部件。
背景技术
分布式账本可以被广义地描述为资产所有权的数字记录。既没有账本的中央管理员,也没有中央数据存储库。而是,账本跨计算环境中的许多参与节点进行复制,这些计算环境可能在地理上跨多个站点、国家或机构分布。共识协议确保每个节点的账本副本与每个其它节点的副本相同。同样,可以将该组副本视为单个共享账本。资产所有者可以使用密码签名技术来使用分布式账本,例如,以借记(debit)他们的账户和贷记(credit)他人的账户。
区块链是可以用于实现防篡改分布式账本的数据架构。多个节点遵循通用协议,其中来自客户端的交易被打包成区块,并且节点使用共识协议来协定下一个区块。区块携带累积的密码散列,从而使得难以篡改账本。每个区块可以具有对时间上前一个区块的引用[散列值]。此外,每个区块可以包括其自己的散列。区块链可以向后遍历(例如,沿着链向上遍历)。
免许可(permissionless)去中心化账本允许匿名参与者维护账本,同时避免受任何单个实体的控制。但是,鉴于匿名性,身份、责任性和可审计性很难。作为对照,许可去中心化账本通过允许明确授权的各方维护账本来允许信任和责任级别。许可账本支持更灵活的治理和对共识机制的更多选择。两种去中心化账本都可能容易受到那些比其他人更倾向于某些交易的参与者的操纵。但是,基于许可账本的责任性提供了可以对参与者施加约束的机会。
发明内容
根据实施例,本文描述了一种用于在超级账本架构区块链中支持基于SQL的丰富查询的系统和方法。
本文描述了用于在区块链架构中支持基于SQL的丰富查询的系统和方法。根据实施例,本文提供的系统和方法提供执行SQL查询以允许以更容易和更可维护的方式创建复杂智能合约的能力。此外,通过将数据过滤推回到存储引擎(而不是在智能合约级别发生)以及通过能够依赖于支持并发的读和写数据访问的关系引擎,性能得以提高。同样,世界状态数据库还可以提供并发的读/写访问。
当参考附图阅读时,根据各种实施例的以下描述,本教导的这些和其它优点对于本领域技术人员将变得显而易见。
超级账本项目是作为Linux基金会的项目建立的协同合作,旨在创建企业级、开源分布式账本框架和代码库。超级账本架构是用于运行智能合约的分布式账本平台的实现。它利用容器技术来托管称为“链式码”的智能合约,这些智能合约包括系统的应用逻辑。
根据实施例,超级账本中的参与者已经复制了账本的副本。除了共享账本信息之外,还共享更新账本的处理。与使用参与者的私有程序来更新相关联的私有账本的其它系统不同,区块链系统具有共享程序来更新共享账本。利用通过共享账本协调其业务网络的能力,区块链网络可以减少与分布到私有信息的账本中相关联的时间、成本和风险,并减少处理时间(同时增加信任度)。超级账本架构是私有的并且是许可的。超级账本架构网络的成员被登记。超级账本架构还提供了创建通道的能力。每个通道可以包含对特定的参与者的组可见的分开的交易账本。这允许交易隐私。
根据实施例,架构的分布式账本协议由对等体运行。架构区分两种对等体:验证对等体是网络上负责运行共识、验证交易和维护账本的节点。另一方面,非验证对等体是用作代理以将(发出交易的)客户端连接到验证对等体的节点。非验证对等体不执行交易,但它可以核实它们。该架构的一些特征包括具有即时终结性(immediate finality)的许可区块链,该许可区块链运行称为链式码的任意智能合约。用户定义的链式码智能合约被封装在容器中,并且系统链式码与对等体在同一进程中运行。在整个网络上保持账本交易同步(例如,以确保账本仅在交易被适当参与者批准时才更新,并且在账本确实更新时,它们将以相同的顺序更新相同的交易)的处理可以被称为共识。该架构通过支持用于TLS(传输层安全)证书、登记证书和交易证书的证书颁发机构(CA)来实现共识协议和安全性。
根据实施例,超级账本架构可以包括世界状态数据库。该数据库通常是键值存储库。世界状态被存储在非常快速的键-值存储库中。给定标签(键),将值与键相关联。例如,键-值数据库可以将余额与键相关联,或者可以将图片与键相关联等等。这是非常快速的持久化引擎。
根据实施例,超级账本架构区块链中的智能合约只能访问非常基本的值查找和数据过滤机制;这使智能合约的创建变得繁琐、难以维护并且常常表现不佳。
此外,根据实施例,所支持的基础持久化存储引擎仅与不支持并发R/W访问的如LevelDB和CouchDB之类的系统一起工作—迫使区块链在背书操作(交易执行)正在运行时被锁定为读访问(提交)。这对性能有直接和负面的影响,尤其是在执行其执行需要大量计算工作的智能合约时。
附图说明
图1A图示了根据实施例的区块链云服务系统的架构中的交易流。
图1B图示了根据实施例的区块链云服务系统。
图1C图示了根据实施例的BCS系统。
图1D图示了根据实施例的BCS系统。
图2图示了根据实施例的用于区块链云服务系统的网关。
图3图示了根据实施例的区块链云服务系统的持久性。
图4图示了架构在BCS上的示例部署。
图5图示了根据实施例的链式码架构。
图6图示了根据实施例的用于提供管理控制台的系统。
图7A图示了根据实施例的BCS控制台UI中的用户界面的示例。
图7B图示了根据实施例的BCS控制台UI中的用户界面的示例。
图8图示了根据实施例的用于在BCS实例中提供REST代理的系统。
图9A示出了根据实施例的用于单点登录的典型IDCS用例。
图9B示出了根据实施例的用于架构客户端认证的IDCS用例。
图10示出了根据实施例的用于在架构区块链中支持世界状态数据库的系统。
图11示出了根据实施例的用于在区块链架构中支持基于SQL的丰富查询的系统。
图12是根据实施例的用于在区块链架构中支持基于SQL的丰富查询的方法的流程图。
具体实施方式
根据实施例,本文描述了用于在区块链架构中支持基于SQL的丰富查询的系统和方法。根据实施例,本文提供的系统和方法提供执行SQL查询以允许以更容易和更可维护的方式创建复杂智能合约的能力。此外,通过将数据过滤推回到存储引擎(而不是在智能合约级别发生)以及通过能够依赖于支持并发的读和写数据访问的关系引擎,性能得以提高。同样,世界状态数据库还可以提供并发的读/写访问。
根据实施例,可以提供在区块链架构中支持基于SQL的丰富查询的示例区块链架构作为云服务。根据实施例,企业级框架包括可缩放性、管理、配置、持久化以及通过使用云技术与各种客户应用的兼容性。在特定实施例中,提供许可区块链账本和区块链架构作为区块链云服务(BCS)。
在下面的描述中,将通过示例而非限制的方式在附图的各图中图示本方面。本公开中对各种实施例的引用不一定是同一个实施例,并且这样的引用意味着至少一个。虽然讨论了具体的实施方式,但是应该理解的是,这仅是出于说明的目的而提供。相关领域的技术人员将认识到,在不脱离本公开的范围和精神的情况下,可以使用其它部件和配置。本教导的描述提供了支持和公开所要求保护的方法的示例和实施例。
此外,在某些情况下,将阐述许多具体细节以提供对本教导的透彻描述。但是,对于本领域技术人员而言显而易见的是,可以实现当前教导的方法的结果和优点,并且可以在没有这些具体细节的情况下实践当前教导的概念。在其它实例中,没有尽可能详细地描述众所周知的特征,以免混淆本公开。
借助于说明特定功能及其关系的性能的功能构建框来描述本教导。为了便于描述,这些功能构建框的边界通常在本文中被任意定义。因此,在替代实施例中,示出由相同元件执行的功能可以由不同元件执行。示出在分开元件中执行的功能可以替代地被组合到一个元件中。可以定义替代边界,只要适当地执行指定的功能及其关系即可。因此,任何这样的替代边界都在本公开的范围和精神内。
在整个附图和详细描述中,共同的附图标记用于表示相同的元件;因此,如果元件在别处被描述,则图中使用的附图标记可以或可以不在具体到该图的详细描述中被引用。
区块链技术具有通过跨客户的生态系统中实现近实时的分布式交易以及通过实现安全、防篡改数据共享来显著增强企业业务价值的潜力。超级账本架构区块链包含模块化架构、水平/跨行业技术支持以及对企业需求的支持。
介绍
根据实施例,超级账本架构是用于分布式账本解决方案的平台,其由模块化体系架构支持,提供高度机密性、弹性、灵活性和可缩放性。它被设计为支持不同部件的可插拔实现方案,并适应跨经济生态系统存在的复杂度和复杂性。
根据实施例,超级账本架构提供弹性和可缩放的体系架构,从而将其与替代的区块链方案区分开。
区块链—分布式账本
根据实施例,区块链网络可以包括分布式账本,分布式账本记录在网络上发生的所有交易。
区块链账本通常被描述为去中心化的,因为它被复制到许多网络参与者,每个网络参与者在维护区块链账本中协作。去中心化和协作是反映企业在现实世界中交换商品和服务的方式的属性。
除了去中心化和协作之外,记录到区块链的信息是仅追加(append-only)的,使用密码技术,该密码技术保证一旦交易已经被添加到账本它就不能被修改。这种不变性的属性使得确定信息的起源(provenance)变得简单,因为参与者可以确定信息在事后没有被改变。以这种方式,区块链可以被认为是证明系统(systems of proof)。
区块链—智能合约
根据实施例,为了支持信息的一致更新——以及启用某些账本功能(交易、查询等)——区块链网络使用智能合约来提供对账本的受控访问。
根据实施例,智能合约不仅是用于封装信息并使其在网络上保持简单的关键机制,它们还可以被编写为允许参与者自动执行交易的某些方面。
智能合约可以例如被编写以规定运送物品的成本,该成本取决于物品到达的时间而变化。根据双方同意并写入账本的条款,当收到物品时,适当的资金自动转手。
区块链—共识
根据实施例,保持账本交易在网络上同步——以确保账本仅在交易被适当的参与者批准时才更新,并且当账本确实更新时,它们以相同的顺序更新相同的交易——的处理可以被称为共识。
根据实施例,区块链可以被认为是共享的、复制的交易系统,该交易系统经由智能合约进行更新并且通过称为共识的协作处理保持一致同步。
区块链的优点
根据实施例,当前可用的交易网络是自从已经保留业务记录以来已经存在的网络的版本。业务网络的成员彼此进行交易,但每个成员都维护他们的交易的分开记录。同样,交易的对象可以在每次被出售时建立这些对象的起源,以确保销售该项目的企业拥有核实这些企业对该项目的所有权的产权链(chain of title)。
虽然当前的业务网络由计算系统进行现代化,但是不存在用于管理网络参与者的身份的统一系统,建立起源是费力的,因为清算证券交易(其全世界的体量以数万亿美元计)需要花费数天、合同必须手动签署和执行,并且系统中的每个数据库都包含唯一的信息并因此代表单点故障。
根据实施例,区块链通过提供用于在网络上建立身份、执行交易和存储数据的标准方法,提供了对由标准交易系统表示的许多低效率方案的替代方案。
根据实施例,在区块链网络中,其中的每个参与者具有账本的每个参与者自己的复制副本。除了正共享的账本信息之外,还共享更新账本的处理。与其中参与者的私有程序被用于更新参与者的私有账本的其它系统不同,区块链系统具有用于更新共享账本的共享的程序。
根据实施例,利用通过共享账本协调业务网络的能力,区块链网络可以减少与私有信息和处理相关联的时间、成本和风险,同时改善信任和可见性。
超级账本架构
与其它区块链技术一样,超级账本架构具有账本、使用智能合约,并且是参与者通过其来管理他们的交易的系统。
超级账本架构与一些其它区块链系统的不同之处在于它是私有的和许可的。超级账本架构网络的成员通过成员资格服务提供者来登记,而不是一些区块链网络用于核实身份的“工作证明”(“proof of work”)(允许符合这些标准的任何人加入网络)。
超级账本架构还提供了几种可插拔选项。账本数据可以以多种格式存储,共识机制可以被切换进和切换出,并且支持不同的MSP(成员资格服务提供者)。
超级账本架构还提供创建通道的能力,从而允许一组参与者创建分开的交易账本。这允许这样的网络选项:其中一些参与者可能是竞争者并且不希望他们做出的每一笔交易——例如他们向一些参与者而不是其它参与者提供的特殊价格——对于每个参与者都已知。如果两个参与者形成通道,那么这些参与者——而不是其它参与者——拥有该通道的账本副本。
共享账本
根据实施例,超级账本架构具有包括两个部件的账本子系统:世界状态和交易日志。每个参与者都拥有他们所属的每个超级账本架构网络的账本副本。
世界状态部件描述在给定时间点处的账本的状态。它是账本的数据库。交易日志部件记录已经导致世界状态的当前值的所有交易。它是世界状态的更新历史。然后,账本是世界状态数据库和交易日志历史的组合。
共享账本具有世界状态的可替换数据存储库。默认情况下,这是LevelDB键-值存储数据库。交易日志不需要是可插拔的。它仅记录区块链网络使用的账本数据库的前值和后值。
智能合约
超级账本架构智能合约以链式码编写,并且当区块链外部的应用需要与账本交互时由该应用调用。在大多数情况下,链式码只与账本的数据库部件、世界状态交互(例如,查询它),而不与交易日志交互。
共识
根据实施例,交易按照它们发生的顺序被写入账本,即使它们可能是网络内的不同参与者集合之间的。为此,建立了交易的顺序,并且可以实现用于拒绝已被错误(或恶意)插入到账本中的坏交易的方法。
超级账本架构允许网络实体(例如,网络用户、对等体(peer)、起始者)选择最能代表参与者之间存在的关系的共识机制。与隐私一样,存在一系列需求;从在他们的关系中高度结构化的网络到更加点对点的网络。
链式码
根据实施例,链式码可以包括定义(一个或多个)资产的软件,以及用于修改(一个或多个)资产的交易指令——它是业务逻辑。链式码强制执行用于读取或更改键值对或其它状态数据库信息的规则。链式码函数针对账本当前状态数据库执行,并通过交易提议发起。链式码执行导致可以提交给网络并应用于所有对等体上的账本的一组键值写入(写入集)。
账本特征
根据实施例,账本是架构中所有状态转换的有序、防篡改记录。状态转换是参与方提交的链式码调用(“交易”)的结果。每个交易都会产生资产键值对集合,这些键值对集合作为创建、更新或删除被提交到账本。
账本包括用于在区块中存储不可变的顺序记录的区块链,以及用于维护当前架构状态的状态数据库。每个通道可以有一个账本,每个通道包含对特定的参与者的组可见的分开的交易账本。每个对等体维护其作为成员的每个通道的账本的副本。
通过通道的隐私
根据实施例,超级账本架构在每个通道的基础上采用不可变的账本,以及可以操纵和修改资产的当前状态(即更新键值对)的链式码。账本存在于通道的范围内——它可以跨整个网络共享(假设每个参与者都在一个公共通道上操作)——或者它可以被私有化为只包括特定的参与者集合。
在后一种场景下,这样的参与者可以创建分开的通道,从而使他们的交易和账本隔离/分离。为了允许想要弥合总透明度和隐私之间的间隙的场景,可以仅在需要访问资产状态以执行读取和写入的对等体上安装链式码(例如,如果链式码未在对等体上安装,那么它将无法与账本恰当对接)。为了进一步模糊数据,可以在追加到账本之前使用常见的密码算法(诸如AES(高级加密标准))对链式码内的值进行(部分或全部)加密。
根据实施例,还可以通过“私有集合”的概念来改善隐私—“私有集合”是比按通道进行隐私保护更精细的概念。
安全性和成员资格服务
根据实施例,超级账本架构提供了一种交易网络,其中所有参与者都具有已知身份。公钥基础设施被用于生成与组织、网络部件以及最终用户或客户端应用绑定的密码证书。因此,可以在更广泛的网络和通道级别上操纵和管理数据访问控制。超级账本架构的这种“许可”概念,加上通道的存在和能力,有助于解决其中隐私和机密性至关重要的场景。
共识
根据实施例,在分布式账本中,共识可以包含的不仅仅是简单地同意交易的顺序。超级账本架构通过其在从提议和背书(endorsement)到排序、验证和提交的整个交易流中的基础性角色突出了这种差异化。可以将共识定义为包含区块的交易集合的正确性的全圆核实(full-circle verification)。
当区块的交易的顺序和结果已满足显式策略标准检查时,最终实现了共识。这些检查和平衡发生在交易的生命周期期间,并包括使用背书策略来指定哪些特定成员必须对某个交易类进行背书,以及系统链式码以确保这些策略被强制执行和支持。在提交之前,对等体可以采用这些系统链式码来确保存在足够的背书,并且它们源自适当的实体。此外,在包含交易的任何区块被追加到账本之前,可以进行版本控制检查,在版本控制检查期间,对账本的当前状态达成一致或同意。这种最终检查可以提供防止可能危及数据完整性的双重花费操作和其它威胁的保护,并允许针对非静态变量执行函数。
除了发生的背书、有效性和版本控制检查之外,还存在在交易流中发生的持续身份核实。访问控制列表在网络的分层层级上实现(将服务排序下到通道),并且当交易提议通过不同的体系架构部件时,有效载荷被重复签署、核实和认证。共识不限于就一批交易的顺序达成一致,而是作为在从提议到提交的交易流期间发生的持续核实的副产品而实现的处理。
区块链云服务—体系架构
根据实施例,诸如云系统(例如,区块链云服务(BCS))之类的系统可以利用上述超级账本架构作为起始点。这样的系统提供了高度先进和差异化的企业级分布式账本云平台,该平台允许构建新的基于区块链的应用和/或扩展现有的SaaS、PaaS、IaaS和本地(on-premises)应用。
根据实施例,该系统可以支持任务关键型企业需求,诸如可缩放性、安全性、健壮性、集成和性能,以消除生产中采用的障碍并且支持区块链应用。该系统允许用户通过提供BCS作为平台即服务(PaaS)云解决方案来部署、配置、管理和监控区块链并降低在企业中部署区块链的成本。该系统还加速了区块链应用与其它平台的开发和集成。该系统允许SaaS云客户使用区块链云平台实现其采购、支付、贸易金融、会计、HR、CX等企业处理,以与第三方应用和外部分布式账本技术安全地共享数据和进行分布式交易。
根据实施例,该系统是基于PaaS管理器(例如,Oracle PaaS服务管理器(PSM)平台)的云服务。一般而言,这种系统是在计算空间(例如,外部计算空间)中运行的受管理的云服务。在实施例中,系统利用PSM平台的特征,包括使用Oracle身份云服务(IDCS)、Oracle负载均衡器即服务(LBaaS)、Oracle事件中枢云服务和Oracle云存储进行分层的Oracle应用容器云服务(ACCS)。每个客户区块链可以被供应,并且可以作为租户运行。系统支持多个区块链,每个区块链在多租户环境中作为分开的租户被供应和运行。
因而,该系统允许应用或客户应用实现具有用于应用的智能合约的分布式账本。这种系统的客户端和用户可以在云的内部或外部——区块链信任——一些区块链网络可以包括云环境外部的部件(或者可以被约束到特定的云)。
根据实施例,这种系统对于各种应用功能可以是有用的,特别是在必须解决信任和身份问题的多方交易中。与其它区块链系统不同,所提供的系统服务不是匿名的。实际上,身份和可审计性是基本的和被集成的因素。因而,BCS可以应用于例如资本市场、跨境交易、金融服务、资产交易、法律监管应用、医疗记录、出版、物流、可追溯性和防伪。
如上所述,区块链上的每一方都可以访问整个数据库及其完整历史(除非账本已经被供应/私有化给某些方)。没有单方控制数据或信息。每一方也可以直接核实其交易伙伴的记录,而无需中介。通信直接发生在对等体之间而不是通过中心节点。每个节点都存储信息并将信息转发给所有其它节点。一旦交易被输入数据库并且账户被更新,记录就不能被更改,因为它们链接到在它们之前到来的每个交易记录(因此称为“链”)。如果交易出错,那么必须使用新交易来撤消错误,然后这两个交易都对被供应的用户是可见的。为了添加新的有效交易,参与者可以经由共识机制就其有效性达成一致。区块链的参与者可以证明资产来自哪里以及资产的所有权随时间如何改变。数字签名可以用于认证文档并且可以被放置在访问控制[不同级别的权限]和可编程性[可执行业务规则]中。
在许多多方交易中,当一方接收到资产或服务时,货币被交换。通常由于交易时间,一方或另一方必须在另一方之前提交货物或金钱。在一些环境中,通过使用中介来解决信任问题,中介将资金保持在托管中直到合约条件完成为止。这解决了原始方之间的信任问题。但是,这种方法增加了必须受信任的另一个中心化的一方,从而增加了复杂性,并且可能增加交易的成本。使用智能合约作为所提供系统的一部分可以消除对中介的需求——各方可以在区块链上进行受信任的交易而无需中介。
根据实施例,所提供的系统(诸如BCS)的优点包括其中包含的信息是分布式的。虽然可审计性是可用的,但访问受到控制并且可以保持一些隐私。而且,区块链账本基本上是不可变的并且不能被拒绝。账本包括区块的列表。每个交易区块包含:区块ID、前一个散列、数据散列、时间戳、交易ID列表、动作(1..n)、链式码ID、链式码提议、响应(r/w集合、事件、成功或失败)、背书者(endorser)。由于每个区块包含前一个散列和它自己的散列,因此这些区块一旦被知晓/分布就固有地有序并且不可变(注意:当前区块的散列是前一个区块的散列和当前区块中的其它数据的散列,因此链接链中的区块)。共识可以解决差异。与中心化数据库或中介相比,不需要向中心化授权机构给予过度授权。账本的分布式性质也增强了区块链记录技术的基本不变性,因为分布式副本的使用——以及共识使得难以修改它(即使在算法上可能的情况下也是如此)。因此,给定交易的排序的情况下——如果有人拥有链中最新区块的副本,对账本进行攻击也几乎是不可能的。
在特定实施例中,如下所述,所提供的系统可以基于Oracle PaaS服务管理器(PSM)平台,并且利用管理控制台进行扩充,该管理控制台简化/促进/自动化基于架构的区块链的供应、监视和配置。此外,还提供了包括单一REST API的REST代理服务,以简化应用与区块链架构之间的联系。开发人员可以构建智能合约,使用管理控制台部署智能合约,然后让应用异步地(默认情况下)或者同步地(如果请求立即响应)调用区块链上的智能合约。取决于平台的需要,REST代理服务和API提供同步和异步功能二者。
根据实施例,架构-CA服务器可以为架构提供成员资格服务。架构-CA服务器可以包括三个部分:针对用户的认证、访问区块链(一组对等体和排序者)的授权,以及可以将证书递送到应用客户端、对等体和排序者的CA服务器。架构-CA可以使用证书来实现认证和授权。证书包括两种类型:用于认证的登记证书和用于授权的交易证书。根据实施例,诸如IDCS之类的身份服务也可以提供认证和授权。
超级账本架构
如上所述,在实施例中,所提供的系统可以实现超级账本架构,其提供用于运行智能合约的分布式账本平台。该架构利用容器技术来托管称为“链式码”的包括系统的应用逻辑的智能合约。在替代实施例中,区块链云服务实现替代的分布式账本平台,包括例如2016年5月31日提交的标题为“Accountability And Trust in Distributed Ledger Systems”的美国专利申请序列No.15/169,622中所述的“Tendermint”账本系统,该申请通过引用并入本文。
超级账本架构的分布式账本协议由对等体运行。现有区块链技术的一个缺点是要求所有对等体记录所有交易。这产生大量的I/O和处理器开销,并且无法方便地缩放到企业级系统。超级账本架构区分两种对等体:提交者对等体是网络上可以在将交易提交给区块链之前核实背书并验证交易结果以及维护账本的节点。另一方面,非验证对等体是用作代理以将(发出交易的)客户端连接到验证对等体的的节点。非验证对等体(或背书对等体)不执行交易,但它可以模拟并背书交易。对等体类型/功能的隔离提高了系统的可缩放性。排序服务可以接受已背书的交易、将其排序到区块中,并且将这些区块交付给提交对等体。在这样的分布式账本系统中,共识是就要添加到账本的下一组交易达成协议的处理。在超级账本架构中,共识由三个不同的步骤组成:交易背书、排序、以及验证和提交。
根据实施例,超级账本的特征是具有即时终结性(immediate finality)的许可区块链,其运行称为链式码的任意智能合约。用户定义的链式码智能合约封装在容器中,并且系统链式码在与对等体相同的进程中运行。链式码执行与交易排序分开,从而限制了跨节点类型所需的信任和核实级别,并减少了网络开销。
根据实施例,超级账本架构中的通道使得能够以在公共网络上交换资产的竞争企业和受监管行业所需的高度隐私和机密性来进行多边交易。不可变的共享账本为每个通道编码整个交易历史记录,并包括用于高效审计和争议解决的查询能力。账本在通道范围内被提供——它可以在整个网络中共享(假设每个参与者在一个公共通道上操作)——或者它可以私有化为仅包括一组参与者。
根据实施例,超级账本架构通过支持用于TLS证书、登记证书和交易证书的证书颁发机构(CA)来实现安全性。公钥基础设施被用于生成与组织、网络部件以及最终用户或客户端应用相关联的密码证书。因此,可以在更广泛的网络和通道级别上操纵和管理数据访问控制。超级账本架构的这种“许可”特征,加上通道的存在和功能,满足了多方企业系统中的隐私和机密性需求。
根据实施例,超级账本架构提供使用链式码交易修改资产的能力。如上所述,链式码是定义一个或多个资产的软件,并且是用于修改(一个或多个)资产的交易指令。
所集成的共识机制在超级账本架构中的从提议和背书、到排序、验证和提交的交易流中具有基础性角色。如上所述,共识是对包括区块的交易集合的有效性的核实。共识在区块的交易的次序和结果满足显式策略标准检查时最终达成。
图1A图示了提供区块链服务的系统的架构中的交易流。更具体而言,该图图示了根据实施例的区块链云服务(BCS)系统。在1处,客户端160使用架构SDK 162来访问架构证书颁发机构170、172、174以进行登记。在1.1处,架构-CA向客户端160返回登记证书。在2处,客户端160使用架构SDK 162来访问对等体容器180,以请求来自背书者182的背书。在2.1处,背书者182返回经签署的RWset(读/写集)。在3处,客户端160处的架构SDK 162向排序容器190处的排序服务提交包括RWset和背书者签名的经背书的TX(交易)。在4处,排序者192将TX批递送到对等体容器180中的提交者184。排序者是所定义的将交易排序成区块的节点集合。排序服务独立于对等体进程而存在,并基于先来先服务为网络上的所有通道对交易进行排序。提交者184在5和5.1处将改变应用到账本186和世界状态188。架构证书颁发机构170可以用于为对等体容器180、智能合约容器166和168(智能合约)以及排序者192验证签名和授权。此外,智能合约168可以与背书者182通信。
在实施例中,系统可以使用Kafka集群作为排序服务。Kafka是一种支持发布和订阅语义的分布式流传输服务。Kafka集群在多个服务器上运行,并将记录的流存储在称为话题(topic)的类别中。每个记录包括键值和时间戳。因此,Kafka可以用作排序服务,包括排序服务节点(OSN-n)和Kafka集群。排序服务客户端可以连接到多个OSN。OSN不直接彼此通信。这些排序服务节点(OSN)(1)进行客户端认证,(2)允许客户端使用简单的接口写入链1或从链1中读取,以及(3)它们还对重新配置现有的链或创建新链的配置交易执行交易过滤和验证。Kafka中的消息(记录)被写入话题分区。Kafka集群可以有多个话题,并且每个话题可以有多个分区。每个分区都是被不断附加到的有序的、不可变的记录序列。一旦OSN已经执行客户端认证和交易过滤,它们就可以将属于某个链的传入客户端交易中继到链的相应分区。然后,它们可以消费该分区并返回跨所有排序服务节点而通用的有序交易列表。
根据实施例,每个对等体具有作为背书者和提交者的能力。存在可以使对等体成为背书者的配置项(例如,CORE_PEER_ENDORSER_ENABLED)。当对等体加入通道时,该对等体成为这个通道的提交者。当在对等体上安装链式码时,这个对等体成为这个链式码的候选背书者。当客户端提出交易时,客户端(从候选背书者中)选择哪些对等体作为背书者。
根据实施例,用于让排序者将区块递送给对等体的排序机制如下。首先,对等体(例如,领导者对等体)通过发送对等体的版本(最后的区块编号)来递送对来自排序者的新区块的请求。接下来,排序者检查对等体的版本:a)如果它大于排序者,那么向对等体返回错误,它指示排序者中的账本丢失,并且无法从EventHub(事件中枢)恢复(在这种情况下,排序者无法继续恰当地工作);b)如果对等体的版本小于排序者,那么排序者从(在RAM中或者本地文件中的)本地账本中检索区块,然后发送回对等体;或者c)如果它们具有相同的版本,那么排序者会阻塞直到有新的区块可用。当从EventHub中剪切的新区块数据准备就绪时,排序者会将其放入本地区块文件或RAM中,然后递送线程从账本读取这个区块并将其发送回对等体。对等体获取这个区块,并将其提交到本地账本,并且然后可以将其最新版本广播给其它对等体。
BCS系统体系架构
图1B图示了提供区块链服务的系统的架构中的交易流。更具体而言,该图图示了根据实施例的区块链云服务(BCS)系统。如图所示,区块链云服务部件在计算空间120(例如,外部计算空间)中供应,例如在Oracle PaaS服务管理器(PSM)平台上。对系统的访问由PSM API 122和区块链REST API 124调解。外部计算120利用负载均衡即服务LBaaS 126来跨可用的适当资源分发传入的交易。
根据实施例,BCS是在应用容器云服务128上利用PSM平台构建的应用-容器分层服务。BCS实体中的每一个都在分开的容器上运行。BCS实体中的每一个与应用容器一一对应。区块链云服务实现上述超级账本架构的特征。除了构建基本架构网络的部件之外,还开发了几个部件来将超级账本架构用于区块链云服务。这些部件需要分开的部署行为和二进制文件来部署这些部件。云堆栈管理器可以用于使用户能够自动将蓝图(blueprint)定义的所有服务作为称为堆栈的单元进行供应。
在实施例中,BCS提供超级账本架构的实现方案,该实现方案是用于运行智能合约的分布式账本平台的实现方案。BCS利用容器技术来托管称为“链式码”的包含系统的应用逻辑的智能合约。
根据实施例,架构的分布式账本协议由对等体运行。架构区分两种对等体:验证对等体是网络上负责运行共识、验证交易和维护账本的节点。另一方面,非验证对等体是用作代理以将(发出交易的)客户端连接到验证对等体的节点。非验证对等体不执行交易,但它可以核实它们。架构发布的一些关键特征包括具有即时终结性的许可区块链,该许可区块链运行称为链式码的任意智能合约。用户定义的链式码智能合约封装在容器中,并且系统链式码在与对等体相同的进程中运行。该架构通过支持用于TLS证书、登记证书和交易证书的证书颁发机构(CA)来实现共识协议和安全性。
根据实施例,BCS实体在具有ACCS 128的分层容器实例中运行。这些容器是通过PSM的供应操作而创建和/或起动的。架构-CA容器130是在其中提供BCS架构CA(证书和颁发机构)部件的容器。BCS对等体(容器)132是维护账本并运行链式码容器以便对账本部件执行读/写操作的BCS对等网络实体在其中运行的容器。BCS排序者容器134是提供服务来为所有通道将交易排序到区块链的BCS排序者在其中运行的容器。BCS链式码执行容器139是由对等实体创建和起动的容器。在该容器中,链式码执行单元与父对等实体通信并执行资产和交易指令的编码以修改区块链中的资产。
根据实施例,BCS链式码构建器容器140是由对等实体创建和起动的容器。在该容器中,安装和部署链式码构建环境,并在其中构建链式码执行单元。客户端侧架构SDK 106提供用于访问BCS的功能。区块链云服务还利用事件中枢云服务150、云存储服务152和身份服务154。Oracle存储云服务用作BCS的存储服务。
根据实施例,Docker/Weave(坞/织体)141是容器服务。容器提供了一种以可在共享操作系统上隔离运行的格式来打包软件的方式。与VM不同,容器不捆绑整个操作系统——而是需要使用使软件工作所需的库和设置。这实现高效、轻量、自包含的系统,并保证软件始终同样地运行,无论它在何处部署。
根据实施例,每个BCS实例包括不同类型的节点。BCS实例中可以有少数(例如,0或多于0个)至多个对等体节点。在BCS实例中可以有少数(例如,0个)至多个排序者节点。BCS实例中有1至多个架构-CA节点,每个VM一个。BCS网关:BCS实例中可以有少数(例如,0个)至多个BCS网关。BCS控制台也是BCS实例的部件。BCS实例中只有一个BCS控制台。
根据实施例,BCS管理服务器(控制台)136是BCS的部件,其向BCS栈实例提供丰富的监视、管理和视图功能,如下面更详细描述的。BCS网关(REST代理)138是BCS的新部件,并且向客户/客户端提供REST API接口,并且用于访问架构以执行交易,如下面更详细描述的。
根据实施例,在公共访问客户端侧100上,PSM控制台UI 102允许管理平台服务管理器。BCS控制台UI 104允许控制BCS管理服务器。各种不同的客户端类型可以访问BCS服务,包括架构SDK客户端106、BCS REST客户端108和架构成员资格客户端110。
根据实施例,可以为上面列出的每种类型的容器定义蓝图,作为单独的服务类型。Oracle云堆栈管理器使用蓝图自动将所有单独的服务类型供应到单个堆栈单元中。为每个BCS实体定义服务类型的好处是易于升级和维护各种运行实体。应用容器分层服务支持四种类型的操作:CREATE_SERVICE,DELETE_SERVICE,SCALE_SERVICE和Start/Stop/Restart。这些操作可以按服务来应用。
根据实施例,在超级账本架构网络中,排序服务部件使用Apache Kafka以崩溃容错方式提供对多个链的排序服务和支持。因而,在BCS云服务中,排序服务部件将使用OEHCS(Oracle事件中枢云服务,该服务将Kafka的强大功能作为受管理的流传输数据平台提供,并且可以与Oracle云的其余部分集成)。
图1C图示了根据实施例的BCS系统。更具体而言,该图示出了BCS运行时。
根据实施例,诸如基于网关的应用103和/或基于架构的应用105之类的客户端可以经由诸如互联网107之类的网络并且经由可以包括云门(CloudGate,下面讨论)的诸如负载均衡器LBaaS 126之类的前端与AACS实例128通信。传入的调用可以包括REST通信(在图中示为较粗的虚线),或者在某些情况下,包括传入的gRPC通信(在图中示为较浅的虚线)。传入的REST通信可以被引导到网关138(其可以包括REST API/REST代理)、控制台136或代理架构-CA 130(如上面所讨论的)。现在转换/变换为内部调用(gRPC)的REST通信可以与区块链架构/超级账本的实例(包括代理/对等体132、代理/排序者134、链式码142和链式码构建器140)对接。同时,传入的gRPC通信可以直接发送到例如代理/对等体132和代理/排序者134,以与区块链/超级账本对接。
根据实施例,一旦ACCS实例内的交易已经发生,ACCS实例就可以例如经由REST通信将账本持久化在云存储装置处,或者可以同样经由REST通信与事件中枢通信。
根据实施例,虽然图中仅示出了一个ACCS实例,但是本领域技术人员将容易理解,客户端(诸如基于网关的应用103和/或基于架构的应用105)可以经由所描述的BCS运行时与之通信的一个或多个ACCS实例可以存在。
图1D图示了根据实施例的BCS系统。更具体而言,该图图示了BCS系统内的部件基数(cardinality),即部件相对于每个BCS实例的比率。
根据实施例,对于每个BCS实例100a:可以以1∶N的比率提供排序者101a;可以以1∶N的比率提供架构-CA成员资格102a;可以以1∶N的比率提供BCS REST-代理103a;可以以1∶1的比率提供BCS控制台104a,并且对等体容器105a可以以1∶N的比率存在。
每个对等体容器可以包括可以模拟交易的背书者和可以应用改变到账本的提交者,该账本也在对等体容器处提供。
根据实施例,链式码109a可以相对于对等体容器以1∶N的比率提供。此外,存储装置106a可以相对于对等体容器和排序者以N∶1的比率提供。同样,事件中枢107a可以相对于对等体容器和排序者以N∶1的比率提供。IDCS 108a可以相对于架构-CA成员资格以N∶1的比率提供。
区块链云服务(BCS)网关
根据实施例,BCS网关(BCSGW)包括使用架构SDK与架构网络通信的网络节点。BCS网关向客户端侧上的客户提供HTTPS RESTful API,该HTTPS RESTful API允许客户端/客户端应用与BCS的架构的元素进行交互。
图2图示了根据实施例的用于区块链云服务系统的网关。如图2所示,最终用户200使用HTTPS与应用适配器202交互以进行认证和授权。应用适配器202使用到诸如云门212(即LBaaS)之类的LBaaS的HTTPS来访问公共云210。对传入的交易执行负载均衡即服务(LBaaS)。云门212使用HTTPS将交易传递到BCS网关222。BCS网关提供到BCS架构220的接口,其中通信利用gRPC远程过程调用协议。
根据实施例,云门212是反向代理“访问强制执行模块”或“策略强制执行点”,其使用例如OAuth2和OpenID Connect标准来保护web浏览器和REST API资源。IDCS在内部使用云门来保护自己的管理UI和REST API(称为“IDCS web层”)。对于其它应用,云门:OTD作为附加实例部署在称为Non-IDCS(非IDCS)或Standalone(独立)的半支持/临时设置中。
根据实施例,(对于UI客户端)基于OAuth/OpenID的认证支持用户浏览器流,如果HTTP请求包含“用户-代理”报头(这意味着该请求来自如浏览器或移动应用的UI),那么该用户浏览器流被触发。云门提示用户输入凭证(用户名/密码)、核实凭证,然后创建并返回OAuth会话cookie,该cookie可以被来自浏览器的后续HTTP请求使用。(对于编程客户端)基于OAuth/OpenID的认证还支持资源服务器流。如果HTTP请求包含认证“承载者(bearer)”令牌报头,那么会触发这个流。云门验证令牌以进行认证。
根据实施例,对于HTTP基本认证,对于每个HTTP请求,凭证(用户名/密码)必须被包括在HTTP授权“基本”报头中。云门为每个HTTP请求验证这些凭证。此方法适用于UI客户端和编程客户端二者。
根据实施例,多令牌流是覆盖某些HTTP请求的自适应方法。如果HTTP请求包含授权“基本”报头,那么云门将执行HTTP基本行为。如果HTTP请求包含授权“承载者”报头,那么云门的行为与资源服务器流相同。
在实施例中,BCS控制台浏览器客户端利用用户浏览器流。在实施例中,对于BCS控制台和网关编程客户端,系统可以使用云门多令牌认证方法。编程客户端可以经由HTTP基本认证来调用BCS REST API。
根据实施例,BCS网关222与对等体224通信,对等体224是维护账本和运行链式码容器以便对账本执行读/写操作的网络实体。对等体由成员拥有和维护。BCS网关222和对等体224与(一个或多个)排序者226通信。排序者提供排序服务。排序者是将交易排序到区块中的所定义的节点集合。排序服务独立于对等体进程而存在,并基于先来先服务针对网络上的所有通道对交易进行排序。对等体224和(一个或多个)排序者226与架构证书颁发机构228通信。BCS网关222还提供对BCS管理服务器/控制台230的访问。
根据实施例,BCS部署在诸如Oracle云之类的云系统上。网关可以在ACCS容器中运行。网关是无状态的。可以通过杀死旧网关并起动新网关来更新网关。BCS网关可以通过RESTful协议允许客户查询或调用架构链式码。BCS网关允许客户端通过HTTPS/RESTful服务访问Oracle云中的架构网络。BCS网关是使用架构SDK与架构网络通信的网络节点。架构内的通信使用gRPC作为通信协议。在客户端侧,BCS网关向客户提供HTTPS/RESTful API。REST API允许客户端使用架构SDK调用架构内的功能。
根据实施例,可以与架构用户以一对一的关系提供网关。所有网关用户属于一个组织,所有网关用户在一个网关中映射到一个架构用户。一个网关仅配置一个架构用户。
根据实施例,IDCS发布网关证书和网关用户(“应用适配器”)证书。这些证书是用组织CA签署的。网关和网关用户可以用组织CA来部署,因此它们可以使用HTTPS进行相互验证。
根据实施例,每个最终用户通过“应用适配器”访问BCSGW。有3层认证。最终用户200可以由应用适配器202进行认证。应用适配器202可以由BCS网关222用客户端证书进行认证。BCS网关可以由架构网络220中的对等体224和排序者226认证。
根据实施例,一个容器运行一个tomcat服务器,部署一个BCS网关,映射到一个架构用户。多个应用适配器可以连接到一个网关。
根据实施例,不同的网关可以与不同的架构用户相关联。连接到一个网关的应用适配器的最终用户可以映射到一个架构用户。
根据实施例,BCSGW在Oracle云中运行,配置由BCS控制台使用JSON文件来设置。管理员(admin)用户可以将部分对等体、通道和链式码发布到网关。管理员用户通过控制台起动网关。网关在引导之后不刷新配置。管理员用户可以为链式码设置背书者。最终用户不知道策略,网关不检查链式码策略。
根据实施例,BCSGW由BCS控制台起动。BCS控制台创建BCSGW配置文件,并使用BCSGW包起动新网关。在起动后,起动脚本检查BCSGW配置文件,修改Tomcat的配置文件(例如,Tomcat配置文件),然后起动Tomcat。Tomcat为每个通道起动用于BCSGW的线程(线程读取配置文件),它创建通道对象,并创建与排序、对等体、事件中枢的连接。不同的通道将与排序/对等体/事件中枢具有不同的连接。这里的事件中枢是对等体的第二端口。网关连接到这个端口以获取交易的结果。Tomcat servlet(小程序)容器可以侦听并等待客户端请求。对于链式码查询方法,BCSGW将请求发送给该通道的所有对等体,并仅使用第一个结果。对于链式码调用方法,BCSGW将请求发送给该通道的所有背书者,如果其中一个返回成功,那么BCSGW将交易发送给该通道的所有排序者。
根据实施例,异步API被支持。对等体可以打开两个端口,一个端口用于事件交换。网关可以连接到对等体的事件端口。对于一个通道,网关只需连接到一个事件端口。普通客户端API是同步的。交易可以花费几秒钟,客户端需要等待响应。向客户端发送异步事件不在V1计划中。除了同步交易API之外,网关还提供异步交易API“asyncinvoke”。
在实施例中,异步API可以以这种方式工作。在检查客户端请求的参数之后,网关将交易ID返回给客户端。客户端可以知道交易已起动但尚未完成。网关将起动后台线程以继续处理交易。客户端可以跟踪未完成的交易。网关可以为客户端提供用于使用交易ID查询交易状态的“交易”API。
根据实施例,可以支持客户端登录。BCSGW可以支持HTTPS协议,并且不允许不安全的HTTP访问。BCSGW使用证书来信任应用适配器或SALT。应用适配器可以认证最终用户。Tomcat需要设置为使用HTTPS客户端证书认证。密钥库文件包括BCSGW证书和CA证书以验证客户端由BCS控制台提供。BCS网关为客户端访问提供BCS Rest接口。
持久化——存储云
根据实施例,超级账本架构项目代码将账本的区块存储在本地文件系统中,并且其它运行时数据(如区块索引、世界状态、历史和账本提供者数据库(保留所有账本ID和恢复状态)存储在LevelDB中,LevelDB也存储在本地文件系统中。在ACCS中,容器文件系统是临时的,这意味着当由于某些硬件故障容器停止并且在新VM上重新起动新容器时—文件系统内容可能会丢失。考虑所有容器丢失的情况,那么无法恢复账本。因此,账本数据必须存储在ACCS容器之外。因此,以对象存储服务的形式提供持久化方案,以供上述超级账本架构的部件使用。
根据实施例,相应地在BCS中,持久化方案利用存储云服务(例如,Oracle存储云服务)。账本被备份到对象存储库。账本区块写入到容器文件系统,但也备份到对象存储装置。索引和世界状态被使用容器文件系统来记录,但如果重新起动容器,那么可以从存储云服务恢复索引和世界状态。Oracle存储云是基础设施即服务(IaaS)产品,为文件和非结构化数据提供企业级大规模对象存储方案。
图3图示了根据实施例的区块链云服务系统的持久化。如图3中所示,ACCS实例300包括多个容器。容器包括例如具有账本/区块链312、314的排序容器302、304。账本/区块链312和314通过REST接口备份到对象存储装置320。对象存储装置320可以是例如云存储服务。
对象存储装置用于持久化每个排序者的账本。排序者向对等体递送区块的当前机制如下。首先,对等体通过发送对等体的版本(最后的区块编号)递送对来自排序者的新区块的请求。接下来,排序者检查对等体的版本,a)如果它大于排序者,那么向对等体返回错误,它指示排序者中的账本丢失,并且无法从EventHub恢复。在这种情况下,排序者无法继续恰当地工作。b)如果对等体的版本小于排序者,那么排序者从RAM中或者本地文件中的本地账本中检索区块,然后发送回对等体。c)如果它们具有相同的版本,那么排序者会阻塞,直到有新的区块可用。当从EventHub中剪切的新区块数据准备就绪时,排序者会将其放入本地区块文件或RAM中,然后递送线程从账本读取这个区块并将其发送回对等体。最后,对等体获取这个区块,并将其提交到本地账本。接下来,账本的最新版本可以被广播给其它对等体。
根据实施例,根据上述处理,排序者或者EventHub可以持久化整个区块。如上所述,EventHub具有时间受限的保留(retention)。如果EventHub可以这样做,那么排序者可以将账本类型设置为RAM或文件,一旦排序者重新起动并且账本丢失,它就可以重放来自EventHub的记录并将批处理消息剪切成区块,然后可以重新构建账本。如果EventHub仅支持有限的保留期,那么,一旦排序者重新起动并且账本丢失,它就无法正确重新构建账本,因为EventHub中的第一条记录不是账本中的真实的记录。在这种情况下,排序者无法起动旧通道,因为带有通道信息的第一个区块丢失,并且版本号(最后的区块编号)也不正确。
然后,根据实施例,每个排序者可以将每个区块持久化到Oracle存储装置,同时将所有通道ID也保存到存储装置中的对象。在对等体上,只持久化起源(genesis)区块,因为它具有通道信息。对于其它区块数据,一旦它丢失,对等体可以从排序者中检索它。
根据实施例,ACCS实例300还可以包括对等体容器306、308,对等体容器306、308包括账本316、318和索引326、328。存在由对等体生成的五种类型的运行时数据:交易日志(区块文件);区块文件索引(LevelDB);账本提供者DB(LevelDB);状态数据库(LevelDB或couchdb);历史(LevelDB)。所有交易数据都作为本地文件中的链接区块被存储在交易日志中,它必须被持久化到Oracle存储云服务。账本提供者DB在LevelDB中保留所有账本ID和恢复状态。账本ID是识别对等体所属通道的唯一ID。它必须被持久化到Oracle存储云服务。对于其他,对等体可以在运行时自动恢复它,因此将它们保持在本地文件系统中。
根据实施例,Oracle存储云服务提供用于向对象上传/从对象下载文件的RESTAPI。当生成新区块时,首先,它将像以前一样写入本地区块文件,区别是每个文件一个区块。接下来,这个区块文件将作为对象上传到Oracle存储装置。如果失败,那么本地文件中的改变将回滚,并且将向调用者返回错误。
根据实施例,对于区块文件索引,当排序者更新最新检查点时,可以首先将该信息持久化到Oracle存储装置,然后更新本地LevelDB。如果操作事件失败,那么可以将错误返回给调用者。这个信息将用于区块文件索引的恢复。在Oracle存储装置中,每个对等体和排序者都有唯一的容器名称,该唯一的容器名称是msp id和节点id的组合。对象名称是以通道名称为前缀的区块文件的名称。有关更多详细信息,请参见Oracle存储装置中的名称约定部分。
根据实施例,可以提供保存账本提供者DB到Oracle存储装置的选项。对于账本提供者DB,整个LevelDB可以一被更新就被复制到Oracle存储云服务。这个文件非常小,并且更新不频繁,因此可以忽略关于复制的开销。当容器重新起动时,可以从Oracle存储云服务下载它(如果存在)。如果排序者是从新容器重新起动的,那么它将首先从存储装置对象下载通道ID,然后通过通道ID从存储装置获取最近检查点。接下来,从第一个区块到最后一个区块起动恢复区块索引。在此期间,将逐个下载区块文件。之后,排序者开始恢复状态DB和历史DB。如果对等体从新容器重新起动,那么它将首先下载账本提供者DB,然后它可以获得所有账本ID。接下来,通过账本ID从存储装置获取相关的起源区块。对等体以起源区块中的配置起动,并且向排序者发送获取其它区块数据的请求。在对等体获取这些区块之后,它开始恢复区块索引、状态和历史DB。
根据实施例,本地区块文件充当读取高速缓存。查询将首先从本地读取数据,如果它不存在,那么从对象存储装置下载。除了账本之外,还需要将链式码的源代码持久化到Oracle存储装置。在当前架构中,编码的源代码将在安装链式码之后存储在对等体上。对等体将针对每个调用或实例化检查链式码容器,如果容器不存在,那么对等体将从源代码重建它。因此,可以将其上传到Oracle存储装置以进行每个链式码安装,并在对等体从盘故障重新起动时下载它。
BCS:基于SDK的配置文件操作和供应后(post-provision)部署
根据实施例,配置文件和部署函数在部署或更新应用时部署、发起生成、更新和获取关于应用的配置,应用包括对等体、排序者、CA服务器和链式码。这些函数驻留在BCS控制台(Node.js)和架构容器(对等体/排序者/链式码容器)处。这些函数将根据来自UI的请求获取/更新配置,并在需要时调用SDK API以激活配置更改。作为BCS控制台后端的一部分的部件与BCS控制台UI、IDCS后端SDK和所有BCS应用交互,以根据请求为UI操作获取/更新配置提供SDK。该部件还有助于供应BCS应用。BCS供应部件将BCS应用部署到使用PSM创建的VM的Docker容器中。这个特征将实现用于让BCS控制台UI和BCS供应部件在供应后阶段获取或更新BCS应用配置和部署的SDK API。在供应后阶段,供应系统将在Docker/Swarm下部署BCS应用,诸如CA服务器、排序者、对等体。当VM起动时,它将调用起动脚本来执行供应后和VM初始工作。
根据实施例,为包括对等体、排序者、架构CA和BCS网关的架构部件提供配置文件。BCS应用包、配置和链式码存储在客户的存储云服务中。
根据实施例,供应系统应当完成所有资源分配。资源包括VM、网络和存储装置。
根据实施例,供应系统应当将所有资源分配信息保存到存储服务。该信息包括VM编号及其网络地址/账户凭证、每个VM中的BCS应用编号及其类型、公共和内部IP。并且还应当有用于容器的足够的内部IP地址(可在VM之间访问)。
根据实施例,当BCS供应部件已完成供应工作时,VM起动脚本将起动,然后调用swarm部署应用容器,并且在容器内部,容器startup.sh脚本执行发起操作。
根据实施例,BCS控制台将在其起动时从存储服务获得配置,并且将用户操作的输入从UI保存回存储服务,然后将重新起动命令发送到swarm。
根据实施例,所需的安全证书可以保存在IDCS中。可替代地,可以从IDCS检索安全证书。
根据实施例,BCS控制台后端可以利用swarm与BCS应用通信。
根据实施例,当BCS应用容器起动时,BCS应用可以搜集配置细节以决定其应用类型(对等体或链式码容器或其它),然后加载所需的配置。
根据实施例,这个部件更新配置并提供BCS应用起动shell代码。BCS获取/更新配置文件操作可以划分为几个部分。首先,BCS控制台在起动时将从存储装置中获取配置,并在需要更新时将配置从BCS控制台保存到存储装置中(shell和Node.js)。当BCS应用容器起动时,起动脚本(在每个Docker容器中)首先将起动,然后获取其应用类型的配置,并从IDCS获取应用证书(shell)。当BCS控制台UI重新起动BCS应用时,它向Docker/Swarm发送消息以重新起动容器中的应用。
根据实施例,BCS控制台是无状态的,并且当被起动时,可以搜集所有BCS实例配置并连接到BCS应用并监视它们。配置将经由后端API从存储服务获得。当任何配置改变时,BCS控制台将调用后端API以将配置保存回存储服务并重新起动相关的应用。当客户经由BCS控制台UI更改配置项时,UI将配置编码为键/值数据,后端代码将其变换为文件并保存到存储服务中。BCS控制台可以监视、起动和停止BCS应用。起动和停止命令使用Docker/Swarm API来实现这个功能。
架构网络的部署
根据实施例,架构网络包括以下实体:对等体、客户端、排序服务和促进这些实体之间的通信的协议集合。组织是构成架构网络的利益相关者的逻辑实体或公司。架构网络有多个参与组织。成员:拥有用于网络的唯一根证书的法律上独立的实体。诸如对等体节点和应用客户端之类的网络部件将链接到成员。每个组织可以具有一个或多个成员。一个组织可以贡献于排序者和对等体双方,或仅贡献于排序者,或仅贡献于对等体。
部署架构网络的第一步是定义参与者。这一步在架构网络的带外完成。架构网络的所有参与组织协商并完成网络的组成,包括,例如,哪些组织贡献于排序者节点,以及哪些组织贡献于对等体节点。贡献于排序者节点的每个组织发布用于其排序者服务器的根证书。贡献于对等体节点的每个组织发布用于其对等体服务器的根证书。具有客户端的每个组织发布用于其客户端的根证书。客户端可以在一个组织中与对等体分开到不同的成员。
作为示例,四个银行(银行1、银行2、银行3和银行4)已经决定使用排序服务来部署区块链网络,该排序服务将包括由银行1和银行2拥有的排序者节点。并且银行1在这个网络中仅贡献于排序者。每个银行都是架构网络的组织:银行1有1个成员:排序者(root_cert_1);银行2有3个成员:客户端(root_cert_21)、对等体(root_cert22)、排序者(root_cert23);银行3有2个成员:客户端(root_cert31)、对等体(root_cert32);银行4有2个成员:客户端(root_cert41)、对等体(root_cert42)。
在定义参与者之后,为排序者和对等体生成证书。每个排序者或对等体需要(私钥,签署的证书)对来标识它自己。每个成员可以利用其根证书来配置和起动其自己的架构CA服务器,并使用CLI或SDK请求CA服务器为这个成员的每个排序者/对等体服务器生成(私钥,签署的证书)。BCS提供可以提供证书的架构CA服务器。但是,架构CA服务器不是生成证书的唯一方法。用户可以使用其它CA系统来执行相同的操作。因此,架构CA服务器不是架构网络中的强制性部件。
在为排序者和对等体生成证书之后,通过创建系统通道来引导架构网络。排序服务只有一个系统通道(对于一个架构网络也是一个系统通道),并且它是要被创建(或更准确地说是被引导)的第一通道。系统通道定义架构网络的组成:
●一个排序服务
○一个或多个排序者组织。每个组织的
■MSP ID
■证书
○排序服务属性(例如类型-solo或Kafka、排序者地址、批的尺寸/超时)
○策略(谁可以创建通道等)
●一个或多个联盟(consortium)。每个联盟包含
○一个或多个对等体组织。任何想要参与这个架构网络的对等体组织必须在其中一个联盟中定义。每个组织的
■MSP ID
■证书
■锚对等体
在架构网络系统通道被引导之后,为系统通道创建起源区块(链中的第一区块)。排序者服务管理员为系统通道生成起源区块。起源区块可以通过工具configtxgen(genesismethod=file)生成,或者在排序者起动期间(genesismethod=provisional)生成。当使用configtxgen工具生成起源区块时,你必须编写配置文件configtx.yaml作为输入。这个文件包含以下信息:架构网络中所有排序者组织的根证书;所有对等体组织的根证书;排序服务属性:排序者类型、地址、批超时、批尺寸、kafka;策略;通道读取者:认证和验证通道递送请求;通道写入者:认证和验证通道广播请求;链创建者:评估链创建请求;管理员:认证和验证通道重新配置请求;
排序者服务管理员使用配置文件和起源区块来起动排序者服务器。这使用起源区块创建系统通道。起动排序者服务器需要配置文件orderer.yaml:监听地址/端口、账本类型等;LocalMSP(私钥,签署的证书)。提供排序服务的每个组织都会起动其排序者服务器(不应当指定起源区块)。
贡献于对等体节点的每个组织为每个对等体准备配置文件(默认位置/etc/hyperledger/fabric/core.yaml)以指定:LocalMSP(私钥,签署的证书)以标识对等体;以及对等体属性:监听地址/端口、引导对等体、闲聊(gossip)属性等。然后起动对等服务器。
在起动排序者和对等体之后,通道管理员(其具有创建通道的特权)使用架构CLI或SDK来请求排序者创建具有以下输入的通道:一个联盟(必须已在系统通道中定义);以及联盟中的一个或多个对等体组织。每个参与组织使用架构CLI或SDK将其对等体中的一些连接到新创建的通道。
示例:在BCS上部署架构网络
图4图示了BCS上的架构的示例部署。
更具体地,该图和描述描述了在BCS上部署架构网络的步骤。在这个示例中,四个实体A、B、C和D想要创建和加入架构网络。这四个实体离线讨论并决定各个实体的责任。每个实体在OPC上创建一个或多个BCS实例。
根据实施例,实体A提供排序者和对等体两者。实体A创建两个实例:用于排序者的Orderer_Org1 401和用于对等体的Peer_Org1 421。实体A还负责创建架构网络(注意:只有排序者才能创建架构网络)。排序服务400包括Orderer_Org1 401和Orderer_Org2 402以及Kafka集群410。
根据实施例,实体B提供排序者和对等体两者。实体B创建两个实例:用于排序者的Orderer_Org2 402和用于对等体的Peer_Org2 422。
根据实施例,实体C仅提供对等体。实体C创建实例Peer_Org3 423。
根据实施例,实体D仅提供对等体。实体D创建实例Peer_Org4 424。
根据实施例,每个BCS实例的管理员从BCS控制台收集当前组织的CA证书和管理员证书。每个对等体组织的管理员识别当前组织的锚对等体并收集锚对等体的IP/端口。这四个实体离线地互相交换所有收集到的信息。
根据实施例,从BCS控制台,Orderer_Org1的管理员通过使用在前一步骤中收集的以下信息创建系统通道来创建架构网络:每个组织的CA证书和管理员证书;以及每个对等体组织的锚对等体。后端工作包括调用架构工具来创建起源区块以及配置排序者,从而使用起源区块创建系统通道。
根据实施例,从BCS控制台,每个对等体组织的管理员通过更新所有对等体节点的配置以添加所收集的其它组织的CA/管理员证书并重新起动所有对等体节点来加入架构网络。
根据实施例,在系统中,提供了一种允许新组织加入现有架构网络的方法。此外,可以提供用户友好的方法来促进参与者之间的通信以便创建/加入架构网络,例如,覆盖初步形成架构的离线动作。
链式码(智能合约)容器
根据实施例,并且如上面所讨论的,链式码是定义一个或多个资产的软件,以及用于修改(一个或多个)资产的交易指令。链式码强制执行用于读取或更改键值对或其它状态数据库信息的规则。链式码函数针对账本当前状态数据库执行,并通过交易提议被发起。链式码执行导致键值写入的集合(写入集),该集合可以提交给网络并应用于所有对等体上的账本。
根据实施例,为了支持信息的一致更新——以及启用多个账本功能(交易、查询等)——区块链网络使用智能合约来提供对账本的受控访问。智能合约可以封装信息、跨架构自动复制信息,并且智能合约也被编写为允许参与者自动执行交易的某些方面。
根据实施例,超级账本架构智能合约以链式码编写,并且当区块链外部的应用需要与账本交互时由该应用调用。在大多数情况下,链式码只与账本的数据库部件、世界状态交互(例如,查询它),而不与交易日志交互。
根据实施例,超级账本架构利用Docker引擎来构建链式码、部署它并使其保持运行。本节描述架构体系架构以及如何将其集成到BCS的ACCS分层模型中。
根据实施例,架构如下所述部署和管理用户链式码:第一,在临时的CC env容器中构建链式码。第二,将链式码作为源代码传送到构建器容器中,使用静态链接的所需库进行编译(“Java构建”),然后将二进制文件发送回对等体。静态链接允许实际的链式码容器尽可能小。第三,构建链式码映像和容器并起动它。然后,链式码容器保持运行,直到对等体关闭或通道终止。如果链式码容器崩溃或被杀死,那么,如果映象存在,那么在下次调用时重新起动它。这种设计是每个对等体和通道有一个链式码Docker容器。链式码明确安装在对等体上。即:并非所有加入通道的对等体都必须安装链式码。
根据实施例,用户可以在ACCS分层容器中部署架构网络,ACCS分层容器具有透明地分发诸如对等体、排序者和链式码之类的部件的能力。链式码运行时环境容器(ccenv)将作为ACLS容器动态起动。链式码二进制文件将保存在云存储装置中,因为本地区块存储装置不被视为可靠的恢复方式。一旦构建,链式码二进制文件就将被上传到云存储装置,以用于在容器崩溃时的恢复目的。
根据实施例,每个链式码交互可以与链式码的各种功能对应。唯一的限制是在链式码被实例化之前不能调用或查询链式码。此外,在任何调用时,如果链式码容器不能被发现为正在运行,那么重新起动该链式码容器。
图5图示了根据实施例的链式码体系架构。更具体而言,该图图示了根据实施例的链式码体系架构,其允许客户端530在ACCS环境500中安装链式码并运行交易。步骤1,客户端530将链式码源代码安装到对等体1,510。首先在临时的CC env容器中构建链式码。当客户端530执行“安装”时,它将:起动构建器容器(该容器将自动起动构建器代理),等待构建器容器完成初始化,经由对等体将链式码源代码发送到构建器容器(步骤2)。构建器代理将构建链式码(Java构建)。链式码作为源代码被传送到构建器容器中,使用静态链接的所需库进行编译(“Java构建”),然后将二进制文件发送回对等体。静态链接允许实际的链式码容器尽可能小。一旦构建,链式码包(tgz文件)就将被上传到云存储装置560(步骤3)。构建器代理将云存储位置发送给对等体以供稍后引用(步骤4.2)。
根据实施例,对等体510然后将使用PSM REST API将CC env作为ACLS(访问控制列表)容器520起动。构建链式码映像和容器并起动它。然后,链式码容器保持运行,直到对等体关闭或通道终止。对等体510将链式码ID、自身IP(用于链式码注册)和云存储位置传递到ACLS容器起动(步骤4.1)。对等体将等待链式码起动,或者在设定的时间段后超时。ccenv将起动链式码。在起动后,链式码将自身向对等体注册(步骤4.3)。链式码将准备好在交易中调用(步骤5),这些交易将使用在注册时建立的连接来执行。
根据实施例,构建器容器550包括简单的REST型服务器。构建器容器550包括构建器代理553。构建器容器550起动并侦听链式码构建请求。当构建器容器550接收到构建请求(例如:具有base64编码的源代码作为主体的POST调用)时,它对源代码进行base64解码并将链式码源代码保存在本地文件系统中。然后,构建器代理553对源代码执行“Java构建”。如果“Java构建”成功,那么构建器代理553打包二进制文件并上传到云存储装置560。构建器代理还将链式码位置返回给对等体。如果“Java构建”失败,那么代理将错误和原因返回给对等体。
BCS管理控制台
如上所述,BCS的每个实例可以包括管理控制台,管理控制台可以用于管理和监视BCS实例,包括BCS网关、BCS节点和BCS通道。
根据实施例,用于提供管理控制台的系统可以包括在脚本运行时环境中运行的web应用,例如Node.js。该web应用可以构建在图形用户界面框架和web框架上;并且可以包括多个自定义功能或API,以与BCS实例中的各种节点或服务通信。该web应用可以将来自BCS实例中的各种节点或服务的信息填充到视图对象中,以便在控制台用户界面中显示。管理控制台还可以为管理员提供起动、停止和更新BCS实例中的一个或多个节点的功能。一组管理REST API可以由脚本运行时环境提供,或者可以由脚本运行时环境访问,以支持与web应用所提供的功能相同的功能。
根据实施例,系统可以通过由web应用提供的web界面或通过使用一组管理RESTAPI编写的自定义REST客户端应用来促进对相关联的BCS实例的监视和管理。
根据实施例,管理控制台可以使BCS管理员能够管理BCS实例的多个部件,包括一个或多个对等体节点、一个或多个排序者节点、一个或多个架构-CA节点、一个或更多BCS网关节点、通道和一个或多个链式码。
根据实施例,管理BCS部件可以包括执行以下操作中的一个或多个:起动部件、停止部件、添加部件、移除部件、查看/编辑部件的属性、查看部件的性能度量、以及查看部件的日志。
图6图示了根据实施例的用于提供管理控制台的系统。
如图所示,可以在应用容器云服务128中提供BCS管理控制台136作为BCS实例的部件。BCS管理控制台可以是在脚本运行时环境605中运行的web应用,该脚本运行时环境可以表示由Node.js提供的运行时环境。
根据实施例,在管理控制台内,可以有架构节点SDK 611、多个架构自定义功能613、以及多个ACCS API 615。SDK、自定义功能和ACCS API可以用于与架构网络601通信,架构网络601可以包括分布式流传输服务(例如,Kafka)603。管理控制台还可以包括视图对象623,该视图对象623可以包含需要在BCS控制台UI 104或REST客户端604中显示的信息,或者包含需要从BCS控制台UI或REST客户端传递到管理控制台的信息。架构节点SDK 611可以操作,以映射来自架构网络的信息与BCS控制台UI或REST客户端的信息。
根据实施例,BCS管理控制台还可以包括GUI框架(例如,JET)617和web框架(例如,Express)619。GUI框架可以提供可以在管理控制台web应用中使用的各种用户界面(UI)部件和元素。例如,这些UI部件和元素可以用于创建表单、收集数据和可视化数据。web框架可以用JavaScript编写,并且可以提供web应用框架,该web应用框架包括开发web和移动应用的健壮的特征集合。
图7A-7B图示了根据实施例的BCS控制台UI中的用户界面的示例。
根据实施例,如图7A中所示,BCS摘要711可以显示在控制板(dashboard)中。该摘要可以包括组织的数量、对等体的数量、排序者的数量、通道的数量和链式码的数量。
根据实施例,可以显示BCS实例的健康信息713。可以可视地显示和数字地显示该健康信息。样本UI还可以显示交易执行714和账本摘要715。
根据实施例,图7B图示了用于BCS实例中的所有节点的信息。例如,样本UI示出了总共5个节点,包括2个对等体、1个排序者、1个架构-CA和1个REST代理(在BCS网关节点内)。对于每个节点,摘要UI 717显示节点的名称723、节点的路由信息725、节点的类型729以及节点的状态信息731。样本UI包括用于让管理员添加节点的按钮721,以及用于过滤节点的一个或多个下拉列表719。
节点管理
根据实施例,可以存在可以使用管理控制台来管理BCS实例的两个实体:BCS管理员和BCS用户。每个BCS实例只有一个BCS管理员账户。该BCS管理员账户可以在创建BCS实例时被创建。BCS管理员可以与架构-CA管理员捆绑在一起(即,BCS管理员从BCS控制台或通过BCS管理REST API执行的所有操作都使用架构-CA管理员身份)。可以有多个BCS用户账户,BCS用户账户可以由BCS管理员通过注册架构-CA身份来创建。
根据实施例,BCS实例中的节点可以显示在一个web页面中。管理控制台可以支持两种模式。在第一种模式下,每个节点的名称、类型、访问URL和状态可以被呈现为列表。在第二种模式下,每个对等体参与的通道可以在图中呈现。
另外,根据实施例,管理控制台可以使BCS管理员能够起动和停止对等体节点、排序者节点、架构-CA节点和BCS网关节点;以及添加和移除对等体节点、排序者节点和BCS网关节点。架构CA节点无法被添加或移除。
根据实施例,当添加节点时,BCS管理员可以设置节点的属性。新添加的节点可以作为添加操作的一部分而自动起动。当节点被移除时,该节点将被停止并从BCS实例中移除。
根据实施例,BCS控制台UI可以列出活动对等体节点参与的所有通道以及安装在活动对等体节点上的所有链式码。
根据实施例,当管理对等体节点时,BCS管理员可以将活动对等体节点加入现有通道,并查看和编辑活动排序者节点的属性。BCS用户可以查看活动对等体节点的属性中的一些属性。
另外,可以在BCS控制台UI中显示活动对等体节点的快照性能度量,诸如:存储器使用情况、所使用的CPU百分比、网络I/O和盘I/O。
根据实施例,当管理排序者节点时,BCS管理员可以查看活动排序者节点的日志、查看和编辑活动排序者节点的属性。BCS用户可以查看活动对等体节点的属性中的一些属性。与管理对等体节点类似,BCS管理员可以查看活动排序者节点的以下快照性能度量:存储器使用情况、所使用的CPU百分比、网络I/O和盘I/O。
根据实施例,当管理架构CA节点时,BCS管理员可以查看和编辑活动架构CA节点的属性、从活动架构CA节点获取CA证书,以及查看活动架构CA节点的日志。另外,BCS管理员可以查看活动架构节点的以下性能度量:存储器使用情况、所使用的CPU百分比、网络I/O和盘I/O。
如上所述,管理BCS网关节点可以包括添加或更多地移除BCS网关节点。由于所允许的BCS网关节点的最大数量是在实例化特定BCS实例时指定的,所以可以被添加到BCS实例的BCS网关节点的数量受所配置的所允许的BCS网关的最大数量的限制。
根据实施例,每个BCS网关节点可以具有名称,该名称是该网关节点的全局唯一身份。将来配置BCS网关节点时可以引用该名称。也可以在创建BCS网关节点时确定并显示网络地址。
根据实施例,当配置BCS网关节点时,BCS管理员可以定义BCS网关配置文件,并引导BCS网关节点。在供应BCS实例时,可能没有创建任何通道或部署任何链式码。照此,直到在部署一个或多个链式码并且通过管理控制台定义有效的BCS网关配置时,BCS网关节点才起作用。
对于每个BCS网关节点,可以存在配置页面。在某些实施例中,可以在配置页面中配置以下项:
1).通道:选择通过当前网关节点暴露哪些通道。
2).链式码:从每个通道中所有实例化的链式码的列表中选择暴露哪个实例化的链式码。
3).背书者:对于每个链式码,定义背书对等体。
4).根据如上所述的设置生成BCS网关配置。一旦为BCS网关生成了有效的配置文件,就可以起动该网关。
根据实施例,BCS控制台允许使用列表视图功能来查看BCS网关属性。在列表视图中,为每个BCS网关提供以下信息:
1).名称:当创建网关时指定的全局唯一名称。
2).架构身份名称:每个BCS网关可以与架构客户端身份相关联,该身份在创建BCS网关时被注册和登记。BCS网关采取的所有动作(例如,调用、查询)可以被授予此架构客户端的权限。
3).网络地址:具有公共互联网网络地址的接入点。
4).状态:开启或关闭
根据实施例,管理控制台还允许BCS管理员查看活动BCS网关节点的日志,并查看以下BCS网关度量:
1).已连接的客户端:客户端名称、地址、登录时间等。
2).当前交易信息:当前交易信息可以与状态信息(即这个交易所处的状态)一起可用。当前交易信息可以在调试挂起的交易时有用。
3).交易统计信息:交易统计信息通过管理控制台UI可以是可用的。例如,交易统计信息可以包括已完成的交易的数量、接收的事件通知的数量以及递送的事件通知的数量。
4).存储器使用情况。
5).CPU百分比。
6).网络I/O。
7).盘I/O。
通道管理
根据实施例,BCS用户可以列出当前BCS实例参与的所有通道。BCS管理员可以利用通道名称、联盟名称和一个或多个组织名称作为输入来创建通道。还可以显示输出以指示通道创建的成功或失败。
根据实施例,BCS用户可以查看通道的参与节点和组织。管理控制台可以支持两种视图模式:列表模式和拓扑模式。在列表模式下,参与的本地节点和外部组织(由其锚对等体表示)可以被列出为列表。在拓扑模式下,参与的本地节点和外部组织(由其锚对等体表示)可以被表示在拓扑图中。
根据实施例,BCS管理员可以查询通道中的对等体的账本。账本可以由交易区块的列表组成,每个区块可以包含区块ID、先前的散列、数据散列、时间戳、交易ID列表、动作(1..n)、链式码ID、链式码提议、响应(r/w集合、事件、成功或失败)以及一个或多个背书者。还可以显示以下统计数据:区块的数量以及调用的数量。
根据实施例,BCS管理员可以列出在通道中实例化的所有链式码。列出的项可以包括链式码ID和版本。BCS管理员还可以查看实例化的链式码的以下信息:Path(路径),它是由实例化的交易指定的路径;以及实例化参量。
根据实施例,BCS管理员可以升级通道中的实例化的链式码。升级操作可以采用以下输入:目标背书对等体,具有安装的新版本的链式码;一个或多个排序者;链式码版本;以及参量,这些参量可选地可以是特定于链式码的String(字符串)数组参量。升级操作的输出可以是成功或带有错误消息的失败。
链式码管理
根据实施例,BCS管理员可以列出安装在当前BCS实例的任何对等体上的所有链式码。列出的项包括链式码ID和版本。此外,BCS管理员还可以查看已安装链式码的以下信息:具有安装的链式码的本地对等体节点,以及已经实例化链式码的通道。
根据实施例,通过管理控制台,BCS管理员可以将链式码安装到一个或多个本地对等体节点。安装操作的输入可以包括:目标对等体;链式码类型,例如golang/Java;链式码ID,其可以是链式码的名称;链式码版本;链式码路径,其可以是链式码的源代码的位置;以及链式码包,这是可选的。安装操作的输出可能是成功,或者带有错误消息的失败。
根据实施例,BCS管理员可以将安装的链式码实例化到通道,其中以下信息作为输入:通道名称;其上安装有链式码的目标背书对等体;排序者;参量,这些参量可以是可选的并且可以是特定于链式码的String数组参量;以及背书策略,该背书策略具有定义的格式或者在没有定义的格式的情况下具有默认格式。
成员资格管理
根据实施例,BCS管理员可以列出当前BCS实例中的所有身份,为当前BCS实例注册新用户/身份,注销身份,以及从当前BCS实例中移除用户。另外,BCS管理员可以查看/编辑身份的以下属性,如表1所示:
表1
根据实施例,管理控制台使BCS用户能够登记或重新登记该用户自身,这可以为用户生成私钥和证书。管理控制台还使BCS管理员能够撤消之前登记的身份,并使得BCS用户能够改变它的密码。
根据实施例,BCS管理控制台可以与相关联的BCS实例的起动或停止一起起动或停止。
根据实施例,可以有两种方式来设置BCS管理控制台的日志级别:从BCS管理控制台本身,以及使用管理REST API来改变运行时的日志级别。
REST API
如上所述,架构网络内的不同部件之间的通信基于gRPC协议。照此,基于架构网络的BCS实例将要求客户端应用使用架构SDK来调用BCS实例中的链式码。
要求客户端应用使用架构SDK与区块链云服务通信可以部分地抵消将区块链框架提供作为云服务的益处。例如,益处之一是应当利用互联网连接从任何地方访问云服务。
根据实施例,本文描述的系统和方法可以在BCS实例内提供REST代理。REST代理可以提供多个REST API,供REST客户端使用以通过链式码进行查询、通过链式码同步或异步调用交易、获取交易状态以及获取BCS代理版本。REST代理可以认证来自REST调用中的REST调用,并将REST调用转换成GRPC调用。REST代理还提供了REST API,它们支持由BCS管理控制台提供的相同功能。
根据实施例,REST代理为客户端应用提供消费BCS实例的用户界面。
图8图示了根据实施例的用于在BCS实例中提供REST代理的系统。
如图8中所示,REST代理138可以包括REST认证器827和协议转换器829。当BCSREST API客户端808向REST代理发送REST调用815时,连接到云门811的LBaaS 126可以认证该调用,以确定REST调用是否包括有效用户名称和有效密码以允许REST访问BCS实例。
根据实施例,如果REST调用被LBaaS认证,那么LBaaS可以将REST调用引导到REST代理,REST代理可以将REST调用835转发到IDCS 813以确定客户端应用是否已经被授予相对于BCS的适当的授权。
根据实施例,如果客户端应用被适当授权,那么REST代理可以将REST调用变换/转换成gRPC调用825,并将该GRPC调用发送到架构网络601。REST调用一旦被变换/转换成内部调用(gRPC),就可以与区块链架构/超级账本的实例对接。
根据实施例,REST调用可以由协议转换器变换,协议转换器可以是基于具有GRPC库833的架构Java SDK 831的Java应用。
如图8中进一步所示,REST代理可以使用REST 821如上所述与管理控制台通信,以将由REST API 823提供的一个或多个功能暴露给管理控制台。
示例REST API
根据实施例,在为BCS实例调用REST API之前,REST代理需要起动并运行。可以通过管理控制台检查REST代理的状态。如果REST代理未起动并正在运行,那么需要从管理控制台起动它。
根据实施例,可以调用REST API以与部署在BCS实例中的对等体节点上的智能合约(链式码)交互。可以通过管理控制台完成部署处理。
根据实施例,提供了示例REST API,这些API被提供用于说明的目的。本文使用的示例假定以下示例链式码被部署到BCS网络。
根据实施例,进一步地,示例管理控制台。如果REST代理未起动并正在运行,那么可以从管理控制台起动它。
根据实施例,可以调用REST API以与在BCS实例中的对等体节点上部署的智能合约(链式码)交互。可以通过管理控制台完成部署处理。
根据实施例,提供了示例REST API,这些API被提供用于说明的目的。本文使用的示例假定以下示例链式码被部署到BCS网络。
根据实施例,REST API提供以下功能。通过链式码查询;通过链式码调用交易;通过链式码异步调用交易;获取交易状态;以及获取BCS网关版本。客户端使用HTTPS访问BCS网关,并根据API利用消息格式以便执行这些函数。
根据实施例,通过链式码的“查询”功能调用链式码以执行查询动作,链式码和用于查询的参量是通过REST API指定的。获取交易状态——该REST API在通道中查询交易状态,通道和交易ID是通过REST API指定的。获取网关版本。该REST API返回网关版本信息。
根据实施例,通过链式码的“调用交易”功能。该REST API调用链式码以执行交易动作,链式码和调用参量是通过REST API指定的。该REST API以同步模式执行交易,这意味着在以下三种情况中的任何一种情况将响应发送回——该交易成功执行;交易未能完成;或者交易超时。
根据实施例,通过链式码的“异步调用交易”功能。该REST API调用链式码来执行交易动作,链式码和调用参量是通过REST API指定的。该REST API以异步模式执行交易,这意味着在提交交易后立即发送回响应/确认,而无需等待其完成或超时。随后可以提供结果。提供了BCS实例管理REST API,以支持由BCS控制台提供的相同功能(如下所述)。
与身份云服务(IDCS)集成的架构证书颁发机构(架构CA)
根据实施例,架构-CA服务器为架构提供成员资格服务。它包括三个部分:针对用户的认证、针对访问区块链(一组对等体和排序者)的授权、以及可以向应用客户端、对等体和排序者提供证书的CA服务器。架构-CA使用证书来实现认证和授权。证书包括两种类型:用于认证的登记证书和用于授权的交易证书。IDCS也提供认证和授权。但其授权由OAuth实现。这意味着如果对等体想要访问排序者,那么对等体应当从IDCS获取用户的访问令牌并使用这个令牌来访问排序者。
根据实施例,架构CA使用数据库或LDAP来存储架构CA的注册用户的信息,例如用户的名称/密码、用户的证书和用户的从属关系。公共云(OPC)的最终用户将应用一个中心化IDCS实例来管理其员工以访问其所有应用的公共云(OPC)实例。区块链云服务BCS优选地与用于其它云服务的IDCS集成。因此,最终用户能够应用一个中心化IDCS实例来管理其员工以访问其应用的所有公共云(OPC)实例,包括BCS。
在一个实施例中,区块链云服务(BCS)使用Oracle身份云服务(IDCS)以中心化方式存储用户信息。BCS将架构CA用户的信息存储到IDCS中,从而允许Oracle BCS使用IDCS来管理跨多个公共云服务实例中心化的BCS用户信息。因此,在实施例中,BCS架构CA用户的信息、证书存储在Oracle IDCS中。架构证书授权框架是架构成员资格提供者(MSP),它包括PKI私钥、签署的证书、CA证书链,并由架构CA客户端/服务器设置。
根据实施例,BCS充分利用OPC的用户管理。任何BCS用户必须首先是OPC用户(因此是IDCS身份)。当创建BCS实例时,创建几种类型的应用:BCS控制台、CA和REST代理。对于控制台,有两个应用角色:控制台管理员和控制台用户。对于CA,有四个应用角色:架构管理员、架构客户端、架构对等体、架构排序者。对于REST代理,有两个应用角色:网关管理员和网关用户。
根据实施例,为了成为BCS用户,OPC用户需要被授予OPC用户管理控制台中的某些BCS应用角色。
当创建BCS实例时,创建者需要提供现有的OPC用户/密码,并且这个用户将被自动授予BCS控制台管理员和架构管理员角色,以使这个用户成为BCS管理员。
认证——对于BCS控制台/CA/REST代理,认证在云门完成。对于对等体/排序者,认证是基于签名的。对于BCS控制台,在认证之后,控制台将获取当前用户的应用角色(通过调用IDCS)。如果用户未被授予控制台管理员或控制台用户角色,那么连接被拒绝。否则,控制台基于预定义的规则进行访问控制,例如,普通用户一般只能读取信息而管理员可以做任何事情。
根据实施例,对于CA,在认证之后,CA获得当前用户的应用角色。如果用户未被授予任何架构角色,那么登记请求被拒绝。
根据实施例,对于REST代理,在认证之后,REST代理获得当前用户的应用角色。如果用户未被授予网关管理员或网关用户角色,那么该请求被拒绝。否则,REST代理基于预定义的规则进行访问控制,例如,普通用户可以调用/查询,管理员可以改变配置、获取度量。
根据实施例,架构-CA服务器为架构提供成员资格服务。它包括三个部分:针对用户的认证、针对访问区块链(一组对等体和排序者)的授权,以及可以向应用客户端、对等体和排序者提供证书的CA服务器。
根据实施例,架构-CA使用证书来实现认证和授权。证书包括两种类型:用于认证的登记证书和用于授权的交易证书。
根据实施例,IDCS也提供认证和授权。但其授权由OAuth实现。这意味着如果对等体想要访问排序者,那么对等体应当从IDCS获取用户的访问令牌并使用这个令牌来访问排序者。
图9A图示了根据实施例的用于单点登录的典型IDCS用例。
根据实施例,可以在初始步骤将web应用901添加到IDCS 902。然后,诸如web浏览器900之类的客户端可以请求来自web应用的认证(例如,用户名和密码)。因为web应用已经被添加到IDCS,所以web应用可以指示web浏览器向IDCS发出认证请求。在从web应用接收到响应之后,web浏览器然后可以请求来自IDCS的认证(例如,用户名和密码)。
IDCS然后可以认证该请求,并且在成功认证后,将令牌发送回web浏览器。已经经过认证并接收到其令牌的web浏览器可以从web应用发出请求。web应用可以核实令牌,并向web浏览器发出该认证成功了的信号。
在图9A中描绘的情况下,IDCS充当身份提供者(IdP)以便为应用提供身份服务。所有各方之间的所有通信都是基于HTTP的。这个用例是配置驱动的,但仅适用于基于HTTP的应用。
图9B示出了根据实施例的用于架构客户端认证的IDCS用例。
根据实施例,与已经注册和登记的架构用户(这个用户的私钥和证书已经存储在客户端侧的状态存储库中)相关联的架构客户端904可以请求新客户端()(new client()),以及获取客户端(用户名)的用户上下文。架构SDK 905可以从状态存储库加载用户,并将用户对象返回到架构客户端。客户端在接收到用户对象后可以向架构SDK发送交易提议,架构SDK可以使用相同的私钥对该提议进行签署。然后,经签署的提议可以转到对等体(或多个对等体)906,对等体(或多个对等体)906将在成员资格服务907处核实签名。成员资格服务可以从IDCS 902获得用户的证书,并且可以使用来自IDCS的证书来核实用户的签名。然后,成员资格服务可以向对等体返回签名被核实的核实。
在超级账本架构区块链中支持基于SQL的丰富查询
根据实施例,系统和方法可以支持用于区块链世界中的世界状态持久化的关系引擎。还提供了利用SQL查询键/值对引擎并通过计算存储在交易有效载荷中的merkle树在提交时验证结果的能力。
根据实施例,本文提供的系统和方法提供执行SQL查询以允许以更容易和更可维护的方式创建复杂智能合约的能力。此外,通过将数据过滤推回到存储引擎(而不是在智能合约级别发生)以及通过能够依赖于支持并发的读和写数据访问的关系引擎,性能得以提高。
图10示出了根据实施例的用于在架构区块链中支持世界状态数据库的系统。
根据实施例,世界状态数据库1000可以包括版本化数据库提供者1005和版本化数据库1010。在典型的超级账本区块链架构以及其它区块链架构中,世界状态数据库包含键-值对数据库—即数据库内的每个“值”与可以用于查找该值的“键”配对。
根据实施例,对于改变区块链的每个交易,世界状态更新版本。交易管理器1015控制对世界状态数据库的访问。即交易管理器调整对世界状态数据库的写/读保持(hold)。验证器1020是负责在例如智能合约正在试图提交交易时核实数据仍然一致的实体。交易的执行在背书(例如,执行和验证(提交))之间划分。执行(背书)是对如果提交交易那么交易将成为什么的模拟—这是访问世界状态数据库的交易的一部分。验证稍后在提交时发生。交易必须通过多个节点执行链式码收集大量背书,并且一旦交易具有足够的背书来满足交易正在试图更新的账本上的策略,那么交易就可以移动到提交阶段。一般而言,在交易的两个阶段之间有一段时间。验证从背书中获取信息并验证该信息仍然有效。如果一切都仍然很好,然后提交交易,并更新世界状态。
根据实施例,可以与世界状态数据库相关联地执行多个操作1030。这些操作包括但不限于GetState、GetStateMultipleKey、GetStateRange、ExecuteQuery、GetLatestSavepoint、ApplyUpdates。同样,可以与交易管理器相关联地执行多个操作1035。这些包括但不限于Simulator、QueryExecutor、ValidateAndPrepare和Commit。
作为示例,世界状态数据库可以显示每个比特币用户的当前余额。这是当前世界状态的一致性快照。
根据实施例,在超级账本中,世界状态在持久化引擎中被捕获。它不能从外部访问,但是可在内部由区块链访问。区块链内的智能合约—交易可以访问世界状态数据库。
根据实施例,例如,可以编写智能合约以在一段时间内从A方向B方发送一定金额。也可以编写智能合约以确保在可以发送钱之前,B方必须满足某个条件,诸如将一件财产的所有权转让给A方。也可以编写智能合约以确保A方在将任何资金从A方发送到B方之前收到所有权。
根据实施例,智能合约依赖于世界状态数据库。智能合约可以查询A账户的当前余额、B账户的当前余额以及要转让的财产的当前所有权。所有这些都是通过检查世界状态数据库来完成的。智能合约是存储过程。可以将基础数据视为要访问的基础表集。
根据实施例,世界状态数据库被存储在快速键-值存储库中。此类数据库的工作原理是,给定标签(键),将值与键相关联。例如,余额可以与键关联。作为另一个示例,图片(位图)可以与键相关联…等等。一般而言,这种持久化引擎非常快。
但是,根据实施例,在这样的持久化引擎上存在限制,因为这样的系统仅支持查找机制。例如,它们无法提供丰富查询,诸如多个值之间的比较。例如,键-值持久化引擎无法处理请求10,000个不同账户中余额最高的账户名称的查询。这样的持久化引擎也不能针对其中存储的值执行函数,诸如最大值(max)、最小值(min)或平均值(average)。例如,键-值持久化引擎无法响应于这样的查询提供在X个月的时段内的用户的平均余额。而是将必须编写脚本或智能合约才能从键-值对中提取每个值,然后对每个提取的值运行该查询。对键-值持久化引擎的此类限制使编写智能合约变得困难且繁重,因为此类智能合约必须处理键-值存储库上提供的固有限制。
同样,根据实施例,键-值持久化引擎不支持并发地运行读取和写入交易的能力。在读取期间,写锁被实施使得在读取交易期间值不会更改。同样,在写入期间,读锁被实施使得在写入操作期间不会错误地读取任何要写入的值。这种读锁和写锁为传统的键-值存储库持久化引擎带来了进一步的限制。
根据实施例,系统和方法可以提供关系数据库或允许丰富查询(例如,SQL)的其它持久化引擎,而不是键-值持久化引擎。
根据实施例,当向诸如超级账本区块链架构之类的区块链架构提供对关系数据库的访问时,这允许用户和智能合约超越键-值存储库的限制。这样的数据库可以包括对MVCC(多版本并发控制)、快照(允许创建数据快照,但不会阻止用户/操作写入数据库)的支持。这可以提高性能和可用性,以及简化编码/编写智能合约和将需要查询持久化引擎的其它交易处理。
图11图示了根据实施例的用于在区块链架构中支持基于SQL的丰富查询的系统。
根据实施例,用于在区块链架构中支持基于SQL的丰富查询的系统可以包括世界状态数据库1100,世界状态数据库1100可以包括关系数据库接口1102、版本化数据库提供者1105和版本化数据库1110。同样,可以提供交易管理器1115和验证器1120。从传统系统中,世界状态界面、交易管理器和验证引擎均被更新。
根据实施例,交易管理器和验证引擎(例如,验证器112)是针对由超级账本架构支持的相同接口构建的,但是内部依赖于创建和提交关系交易。同样,版本化数据库提供者和版本化数据库包括交易感知的版本化数据库。这类似于版本化数据库,但是它们以交易方式保存。这可以允许以读/写模式创建交易,并且数据库内部将处理此类情况,而无需放置读/写保持(hold)。
同样,根据实施例,提供了关系数据库接口1102。该接口可以包括允许用户(例如,智能合约)将期望的任何关系引擎插入到系统中的抽象。示例包括Oracle、SQL或支持SQL和交易的任何其它数据库(例如,SQL Lite)。在实施例中,支持Berkeley DB,该Berkeley DB允许关系层,该关系层允许合约以关系方式与版本化数据库交互。根据实施例,BerkeleyDB是嵌入式数据库,其可以提高性能。
根据实施例,与用于诸如LevelDB和/或Couch DB之类的数据库的锁定方法不同,交易管理器可以知道数据库交易。
根据实施例,每个通道可以共享相同的版本化数据库(例如,SQLite)。每个数据库可以包含多个表;每个表都映射到版本化数据库(例如,Berkeley DB)。可以使BDB将多个数据库持久化到文件系统上的单个文件中。
根据实施例,通道可以共享一个表—channel_height,该表包含所有通道的当前高度/保存点。该表有4列:键、值、blockNo和txnNo;键被用于通道名称;blockNo和txnNo描述该通道的当前高度。
根据实施例,对于在该通道上实例化的每个(系统和用户)链式码,每个通道还与“状态”表相关联。该表名为<channelName>__<chaincodeName>。该表有5列:键、值、valueJson、blockNo和txnNo。“键”是设置到世界状态中的键的名称;“值”是当值无法被解析为有效的json时该键的值;“valueJson”是当值可以被解析为有效的json时该键的值;“blockNo”和“txnNo”表示为对应键存储的当前高度。
根据实施例,表是在创建通道时和在部署链式码时立即创建的。
根据实施例,针对BDB世界状态的丰富查询的执行是通过使用shim API通过链式码来执行的。GetQueryResult()函数中指定的表达式可以是有效的SELECT SQL表达式。
根据实施例,在指定的SELECT表达式中没有限制,例外是可以由表达式访问的表是表示与当前执行的链式码被绑定到的通道/链式码组合相关联的世界状态的表。
根据实施例,用户不需要知道用于表示与特定通道/链式码对相关联的世界状态的内部名称;而是,用户使用“<STATE>”占位符(不区分大小写)引用表名。例如,该表达式检索与“key1”键关联的值:SELECT*FROM<STATE>WHERE key='key1'(对于记录,SQL表达式中的关键字不区分大小写)。
根据实施例,尝试执行不是SELECT表达式的丰富查询,或者尝试访问除与绑定到当前执行的链式码的通道/链式码相关联的表以外的表,将返回错误。
根据实施例,结果由GetQueryResult()返回,与架构已经针对CouchDB执行的查询所支持的一致:结果是迭代器,其中每个消耗的迭代都包含键和json载荷。在BDB丰富查询结果的情况下,键名可以采用“__sqlresult_X”的形式—其中X是返回的迭代的基于零的索引,并且json载荷是该查询迭代所返回的结果集的json化版本。换句话说,json映射,其中每个属性名称对应于SQL结果集中的每个返回的列名称,并且每个属性值对应于在当前迭代中为该列返回的值。
根据实施例,以下提供了示例,该示例遍历给定颜色的所有返回的marble ID(省略了错误处理):
coloredMarbleIterator,err:=stub.GetQueryResult("SELECT key FROM<STATE>
WHERE json_extract(valueJson,'$.color')='"+color+"'")
defer coloredMarbleIterator.Close()
//遍历结果集,并且针对找到的每个marble,转移到newOwner
for coloredMarbleIterator.HasNext(){
queryResponse,err:=coloredMarbleIterator.Next()
//当然,有不同的方法来这样做,但是golang允许用户直接将
json串解组(unmarshal)到结构——这是方便的
key:=&struct{Key string}{}
json.Unmarshal([]byte(queryResponse.Value),&key)
returnedMarbleID:=key.Key
fmt.Printf("-found a marble ID:%s\n",returnedMarbleID)
}
根据实施例,系统和方法可以在提交时对丰富查询结果执行完全验证。在背书时,对于从GetQueryresult()调用消耗的所有结果,计算merkle树散列,并将其——与完整的SQL表达式一起——存储为交易有效载荷的一部分。在提交时,与在背书时执行的丰富查询相关联的SQL表达式被重新执行,并对照在背书时计算出的merkle树散列来增量检查其merkle树散列。验证器消耗查询结果,直到达到在背书时消耗的相同索引,或者直到迭代器耗尽为止。如果merkle树散列匹配,并且如果在查询的末尾处迭代器的耗尽状态匹配,那么丰富查询验证;否则,由于幻像(phantom)读取错误,该交易被标记为无效。
根据实施例,BDB支持用于交易的MVCC(多版本并发控制)和快照隔离级别。因此,系统和方法可以利用执行并发的读/写交易的能力。
图12是根据实施例的用于在区块链架构中支持基于SQL的丰富查询的方法的流程图。
在步骤1201处,该方法可以在包括微处理器的一个或多个计算机处提供企业级的分布式账本框架。
在步骤1202处,该方法可以在分布式账本框架内运行分布式账本架构,该分布式账本架构至少包括交易管理器和验证器。
在步骤1203处,该方法可以将世界状态数据库与分布式账本架构相关联,该世界状态数据库包括版本化数据库和关系数据库接口。
虽然上面已经描述了各种实施例,但是应当理解的是,它们是作为示例而非限制来呈现的。选择和描述实施例是为了解释本教导的特征和原理及其实际应用。实施例图示了通过提供新的和/或改进的功能和/或提供包括但不限于减少的资源利用、增加的容量、增加的吞吐量、提高的效率、减少的等待时间、增强的安全性和/或改进的易用性的性能优势来利用各种特征改进系统和方法的性能的系统和方法。
本文参考图示体系架构、功能、处理和/或操作的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述一些实施例。流程图或框图中的每个方框表示元素、功能、处理、模块、片段或指令的一部分,其包括用于实现指定功能的一个或多个可执行指令。在一些替代实施例中,框图或流程图中提到的功能不按图中所示的顺序发生。例如,取决于所涉及的功能,连续示出的两个方框可以基本上同时执行,或者以相反的顺序执行。流程图和/或框图的每个方框以及流程图和/或框图中的方框的组合可以由执行指定功能的计算机程序指令和/或专用硬件和/或硬件和计算机程序指令的组合来实现。
在一些实施例中,特征在包括处理器、计算机可读介质和用于与其它计算机通信的网卡/接口的计算机中实现。在一些实施例中,特征在包括计算系统的网络计算环境中实现,该计算系统包括各种类型的计算机配置,包括个人计算机、手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、网络PC、小型计算机、大型计算机,以及通过网络互连的链路。网络可以是局域网(LAN)、交换架构网络(例如InfiniBand)、广域网(WAN)和/或互联网。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。
在一些实施例中,特征在包括后端部件(例如,作为数据服务器)、或包括中间件部件(例如,应用服务器)、或包括前端部件(例如,具有图形用户界面或web浏览器的客户端计算机,用户可以通过该浏览器与本文描述的主题的实现进行交互)或包括这种后端、中间件或前端部件的任何组合的计算系统中实现。通过网络互连的。计算系统可以包括彼此具有客户端-服务器关系的客户端和服务器。在一些实施例中,特征在包括分布式计算环境的计算系统中实现,其中计算机的一个或多个集群通过网络连接。分布式计算环境可以使所有计算机位于单个位置,或者具有通过网络连接的不同远程地理位置处的计算机的集群。
在一些实施例中,特征在云中实现,作为云计算系统的一部分或作为云计算系统的服务,基于使用web技术以自助服务、计量方式递送给用户的共享弹性资源。云的特点可以包括例如:按需自助服务;广泛的网络访问;资源汇集;快速弹性;以及测得的服务。云部署模型包括:公共、私有和混合。云服务模型包括软件即服务(SaaS)、平台即服务(PaaS)、数据库即服务(DBaaS)和基础设施即服务(IaaS)。云一般是指硬件、软件、网络和web技术的组合,起为用户递送共享的弹性资源。如本文所使用的,云可以包括公共云、私有云和/或混合云实施例,并且可以包括云SaaS、云DBaaS、云PaaS和/或云IaaS部署模型。
在一些实施例中,使用硬件、软件、固件或其组合来帮助实现特征。在一些实施例中,使用被配置或编程为执行本教导方法的一个或多个函数的处理器来实现特征。在一些实施例中,处理器是单芯片或多芯片处理器、数字信号处理器(DSP)、片上系统(SOC)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、状态机、离散门或晶体管逻辑、分立硬件部件或其任何组合,被设计为执行本文所述的功能。在一些实现中,特征由特定于给定功能的电路系统实现。在其它实现中,特征在计算机、计算系统、处理器和/或网络中实现,被配置为使用例如存储在计算机可读存储介质上的指令来执行特定功能。
在一些实施例中,特征结合在软件和/或固件中,用于控制处理和/或网络系统的硬件,并且用于使处理器和/或网络能够利用本教导的这些特征与其它系统交互。这种软件或固件可以包括但不限于应用代码、设备驱动程序、操作系统、虚拟机、管理程序、应用编程接口、编程语言和执行环境/容器。基于本公开的教导,熟练的程序员可以容易地准备适当的软件编码。
在一些实施例中,本教导方法包括计算机程序产品,该计算机程序产品是机器可读或计算机可读介质(多种介质),该介质具有包括存储在其上/其中或在其中/由其携带的软件和/或固件的指令,这些指令可以用于编程或以其它方式配置诸如计算机之类的系统以执行本教导方法的任何处理或函数。机器可读或计算机可读介质可以包括存储介质,该存储介质可以包括适用于存储指令和/或数据的任何类型的介质或设备,包括但不限于软盘、硬盘驱动器、固态驱动器、光盘、DVD、CD-ROM、微驱动器,以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪存设备、磁卡或光卡、分子存储器、纳米系统或其变体和组合。在特定实施例中,存储介质或计算机可读介质是非瞬态机器可读存储介质或非瞬态计算机可读存储介质。机器可读或计算机可读介质也可以或替代地包括诸如载体或传输信号之类的瞬态介质。
因此,从一个角度来看,已经描述了用于在区块链架构中支持基于SQL的丰富查询的系统和方法。根据实施例,本文提供的系统和方法提供执行SQL查询以允许以更容易和更可维护的方式创建复杂智能合约的能力。此外,通过将数据过滤推回到存储引擎(而不是在智能合约级别发生)以及通过能够依赖于支持并发读写数据访问的关系引擎,性能得以提高。同样,世界状态数据库还可以提供并发的读/写访问。
在以下编号的条款中列出了本教导的其它示例:
条款1,一种用于在区块链架构中支持基于SQL的丰富查询的系统,包括:企业级分布式账本框架;分布式账本架构,所述分布式账本架构至少包括交易管理器和验证器;以及世界状态数据库,所述世界状态数据库包括版本化数据库和关系数据库接口。
条款2,如条款1所述的系统,其中所述关系数据库接口在所述版本化数据库与在所述分布式账本架构上运行的一个或多个交易之间提供关系数据库接口层。
条款3,如条款2所述的系统,其中所述一个或多个交易中的至少一个交易包括至少一个丰富查询。
条款4,如条款3所述的系统,其中所述至少一个丰富查询经由所述关系数据库接口访问所述版本化数据库。
条款5,如条款2或3所述的系统,其中所述世界状态数据库提供并发的读/写访问。
条款6,如条款3或与其相关的任何条款所述的系统,其中所述至少一个丰富查询包括链式码。
条款7,如任何前述条款所述的系统,其中所述分布式账本架构被供应为区块链云服务,所述区块链云服务包括对等体容器、排序容器和链式码容器。
条款8,一种用于在区块链架构中支持基于SQL的丰富查询的方法,包括:在包括微处理器的一个或多个计算机处提供企业级分布式账本框架;在所述分布式账本框架内运行分布式账本架构,所述分布式账本架构至少包括交易管理器和验证器;以及将世界状态数据库与所述分布式账本架构相关联,所述世界状态数据库包括版本化数据库和关系数据库接口。
条款9,如条款8所述的方法,其中所述关系数据库接口在所述版本化数据库和在所述分布式账本架构上运行的一个或多个交易之间提供关系数据库接口层。
条款10,如条款9所述的方法,其中所述一个或多个交易中的至少一个交易包括至少一个丰富查询。
条款11,如条款10所述的方法,其中所述至少一个丰富查询经由所述关系数据库接口访问所述版本化数据库。
条款12,如条款9、10或11所述的方法,其中所述世界状态数据库提供并发的读/写访问。
条款13,如条款10或与其相关的任何权利要求所述的方法,其中所述至少一个丰富查询包括链式码。
条款14,如条款8至13中的任一项所述的方法,其中所述分布式账本架构被供应为区块链云服务,所述区块链云服务包括对等体容器、排序容器和链式码容器。
条款15,一种计算机可读介质,其上具有用于在区块链架构中支持基于SQL的丰富查询的指令,包括:在读取和执行时,使一个或多个计算机执行包括以下的步骤:在包括微处理器的一个或多个计算机处提供企业级分布式账本框架;在所述分布式账本框架内运行分布式账本架构,所述分布式账本架构至少包括交易管理器和验证器;以及将世界状态数据库与所述分布式账本架构相关联,所述世界状态数据库包括版本化数据库和关系数据库接口。
条款16,如条款15所述的计算机可读介质,其中所述关系数据库接口在所述版本化数据库与在所述分布式账本架构上运行的一个或多个交易之间提供关系数据库接口层。
条款17,如条款16所述的计算机可读介质,其中一个或多个交易中的至少一个交易包括至少一个丰富查询。
条款18,如条款17所述的计算机可读介质,其中所述至少一个丰富查询经由所述关系数据库接口访问所述版本化数据库。
条款19,如条款16、17或18所述的计算机可读介质,其中所述世界状态数据库提供并发的读/写访问。
条款20,如条款15至19中的任一项所述的计算机可读介质,其中所述分布式账本架构被供应为区块链云服务,所述区块链云服务包括对等体容器、排序容器和链式码容器。
前面的描述并非旨在是详尽的或将范围限制于所公开的精确形式。此外,在已经使用特定系列的交易和步骤描述了实施例的情况下,本领域技术人员应当清楚的是,除非另有说明,否则该实施例不排除附加交易和步骤的执行。另外,虽然各种实施例描述了特征的特定组合,但是应当理解的是,对于相关领域的技术人员来说,在本教导和范围的范围内,这些特征的不同组合将是清楚的。具体地,在给定实施例、变体或图中示出的特征(类似设备或类似方法)可以在另一个实施例、变体或附图中与另一个特征组合或用其替换,而不脱离教导和范围。而且,对于相关领域的技术人员清楚的是,可以在其中进行形式、细节、实现和应用的各种添加、减少、删除、变化、用等同物的元件的替换,以及其它修改和改变,而不脱离本公开的精神和范围。更广泛的精神和保护范围旨在由以下权利要求及其等同物限定。
Claims (15)
1.一种用于在区块链架构中支持基于SQL的丰富查询的系统,包括:
企业级分布式账本框架;
分布式账本架构,所述分布式账本架构至少包括交易管理器和验证器;以及
世界状态数据库,所述世界状态数据库包括版本化数据库和关系数据库接口。
2.如权利要求1所述的系统,其中所述关系数据库接口在所述版本化数据库与在所述分布式账本架构上运行的一个或多个交易之间提供关系数据库接口层。
3.如权利要求2所述的系统,其中所述一个或多个交易中的至少一个交易包括至少一个丰富查询。
4.如权利要求3所述的系统,其中所述至少一个丰富查询经由所述关系数据库接口访问所述版本化数据库。
5.如权利要求3或4所述的系统,其中所述至少一个丰富查询包括链式码。
6.如任何前述权利要求所述的系统,其中所述世界状态数据库提供并发的读/写访问。
7.如任何前述权利要求所述的系统,其中所述分布式账本架构被供应为区块链云服务,所述区块链云服务包括:
对等体容器,
排序容器,以及
链式码容器。
8.一种在区块链架构中支持基于SQL的丰富查询的方法,包括:
在包括微处理器的一个或多个计算机处提供企业级分布式账本框架;
在所述分布式账本框架内运行分布式账本架构,所述分布式账本架构至少包括交易管理器和验证器;以及
将世界状态数据库与所述分布式账本架构相关联,所述世界状态数据库包括版本化数据库和关系数据库接口。
9.如权利要求8所述的方法,其中所述关系数据库接口在所述版本化数据库与在所述分布式账本架构上运行的一个或多个交易之间提供关系数据库接口层。
10.如权利要求9所述的方法,其中所述一个或多个交易中的至少一个交易包括至少一个丰富查询。
11.如权利要求10所述的方法,其中所述至少一个丰富查询经由所述关系数据库接口访问所述版本化数据库。
12.如权利要求10或11所述的方法,其中所述至少一个丰富查询包括链式码。
13.如权利要求8至12中的任一项所述的方法,其中所述世界状态数据库提供并发的读/写访问。
14.如权利要求8至13中的任一项所述的方法,其中所述分布式账本架构被供应为区块链云服务,所述区块链云服务包括
对等体容器,
排序容器,以及
链式码容器。
15.一种计算机可读介质,携带用于在区块链架构中支持基于SQL的丰富查询的指令,包括:在读取和执行时,使一个或多个计算机执行如权利要求8至14中的任一项所述的方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862711385P | 2018-07-27 | 2018-07-27 | |
US62/711,385 | 2018-07-27 | ||
US16/261,363 | 2019-01-29 | ||
US16/261,363 US11169985B2 (en) | 2018-07-27 | 2019-01-29 | System and method for supporting SQL-based rich queries in hyperledger fabric blockchains |
PCT/US2019/016340 WO2020023079A1 (en) | 2018-07-27 | 2019-02-01 | System and method for supporting sql-based rich queries in hyperledger fabric blockchains |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112514319A true CN112514319A (zh) | 2021-03-16 |
Family
ID=69178140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980050205.1A Pending CN112514319A (zh) | 2018-07-27 | 2019-02-01 | 在超级账本架构区块链中支持基于sql的丰富查询的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11169985B2 (zh) |
EP (1) | EP3831009A1 (zh) |
JP (2) | JP7168759B2 (zh) |
CN (1) | CN112514319A (zh) |
WO (1) | WO2020023079A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157723A (zh) * | 2021-04-06 | 2021-07-23 | 福州大学 | 一种面向Hyperledger Fabric的SQL访问方法 |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10162729B1 (en) * | 2016-02-01 | 2018-12-25 | State Farm Mutual Automobile Insurance Company | Automatic review of SQL statement complexity |
US10768836B2 (en) * | 2017-07-07 | 2020-09-08 | Sap Se | Page based data persistency |
US10880072B2 (en) * | 2018-06-20 | 2020-12-29 | Verizon Patent And Licensing Inc. | Systems and methods for controlled random endorsement in a blockchain network |
CN117171274A (zh) * | 2018-08-08 | 2023-12-05 | 华为技术有限公司 | 一种区块链节点和交易方法 |
US10915521B2 (en) * | 2018-08-21 | 2021-02-09 | Syniverse Technologies, Llc | Blockchain gateway device and associated method of use |
US10250394B1 (en) * | 2018-09-20 | 2019-04-02 | Accenture Global Solutions Limited | Cryptologic self-executing blockchain export commitment |
US10997159B2 (en) * | 2018-10-09 | 2021-05-04 | International Business Machines Corporation | Blockchain notification board storing blockchain resources |
US11520773B2 (en) | 2018-10-09 | 2022-12-06 | International Business Machines Corporation | Blockchain notification board storing blockchain resources |
US11303442B2 (en) | 2018-10-09 | 2022-04-12 | International Business Machines Corporation | Blockchain notification board storing blockchain resources |
US11720545B2 (en) * | 2018-12-19 | 2023-08-08 | International Business Machines Corporation | Optimization of chaincode statements |
US11348101B2 (en) * | 2018-12-19 | 2022-05-31 | International Business Machines Corporation | Post-settlement processes |
US10810183B1 (en) | 2019-02-19 | 2020-10-20 | Mythical, Inc. | Systems and methods for synchronizing database operations with a distributed blockchain |
US11790368B2 (en) | 2019-03-05 | 2023-10-17 | International Business Machines Corporation | Auto-evolving database endorsement policies |
US20200285631A1 (en) * | 2019-03-05 | 2020-09-10 | International Business Machines Corporation | Database endorsement architecture |
US11269858B2 (en) | 2019-03-26 | 2022-03-08 | International Business Machines Corporation | Information management in a decentralized database including a fast path service |
US11398895B2 (en) * | 2019-03-26 | 2022-07-26 | International Business Machines Corporation | Information management in a decentralized database including a fast path service |
US11418322B2 (en) | 2019-03-26 | 2022-08-16 | International Business Machines Corporation | Information management in a decentralized database including a fast path service |
US11177938B2 (en) * | 2019-04-19 | 2021-11-16 | International Business Machines Corporation | Database composite endorsement |
US11436039B2 (en) * | 2019-05-04 | 2022-09-06 | Prasaga Foundation | Systemic extensible blockchain object model comprising a first-class object model and a distributed ledger technology |
US11777738B2 (en) * | 2019-06-04 | 2023-10-03 | International Business Machines Corporation | Metadata-based endorsement |
EP3669281B1 (en) * | 2019-07-11 | 2024-04-03 | Advanced New Technologies Co., Ltd. | Shared blockchain data storage |
CN111448781B (zh) | 2019-07-11 | 2022-08-26 | 创新先进技术有限公司 | 一种计算机实现的用于通信共享的区块链数据的方法 |
WO2019179539A2 (en) | 2019-07-11 | 2019-09-26 | Alibaba Group Holding Limited | Shared blockchain data storage |
US11916758B2 (en) * | 2019-08-02 | 2024-02-27 | Cisco Technology, Inc. | Network-assisted application-layer request flow management in service meshes |
CN110532115B (zh) * | 2019-09-04 | 2021-03-05 | 北京海益同展信息科技有限公司 | 用于开发智能合约的系统、方法和装置 |
US11023423B2 (en) * | 2019-10-10 | 2021-06-01 | Avery Glasser | System and method for information storage using blockchain databases combined with pointer databases |
US11461361B2 (en) * | 2019-12-31 | 2022-10-04 | Cerner Innovation, Inc. | Rapid hyperledger onboarding platform |
US11269863B2 (en) * | 2020-01-23 | 2022-03-08 | International Business Machines Corporation | Index structure for blockchain ledger |
US11238029B2 (en) * | 2020-02-14 | 2022-02-01 | International Business Machines Corporation | Runtime endorsement policy determination |
CN111368003B (zh) * | 2020-03-06 | 2020-10-16 | 安徽中科智链信息科技有限公司 | 一种多链锚定数据的管理方法 |
CN111865935B (zh) * | 2020-06-30 | 2022-05-17 | 北京天融信网络安全技术有限公司 | 一种数据传输系统 |
CN111541552B (zh) | 2020-07-08 | 2021-06-22 | 支付宝(杭州)信息技术有限公司 | 区块链一体机及其节点自动加入方法、装置 |
CN111541724B (zh) | 2020-07-08 | 2021-06-29 | 支付宝(杭州)信息技术有限公司 | 区块链一体机及其节点自动加入方法、装置 |
KR102392150B1 (ko) | 2020-07-10 | 2022-04-28 | 주식회사 미디움 | 하이퍼레저 패브릭 구조에서 피어 단말기가 블록 데이터를 클라이언트 단말기로 전송하는 방법 |
KR102447289B1 (ko) | 2020-07-10 | 2022-09-26 | 주식회사 미디움 | 피어 단말기 및 피어 단말기가 블록 데이터를 처리하는 방법 |
KR102412780B1 (ko) | 2020-07-10 | 2022-06-24 | 주식회사 미디움 | 하이퍼레저 패브릭 구조에서 피어 단말기에 수신된 블록 데이터를 처리하는 방법 |
CN112131228B (zh) * | 2020-09-29 | 2023-12-19 | 上海卓钢链科技有限公司 | 一种基于fabric的便于数据检索的联盟链系统 |
US11301463B1 (en) * | 2020-10-09 | 2022-04-12 | Blockpoint Systems Inc. | Multi-version database management system |
US12007981B2 (en) * | 2020-12-02 | 2024-06-11 | International Business Machines Corporation | Blockchain selective world state database |
CN112711592B (zh) * | 2020-12-31 | 2022-06-28 | 中国科学院计算技术研究所数字经济产业研究院 | 基于区块链的数据索引方法 |
JP2022151190A (ja) * | 2021-03-26 | 2022-10-07 | 株式会社日立製作所 | 業務監査支援システム及び業務監査支援方法 |
CN113312035B (zh) * | 2021-05-17 | 2023-06-06 | 南京大学 | 一种面向Hyperledger Fabric的智能合约开发插件的实现方法 |
CN114390062A (zh) * | 2021-12-30 | 2022-04-22 | 卓尔智联(武汉)研究院有限公司 | 基于区块链的调用方法、装置、电子设备及存储介质 |
US20230315880A1 (en) * | 2022-03-28 | 2023-10-05 | International Business Machines Corporation | Using smart contracts to manage hyper protect database as a service |
CN114661421A (zh) * | 2022-03-30 | 2022-06-24 | 蚂蚁区块链科技(上海)有限公司 | 联盟链中部署链码的方法和系统 |
US20230353359A1 (en) * | 2022-04-27 | 2023-11-02 | Dell Products L.P. | Secure onboarding of external compute fabric in an edge horizontal platform |
US20240037092A1 (en) * | 2022-07-29 | 2024-02-01 | Microsoft Technology Licensing, Llc | Confidential blockchain database |
US20240126728A1 (en) * | 2022-10-14 | 2024-04-18 | Oracle International Corporation | Natively supporting json duality view in a database management system |
CN115659287B (zh) * | 2022-11-01 | 2023-11-10 | 寰宇信任(北京)技术有限公司 | 一种网络版权消费管理系统 |
CN116185668B (zh) * | 2023-04-26 | 2023-06-30 | 上海帆声图像科技有限公司 | 一种基于grpc的高效多模型选配部署方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874440A (zh) * | 2017-02-07 | 2017-06-20 | 杭州秘猿科技有限公司 | 一种基于sql数据库的区块链状态存储方法 |
US20170243212A1 (en) * | 2016-02-22 | 2017-08-24 | Bank Of America Corporation | System for implementing a distributed ledger across multiple network nodes |
US20200007311A1 (en) * | 2018-06-28 | 2020-01-02 | International Business Machines Corporation | Audit trail configuration in a blockchain |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9253016B2 (en) | 2010-11-02 | 2016-02-02 | International Business Machines Corporation | Management of a data network of a computing environment |
US20130046894A1 (en) | 2011-08-18 | 2013-02-21 | Sap Ag | Model-driven rest consumption framework |
CN104303175B (zh) | 2012-02-10 | 2018-06-12 | 甲骨文国际公司 | 云计算服务框架 |
US10872077B2 (en) | 2013-09-23 | 2020-12-22 | David D. Wright, SR. | Management of entitlements using blockchain |
JP6309442B2 (ja) | 2014-12-18 | 2018-04-11 | 株式会社日立製作所 | システムテンプレート保守システム及びシステムテンプレート保守方法 |
US10685042B2 (en) | 2014-12-22 | 2020-06-16 | Amazon Technologies, Inc. | Identifying join relationships based on transactional access patterns |
US9652269B2 (en) | 2015-04-03 | 2017-05-16 | Oracle International Corporation | System and method for supporting representational state transfer services natively in a service bus runtime |
WO2016164310A1 (en) | 2015-04-05 | 2016-10-13 | Digital Asset Holdings | Digital asset intermediary electronic settlement platform |
US9930103B2 (en) | 2015-04-08 | 2018-03-27 | Amazon Technologies, Inc. | Endpoint management system providing an application programming interface proxy service |
JP2018525729A (ja) | 2015-07-14 | 2018-09-06 | エフエムアール エルエルシー | 計算上効率的な移転処理、監査及びサーチ装置、方法及びシステム |
US9912494B2 (en) | 2015-08-12 | 2018-03-06 | Cisco Technology, Inc. | Distributed application hosting environment to mask heterogeneity |
US20170116693A1 (en) | 2015-10-27 | 2017-04-27 | Verimatrix, Inc. | Systems and Methods for Decentralizing Commerce and Rights Management for Digital Assets Using a Blockchain Rights Ledger |
US20170132626A1 (en) | 2015-11-05 | 2017-05-11 | Mastercard International Incorporated | Method and system for processing of a blockchain transaction in a transaction processing network |
EP3414713B1 (en) | 2016-02-12 | 2023-07-26 | Royal Bank Of Canada | Methods and systems for digital reward processing |
WO2017147696A1 (en) | 2016-02-29 | 2017-09-08 | Troy Jacob Ronda | Systems and methods for distributed identity verification |
US20180130034A1 (en) | 2016-11-07 | 2018-05-10 | LedgerDomain, LLC | Extended blockchains for event tracking and management |
US10691763B2 (en) | 2016-11-11 | 2020-06-23 | International Business Machines Corporation | Trustable web searching verification in a blockchain |
US20180158034A1 (en) * | 2016-12-07 | 2018-06-07 | International Business Machines Corporation | Dynamic reordering of blockchain transactions to optimize performance and scalability |
US10396997B2 (en) | 2016-12-14 | 2019-08-27 | International Business Machines Corporation | Container-based operating system and method |
CN106982205B (zh) | 2017-03-01 | 2020-05-19 | 中钞信用卡产业发展有限公司杭州区块链技术研究院 | 基于区块链的数字资产处理方法和装置 |
US10375105B2 (en) | 2017-03-03 | 2019-08-06 | International Business Machines Corporation | Blockchain web browser interface |
CN106952124A (zh) | 2017-03-16 | 2017-07-14 | 北京牛链科技有限公司 | 基于分布式记账的电子发票管理系统和方法 |
US10452998B2 (en) | 2017-03-19 | 2019-10-22 | International Business Machines Corporation | Cognitive blockchain automation and management |
US10757103B2 (en) | 2017-04-11 | 2020-08-25 | Xage Security, Inc. | Single authentication portal for diverse industrial network protocols across multiple OSI layers |
US10469460B2 (en) | 2017-04-17 | 2019-11-05 | Cisco Technology, Inc. | Data sharing in a blockchain-enabled trust domain |
US10833858B2 (en) | 2017-05-11 | 2020-11-10 | Microsoft Technology Licensing, Llc | Secure cryptlet tunnel |
US10601900B2 (en) | 2017-05-24 | 2020-03-24 | Red Hat, Inc. | Supporting distributed ledgers in a micro-services environment |
US10146792B1 (en) * | 2017-05-31 | 2018-12-04 | Symbiont.Io, Inc. | Systems and methods for implementing a programming model for smart contracts within a decentralized computer network |
US9870508B1 (en) | 2017-06-01 | 2018-01-16 | Unveiled Labs, Inc. | Securely authenticating a recording file from initial collection through post-production and distribution |
US10789104B2 (en) | 2017-06-30 | 2020-09-29 | Vmware, Inc. | Methods and apparatus for deploying a distributed system using operating system virtualization |
US10581873B2 (en) | 2017-07-11 | 2020-03-03 | Cisco Technology, Inc. | Securing micro-services |
US10123202B1 (en) | 2017-07-11 | 2018-11-06 | Verizon Patent And Licensing Inc. | System and method for virtual SIM card |
US11343095B2 (en) | 2017-09-19 | 2022-05-24 | Microsoft Technology Licensing, Llc | Cryplet binding key graph |
US10762079B2 (en) | 2017-09-29 | 2020-09-01 | Oracle International Corporation | System and method for managing a blockchain cloud service |
US10733176B2 (en) * | 2017-12-04 | 2020-08-04 | International Business Machines Corporation | Detecting phantom items in distributed replicated database |
US11243945B2 (en) * | 2017-12-11 | 2022-02-08 | International Business Machines Corporation | Distributed database having blockchain attributes |
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 |
US10691648B2 (en) * | 2018-07-03 | 2020-06-23 | International Business Machines Corporation | Controlling volatility via blockchain |
-
2019
- 2019-01-29 US US16/261,363 patent/US11169985B2/en active Active
- 2019-02-01 WO PCT/US2019/016340 patent/WO2020023079A1/en unknown
- 2019-02-01 JP JP2021504449A patent/JP7168759B2/ja active Active
- 2019-02-01 EP EP19705689.8A patent/EP3831009A1/en active Pending
- 2019-02-01 CN CN201980050205.1A patent/CN112514319A/zh active Pending
-
2021
- 2021-10-07 US US17/496,208 patent/US20220027344A1/en active Pending
-
2022
- 2022-10-27 JP JP2022172618A patent/JP7502393B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170243212A1 (en) * | 2016-02-22 | 2017-08-24 | Bank Of America Corporation | System for implementing a distributed ledger across multiple network nodes |
CN106874440A (zh) * | 2017-02-07 | 2017-06-20 | 杭州秘猿科技有限公司 | 一种基于sql数据库的区块链状态存储方法 |
US20200007311A1 (en) * | 2018-06-28 | 2020-01-02 | International Business Machines Corporation | Audit trail configuration in a blockchain |
Non-Patent Citations (2)
Title |
---|
ANONYMOUS: "how do I deploy hyperledger fabric/composer in the cloud?-stack overflow", Retrieved from the Internet <URL:https://web.archive.org/web/20180211125548/https://stackoverflow.com/questions/46658977/ how- do-i-deploy-hyperledger-fabric-composer-in-the-cloud> * |
ANONYMOUS: "Hyperledger Fabric", pages 1 - 41, Retrieved from the Internet <URL:https://web.archive.org/web/20180529002824/https:// hyperledger-fabric.readthedocs.io/en/release-1.0/index.html> * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157723A (zh) * | 2021-04-06 | 2021-07-23 | 福州大学 | 一种面向Hyperledger Fabric的SQL访问方法 |
CN113157723B (zh) * | 2021-04-06 | 2022-06-03 | 福州大学 | 一种面向Hyperledger Fabric的SQL访问方法 |
Also Published As
Publication number | Publication date |
---|---|
US20220027344A1 (en) | 2022-01-27 |
JP7168759B2 (ja) | 2022-11-09 |
EP3831009A1 (en) | 2021-06-09 |
JP2023017844A (ja) | 2023-02-07 |
WO2020023079A9 (en) | 2020-11-19 |
US11169985B2 (en) | 2021-11-09 |
US20200034353A1 (en) | 2020-01-30 |
JP2021533448A (ja) | 2021-12-02 |
WO2020023079A1 (en) | 2020-01-30 |
JP7502393B2 (ja) | 2024-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7502393B2 (ja) | ハイパーレッジャファブリックブロックチェーンにおいてsqlベースのリッチクエリをサポートするためのシステムおよび方法 | |
CN110192380B (zh) | 用于管理区块链云服务的系统和方法 | |
EP3841489B1 (en) | Dag based methods and systems of transaction processing in a distributed ledger | |
US11546425B2 (en) | Systems and methods of providing ledger as a service | |
US11822538B2 (en) | Systems and methods of transaction identification generation for transaction-based 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 |