CN111800268B - 用于区块链背书的零知识证明 - Google Patents
用于区块链背书的零知识证明 Download PDFInfo
- Publication number
- CN111800268B CN111800268B CN202010257713.1A CN202010257713A CN111800268B CN 111800268 B CN111800268 B CN 111800268B CN 202010257713 A CN202010257713 A CN 202010257713A CN 111800268 B CN111800268 B CN 111800268B
- Authority
- CN
- China
- Prior art keywords
- blockchain
- endorsement
- transaction
- knowledge proof
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000004044 response Effects 0.000 claims abstract description 98
- 238000000034 method Methods 0.000 claims description 60
- 230000008569 process Effects 0.000 description 25
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 16
- 238000010200 validation analysis Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000013475 authorization Methods 0.000 description 4
- 238000005065 mining Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Classifications
-
- 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/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/3218—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 proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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
-
- 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
Abstract
示例操作可包括以下中的一个或多个:从区块链的一个或多个背书者节点接收对针对区块链的存储请求的一个或多个响应,提取在该一个或多个响应中包括的存储请求的交易数据,基于所提取的交易数据和该一个或多个响应来生成背书的零知识证明,并向区块链节点发送零知识证明,以用于将零知识证明包括在散列链接的数据区块链的数据区块中。
Description
技术领域
本申请总体上涉及区块链背书过程,并且更具体地涉及在隐藏背书者节点的身份和背书策略的同时可用作背书的证明的零知识证明。
背景技术
集中式数据库在位于一个位置的单个数据库(例如,数据库服务器)中存储和维护数据。该位置通常是中央计算机,例如,台式中央处理器(CPU)、服务器CPU、或大型计算机。通常可以从多个不同点访问存储在集中式数据库中的信息。例如,基于客户端/服务器配置,多个用户或客户端工作站可以在集中式数据库上同时工作。集中式数据库易于管理、维护和控制,特别是出于安全目的,因为它位于单个位置。在集中式数据库中,由于所有数据的单个存储位置也暗示给定的一组数据仅具有一个主记录,因此数据冗余被最小化。
然而,集中式数据库遭受重大缺陷。例如,集中式数据库具有单点故障。因此,如果发生硬件故障,则数据库中的所有数据都将丢失,并且所有用户的工作都会中断。此外,集中式数据库高度依赖于网络连接。结果,连接速度越慢,每次数据库访问所需的时间量就会增加。另一个缺点是当集中式数据库由于单个位置而遇到高流量时,会出现瓶颈。此外,由于数据库仅维护数据的一个副本,因此集中式数据库提供了对数据的有限访问。结果,多个设备无法同时访问同一段数据而不造成严重的问题或产生覆盖已存储数据的风险。此外,由于数据库存储系统的数据冗余很小甚至没有,因此,除了通过手动操作从备份存储中恢复之外,很难恢复意外丢失的数据。
区块链为与常规数据库相关联的此类缺点和局限性提供了一种解决方案。区块链提供了一种分布式数据库,在该数据库中,只有在被称为背书节点的一组不信任方背书(同意)后,才可将数据添加到区块链中。为了提供一定程度的可审计性,背书节点将其身份(例如公钥)及其背书结果/决定存储在区块链上。公开的背书提供公共可验证性,但会导致潜在风险,例如攻击和数据泄漏。
例如,通过挖掘交易历史,攻击者可识别活动的(active)背书者(endorser)或背书特定类型的交易的背书者并发起针对性的攻击(例如,拒绝服务攻击等)。作为另一个示例,因为递交(submitting)客户端有权选择遵循预定义背书策略的背书对等体,挖掘与特定客户端ID相关的所有交易可揭示敏感信息,例如客户端对背书者的偏好、通过选择顺序体现的对不同背书者的信任级别、地理位置等。这样,需要一种解决方案,该解决方案通过隐藏背书者节点身份同时仍使由生效节点和客户端执行的背书/验证具有可审计性来克服这些缺点和局限性。
发明内容
一个示例实施例提供了一种系统,该系统包括以下中的一个或多个:网络接口,该网络接口被配置为从区块链的一个或多个背书者节点接收对针对区块链的存储请求的一个或多个响应;以及处理器,该处理器被配置为执行以下中的一个或多个:提取在该一个或多个响应中包括的存储请求的交易数据;基于所提取的交易数据和该一个或多个响应来生成背书的零知识证明;以及控制网络接口以向区块链节点发送零知识证明,以用于将零知识证明包括在散列链接的数据区块链中的数据区块中。
另一示例实施例提供了一种方法,该方法包括以下中的一个或多个:从区块链的一个或多个背书者节点接收对区块链的存储请求的一个或多个响应;提取在该一个或多个响应中包括的存储请求的交易数据;基于所提取的交易数据和该一个或多个响应来生成背书的零知识证明;以及向区块链节点发送零知识证明,以用于将零知识证明包括在散列链接的数据区块链中的数据区块中。
另一示例实施例提供了一种方法,该方法包括以下中的一个或多个:接收包括区块链存储请求的背书的零知识证明的消息,以用于将零知识证明包括在区块链中的数据区块;通过对区块链的链码的应用程序编程接口(API)调用来读取加密背书策略;基于加密背书策略和零知识证明的多个属性确定零知识证明是否有效;以及响应于确定零知识证明是有效的,在区块链上的数据区块的数据部分内存储区块链存储请求。
附图说明
图1是示出了根据示例实施例的实现零知识证明背书的区块链网络的图。
图2A是示出了根据示例实施例的示例区块链体系结构配置的图。
图2B是示出了根据示例实施例的传统区块链交易流程的图。
图3A是示出了根据示例实施例的经许可的网络的图。
图3B是示出了根据示例实施例的另一经许可的网络的图。
图4A是示出了根据示例实施例的用于背书的通信序列的图。
图4B是示出了根据示例实施例的生成背书的零知识证明的过程的图以及图4C是示出了根据示例实施例的验证背书的零知识证明的过程的图。
图5A是示出了根据示例实施例的生成用于背书的零知识证明的方法的流程图。
图5B是示出了根据示例实施例的验证用于背书的零知识证明的方法的流程图。
图6A是示出了根据示例实施例的被配置为执行本文所述的一个或多个操作的示例系统的图。
图6B是示出了根据示例实施例的被配置为执行本文所述的一个或多个操作的另一示例系统的图。
图6C是示出了根据示例实施例的被配置为利用智能合约的另一示例系统的图。
图6D是示出了根据示例实施例的被配置为利用区块链的又一示例系统的图。
图7A是示出了根据示例实施例的用于将新区块添加至分布式账本的过程的图。
图7B是示出了根据示例实施例的新数据区块的内容的图。
图7C是示出了根据示例实施例的用于数字内容的区块链的图。
图7D是示出了根据示例实施例的可以表示区块链中的区块结构的区块的图。
图8是示出了支持一个或多个示例实施例的示例系统的图。
具体实施方式
容易理解的是,如在本文附图中一般描述和说明的示例组件可以以各种不同的配置来布置和设计。因此,如附图中所示的方法、装置、非暂态计算机可读介质和系统中的至少一个的实施例的以下详细描述并非旨在限制所要求保护的本申请的范围,而是仅代表所选实施例。
贯穿本说明书描述的示例特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合或移除。例如,贯穿本说明书,短语“示例实施例”、“一些实施例”或其它类似语言的使用是指结合该实施例描述的特定特征、结构或特性可包括在至少一个实施例中的事实。因此,贯穿本说明书出现的短语“示例实施例”、“在一些实施例中”、“在其它实施例中”或其它类似语言不一定是指相同的一组实施例,并且所描述的特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合或移除。
另外,尽管在实施例的描述中可能已经使用术语“消息”,但是本申请可应用于许多类型的网络和数据。此外,尽管在示例性实施例中可描绘某些类型的连接、消息和信令,但是本申请不限于特定类型的连接、消息和信令。
示例实施例提供了方法、系统、组件、非暂态计算机可读介质、设备、和/或网络,其实现了用于区块链存储系统的零知识证明背书机制。
在一个实施例中,本申请利用作为分布式存储系统的分散式数据库(例如,区块链),该分布式存储系统包括彼此通信的多个节点。分散式数据库包括类似于分布式账本的仅附加(append-only)的不可篡改数据结构,分布式账本能够维持互不信任的各方之间的记录。不受信方在本文中称为对等体或对等节点。每个对等体都维持数据库记录的副本,并且在分布式对等体之间未达成共识的情况下,没有任何单个对等体可以修改数据库记录。例如,对等体可执行共识协议以使区块链存储交易生效(validate),将存储交易分组为区块,以及在这些区块上构建散列链。为了保持一致性,此过程通过对存储交易进行排序来形成账本。在各种实施例中,可以使用经许可的(permissioned)和/或无需许可的(permissionless)区块链。在公共或无需许可的区块链中,任何人都可以在没有特定身份的情况下参与。公共区块链通常涉及本机加密货币,并基于各种协议(例如,工作量证明(PoW))使用共识。另一方面,经许可的区块链数据库在一组共享共同目标但彼此之间并不完全信任的实体(例如交换资金、商品、信息等的企业)之间提供安全的交互。
本文的示例可以利用如下区块链,该区块链可操作针对分散式存储方案量身定制并称为“智能合约”或“链码”的任意可编程逻辑。在某些情况下,可能存在用于管理功能和参数的专用链码,其称为系统链码。本申请可进一步利用如下智能合约,该智能合约是受信任的分布式应用程序,其利用了区块链数据库的防篡改属性和节点之间被称为背书或背书策略的基础协议。与该应用程序相关联的区块链交易可以在提交(commit)给区块链之前被“背书”,而未被背书的交易则被忽略。背书策略允许链码以背书所必需的一组对等节点的形式指定交易的背书者。当客户向背书策略中指定的对等体发送交易时,将执行交易以使交易生效。生效之后,交易进入排序阶段,在该阶段中,使用共识协议来生成被分组为区块的所背书的交易的有序序列。
本文的示例可利用作为区块链系统中的通信实体的节点。在不同类型的多个节点可在同一物理服务器上运行的意义上,“节点”可执行逻辑功能。节点在信任域中分组,并与以各种方式控制它们的逻辑实体相关联。节点可包括不同类型,诸如客户端或递交客户端节点,其向背书者(例如,对等体)递交交易调用,并且向排序服务(例如,排序节点)广播交易提议(proposal)。另一种类型的节点是对等节点,其可接收客户端递交的交易,提交交易并维持区块链交易的账本的状态和副本。对等体也可扮演背书者的角色,尽管这不是必需的。排序服务节点或排序者是针对所有节点运行通信服务的节点,并且该节点实现投递保证,诸如,当提交交易和修改区块链的世界状态时对系统中的每个对等节点的广播,这是针对初始区块链交易的另一个名称,初始区块链交易通常包括控制和设置信息。
本文的示例可以利用如下账本,该账本是区块链的所有状态转变的有序防篡改记录。状态转变可由参与者(例如,客户端节点、排序节点、背书者节点、对等节点等)递交的链码调用(即,交易)产生。每个参与者(诸如对等节点)可维持账本的一个副本。交易可导致一组资产密钥值(key-value)对被提交给账本作为一个或多个操作数,诸如创建、更新、删除等。账本包括区块链(也称为链),其用于以区块为单位存储不可篡改的顺序记录。账本还包括状态数据库,该数据库维持区块链的当前状态。
本文的示例可以利用作为交易日志的链,该交易日志被构造为散列链接区块,并且每个区块包含具有N个交易的序列,其中N等于或大于1。区块头包括区块的交易的散列,以及前一区块的头的散列。通过这种方式,在账本上的所有交易都可被排序并以加密方式链接在一起。因此,不可能在不破坏散列链接的情况下篡改账本数据。最近添加的区块链区块的散列表示在其之前的链上的每个交易,使得可确保所有对等节点处于一致且可信的状态。链可被存储在对等节点文件系统(即,本地、附加存储、云等)上,有效地支持区块链工作负载的仅附加性质。
不可篡改账本的当前状态表示链交易日志中包括的所有密钥的最新值。因为当前状态表示信道已知的最新密钥值,所以它有时被称为世界状态。链码调用针对账本的当前状态数据来执行交易。为了使这些链码交互有效,密钥的最新值可被存储在状态数据库中。状态数据库可以仅仅是链的交易日志的索引视图,因此可以随时从链中重新生成。在对等节点启动后以及在接受交易之前,状态数据库可自动恢复(或在需要时生成)。
传统的背书过程要求背书者节点在使区块链交易生效时(使用其公钥)标识自己。特别地,客户端节点可向背书者节点递交交易请求。作为响应,背书者节点可针对区块链的当前状态使交易请求生效,使用对背书者唯一的公钥对交易进行签名,并向客户端节点发送响应以及经签名的交易。作为响应,交易(以及背书者签名列表)被存储在该区块链上。但是,通过揭示其背书者的身份,区块链变得容易受到安全问题的影响。例如,攻击者可识别活动的背书者或背书特定类型的交易的背书者并发起有针对性的攻击(例如,拒绝服务攻击等)。作为另一个示例,因为递交客户端有权选择要遵循预定义背书策略的背书对等体,挖掘与特定客户端ID相关的所有交易可揭示敏感信息,例如客户端对背书者的偏好、通过选择顺序体现的对不同背书者的信任级别、地理位置等。
示例实施例通过提供如下机制来克服这些挑战,该机制允许背书者节点背书交易/使交易生效,同时不揭示其身份或区块链遵循的背书策略的身份。背书者节点可像通常使用其各自的公钥一样使交易生效以及对交易进行签名。背书者响应可被返回到客户端系统。但是,代替收集签名并向排序节点发送交易包以及被曝露的背书者节点的公钥,客户端可基于交易的各种组成部分(例如,读取/写入集、交易ID、链码ID等)、加密的背书者响应、加密的背书策略以及用于对背书者响应和背书策略进行加密的监管者的公钥来构建零知识证明数据对象。可使用零知识证明协议(例如,零知识简洁非交互式知识论证(zkSNARK)程序)来处理这些属性。因此,代替向排序节点传递背书者响应,客户端系统可生成交易响应,该交易响应包括零知识证明数据对象以及提取的交易数据、加密的背书者响应以及监管者对排序节点的公钥。
此外,验证节点(例如,提交节点、审计者等)可通过经由验证程序运行零知识证明数据对象来确定零知识证明是否满足背书策略。这里,验证节点可从链码数据中取得加密的背书策略,并将从客户端接收的数据(例如提取的交易数据、零知识证明数据对象、加密的背书者响应、监管者的公钥和加密的背书策略)输入到验证程序中。作为响应,验证程序(例如,zkSNARK等)可识别出背书者响应是否满足背书策略,而无需揭示背书者响应或背书策略的明文。相反,验证程序可输出真(TRUE)或假(FALSE)。
本文描述和描绘的示例解决方案的一些益处包括使得对区块链平台隐私进行背书的过程受到保护,以使得区块链用户或参与者无法分辨出谁真正背书了交易。示例实施例已经修改了背书过程,以使其具有隐私保护性。特别地,客户端可使用零知识证明来替换交易提议中的原始背书,但仍保留针对背书策略公开检查背书有效性的能力。示例实施例通过允许背书对等体签名/背书交易而不揭示其身份(公钥)来创建对区块链架构(fabric)的功能改进(隐私保护背书)。实际上,客户端和背书者节点可能不知道背书策略。
图1示出了根据示例实施例的实现用于背书的零知识证明的区块链网络100。参考图1,区块链网络100包括参与区块链(未示出)的节点,该区块链可在多个对等节点120-124之间复制和分布。节点可经由网络110彼此连接。在图1的示例中,每个对等节点120-124可存储区块链的副本。然而,对等节点123和124也执行背书者的角色,而对等节点120、121和122不执行背书的角色。客户端系统130可作为网关与对等节点120-124中的任何一个进行通信,以访问(存储、取得、修改等)区块链上的数据。例如,客户端系统130可向对等节点121发送交易请求。交易类型不限于任何特定类型。
在该示例中,背书策略可指示背书者节点123和124二者在可将交易存储在区块链上之前背书交易。因此,在客户端130递交的交易可被存储在整个区块链中之前,它必须从背书者节点123和124二者接收到背书。每个背书者节点可针对区块链数据库的当前状态来模拟交易,以确保交易有效。背书过程的示例关于图2B来描述。在确定是否背书交易之后,背书者节点123和124中的每个生成响应消息并向客户端节点(对等节点121和客户端130)发送该响应消息。
响应于从背书对等体123和124接收到背书者响应,客户端130可构造背书的零知识证明。这里,客户端130可从返回的份额(share)中重构背书策略,从交易中提取交易数据(例如,读取/写入集、交易ID、链码ID等),并用提前向客户端130提供的监管者的公钥来对背书者响应进行加密。此外,客户端130可使用监管者的公钥来对背书策略进行加密,并基于交易数据、加密的背书者响应、加密的背书策略和监管者的公钥来生成零知识证明,以生成零知识证明数据对象132,该零知识证明数据对象132随后被转发给排序节点125以将该零知识证明数据对象132包括在区块链中。
排序节点可将零知识证明和额外接收的数据(交易数据、加密的背书响应、加密的背书策略以及监管者的公钥)组装到数据区块中,该数据区块然后被提供给提交节点(例如对等节点120-124)。每个提交节点可在将区块存储在区块链上之前,提前基于由建立区块链系统的受信委员会(trusted board)提供的验证程序来验证零知识证明数据对象。
示例实施例隐藏了背书者的身份和实际背书策略二者。这是在经许可的区块链网络(例如超级账本架构)中实现交易隐私的关键步骤。除了确保隐私外,它还可帮助防止区块链网络中的针对性安全攻击(例如,拒绝服务攻击)。
图2A示出了根据示例实施例的区块链体系结构配置200。参考图2A,区块链体系结构200可包括某些区块链元素,例如,一组区块链节点202。区块链节点202可包括一个或多个节点204-210(仅通过示例描述这四个节点)。这些节点参与多个活动,诸如区块链交易添加和生效过程(共识)。区块链节点204-210中的一个或多个可基于背书策略来背书交易并且可为体系结构200中的所有区块链节点提供排序服务。区块链节点可发起区块链身份验证(authentication)并且寻求写入存储在区块链层216中的区块链不可篡改账本,该账本的副本也可存储在基础物理基础设施214上。区块链配置可包括一个或多个应用程序224,该应用程序链接到应用编程接口(API)222以访问和执行所存储的程序/应用程序代码220(例如,链码、智能合约等),其可根据参与者寻求的定制配置来创建,并可维持他们自己的状态,控制他们自己的资产,以及接收外部信息。这可被部署为交易,并通过附加到分布式账本上来安装在所有区块链节点204-210上。
区块链基础或平台212可包括区块链数据、服务(例如,加密信任服务、虚拟执行环境等)以及基础物理计算机基础设施的各种层,该基础物理计算机基础设施可用于接收和存储新交易并提供对正在寻求访问数据条目的审计者的访问。区块链层216可曝露接口,该接口提供对处理程序代码和参与物理基础设施214所必需的虚拟执行环境的访问。加密信任服务218可用于验证诸如资产交换交易的交易并保持信息私密。
图2A的区块链体系结构配置可经由由区块链平台212所曝露的一个或多个接口以及由区块链平台212提供的服务来处理和执行程序/应用程序代码220。代码220可控制区块链资产。例如,代码220可存储和传输数据,并且可由节点204-210以智能合约和与其执行的条件或其它代码元素相关联的链码的形式执行。作为非限制性示例,可创建智能合约以执行提醒、更新和/或经受改变、更新等的其它通知。智能合约本身可用于识别与授权和访问要求以及账本的使用相关联的规则。例如,信息226可包括将要由在区块链层216中包括的一个或多个处理实体(例如,虚拟机)进行处理的数据。结果228可包括执行链码的处理结果。物理基础设施214可用于取得本文描述的任何数据或信息。
智能合约可经由高级应用程序和编程语言创建,并且然后被写入区块链中的区块。智能合约可包括用区块链(例如,区块链对等体的分布式网络)注册、存储和/或复制的可执行代码。交易是智能合约代码的执行,该智能合约代码可响应于与智能合约相关联的条件被满足而执行。智能合约的执行可触发对数字区块链账本的状态的可信修改。由智能合约执行引起的对区块链账本的修改可通过一个或多个共识协议在区块链对等体的整个分布式网络中自动复制。
智能合约可将数据以密钥值对的格式写入区块链。此外,智能合约代码可读取存储在区块链中的值并在应用操作中使用它们。智能合约代码可将各种逻辑运算的输出写入区块链。代码可用于在虚拟机或其它计算平台中创建临时数据结构。被写入区块链中的数据可以是公共的和/或可以被加密并维持为私有。由智能合约使用/生成的临时数据由所提供的执行环境保存在存储器中,然后在识别出区块链所需的数据后被删除。
链码可包括具有附加特征的智能合约的代码解释。如本文所述,链码可以是部署在计算网络上的程序代码,在该计算网络中它在共识过程期间由链验证器一起执行和生效。链码接收散列并从区块链中取得与通过使用先前存储的特征提取器所创建的数据模板相关联的散列。如果散列标识符的散列和从所存储的标识符模板数据中创建的散列匹配,则链码将授权密钥发送到所请求的服务。链码可写入与加密细节相关联的区块链数据。
图2B示出了根据示例实施例的区块链的节点之间的传统区块链背书过程250的示例。参考图2B,过程250可包括由应用程序客户端节点260发送给背书对等节点281的交易提议291。背书对等体281可验证客户端签名并执行链码功能以发起交易。输出可包括链码结果,在链码(读取集)中读取的一组密钥/值版本,以及被写入链码(写入集)的一组密钥/值。如果交易提议被批准,则提议响应292连同背书签名被一起发送回客户端260。在该传统示例中,背书对等体281可用背书对等体的公钥对提议响应292进行签名。
客户端260将背书组装到交易有效载荷293中,并将其广播到排序服务节点284。然后,排序服务节点284将所排序的交易作为区块递送到信道上的所有对等体281-283。在提交到区块链之前,每个对等体281-283可使该交易生效。例如,对等体可检查背书策略以确保指定对等体的正确分配(allotment)已经对结果进行了签名并且针对交易有效载荷293认证了签名。这里,可揭示背书策略和背书响应,因为背书者节点是已知的,并且其公钥也是已知的。
再次参考图2B,客户端节点260通过构造并向作为背书者的对等节点281发送请求来发起交易291。客户端260可包括利用支持的软件开发工具包(SDK)的应用程序,其利用可用的API来生成交易提议。该提议是调用链码功能的请求,使得数据可被读取和/或写入账本(即,为资产写入新的密钥值对)。SDK可用作填充程序(skim)以将交易提议打包成适当的体系结构格式(例如,远程过程调用(RPC)上的协议缓冲区)并且获取客户端的加密证书以产生用于交易提议的唯一签名。
作为响应,背书对等节点281可验证:(a)交易提议已良好形成,(b)过去尚未递交交易(重放-攻击保护),(c)签名是有效的,以及(d)递交者(在该示例中为客户端260)被适当授权以在该信道上执行所提议的操作。背书对等节点281可将交易提议输入作为被调用的链码功能的参数。然后针对当前状态数据库执行链码以产生包括响应值、读取集和写入集的交易结果。然而,此时没有对账本进行更新。在292中,可将该组值与背书对等节点281的可追溯盲环签名一起作为提议响应292传递回客户端260的SDK,该客户端260解析有效载荷以供应用程序使用。
作为响应,客户端260的应用程序检查/验证背书对等体签名并比较提议响应以确定提议响应是否相同。如果链码仅查询账本,则应用程序将检查查询响应并且通常不将该交易递交给排序节点服务284。如果客户端应用程序打算将该交易递交给排序节点服务284以更新账本,则应用程序确定在递交之前指定的背书策略是否已被满足(即,交易所需的所有对等节点是否都背书该交易)。这里,客户端可仅包括交易的多方中的一方。在该情况下,每个客户端可拥有自己的背书节点,并且每个背书节点都需要背书该交易。该体系结构使得即使应用程序选择不检查响应或以其它方式转发未经背书的交易,该背书策略仍将由对等体强制执行并在提交生效阶段维持。
在成功检查之后,在步骤293中,客户端260将所需信息组装到交易消息提议中,并使用交易消息将它广播到排序节点284。这里,客户端260可提取交易数据,使用监管者的公钥对背书进行加密,构建零知识证明等。交易消息可包含交易提议数据,该交易提议数据包括读取/写入集、交易ID、链码ID、零知识证明、加密的背书结果以及监管者的公钥。排序节点284不需要检查交易的整个内容以便执行其操作,而是排序节点284可简单地从网络中的所有信道接收交易,按时间顺序按信道排序,并按照信道创建交易区块。
交易区块从排序节点284传递到信道上的所有对等节点281-283。使区块内的交易294生效以确保任何背书策略被满足并确保读取集变量的账本状态没有变化,因为读取集由交易执行生成。区块中的交易被标记为有效或无效。此外,在步骤295中,每个对等节点281-283将该区块附加到信道的链,并且对于每个有效交易,将写入集提交给当前状态数据库。发出事件,以通知客户端应用程序交易(调用)已被不可篡改地附加到链,以及通知交易是否已生效或被无效。
图3A示出了经许可的区块链网络300的示例,其特征为分布式、分散的对等体系结构。在该示例中,区块链用户302可向经许可的区块链304发起交易。在该示例中,交易可以是部署、调用、或查询,并且可通过利用SDK的客户端侧应用程序直接通过API等发布。网络可提供对监管者306(诸如审计者)的访问。区块链网络运营商308管理成员许可,诸如将监管者306登记为“审计者”,并将区块链用户302登记为“客户端”。审计者可仅限于查询账本,而客户端可被授权部署、调用和查询特定类型的链码。
区块链开发者310可编写链码和客户端侧应用程序。区块链开发者310可通过接口将链码直接部署到网络。为了在链码中包括来自传统数据源312的证书,开发者310可使用带外连接来访问数据。在该示例中,区块链用户302通过对等节点314连接到经许可的区块链304。在继续任何交易之前,对等节点314从证书机构(certificate authority)316取得用户的登记和交易证书,该证书机构管理用户角色和许可。在一些情况下,区块链用户必须拥有这些数字证书以便在经许可的区块链304上进行交易。同时,尝试使用链码的用户可被要求在传统数据源312上验证他们的证书。为了确认用户的授权,链码可通过传统处理平台318使用到该数据的带外连接。
图3B示出了经许可的区块链网络320的另一示例,其特征为分布式、分散的对等体系结构。在该示例中,区块链用户322可向经许可的区块链324递交交易。在该示例中,交易可以是部署、调用、或查询,并且可通过利用SDK的客户端侧应用程序直接通过API等发布。网络可提供对监管者326(诸如审计者)的访问。区块链网络运营商328管理成员许可,诸如将监管者326登记为“审计者”,并将区块链用户322登记为“客户端”。审计者可仅限于查询账本,而客户端可被授权部署、调用和查询特定类型的链码。
区块链开发者330编写链码和客户端侧应用程序。区块链开发者330可通过接口将链码直接部署到网络。为了在链码中包括来自传统数据源332的证书,开发者330可使用带外连接来访问数据。在该示例中,区块链用户322通过对等节点334连接到网络。在进行任何交易之前,对等节点334从证书机构336取得用户的登记和交易证书。在一些情况下,区块链用户必须拥有这些数字证书以便在经许可的区块链324上进行交易。同时,尝试使用链码的用户可被要求在传统数据源332上验证他们的证书。为了确认用户的授权,链码可通过传统处理平台338使用到该数据的带外连接。
图4A示出了根据示例实施例的用于背书的通信序列400。这里,由客户端节点410向背书者节点412提议交易420(也称为区块链存储请求)。背书者节点412可针对区块链的当前状态来模拟交易以确定交易是否有效,(用背书者节点412的公钥签名)背书交易,并向客户端节点410发送背书响应425。作为响应,客户端节点410可在430中针对背书生成零知识证明。零知识证明关于图4B来进一步描述。在440中,客户端节点410可将零知识证明数据对象与用于创建零知识证明数据对象的元素一起发送给排序节点418,该零知识证明数据对象可包括交易数据、加密的背书响应以及监管者的公钥。
在450中,排序节点418可将零知识证明和交易数据组装到数据区块中,并向提交节点414和416发送该数据区块,以用于将该数据区块存储在区块链上。在460中,每个提交节点可在460中验证零知识证明数据对象。验证过程的示例关于图4C来进一步描述。如果提交节点414和416能够验证零知识证明数据对象,则提交节点414和416可将数据区块存储在其区块链副本上。
图4B示出了在图4A的示例中由客户端节点410执行的证明生成过程430。在客户端从背书者接收到背书响应之后,客户端节点可基于背书者响应来重构背书策略。此外,在431中,客户端可从背书响应解析读取/写入集、交易ID和链码ID,并且设置u1=(读取/写入集,交易ID,链码ID)。在432中,客户端节点可使用监管者/审计者的公钥(u2)来对背书响应进行加密。客户端可设置u3=加密(u2,背书者响应,随机性)。在433中,客户端可使用监管者的密钥来对背书策略进行加密,并设置u4=加密(u2,背书策略,随机性)。在434中,客户端可使用u1、u2、u3、u4、背书响应、未加密的背书策略作为输入来运行证明者程序。该程序的输出是零知识证明。可在初始设置阶段从受信管理者(governor)/委员会提供证明者程序。再次参考图4A,当客户端410向背书者节点418发送零知识证明时,客户端410还可发送u1、u2和u3。
零知识证明可通过客户端节点执行证明者程序来生成,该证明者程序由区块链的受信管理者/委员会提供。监管者可以是有权审计区块链上的任何交易的一方。监管者拥有公钥-密钥对(public secret key pair)。公钥是区块链上所有参与者都知道的,并且用于对背书和背书策略进行加密。密钥仅由监管者知道,并且用于解密。同时,由客户端用来生成零知识证明数据对象的证明者程序是在客户端侧运行的一段代码,其包含用于构造零知识证明的算法。该算法的输入包括:1)标准超级账本架构背书响应,包括读取/写入集、交易ID、链码ID;2)监管者的公钥;3)背书响应;4)用于背书响应加密的随机性;5)加密的背书响应;6)背书策略;7)用于策略加密的随机性;以及8)加密的背书策略。证明者程序的输出是标准的zkSNARK证明数据对象。
当经由证明者程序构造的零知识证明可通过验证者程序来被验证为真时,客户端证明它对背书者响应和背书策略的知识。保证来自两个方面:首先,证明者和验证者程序是预先设计的,并由证明者和验证者双方批准,这样只有正确的知识才能被验证为真;第二,验证者程序仅接受由证明者程序生成的证明。客户端需要重构背书策略,并需要生成加密的背书策略、加密的背书响应、零知识证明、交易提议。客户端只需要在区块链设置期间存储监管者的公钥以及用于背书策略加密的随机性。
图4C示出了根据示例实施例的验证背书的零知识证明的过程460。例如,过程460可由图4A所示的提交节点414和416中的每一个执行。响应于从排序节点接收到区块,在461中,验证节点经由区块链应用程序编程接口(API)调用从链码数据读取被标示为u4的加密的背书策略。在462中,对于该区块中的每个交易,验证节点解析u1、u2、u3和零知识证明。此外,在463中,验证节点使用输入u1、u2、u3、u4和零知识证明来运行验证者程序。如果背书满足背书策略,则验证者程序的输出应为真,否则输出将为假。如果输出为真,则验证节点可将交易作为有效交易存储在区块链上。
像证明者的程序一样,验证者的程序是在生效对等体(validating peer)上运行的一段代码,其包含用于检查给定的零知识证明是否有效的算法。该算法的输入包括:1)标准超级账本架构背书数据,包括读取/写入集、交易ID、链码ID;2)监管者的公钥;3)加密的背书响应;4)加密的背书策略;5)zkSNARK证明数据对象。如果证明有效,则验证者的程序的输出为真,这意味着证明者确实拥有生成证明所需的知识;否则输出为假。
图5A示出了根据示例实施例的生成用于背书的零知识证明的方法510。例如,方法510可由尝试将交易存储在区块链上的客户端(例如,软件、系统等)执行。参考图5A,在511中,该方法可包括从区块链的一个或多个背书者节点接收对针对区块链的存储请求的一个或多个响应。响应可包括通常由区块链的背书者节点生成的背书响应。
然而,不是将背书响应收集到交易有效载荷中,而是在512中,该方法可包括提取在该一个或多个响应中包括的存储请求的交易数据,以及在513中,基于提取的交易数据和该一个或多个响应生成背书的零知识证明。此外,在514中,该方法可包括向区块链节点(例如,排序节点)发送零知识证明,以用于将零知识证明包括在散列链接的数据区块链中的数据区块内。这里,零知识证明隐藏了该一个或多个背书者节点的身份,并隐藏了区块链的背书策略。但是,零知识证明保留了验证该一个或多个响应满足背书策略的能力。
在一些实施例中,客户端节点可基于在背书者响应中包括的链码信息来取得背书者节点所遵循的加密的背书策略。同时,从背书者响应中提取的交易数据可包括从该一个或多个响应中识别出的由该一个或多个背书者节点生成的交易ID、链码ID以及一个或多个读取/写入集。客户端节点可使用监管者的公钥对背书者响应进行加密,该公钥在背书者节点之间共享。加密的背书者响应、加密的背书策略、监管者公钥和提取的交易数据可被输入到zkSNARK程序中,该程序生成背书的零知识证明数据对象。在一些实施例中,发送可进一步包括向区块链节点发送该一个或多个加密的响应和区块链监管者的公钥,以用于将该一个或多个加密的响应和区块链监管者的公钥包括在散列链接的数据区块链中的数据区块中。
图5B示出了根据示例实施例的验证用于背书的零知识证明的方法520。参考图5B,在521中,该方法可包括接收包括区块链存储请求的背书的零知识证明的消息,以用于将该零知识证明包括在区块链中的数据区块内。这里,可从排序节点接收该消息。在522中,该方法可包括经由对区块链的链码的应用程序编程接口(API)调用来读取加密的背书策略。
此外,在523中,该方法可包括基于加密的背书策略和零知识证明的多个属性来确定零知识证明是否有效。例如,该多个属性可包括以下中的一个或多个:加密的背书响应、区块链监管者的公钥和与区块链存储请求相关联的交易的交易数据。响应于确定零知识证明是有效的,在524中,该方法可包括将区块链存储请求存储在区块链上的数据区块的数据部分内。在此示例中,零知识证明隐藏了该一个或多个背书者节点的身份,并隐藏了区块链的背书策略。但是,零知识证明保留了验证该一个或多个响应满足背书策略的能力。
图6A示出了根据示例实施例的包括被配置为执行各种操作的物理基础设施610的示例系统600。参考图6A,物理基础设施610包括模块612和模块614。模块614包括区块链620和智能合约630(其可驻留在区块链620上),其可执行任何示例实施例中包括的(模块612中的)操作步骤608中的任何操作步骤。步骤/操作608可包括所描述或描绘的实施例中的一个或多个实施例,并且可表示从一个或多个智能合约630和/或区块链620写入或读取的输出或写入信息。物理基础设施610、模块612、以及模块614可包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块612和模块614可以是相同的模块。
图6B示出了根据示例实施例的被配置为执行各种操作的另一示例系统640。参考图6B,系统640包括模块612和模块614。模块614包括区块链620和智能合约630(其可驻留在区块链620上),其可执行任何示例实施例中包括的(模块612中的)操作步骤608中的任何操作步骤。步骤/操作608可包括所描述或描绘的实施例中的一个或多个实施例,并且可表示从一个或多个智能合约630和/或区块链620写入或读取的输出或写入信息。物理基础设施610、模块612、以及模块614可包括一个或多个计算机、服务器、处理器、存储器、和/或无线通信设备。此外,模块612和模块614可以是相同的模块。
图6C示出了根据示例实施例的被配置为利用缔约方之间的智能合约配置的示例系统以及被配置为在区块链上实施智能合约条款的中介服务器。参考图6C,配置650可表示由智能合约630驱动的通信会话,资产转移会话或过程或进程,该智能合约630明确地标识一个或多个用户设备652和/或656。智能合约执行中的执行、操作和结果可由服务器654管理。智能合约630的内容可要求由作为智能合约交易的参与者的实体652和656中的一个或多个进行数字签名。智能合约执行的结果可作为区块链交易被写入区块链620。智能合约630驻留在区块链620上,该区块链620可驻留在一个或多个计算机、服务器、处理器、存储器、和/或无线通信设备上。
图6D示出了根据示例实施例的包括区块链的系统660。参考图6D的示例,应用程序编程接口(API)网关662提供用于访问区块链逻辑(例如,智能合约630或其它链码)和数据(例如,分布式账本等)的公共接口。在该示例中,API网关662是用于通过将一个或多个实体652和656连接到区块链对等体(即,服务器654)来在区块链上执行交易(调用、查询等)的公共接口。这里,服务器654是一个区块链网络对等体组件,它持有世界状态的副本和分布式账本,允许客户端652和656查询有关世界状态的数据以及将交易递交到区块链网络中,在该区块链网络中,取决于智能合约630和背书策略,背书对等体将运行智能合约630。
以上实施例可以以硬件、以由处理器执行的计算机程序、以固件,或以上的组合来实现。计算机程序可体现在计算机可读介质上,诸如存储介质。例如,计算机程序可驻留在随机存取存储器(“RAM”)、闪存、只读存储器(“ROM”)、可擦除可编程只读存储器(“EPROM”)、电可擦除可编程只读存储器(“EEPROM”)、寄存器、硬盘、可移动磁盘、光盘只读存储器(“CD-ROM”),或本领域已知的任何其它形式的存储介质中。
示例性存储介质可耦接到处理器,以使得处理器可从存储介质读取信息和向存储介质写入信息。在替代方案中,存储介质可以是处理器的组成部分。处理器和存储介质可驻留在专用集成电路(“ASIC”)中。在替代方案中,处理器和存储介质可作为分立组件驻留。
图7A示出了根据示例实施例的将新区块添加到分布式账本720的过程700,图7B示出了根据示例实施例的用于区块链的新数据区块结构730的内容。参考图7A,客户端(未示出)可向区块链节点711、712和/或713递交交易。客户端可以是从任何来源接收的指令以在区块链722上制定活动。作为示例,客户端可以是代表请求者行动的应用程序,该请求者例如是针对区块链提出交易的设备、个人或实体。多个区块链对等体(例如,区块链节点711、712和713)可维持区块链网络的状态以及分布式账本720的副本。在区块链网络中可存在不同类型的区块链节点/对等体,包括背书对等体和提交对等体,背书对等体模拟和背书由客户端提议的交易,提交对等体验证背书,使交易有效,并将交易提交到分布式账本720。在此示例中,区块链节点711、712和713可执行背书者节点、提交者节点或二者的角色。
分布式账本720包括以区块为单位存储不可篡改的顺序记录的区块链,以及维持区块链722的当前状态的状态数据库724(当前世界状态)。每个信道可存在一个分布式账本720,并且每个对等体针对它们是其成员的每个信道,维持它本身的分布式账本720的副本。区块链722是交易日志,被构造为散列链接的区块,其中每个区块包含具有N个交易的序列。区块可包括各种组成部分,诸如图7B所示。可通过在当前区块的区块头中添加前一区块头的散列来生成区块的链接(由图7A中的箭头所示)。以这种方式,区块链722上的所有交易被排序,并以密码链接在一起,以防止在不破坏散列链接的情况下篡改区块链数据。此外,由于该链接,区块链722中的最新区块表示在其之前的每个交易。区块链722可存储在对等文件系统(本地或附加存储)上,该对等文件系统支持仅附加的区块链工作负载。
区块链722的当前状态和分布式账本722可存储在状态数据库724中。这里,当前状态数据表示区块链722的链交易日志中曾经包括的所有密钥的最新值。链码调用针对状态数据库724中的当前状态执行交易。为了使这些链码交互非常高效,所有密钥的最新值都存储在状态数据库724中。状态数据库724可将索引视图包括到区块链722的交易日志中,因此状态数据库724可随时从链中重新生成。状态数据库724可在交易被接受之前在对等体启动时自动恢复(或在需要时生成)。
背书节点从客户端接收交易,并基于模拟结果背书该交易。背书节点持有模拟交易提议的智能合约。当背书节点背书交易时,背书节点创建交易背书,该交易背书是来自背书节点的对客户端应用程序的签名响应,其指示了模拟交易的背书。背书交易的方法取决于可在链码中指定的背书策略。背书策略的一个示例是“大多数背书对等体必须背书交易”。不同的信道可有不同的背书策略。客户端应用程序向排序服务710转发所背书的交易。
排序服务710接受所背书的交易,将它们排序为区块,并将该区块递送给提交对等体。例如,当已经达到交易的阈值,计时器超时或其它条件时,排序服务710可发起新区块。在图7A的示例中,区块链节点712是提交对等体,其已接收新数据区块730以用于将新数据区块存储在区块链722上。区块链中的第一个区块可被称为创世区块,其包括关于区块链、其成员、存储在其中的数据等的信息。
排序服务710可由排序者集群组成。排序服务710不处理交易、智能合约、或维护共享账本。而是,排序服务710可接受所背书的交易并指定将那些交易提交给分布式账本720的顺序。区块链网络的体系结构可被设计为使得“排序”的特定实现(例如,Solo、Kafka、BFT等)成为可插拔组件。
交易以一致的顺序被写入分布式账本720。交易的顺序被制定为确保对状态数据库724的更新在它们被提交给网络时是有效的。与在其中通过解决密码难题或挖掘进行排序的加密货币区块链系统(例如,比特币等)不同,在本示例中,分布式账本720的参与者可选择最适合该网络的排序机制。
当排序服务710初始化新数据区块730时,可向提交对等体(例如,区块链节点711、712和713)广播新数据区块730。作为响应,每个提交对等体通过检查以确保读取集和写入集仍与状态数据库724中的当前世界状态匹配,来使新数据区块730中的交易生效。具体地,提交对等体可确定在背书者模拟交易时存在的读取数据是否与状态数据库724中的当前世界状态相同。当提交对等体使交易生效时,将交易写入分布式账本720上的区块链722,并且状态数据库724使用来自读写集的写入数据来更新。如果交易失败,即,如果提交对等体发现读写集与状态数据库724中的当前世界状态不匹配,则排序为区块的交易仍将被包括在该区块中,但它将被标记为无效,并且状态数据库724将不被更新。
参考图7B,存储在分布式账本720的区块链722上的新数据区块730(也称为数据区块)可包括多个数据段,诸如区块头740、区块数据750和区块元数据760。应当理解,所描绘的各种区块及其内容(例如,图7B所示的新数据区块730及其内容)仅是示例,并不旨在限制示例实施例的范围。新数据区块730可在区块数据750内存储N个交易(例如,1、10、100、500、1000、2000、3000等)的交易信息。新数据区块730还可包括:在区块头740内的到前一区块(例如,在图7A中的区块链722上)的链接。特别地,区块头740可包括前一区块头的散列。区块头740还可包括唯一区块编号,新数据区块730的区块数据750的散列等。新数据区块730的区块编号可以是唯一的,并且可以以各种顺序分配,例如从零开始的递增/相继顺序。
区块数据750可存储记录在新数据区块730内的每个交易的交易信息。例如,交易数据可包括以下中的一个或多个:交易类型,版本,时间戳,分布式账本720的信道ID,交易ID,时期(epoch),有效载荷可见性,链码路径(部署tx),链码名称,链码版本,输入(链码和功能),客户端(创建者)标识(诸如公钥和证书),客户签名,背书者的身份,背书者签名,提议的散列,链码事件,响应状态,名称空间,读取集(交易所读取的密钥和版本的列表等),写入集(密钥和值的列表等),开始密钥,结束密钥,密钥列表,默克尔树查询摘要(Merkeltree query summary)等。可针对N个交易中的每一个存储交易数据。
传统背书数据通常存储在区块数据750中,并且包括背书者的身份(证书、公钥)和背书者的签名的列表。在示例实施例中,区块链上的区块的数据部分750内的交易的背书数据将是不同的。特别地,零知识证明信息752可被存储在区块数据750中,区块数据750可包括零知识证明数据对象、加密的背书响应、监管者的公钥等。此外,尽管在图7B中,新数据752被描绘在区块数据750中,但是它也可位于区块头740或区块元数据760中。
区块元数据760可存储元数据的多个字段(例如,作为字节阵列等)。元数据字段可包括在区块创建时的签名、对最后一个配置区块的引用、识别区块内的有效交易和无效交易的交易过滤器、对区块进行排序的排序服务的所持续的最后偏移等。签名、最后一个配置区块、和排序者元数据可由排序服务710添加。同时,区块的提交者(例如区块链节点712)可基于背书策略、读取/写入集的验证等来添加有效性/无效性信息。交易过滤器可包括大小等于区块数据750中的交易数量的字节阵列和标识交易是否有效/无效的验证码。
图7C示出了根据本文所述实施例的用于数字内容的区块链770的实施例。数字内容可包括一个或多个文件和相关联的信息。文件可包括媒体、图像、视频、音频、文本、链接、图形、动画、网页、文档、或其它形式的数字内容。区块链的不可篡改的仅附加的方面可作为保护数字内容的完整性、有效性和真实性的保障,使其适用于应用可采性规则的法律程序或考虑证据或以其它方式使数字信息的展示和使用受关注的其它设定。在这种情况下,数字内容可被称为数字证据。
区块链可以以各种方式形成。在一个实施例中,数字内容可被包括在区块链自身中并且可从区块链自身访问。例如,区块链的每个区块可沿着相关联的数字内容存储引用信息的散列值(例如,头、值等)。然后散列值和相关联的数字内容可被加密在一起。因此,可通过解密区块链中的每个区块来访问每个区块的数字内容,并且每个区块的散列值可被用作引用前一区块的基础。这可被描述为如下:
在一个实施例中,数字内容可不被包括在区块链中。例如,区块链可存储每个区块的内容的加密散列,而没有任何数字内容。数字内容可与原始文件的散列值相关联地存储在另一存储区域或存储器地址中。其它存储区域可以是用于存储区块链的同一存储设备,或者可以是不同的存储区域,或者甚至是单独的关系数据库。可通过获得或查询感兴趣的区块的散列值,以及然后在存储区域中查找具有与实际数字内容相对应地存储的值的散列值,来引用或访问每个区块的数字内容。该操作例如可由数据库关守(gatekeeper)执行。这可被描述为如下:
在图7C的示例实施例中,区块链770包括在有序序列中以密码链接的多个区块7781、7782、……、778N,其中N≥1。用于链接区块7781、7782、……、778N的加密术可以是多个有密钥散列函数或无密钥散列函数中的任一个。在一个实施例中,区块7781、7782、……、778N服从散列函数,该散列函数从基于区块中的信息的输入中产生n位字母数字输出(其中n是256或另一个数字)。此类散列函数的示例包括但不限于:SHA型(SHA代表安全散列算法)算法,Merkle-Damgard算法,HAIFA算法,默克尔树(Merkle-tree)算法,基于随机数(nonce-based)的算法,和非抗冲突PRF算法。在另一实施例中,可通过与散列函数不同的函数来以密码链接区块7781、7782、……、778N。为了说明的目的,参考诸如SHA-2的散列函数进行以下描述。
区块链中的每个区块7781、7782、……、778N包括头、文件版本、和值。由于区块链中的散列法(hashing),每个区块的头和值都不同。在一个实施例中,值可被包括在头中。如下面更详细描述的,文件的版本可以是原始文件或原始文件的不同版本。
区块链中的第一个区块7781被称为创世区块,并且包括头7721、原始文件7741和初始值7761。用于创世区块以及实际上在所有后续区块中的散列方案可变化。例如,第一个区块7781中的所有信息可被一次散列化在一起,或者可分别对第一个区块7781中的每个信息或一部分信息进行散列化,然后可执行对分别散列化的部分的散列化。
头7721可包括一个或多个初始参数,该初始参数例如可包括:版本号,时间戳,随机数,根信息,难度级别,共识协议,持续时间,媒体格式,来源,描述性关键字,和/或与原始文件7741和/或区块链相关联的其它信息。头7721可自动地(例如,通过区块链网络管理软件)生成,或者可以由区块链参与者手动生成。与区块链中其它区块7782至778N中的头不同,创世区块中的头7721并不引用前一区块,仅仅是因为不存在前一区块。
创世区块中的原始文件7741可以是例如由设备采集的数据,在将该数据包括在区块链中之前对其进行了处理或不进行处理。通过系统的接口从设备、媒体源或节点接收原始文件7741。原始文件7741与元数据相关联,元数据例如可由用户、设备、和/或系统处理器手动或自动生成。元数据可以与原始文件7741相关联地包括在第一个区块7781中。
创世区块中的值7761是基于原始文件7741的一个或多个唯一属性生成的初始值。在一个实施例中,该一个或多个唯一属性可包括:原始文件7741的散列值,原始文件7741的元数据,以及与该文件相关联的其它信息。在一种实施方式中,初始值7761可基于以下唯一属性:
1)原始文件的SHA-2计算的散列值
2)起源设备ID
3)原始文件的开始时间戳
4)原始文件的初始存储位置
5)用于当前控制原始文件和相关联元数据的软件的区块链网络成员ID。
区块链中的其它区块7782至778N也具有头、文件和值。然而,与第一个区块7721不同,其它区块中的头7722至772N中的每一个头包括紧接的前一区块的散列值。该紧接的前一区块的散列值可只是前一区块的头的散列,也可以是整个前一区块的散列值。通过在剩余的每个区块中包括前一区块的散列值,追溯可逐个区块地从第N个区块返回到创世区块(以及相关联的原始文件)来执行,如箭头780所示,以建立可审计且不可篡改的监管链。
其它区块中的头7722至772N中的每一个还可包括其它信息,例如版本号、时间戳、随机数、根信息、难度级别、共识协议、和/或与对应文件和/或一般的区块链相关联的其它参数或信息。
例如取决于所执行的处理类型,其它区块中的文件7742至774N可等于原始文件,或者可以是创世区块中原始文件的修改版本。所执行的处理类型可能因区块而异。该处理可涉及例如在前一区块中对文件的任何修改,诸如编辑信息或以其它方式改变文件的内容,从文件中取走信息,或向文件添加或附加信息。
附加地或可替代地,该处理可涉及仅从前一区块复制文件,改变文件的存储位置,从一个或多个先前区块分析文件,将文件从一个存储或存储器位置移动到另一存储或存储器位置,或者关于区块链的文件和/或其相关联的元数据执行动作。涉及分析文件的处理可包括例如附加、包括或以其它方式关联与文件相关联的各种分析、统计或其它信息。
其它区块中的其它区块7762至776N中的每个区块的值是唯一值,并且由于所执行的处理而全都不同。例如,任何一个区块中的值都对应于前一区块中值的更新版本。更新被反映在分配该值的区块的散列中。因此,区块的值提供了对在区块中执行了哪些处理的指示,并且还允许通过区块链追溯回到原始文件。这种追踪确认了整个区块链中文件的监管链。
例如,考虑如下情况:为了保护文件中所示的人员的身份而对前一区块中的文件的一部分进行编辑,遮挡或打上马赛克的情况。在这种情况下,包括已编辑文件的区块将包括与已编辑文件相关联的元数据,例如,执行编辑的方式、执行编辑的人员、进行编辑的时间戳等。元数据可被散列化以形成值。因为该区块的元数据与被散列化以形成前一区块中的值的信息不同,所以这些值互不相同,并且在解密时可被恢复。
在一个实施例中,当以下中的任何一个或多个发生时,前一区块的值(例如,所计算的新的散列值)可被更新以形成当前区块的值。在该示例实施例中,可通过对以下所述的信息中的全部或部分信息进行散列化来计算新的散列值。
a)如果文件已经以任何方式被处理(例如,如果文件已被编辑、复制、更改、访问,或已采取其它措施),则新的SHA-2计算的散列值
b)文件的新存储位置
c)与文件相关联的识别的新元数据
d)将文件的访问权或控制权从一个区块链参与者转移到另一个区块链参与者。
图7D示出了根据一个实施例的可表示区块链790中的区块的结构的区块的实施例。区块(区块i)包括头772i、文件774i、和值776i。
头772i包括前一区块(区块i-1)的散列值和附加引用信息,该附加引用信息例如可以是本文讨论的任何类型的信息(例如,头信息包括引用、特性、参数等)。当然,除创世区块外,所有区块都引用前一区块的散列。前一区块的散列值可以仅是前一区块中头的散列,或者是前一区块中所有或部分信息的散列,包括文件和元数据。
文件774i包括多个数据,例如依次是数据1、数据2、……、数据N。数据被标记有元数据元数据1、元数据2、……、元数据N,这些元数据描述了与数据相关联的内容和/或特性。例如,每个数据的元数据可包括指示数据的时间戳,处理数据的信息,指示人员或数据中描述的其它内容的关键字,和/或有助于作为整体建立文件的有效性和内容的其它特征,以及特别地,例如,如以下结合实施例所描述的,其使用数字证据。除元数据外,每个数据可被标记有对前一数据的引用REF 1、REF 2、…、REF N,以防止篡改,文件中的空白,以及通过文件的顺序引用。
在元数据被分配给数据(例如,通过智能合约)之后,不能在不改变散列的情况下改变元数据,其可以针对无效性容易地识别。因此,元数据创建信息的数据日志,该数据日志可被访问以供区块链中的参与者使用。
值776i是散列值或基于先前讨论的任何类型的信息计算的其它值。例如,对于任何给定区块(区块i),该区块的值可被更新以反映对该区块执行的处理,例如,新的散列值、新的存储位置、相关联文件的新元数据、控制权或访问权的转移、标识符或将要添加的其它动作或信息。尽管示出了每个区块中的值与文件和头的数据的元数据分离,但是在另一实施例中,该值可部分或全部基于该元数据。
在形成区块链770之后,在任何时间点,可通过向区块链查询跨区块的值的交易历史来获得文件的不可篡改的监管链。该查询或追踪过程可从解密最近包括的区块(例如,最后一个(第N个)区块)的值开始,然后继续解密其它区块的值,直到到达创世区块为止,并且恢复原始文件。解密还可涉及在每个区块处解密头和文件以及相关联的元数据。
基于在每个区块中发生的加密的类型来执行解密。这可涉及私钥、公钥、或公钥-私钥对的使用。例如,当使用非对称加密时,网络中的区块链参与者或处理器可使用预定算法来生成公钥和私钥对。公钥和私钥通过某种数学关系相互关联。可公开分布公钥,以用作接收来自其它用户的消息的地址,例如,IP地址或家庭地址。私钥是保密的,并用于对发送给其它区块链参与者的消息进行数字签名。签名被包括在消息中,以便接收者可以使用发送者的公钥进行验证。这样,接收者可确定只有发送者可以发送此消息。
生成密钥对可类似于在区块链上创建账户,但是不必实际在任何地方进行注册。此外,在区块链上执行的每个交易由发送者使用其私钥进行数字签名。该签名确保只有账户所有者可追踪和处理(如果在智能合约确定的许可范围内)区块链中的文件。
图8示出了示例系统800,该示例系统800支持本文描述和/或描绘的一个或多个示例实施例。系统800包括计算机系统/服务器802,其可与许多其它通用或专用计算系统环境或配置一起操作。可适于与计算机系统/服务器802一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统、以及包括任何上述系统或设备的分布式云计算环境等。
计算机系统/服务器802可在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述。通常,程序模块可包括执行特定任务或实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器802可在分布式云计算环境中实践,在分布式云计算环境中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可位于包括存储器存储设备的本地和远程计算机系统存储介质二者中。
如图8所示,云计算节点800中的计算机系统/服务器802以通用计算设备的形式表现。计算机系统/服务器802的组件可以包括但不限于:一个或者多个处理器或者处理单元804,系统存储器806,连接不同系统组件(包括系统存储器806和处理单元804)的总线。
总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器802典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器802访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。在一个实施例中,系统存储器806实现其它附图的流程图。系统存储器806可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)810和/或高速缓存存储器812。计算机系统/服务器802可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统814可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线相连。存储器806可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块818的程序/实用工具816,可以存储在例如存储器806中,这样的程序模块818包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块818通常执行本发明所描述的实施例中的功能和/或方法。
如所属领域的技术人员将了解的,本申请的各方面可体现为系统、方法、或计算机程序产品。因此,本申请的各方面可采用完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或者组合软件和硬件方面的实施例的形式,这些实施例在此通常可被称为“电路”、“模块”或“系统”。此处,本申请的各方面可采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有体现在其中的计算机可读程序代码。
计算机系统/服务器802也可以与一个或多个外部设备820(例如键盘、指向设备、显示器822等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器802交互的设备通信,和/或与使得该计算机系统/服务器802能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口824进行。并且,计算机系统/服务器802还可以通过网络适配器826与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器826通过总线与计算机系统/服务器802的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器802使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
尽管在附图中示出了系统、方法和非暂态计算机可读介质中的至少一个的示例性实施例,并且在前面的详细描述中对其进行了描述,但是应该理解,本申请不限于所公开的实施例,而是能够进行如下权利要求所述和定义的许多重排、修改和替换。例如,各种附图中的系统的能力可由在此描述的一个或多个模块或组件来执行或以分布式体系结构来执行,并且可包括发射机、接收机或二者的对。例如,由各个模块执行的全部或部分功能可由这些模块中的一个或多个执行。此外,在此描述的功能可在不同时间并且与模块或组件内部或外部的各种事件相关地执行。此外,在各个模块之间发送的信息可经由以下中的至少一个在模块之间发送:数据网络、因特网、语音网络、因特网协议网络、无线设备、有线设备和/或多个协议。此外,可直接和/或经由一个或多个其它模块发送或接收由任何模块发送或接收的消息。
本领域技术人员将理解,“系统”可被体现为个人计算机、服务器、控制台、个人数字助理(PDA)、蜂窝电话、平板计算设备、智能手机或任何其它合适的计算设备、或设备的组合。将上述功能呈现为由“系统”执行并不旨在以任何方式限制本申请的范围,而是旨在提供许多实施例的一个示例。实际上,在此公开的方法、系统和装置可以以与计算技术一致的本地化和分布式形式实现。
应当注意,本说明书中描述的一些系统特征已经作为模块呈现,以便更具体地强调它们的实现独立性。例如,模块可被实现为硬件电路,该硬件电路包括:定制的超大规模集成(VLSI)电路或门阵列,诸如逻辑芯片的现成半导体、晶体管,或其它分立组件。模块还可在可编程硬件设备中实现,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等。
模块还可至少部分地以软件实现,以由各种类型的处理器执行。所识别的可执行代码单元可例如包括计算机指令的一个或多个物理或逻辑块,其可例如被组织为对象、过程或功能。然而,所识别的模块的可执行文件不需要物理地位于一处,而是可包括存储在不同位置的不同指令,当该指令在逻辑上连接在一起时,该指令包括模块并实现针对模块的所述目的。此外,模块可被存储在计算机可读介质上,该计算机可读介质可以是例如硬盘驱动器、闪存设备、随机存取存储器(RAM)、磁带,或用于存储数据的任何其它此类介质。
实际上,可执行代码的模块可以是单个指令或多个指令,并且甚至可以分布在多个不同的代码段上,分布在不同的程序中,以及跨多个存储器设备分布。类似地,操作数据可在此在模块内被识别和示出,并且可以以任何合适的形式体现并且被组织在任何合适类型的数据结构内。操作数据可作为单个数据集收集,或者可分布在不同位置上(包括分布在不同存储设备上),并且可以至少部分地仅作为系统或网络上的电子信号存在。
容易理解的是,如在本文附图中一般描述和说明的,本申请的组件可以以各种不同的配置来布置和设计。因此,实施例的详细描述不旨在限制所要求保护的本申请的范围,而仅仅代表本申请的所选实施例。
本领域普通技术人员将容易理解,可以以不同顺序的步骤和/或使用与所公开的配置不同的配置中的硬件元件来实践上述内容。因此,尽管已经基于这些优选实施例描述了本申请,但是对于本领域技术人员来说显而易见的是,某些修改、变化和替代构造将是显而易见的。
虽然已经描述了本申请的优选实施例,但是应该理解,所描述的实施例仅是说明性的,并且当用所附权利要求的等同物和修改(例如,协议、硬件设备、软件平台等)的整个范围来考虑时,本申请的范围仅由所附权利要求限定。
Claims (18)
1.一种计算系统,包括:
网络接口,其被配置为接收区块链交易的背书响应,所述区块链交易是用区块链的背书者节点的公钥签名的;以及
处理器,其被配置为,
基于所述区块链交易的交易数据和所述背书响应来生成背书的零知识证明,
产生交易提议,所述交易提议包括所述零知识证明,其中所述零知识证明代替所述交易提议中的原始背书,以及
向排序服务发送带有所述零知识证明的所述交易提议,以将所述零知识证明包括在散列链接的数据区块链中的数据区块内;
其中,所述处理器进一步被配置为取得由所述背书者节点遵循的加密背书策略,并基于在从所述背书者节点接收的所述背书响应中包括的数据重构所述加密背书策略。
2.根据权利要求1所述的计算系统,其中,所述零知识证明隐藏所述背书者节点的身份,并且隐藏所述区块链的背书策略。
3.根据权利要求2所述的计算系统,其中,所述零知识证明保留了验证所述背书响应满足所述背书策略的能力。
4.根据权利要求1所述的计算系统,其中,所述交易数据包括由所述处理器从所述背书响应中识别出的由所述背书者节点生成的交易ID、链码ID以及一个或多个读取/写入集。
5.根据权利要求1所述的计算系统,其中,所述处理器还被配置为用区块链监管者的公钥对所述背书响应进行加密,以及基于所述加密的背书响应来生成所述零知识证明。
6.根据权利要求5所述的计算系统,其中,所述处理器还被配置为向区块链节点发送所述加密的背书响应和所述区块链监管者的所述公钥,以用于将所述加密的背书响应和所述区块链监管者的所述公钥包括在所述散列链接的数据区块链中的所述数据区块中。
7.根据权利要求1所述的计算系统,其中,所述处理器基于所述加密背书策略来生成所述零知识证明。
8.一种客户端节点的方法,包括:
接收区块链交易的背书响应,所述区块链交易是用区块链的背书者节点的公钥签名的;
基于所述区块链交易的交易数据和所述背书响应,生成背书的零知识证明;
产生交易提议,所述交易提议包括所述零知识证明,其中所述零知识证明代替所述交易提议中的原始背书;以及
向排序服务发送带有所述零知识证明的所述交易提议,以将所述零知识证明包括在散列链接的数据区块链中的数据区块内;
其中,取得由所述背书者节点遵循的加密背书策略,并基于在从所述背书者节点接收的所述背书响应中包括的数据重构所述加密背书策略。
9.根据权利要求8所述的方法,其中,所述零知识证明隐藏所述背书者节点的身份,并且隐藏所述区块链的背书策略。
10.根据权利要求9所述的方法,其中,所述零知识证明保留了验证所述背书响应满足所述背书策略的能力。
11.根据权利要求8所述的方法,其中,所述交易数据包括从所述背书响应中识别出的由所述背书者节点生成的交易ID、链码ID以及一个或多个读取/写入集。
12.根据权利要求8所述的方法,还包括:用区块链监管者的公钥对所述背书响应进行加密,以及基于所述加密的背书响应来生成所述零知识证明。
13.根据权利要求12所述的方法,其中,所述发送还包括:向区块链节点发送所述加密的背书响应和所述区块链监管者的所述公钥,以用于将所述加密的背书响应和所述区块链监管者的所述公钥包括在所述散列链接的数据区块链中的所述数据区块中。
14.根据权利要求8所述的方法,其中,所述生成还包括:基于所述加密背书策略来生成所述零知识证明。
15.一种提交节点的方法,包括:
接收包括区块链存储请求的背书的零知识证明的消息,其中所述零知识证明代替交易提议中的原始背书;
通过对区块链的链码的应用程序编程接口API调用来读取加密背书策略;
基于所述加密背书策略和所述零知识证明的多个属性,确定所述零知识证明是否有效;以及
响应于确定所述零知识证明有效,将所述区块链存储请求存储在所述区块链上的数据区块的数据部分内,
其中,由客户端节点取得由背书者节点遵循的加密背书策略,并基于在从所述背书者节点接收的背书响应中包括的数据重构所述加密背书策略。
16.根据权利要求15所述的方法,其中,所述多个属性包括以下中的一个或多个:加密的背书响应,区块链监管者的公钥,以及与所述区块链存储请求相关联的交易的交易数据。
17.根据权利要求15所述的方法,其中,所述零知识证明隐藏所述背书者节点的身份,并且隐藏所述区块链的背书策略。
18.根据权利要求17所述的方法,其中,所述零知识证明保留了验证背书响应满足所述背书策略的能力。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/375,971 US11323243B2 (en) | 2019-04-05 | 2019-04-05 | Zero-knowledge proof for blockchain endorsement |
US16/375971 | 2019-04-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111800268A CN111800268A (zh) | 2020-10-20 |
CN111800268B true CN111800268B (zh) | 2023-10-31 |
Family
ID=72661673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010257713.1A Active CN111800268B (zh) | 2019-04-05 | 2020-04-03 | 用于区块链背书的零知识证明 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11323243B2 (zh) |
CN (1) | CN111800268B (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11080403B1 (en) * | 2018-12-19 | 2021-08-03 | Hewlett-Packard Development Company, L.P. | Securely constructing a trusted virtual environment |
US11368307B1 (en) * | 2019-05-15 | 2022-06-21 | Equinix, Inc. | Tamper-resistant, multiparty logging and log authenticity verification |
EP3754899B1 (en) * | 2019-06-20 | 2022-03-02 | Telefónica Iot & Big Data Tech, S.A. | Method and system for inter-dlt networks trust enhancement |
FR3099017B1 (fr) * | 2019-07-16 | 2021-08-06 | Idemia Identity & Security France | Procédé de vérification d’une transaction dans une base de données de type chaîne de blocs |
US20210051019A1 (en) * | 2019-08-13 | 2021-02-18 | Realtime Applications, Inc. | Blockchain communication architecture |
SG11202013145YA (en) * | 2020-02-03 | 2021-01-28 | Alipay Hangzhou Inf Tech Co Ltd | Blockchain-based trustable guarantees |
CN111417945B (zh) * | 2020-02-03 | 2022-06-17 | 支付宝(杭州)信息技术有限公司 | 基于区块链的可信保函 |
US11514439B2 (en) * | 2020-02-26 | 2022-11-29 | Nice Ltd. | System and method using zero knowledge proofs for alert sharing |
CN114513317A (zh) * | 2020-10-27 | 2022-05-17 | 香港城市大学深圳研究院 | 一种抗分布式拒绝服务攻击方法、系统、设备及存储介质 |
US11657040B2 (en) * | 2020-10-30 | 2023-05-23 | Xilinx, Inc. | Blockchain machine network acceleration engine |
CN114499869A (zh) * | 2020-11-13 | 2022-05-13 | 顺丰科技有限公司 | 基于区块链的资源跨链交换方法、装置和计算机设备 |
CN112564919A (zh) * | 2020-12-04 | 2021-03-26 | 广东投盟科技有限公司 | 一种身份认证方法、设备及计算机可读存储介质 |
CN112651742B (zh) * | 2020-12-14 | 2022-11-25 | 山东大学 | 一种可监管的分布式机密交易系统及方法 |
CN113014390A (zh) * | 2020-12-22 | 2021-06-22 | 北京航空航天大学 | 一种基于零知识证明的加密区块链设计方法 |
CN112765268B (zh) * | 2020-12-31 | 2022-11-04 | 杭州趣链科技有限公司 | 基于区块链的数据隐私保护方法、装置及设备 |
CN112861174A (zh) * | 2021-01-28 | 2021-05-28 | 中山大学深圳研究院 | 一种基于非对称加密形式的Fabric私人交易方法 |
US11405364B1 (en) * | 2021-03-04 | 2022-08-02 | International Business Machines Corporation | Privacy-preserving endorsements in blockchain transactions |
CN113177225B (zh) * | 2021-03-16 | 2022-03-18 | 深圳市名竹科技有限公司 | 基于区块链的数据存储证明方法、装置、设备和存储介质 |
CN115115361A (zh) * | 2021-03-19 | 2022-09-27 | 富士通株式会社 | 用于处理区块链交易数据的方法和设备及存储介质 |
CN113411373B (zh) * | 2021-04-26 | 2023-07-25 | 艾普工华科技(武汉)有限公司 | 一种交易数据存储方法、追踪溯源方法及区块链网络 |
CN113347164B (zh) * | 2021-05-24 | 2022-11-04 | 湖南大学 | 基于区块链的分布式共识系统及方法、设备、存储介质 |
CN113793146A (zh) * | 2021-08-02 | 2021-12-14 | 杭州复杂美科技有限公司 | 一种平行链同步交易的验证方法、设备及储存介质 |
CN114257429B (zh) * | 2021-12-07 | 2024-01-30 | 中信银行股份有限公司 | 一种基于联盟链的聚合交易验签存证方法及系统 |
CN114239025A (zh) * | 2021-12-20 | 2022-03-25 | 深圳前海微众银行股份有限公司 | 基于区块链的数据处理方法及设备 |
CN114553437B (zh) * | 2022-03-02 | 2023-12-05 | 安徽师范大学 | 基于医疗区块链的授权验证方法 |
CN114615280B (zh) * | 2022-03-24 | 2023-02-03 | 国网河南省电力公司电力科学研究院 | 基于匿名凭证的电力区块链隐私保护方法及系统 |
US20230327890A1 (en) * | 2022-04-06 | 2023-10-12 | Western Digital Technologies, Inc. | Hiding Proof-of-Space in Blockchain Systems |
CN117614634A (zh) * | 2024-01-19 | 2024-02-27 | 成都信息工程大学 | 基于可追踪环签名的联盟链跨链身份认证方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108376368A (zh) * | 2018-03-07 | 2018-08-07 | 物数(上海)信息科技有限公司 | 背书策略确定方法、装置、电子设备、存储介质 |
WO2018205729A1 (zh) * | 2017-05-11 | 2018-11-15 | 上海点融信息科技有限责任公司 | 基于零知识证明的区块链数据处理 |
CN109257427A (zh) * | 2018-09-26 | 2019-01-22 | 网宿科技股份有限公司 | 一种基于区块链的业务处理方法及系统 |
CN109559224A (zh) * | 2018-10-26 | 2019-04-02 | 阿里巴巴集团控股有限公司 | 征信评估方法及装置、电子设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7490070B2 (en) * | 2004-06-10 | 2009-02-10 | Intel Corporation | Apparatus and method for proving the denial of a direct proof signature |
US9992028B2 (en) * | 2015-11-26 | 2018-06-05 | International Business Machines Corporation | System, method, and computer program product for privacy-preserving transaction validation mechanisms for smart contracts that are included in a ledger |
ES2959557T3 (es) | 2016-11-15 | 2024-02-27 | Innogy Innovation Gmbh | Método para operar una aplicación de igual a igual |
CN107862216B (zh) | 2017-10-13 | 2021-04-06 | 布比(北京)网络技术有限公司 | 用于匿名跨链交易的隐私保护方法、装置和存储介质 |
US11144296B2 (en) * | 2018-09-05 | 2021-10-12 | International Business Machines Corporation | Multi-variable based secure download of vehicle updates |
CN110383311A (zh) * | 2018-11-07 | 2019-10-25 | 阿里巴巴集团控股有限公司 | 监管区块链机密交易 |
US11151558B2 (en) * | 2018-12-12 | 2021-10-19 | American Express Travel Related Services Company, Inc | Zero-knowledge proof payments using blockchain |
-
2019
- 2019-04-05 US US16/375,971 patent/US11323243B2/en active Active
-
2020
- 2020-04-03 CN CN202010257713.1A patent/CN111800268B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018205729A1 (zh) * | 2017-05-11 | 2018-11-15 | 上海点融信息科技有限责任公司 | 基于零知识证明的区块链数据处理 |
CN108376368A (zh) * | 2018-03-07 | 2018-08-07 | 物数(上海)信息科技有限公司 | 背书策略确定方法、装置、电子设备、存储介质 |
CN109257427A (zh) * | 2018-09-26 | 2019-01-22 | 网宿科技股份有限公司 | 一种基于区块链的业务处理方法及系统 |
CN109559224A (zh) * | 2018-10-26 | 2019-04-02 | 阿里巴巴集团控股有限公司 | 征信评估方法及装置、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111800268A (zh) | 2020-10-20 |
US20200322128A1 (en) | 2020-10-08 |
US11323243B2 (en) | 2022-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111800268B (zh) | 用于区块链背书的零知识证明 | |
CN111144881B (zh) | 对资产转移数据的选择性访问 | |
US11487886B2 (en) | Database private document sharing | |
CN115210741B (zh) | 部分有序的区块链 | |
CN111723355A (zh) | 数据库中的信息管理 | |
CN111666332B (zh) | 自动演进的数据库背书策略 | |
CN110674128B (zh) | 区块链的链上治理 | |
CN114651248A (zh) | 用于经许可的区块链的随机节点选择 | |
US11240003B2 (en) | Consent-based data management | |
CN112241919A (zh) | 具有数据流控制的多域区块链网络 | |
CN111881109B (zh) | 数据库可合并分类账 | |
CN111831740B (zh) | 对等体的同步 | |
CN111949651A (zh) | 追踪数据传输 | |
CN111796968A (zh) | 受数据库交易保证的提交 | |
CN111881130A (zh) | 区块链存储结构的冲突解决方案 | |
CN115211093A (zh) | 数据对象的有效阈值存储 | |
CN115004625A (zh) | 用于区块链分类账的索引结构 | |
CN111797347A (zh) | 分布在安全通道上的内容 | |
CN112084186A (zh) | 拆分和合并存储 | |
CN112052474A (zh) | 蓝光拷贝服务 | |
CN116941265A (zh) | 区块链网络身份管理使用ssi | |
JP2024509666A (ja) | ブロックチェーンデータセグリゲーション | |
CN111797426B (zh) | 一种用于去信任通知服务的方法和系统 | |
JP2023551458A (ja) | Oprfを介したブロックチェーンネットワークにおける鍵再生 | |
JP2023530594A (ja) | 分散型データベースにおける許可されたイベント処理 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |