CN112069165A - 文档编校和协调 - Google Patents
文档编校和协调 Download PDFInfo
- Publication number
- CN112069165A CN112069165A CN202010526068.9A CN202010526068A CN112069165A CN 112069165 A CN112069165 A CN 112069165A CN 202010526068 A CN202010526068 A CN 202010526068A CN 112069165 A CN112069165 A CN 112069165A
- Authority
- CN
- China
- Prior art keywords
- document
- blockchain
- processor
- server
- ledger
- 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 claims abstract description 84
- 230000008859 change Effects 0.000 claims abstract description 31
- 230000015654 memory Effects 0.000 claims description 29
- 239000012634 fragment Substances 0.000 claims description 7
- 238000012545 processing Methods 0.000 description 27
- 230000006870 function Effects 0.000 description 22
- 230000008569 process Effects 0.000 description 14
- 230000004044 response Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000013475 authorization Methods 0.000 description 4
- 238000010200 validation analysis Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 241000501754 Astronotus ocellatus Species 0.000 description 1
- 241000027036 Hippa Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000035620 dolor Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 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/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/93—Document management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及文档编校和协调。示例性操作可以包括以下的一个或多个:由文档服务器从文档所有者节点接收文档,文档包含受限访问片段;由文档服务器将文档分割为多个要存储在区块链上的分类账条目,由文档服务器基于授权的参与者节点作出的对文档的提议的更改而更新该多个分类账条目的一个分类账条目,由文档服务器基于从多个参与者节点收集的投票将该分类账条目提交到区块链,以及向多个参与者节点的被授权查看该文档的一组参与者节点发送通知。
Description
技术领域
本申请总体涉及用于数据库存储系统,更具体来说,涉及编校和协调。
背景技术
中心化数据库在一个位置的单个数据库(如数据库服务器)中存储和维护数据。这个位置通常是中央计算机,例如桌面中央处理单元(CPU)、服务器CPU或主机。中心化数据库中存储的信息通常可以从多个不同的点访问。例如,多个用户或客户端工作站可以基于客户端/服务器配置在中心化数据库上同时工作。中心化数据库由于其单一的位置而易于管理、维护和控制,尤其适合安全的需要。在中心化数据库中,数据冗余被最小化,因为所有数据的单一存储位置也意味着给定的数据集只有一个主记录。
但是,中心化数据库存在重大缺陷。例如,中心化数据库有单一的故障点。特别地,如果没有容错考虑,并且发生硬件故障(例如硬件、固件和/或软件故障),则数据库中的所有数据都将丢失,所有用户的工作将中断。此外,中心化数据库高度依赖于网络连接。因此,连接越慢,每次数据库访问所需的时间就越长。另一个缺点是当中心化数据库由于单一的位置而遇到高流量时,会出现瓶颈。此外,中心化数据库提供对数据的有限访问,因为数据库只维护一个数据副本。因此,多个设备无法同时访问同一数据块,而不会造成严重问题或有覆盖存储数据的风险。此外,由于数据库存储系统具有最小数据冗余、甚至无数据冗余,因此,意外丢失的数据很难检索,除非通过手动操作从备份存储中检索。
因此,需要一种克服这些缺点和局限性的基于区块链的解决方案。区块链可用于安全文档共享。有时只需要将文档的一部分安全地共享,以进行编辑或审阅,而该文档的其他部分则必须保持机密,因为它们包含敏感信息。此外,有时可能需要编辑(redact)共享文档的某些部分。例如,存在诸如HIPPA、GDPR、PCI之类的法规,其中某些信息(例如社会安全号、信用卡号和其他个人身份数据)可能需要进行编辑以符合标准。这使日常商业事务变得复杂,因为它限制了文档的交换。例如,电子文档可能包含PHI(个人健康信息),可能需要发送给合同供应商以提取账单代码(或其他处理)。组织可能不希望向承包商透露PHI。因此,可以共享文档的编辑过的版本用于确定/注释账单代码,而无需透露PHI。
尽管现有解决方案可以创建原始文档的一个版本以进行共享,但是对派生文档的变更可能不容易与原始文档协调(reconcile)。现有解决方案通常将文件内容进行加密,作为事后考虑或附加安全措施,这使文件容易受到人为错误的影响。加密是作为区块链设计的一部分内置的。并且,在区块链网络中,仅存储加密的内容。
因此,期望具有用于文档的编校和协调(reconciliation)的基于区块链的解决方案。
发明内容
一个示例性实施例提供了一个包括处理器和存储器的系统,其中处理器被配置为执行以下一个或多个:从文档所有者节点接收文档,该文档包含受限访问片段,将该文档分割成要在区块链上存储的多个分类账条目,基于授权的参与者节点作出的对文档的提议的更改而更新所述多个分类账条目的一个分类账条目,基于从多个参与者节点收集的投票将该分类账条目提交到区块链,向该多个参与者节点的被授权查看该文档的的一组参与者节点发送通知。
另一个示例性实施例提供了一个包括处理器和存储器的系统,其中处理器被配置成执行以下的一个或多个:将文档所有者节点提供的文档分割成要在区块链的分类账上存储的多个片段,检测授权的参与者节点对文档所做的更改,基于对文档的更改更新存储在分类账上的多个片段中的一个片段,从多个参与者节点收集对文档的更改的投票,以及基于投票将更新的片段提交到区块链。
另一个示例实施例提供了一种方法,该方法包括以下一个或多个:由文档服务器从文档所有者节点接收文档,该文档包含受限访问片段,由文档服务器将该文档分割成要在区块链上存储的多个分类账条目,由文档服务器基于授权的参与者节点作出的对该文档的提议的更改而更新所述多个分类账条目的一个分类账条目,由文档服务器根据从多个参与者节点收集的投票将该分类账条目提交到区块链,以及向所述多个参与者节点的被授权查看该文档的一组参与者节点发送通知。
另一个示例性实施例提供了一种方法,该方法包括以下的一个或多个:由文档服务器将文档所有者节点提供的文档分割成要在区块链的分类账上存储的多个片段,由文档服务器检测由授权的参与者节点对文档所做的更改,由文档服务器基于对文档的更改而更新存储在分类账上的多个片段中的一个片段,由文档服务器从多个参与者节点收集对文档更改的投票,以及基于投票将更新的片段提交到区块链。
另一示例性实施例提供了一种非暂时性计算机可读介质,其包括指令,当指令被处理器读取时,使处理器执行以下一个或多个:从文档所有者节点接收文档的,该文档包含受限的访问片段;将该文档分割成要在区块链上存储的多个分类账条目,基于授权的参与者节点作出的对该文档的提议的更改而更新所述多个分类账条目的一个分类账条目,基于从多个参与者节点收集的投票将该分类账条目提交到区块链,以及向该多个参与者节点的被授权查看该文档的一组参与者节点发送通知。
另一个示例性实施例提供了一种非暂时性计算机可读介质,其包括指令,当指令被处理器读取时,使处理器执行以下一个或多个:将由文档所有者节点提供的文档分割成要存储在区块链的分类账上的多个片段,检测由授权的参与者节点作出的对该文档的更改,基于对文档的更改而更新存储在分类账上的多个片段中的一个片段,从多个参与者节点收集对该文档更改的投票,以及基于投票将更新的片段提交到区块链。
附图说明
图1A示出按照示例性实施例的包括数据库的系统的网络图;
图1B示出按照示例性实施例的包括数据库的系统的网络图;
图2A示出按照示例性实施例的区块链体系结构配置示例;
图2B示出按照示例性实施例的区块链事务流;
图3A示出按照示例性实施例的许可网络;
图3B示出按照示例性实施例的另一个许可网络;
图4A示出按照示例性实施例的一个流程图;
图4B示出按照示例性实施例的另一个流程图;
图4C示出按照示例性实施例的一个流程图;
图4D示出按照示例性实施例的另一个流程图;
图5A示出按照实施例的被配置以执行本文所述的一个或多个操作的示例系统;
图5B示出按照实施例的被配置以执行本文所述的一个或多个操作的另一个示例系统;
图5C示出按照实施例的被配置以使用智能合约的另一个示例系统;
图5D示出按照示例性实施例的被配置以使用区块链的另一个示例系统;
图6A示出按照示例性实施例的将新的区块添加到分布式分类账的过程;
图6B示出按照示例性实施例的新的数据块的内容;
图6C示出按照示例性实施例的数字内容的区块链;
图6D示出按照示例性实施例的可表示区块链中的区块的结构的区块;以及
图7示出支持一个或多个示例性实施例的示例系统。
具体实施方式
容易理解,本文附图中一般说明和例示的组件,可以以各种不同的配置来布置和设计。因此,如附图中所示的方法、装置、非暂时性计算机可读介质和系统中的至少一个的实施例的以下详细描述并非旨在限制所要求保护的本申请的范围,而仅仅是代表所选实施例。
贯穿说明书描述的特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合或去除。例如,贯穿本说明书的短语“示例性实施例”、“一些实施例”或其它类似语言的使用指的是结合该实施例描述的特定特征、结构或特性可包括在至少一个实施例中的事实。因此,贯穿本说明书出现的短语“示例性实施例”、“在一些实施例中”、“在其它实施例中”或其它类似语言不一定都指代相同的一组实施例,所描述的特征、结构在一个或多个实施例中,可以以任何合适的方式组合或去除特征。
另外,虽然术语“消息”可能已经在实施例的描述中使用,但是本申请可以应用于许多类型的网络和数据。此外,虽然在示例性实施例中可以描绘某些类型的连接、消息和信令,但是本申请不限于某种类型的连接、消息和信令。
示例性实施例提供了文档的编校和协调的方法、系统、组件、非暂时性计算机可读介质、设备和/或网络。
本申请在一个实施例中,使用去中心化数据库(如区块链),其是一个包括多个相互通信的节点的分布式存储系统。去中心化数据库包括一个只可附加但不可改变的数据结构,类似于能够在不受信任的各方之间维护记录的分布式分类账(ledger)。不受信任的各方在本文中称为对等体(peers)或对等节点。每个对等体维护数据库记录的副本,在分布式对等体之间没有达成共识(consensus)的情况下,单一对等体不能修改数据库记录。例如,对等体可以执行共识协议来验证区块链存储事务,将存储事务分组为区块,并在区块上构建哈希链。该过程根据需要通过对存储事务进行排序来形成分类账以便保持一致性。在各种实施例中,可以使用许可的和/或无许可的区块链。在公共或无许可的区块链中,任何人都可以在没有特定身份的情况下参与。公共区块链通常涉及本地加密货币,使用基于各种协议(诸如工作证明(PoW))的共识。另一方面,许可的区块链数据库提供了在一组有共同目标但彼此不完全信任的实体-例如交换资金、商品、信息等的企业-之间的安全交互。
本申请可以利用一种操作为去中心化存储方案定制的、称为“智能合约”或“链码”(chaincode)的任意可编程逻辑的区块链。在某些情况下,可能存在用于管理功能和参数的专用链码,称为系统链码。本申请可以进一步利用这种智能合约:其是受信任的分布式应用程序,利用了区块链数据库的防篡改属性和节点之间称为背书(endorsement)或背书策略的基础协议。与本申请关联的区块链事务可先被“背书”(endorsed)再被提交(committed)到区块链,而未被背书的事务则不被考虑。背书策略允许链码为事务指定为背书所需的一组对等节点的形式的背书者。当客户端将事务发送到在背书策略中指定的对等体时,该事务被执行,以验证该事务。在验证之后,事务进入排序阶段,在排序阶段,用共识协议来生成按顺序排列的一系列背书的事务,这些背书的事务被分组到区块中。
本申请可以利用作为区块链系统通信实体的节点。“节点”可以执行逻辑功能,即不同类型的多个节点可以在同一物理服务器上运行。节点在信任域中被分组,并与以各种方式控制它们的逻辑实体相关联。节点可以包括不同的类型,例如客户端或提交客户端(submitting-client)节点,其将事务调用(transaction-invocation)提交给背书者(例如对等体),并将事务建议广播给排序服务(例如排序节点)。另一种节点类型是可以接收客户端提交的事务、提交事务并维护区块链事务分类账的状态和副本的对等节点。对等体也可以扮演背书者(endorser)的角色,尽管这不是必需的。排序服务节点或排序者(orderer)是为所有节点运行通信服务的节点,它实现交付保证,例如在提交事务和修改区块链的世界状态(world state)时向系统中的每个对等节点的广播,这是通常包括控制和设置信息的初始区块链事务的另一个名称。
本申请可以利用是区块链的所有状态转变的有序、防篡改的记录的分类账。状态转变可能由参与方(例如客户端节点、排序节点、背书者节点、对等节点等)提交的链码调用(即,事务)产生。每个参与方(例如对等节点)都可以维护分类账的副本。事务可以导致一组资产键-值对作为一个或多个操作数被提交给分类账,例如创建、更新、删除等。分类账包括用于以块存储不可改变的有序记录的区块链(也称为链)。分类账还包括维护区块链的当前状态的状态数据库。
本申请可以使用一种是事务日志的链,其结构为哈希链接的区块(hash-linkedblock),每个区块包含一系列的N个事务,其中N等于或大于1。区块头(block header)包括该区块的事务的哈希(hash),以及前一区块的头的哈希。通过这种方式,分类账上的所有事务都可以按顺序排列并以加密方式链接在一起。因此,在不破坏哈希链(hash links)的情况下,不可能篡改分类账数据。最近添加的区块链块的哈希代表在它之前已经到达的链上的每一个事务,这使得有可能确保所有对等节点处于一致和可信状态。可以将该链存储在对等节点文件系统(即本地、附加存储、云等)上,高效地支持区块链工作负载的只可附加的性质。
不可改变的分类账的当前状态,代表链事务日志中包含的所有的键的最新值。当前状态表示一个通道已知的最新键值,因此有时称之为世界状态。链码调用针对分类账的当前状态数据执行事务。为了使这些链码交互有效,可以将键的最新值存储在状态数据库中。状态数据库可以只是链事务日志的索引视图,因此可以随时根据链来重新生成。状态数据库可以在对等节点启动时和接受事务之前自动恢复(或根据需要生成)。
本文描述和表示的解决方案的有益之处包括用于在区块链网络中编校和协调文档的方法和系统。示例性实施例通过扩展数据库的诸如不变性、数字签名和作为单一的真实源(source of truth)的特性来解决时间和信任问题。示例性实施例提供了一种用于在基于区块链的网络中编校和协调文档的解决方案。基于资产类型和基于智能合约管理资产的规则,区块链网络可以是同质的。
区块链不同于传统的数据库之处在于,区块链不是中心存储,而是去中心化的、不可变的、安全的存储,节点必须共享存储中记录的更改。区块链中固有的、有助于实现区块链的一些属性,包括但不限于不可变账本、智能合约、安全性、隐私性、分散化、共识、背书、可访问性等,本文将进一步描述这些属性。根据各个方面,由于区块链固有的和唯一的不可变的责任、安全性、隐私性、允许的去中心化、智能合约的可用性、背书和可访问性,得以实现区块链网络中文档的编校和协调系统。特别是,区块链分类账数据是不可变的,这为区块链网络中文档的编校和协调提供了有效的方法。此外,在区块链中使用加密可以提供安全性并建立信任。智能合约管理资产的状态以完成生命周期。示例区块链是许可去中心化的。因此,每个最终用户都可以访问自己的分类账副本。区块链网络上可以有多个组织(和对等方)加入。关键的组织可以充当背书(endorsing)对等方,以验证智能合约执行结果、读取集和写入集。换言之,区块链的固有特性为文档的编校和协调方法的有效实现提供了条件。
示例性实施例的好处之一是,它通过在基于区块链的系统中实现文档的编校和协调方法来改进计算系统的功能。通过本文描述的区块链系统,计算系统还可以通过提供对诸如分布式账本、对等方、加密技术、MSP、事件处理等功能的访问来执行区块链网络中文档的编校和协调功能。区块链也使得能够创建一个业务网络,并使任何用户或组织都能参与进来。因此,区块链不仅仅是一个数据库。区块链能够创建用户和机上/机下组织的业务网络,并能以智能合约的形式协作和执行服务流程。
与传统数据库相比,示例实施例提供了许多优点。例如,通过区块链,这些实施例提供了区块链固有的和独特的不可变的责任、安全性、隐私性、许可去中心化、智能合约的可用性、背书和可访问性。
同时,传统数据库不能用于实现示例实施例,因为它不将所有各方带到业务网络上,它不创建可信的协作,也不提供数字资产的有效存储。传统数据库不提供防篡改存储,也不提供对所存储的数字资产的保留。因此,所提出的区块链网络中文档的编校和协调方法无法在传统的数据库中实现。
同时,如果使用传统数据库来实现示例性实施例,则示例性实施例将遭受诸如搜索能力、缺乏安全和事务速度慢等不必要的缺点。此外,区块链网络中文档的自动编校和协调方法根本不可能实现。
因此,示例性实施例提供了对区块链网络中资产访问管理的现有技术/领域中的问题的特定解决方案。
示例性实施例还改变了数据如何在区块链的块结构中存储。例如,数字资产数据可以安全地存储在数据块的特定部分中(即,在报头、数据段或元数据中)。通过将数字资产数据存储在区块链的数据块中,数字资产数据可以通过哈希链接的块链附加到不可变的区块链分类账中。在一些实施例中,数据块可以不同于传统数据块,因为其不将与数字资产相关联的个人数据与资产一起存储在区块链的传统块结构中。通过移除与数字资产相关联的个人数据,区块链可以提供基于不可变的责任和安全性的匿名性的好处。
根据示例性实施例,提供了用于处理包含受保护信息的电子文档的系统和方法。示例性实施例允许涉及多方参与的复杂情况的文档的安全编校、分发和协调。在某些情况下,每一方都可以对某些文档片段应用不同的特权级别。示例性实施例可以创建一个快速和安全的协调流。根据示例性实施例的系统(即,文档服务器)可以接受来自授权用户的编辑,然后可以将提议的更改发送到一个批准流(如果由所有者设置了的话)。文档服务器可以记录投票结果以获得共识,然后将差异协调回到原始文档中。最后,文档服务器向所有用户(包括已编校文档版本的查看者)提供实时的更新通知。简单地说,每个人都靠主文档工作,即便是被编校的查看者。
在需要受限访问控制级别(ACL)的敏感文档中,所有者可以定义谁有权访问文档的哪些部分,并为文档的每个部分/片段(单词、句子、段落、电子表格单元格、列、行等)指定查看(读取)或编辑(写入)访问权限。文档所有者还可以定义协调文档编辑的共识方法。例如,所有者可以选择共识为“所有投票者必须同意”或“大多数投票者必须同意”。最后,所有者可以指定可能接受或拒绝所提议的编辑的投票者。在这种初始设置之后,所有者可以将其更改发布到文档服务器(例如云服务器)。然后,文档服务器解析文档,将其拆分为多个分类账条目用于区块链存储。从这一点上讲,区块链强制实施对每个文档部分的访问,以便只有授权用户才能获得对文档的查看或编辑访问权,或者可以对每个片段进行投票,如同所有者通过应用(例如字处理应用或类似的应用)定义的那样。当授权编辑者对文档执行更改时,该片段的分类账条目将使用所提议的更改进行更新。然后,投票者然后必须赞成或反对这项更改。投票结束后,将对投票进行汇总,达到共识后,将更新标记为被提议的。在编辑者的更改生效之前,必须按照由区块设置的规则对更新进行投票。
在一个示例性实施例中,在投票完成时,结果被记录,并且如果有对原始文档的更改,则所有查看者节点都获得文档更新的实时通知。例如,可以通过字处理应用或另一个特殊应用来提供该更新。如果对提议的更改没有达成共识,则生成一个新的分类账条目,以反映对编辑者提议的更改的拒绝。
根据一个示例性实施例,使用运行在区块链结构上的智能合约严格实施安全性。换句话说,安全性不是作为对现有文档的选项而要被“添加”的内容,因为安全性是构建在整个区块链过程中的。文档服务器将文档标记为片段,并将片段存储到提供细粒度访问控制级别的区块链分类账条目中。文档服务器创建单一的真实源,而不管用户的访问控制级别如何,因此消除了同一文档的多个副本。未经授权的用户不必看到整个文档就可以对某个部分进行更改。共识规则的配置可以在片段级别实现。通过区块链结构上的智能合约达成共识。连接到区块链的文档服务器提供了端到端的解决方案,即文档的编校、分发和协调可以无缝地完全在区块链结构上的智能合约定义的加密空间内进行。根据一个示例性实施例,可以使得能够对完全在加密空间内的文档进行CRUD(创建(Create)、读取(Read)、更新(Update)和删除(Delete))操作,使得文档的未加密版本永远不会存储在客户端的磁盘上。文档服务器可以向包括已编校的文档版本的查看者的所有用户提供实时的更新通知。
根据示例性实施例,用户可以在字处理应用中创建新文档。此用户成为文档所有者。最初的文件可以称为种子文件,是真实源。所有者被赋予编写和限制种子文档的访问的完全权利。字处理应用(或可以产生种子文档的其他应用程序)可以使用基于CRUD的调用连接到文档服务器(例如云服务器)。文档服务器可以管理文档生命周期,例如呈现、编辑和对更改投票。文档所有者可以决定安全地允许其他人查看或编辑文档的部分(即片段)。然后,所有者可以选择文档的一部分,并可以将访问级别与授权用户一起分配给该部分。例如,文档所有者可以向用户Mary文本突出显示片段“dolor sit amet”并限制对该片段的访问权。结果可以是用户John所要编辑的片段。然后,所有者可以突出显示单词“labore”,以基于授权用户Mary的编辑访问权。文档所有者此时(可选地)可以定义和选择达成共识的方法,并可以指定哪些参与者要投票来批准Mary的更改。此外,查看、编辑或投票许可可能有过期日期。文档所有者可以将其更改(即可以创建一个新文档,也可以更改一个现有文档)发布到文档服务器。文档服务器可以以与实现中选定的区块链技术(超账本、以太坊等)兼容的方式将文档拆分为单独的事务。然后,文档服务器可以提交更新区块链分类账的事务。
在一个实施例中,可以使用定义主组件和子组件的父-子数据模型来实现种子文档的解析和拆分。可以使用以下三个分类账条目类别:
(1)主文档记录(MDR);
(2)子记录;和
(3)访问控制列表(ACL)。
可以使用参与者、资产和事务的概念。MDR包含对子记录和访问控制列表(ACL)的引用。这些构件基于文档服务器生成的规范。每个子记录代表为不同参与者编校的片段。ACL文档包含指定的每个子文档的许可(permissions)。例如,某事务可能指示只有Oscar和Mary可以写入文档标识符(id)为“z”的子记录。MDR还可以包含关于如何组装子元素的信息,以便字处理应用(或类似的客户端应用)可以呈现最终的文档视图。这允许用户重新创建包含特定于用户的查看、编辑和投票特权的种子文档的版本。例如,MDR可以显示以下子元素:[[′x′,0],[′y′,0],[′x′,1],[′z′,0],[′x′,2]],其中第一个值对([′x′,0])解码如下:′x′是子文档id,第二个值“0”是子文档的值索引(value index)。值对([′x′,0])指示要呈现子文档的哪个片段。注意,子记录中可能存储有多个片段。MDR可能包含文档呈现逻辑。例如,MDR子文档可以通过首先获取一对[′x′,0]来显示呈现,其中子文档是′x′,值索引是0。文档服务器可以评估(在事务中发送的)ACL,然后获取(在另一个事务中发送的)文档X。可以通过直接获取相应的块或通过读取一个世界状态数据库来检索文档。例如,文档′x′、索引0具有值“Lorem ipsum”。因此,需要首先呈现该片段。下一个要呈现的元素是[′y′,0]。上述过程可以重复,一直到MDR中所列的所有子元素都被评估。
在一个示例中,子记录′z′可能需要来自文档所有者的或来自Paul和Peter的对提议的更改的批准。一旦得到批准,更改可以反映给订阅用户。在一个实施例中,每个分类账条目可以包括创建和更新时间戳和版本号。子记录可以包括其他元数据,例如PCI类型的数据。子记录可以引用另一个子记录和/或位于另一个源(例如脱离区块链存储的)的对象。这可以用于嵌入诸如视频文件的大型数据。客户端应用(例如字处理应用)可以订阅文档服务器(例如云服务器)以接收有关文档更改的实时更新。在一个实施例中,只读用户可以不接收关于所提议的变更的通知,但是可以仅接收关于提交/投票的变更的通知。该订阅机制可以使用WebSockets和队列(RabbitMQ、Kafka)或其他等效的技术来实现。这可以允许同时编辑文档,并允许关于两个用户对某个文本片段进行冲突性更改的即时通知。在另一实施例中,文档可以是例如MS-EXCEL电子表格、MS-Visio或MS-EXCEL文档、矢量图形或基于层的计算机辅助设计(CAD)文档。这可以例如允许根据需要与承包商共享建筑物(或城市)的蓝图,而不泄露整个基础设施的敏感信息。在另一个实施例中,可以使用Hyperledger Composer解决方案。
在一个示例性实施例中,客户端应用程序可以接受ID卡作为输入。客户端应用程序可以使用为合同公开的restapi,并且可以基于为参与者定义的角色和访问控制相应地为每个参与者聚合文档。可以通过一些机制来实现附加的安全性,比如在允许导入身份证(ID card)之前强制将身份证登录到应用程序中,以及将身份证和登录凭据关联起来。可以通过多种方式来完成区块链上资产的存储和管理。如果不用考虑资产/资产片段的大小,则如果网络参与者愿意并且成本可以接受,就可以将资产转换为团块(blob)并直接存储在区块链中。需要注意的重要事情是,在区块链解决方案中事务是复制的,因此,如果存储是一个问题,则可以使用其他链外解决方案。链外存储的其他理由可以是所有者不希望文档/片段分布在网络上,而是希望存储在安全的受信任位置(或者是要求特定类型集中存储的法律/政府要求)。在链外存储的情况下,可以不存储实际的文档片段/子文档,而是在区块链上存储引用资产(即文档)的哈希。
图1A示出了根据示例性实施例的用于在区块链网络中编校和协调文档的逻辑网络图。
参考图1A,示例网络100包括连接到文档所有者节点105和其他参与者节点107的文档服务器102。文档服务器102可以连接到具有用于存储分类账条目110的分类账108的区块链106。虽然本示例仅详细描述一个文档服务器102,但多个这样的节点可以连接到区块链106。应当理解,文档服务器102可以包括额外的组件,并且,在不脱离本文公开的文档服务器102的范围的情况下,可以移除和/或修改本文描述的一些组件。文档服务器102可以是计算设备或服务器计算机等,并且可以包括处理器104,其可以是基于半导体的微处理器、中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或其他硬件设备。尽管描绘了单个处理器104,但是应当理解,在不偏离文档服务器节点102系统的范围的情况下,文档服务器102可以包括多个处理器、多个内核等。
文档服务器102还可以包括非暂时性计算机可读介质112,该非暂时性计算机可读介质112上可以存储处理器104可执行的机器可读指令。机器可读指令的示例如114-122所示,并在下面进一步讨论。非暂时性计算机可读介质112的示例可以包括包含或存储可执行指令的电、磁、光学或其他物理存储设备。例如,非暂时性计算机可读介质112可以是随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、硬盘、光盘或其它类型的存储设备。
处理器104可以获取、解码和执行机器可读指令114以从文档所有者节点105接收文档。文档可能包含受限访问片段。如上所述,区块链分类账108可以分类账条目110的形式存储种子文档的片段。区块链106网络可以被配置为使用一个或多个智能合约来管理多个参与者节点的事务。文档服务器102可以向节点105和107提供实时的通知。
处理器104可以获取、解码和执行机器可读指令116,以将文档分割成要在区块链106上存储的多个分类账条目110。处理器104可以获取、解码和执行机器可读指令118,以基于授权参与者节点对文档所做的提议的更改来更新该多个分类账条目的一个分类账条目。处理器104可以获取、解码和执行机器可读指令120,以基于从多个参与者节点107收集的投票来将分类账条目提交到区块链。处理器104可以获取、解码和执行机器可读指令122,以向多个参与者节点107中被授权查看文档的一组参与者节点发送通知。
图1B示出了根据示例性实施例的用于在区块链网络中编校和协调文档的逻辑网络图。
参考图1B,示例网络101包括连接到文档所有者节点105和其他参与者节点107的文档服务器102。文档服务器102可以连接到具有用于存储分类账条目110的分类账108的区块链106。虽然本示例仅详细描述一个文档服务器102,但多个这样的节点可以连接到区块链106。应当理解,文档服务器102可以包括额外的组件,并且,在不脱离本文公开的文档服务器102的范围的情况下,可以移除和/或修改本文描述的一些组件。文档服务器102可以是计算设备或服务器计算机等,并且可以包括处理器104,其可以是基于半导体的微处理器、中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或其他硬件设备。尽管描绘了单个处理器104,但是应当理解,在不脱离文档服务器节点102系统的范围的情况下,文档服务器102可以包括多个处理器、多个内核等。
文档服务器102还可以包括非暂时性计算机可读介质112,其上可以存储在处理器104可执行的机器可读指令。机器可读指令的示例如113-121所示,并在下面进一步讨论。非暂时性计算机可读介质112的示例可以包括包含或存储可执行指令的电子、磁性、光学或其他物理存储设备。例如,非暂时性计算机可读介质112可以是随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、硬盘、光盘或其它类型的存储设备。
处理器104可以获取、解码和执行机器可读指令113,以将文档所有者节点105提供的文档分割成要在区块链106的分类账上存储的多个片段。如上所述,区块链分类账108可以分类账条目110的形式存储种子文档的片段。区块链106网络可以被配置为使用一个或多个智能合约来管理多个参与者节点的事务。文档服务器102可以向节点105和107提供实时通知。
处理器104可以获取、解码和执行机器可读指令115,以检测由授权参与者节点107作出的对文档的更改。处理器104可以获取、解码和执行机器可读指令117,以基于对文档的更改来更新存储在分类账108上的多个片段中的一个片段。处理器104可以获取、解码和执行机器可读指令119,以从多个参与者节点107收集对文档的更改的投票。处理器104可以获取、解码和执行机器可读指令121,以基于投票将更新的片段提交给区块链106。
图2A例示了按照实施例的区块链体系结构配置200。参照图2A,区块链架构200可以包括某些区块链元素,例如,一组区块链节点202。区块链节点202可以包括一个或多个节点204-210(这四个节点仅仅是举例说明)。这些节点参与许多活动,例如区块链事务添加和验证过程(共识)。一个或多个区块链节点204-210可以根据背书策略来背书(endorse)事务,并可以为架构200中的所有区块链节点提供排序(ordering)服务。区块链节点可以启动区块链验证,并寻求写入存储在区块链层216中的区块链不可变分类账,其副本也可以存储在基础物理设施214上。区块链配置可以包括一个或多个应用程序224,这些应用程序224链接到应用程序编程接口(API)222以访问和执行所存储的程序/应用程序代码220(例如链码、智能合约等),这些程序/应用程序代码可以根据参与者寻求的自定义配置创建,并可以维护自己的状态,控制自己的资产,以及接收外部信息。这可以作为事务进行部署,并通过附加到分布式分类账而安装在所有区块链节点204-210上。
区块链基础或平台212可包括区块链数据、服务(例如加密信任服务、虚拟执行环境等)以及基础物理计算机设施的各个层次,该基础设施可用于接收和存储新的事务,并为寻求访问数据条目的审核者(auditors)提供访问权限。区块链层216可以开放一个接口,以为处理程序代码和参与基础物理设施214提供所需的对虚拟执行环境的访问。加密信任服务218可用于验证诸如资产交换事务的事务,并将信息保密。
图2A的区块链架构配置可以通过由区块链平台212开放的一个或多个接口处理和执行程序/应用程序代码220以及所提供的服务。代码220可以控制区块链资产。例如,代码220可以存储和传输数据,并且可以由节点204-210以智能合约的形式执行,并将链码与条件或其它受其执行约束的代码元素关联起来。作为非限制性的示例,可以创建智能合约来执行提醒、更新和/或其它通知(取决于更改、更新等)。智能合约本身可用于识别与授权、访问要求和分类账使用相关的规则。例如,信息226可以包括事务建议226,该事务建议可以由区块链层216中包含的一个或多个处理实体(例如虚拟机)处理。结果228可以包括复合背书228。基础物理设施214可用于检索本文所述的任何数据或信息。
智能合约可以通过高级应用程序和编程语言创建,然后写入区块链中的区块。智能合约可以包括注册、存储和/或复制到区块链(例如区块链对等体的分布式网络)的可执行代码。事务是智能合约代码的执行,智能合约代码的执行可以响应于与智能合约相关的条件的满足而进行。智能合约的执行可以触发对数字区块链分类账的状态的可信修改。智能合约的执行导致的对区块链分类账的修改,可以通过一个或多个共识协议在区块链对等体的分布式网络中自动复制。
智能合约可以以键-值对的形式向区块链写入数据。此外,智能合约代码可以读取存储在区块链中的值,并在应用程序操作中使用它们。智能合约代码可以将各种逻辑操作的输出写入区块链。代码可用于在虚拟机或其它计算平台中创建临时数据结构。写入区块链的数据可以是公开的和/或经过加密并作为私有数据维护的。智能合约使用/生成的临时数据,由所提供的执行环境保存在内存中,一旦识别出区块链所需的数据,便被删除。
链码可以包括智能合约的代码解释,具有附加功能。如本文所述,链码可以是部署在计算网络上的程序代码,在共识过程期间由链验证器一起执行和验证。链码接收一个哈希,并从区块链中检索一个与使用先前存储的功能提取器创建的数据模板关联的哈希。如果哈希标识符的哈希与从存储的标识符模板数据创建的哈希匹配,则链码将向被请求的服务发送授权钥。链码可以将与加密细节相关的数据写入区块链。
图2B例示按照实施例的区块链节点之间的区块链事务流250的示例。参考图2B,该事务流可以包括由应用客户端节点260发送给背书对等节点281的事务建议291。背书对等节点281可以验证客户端签名并执行一个链码函数来发起事务。输出可包括链码结果、在链码中读取的一组键/值版本(读取集)和在链码中写入的一组键/值(写入集)。如果得到批准,则将建议响应292连同背书签名一起发送回客户端260。客户端260将背书组装成事务负载293,并将其广播到排序服务节点284。然后,排序服务节点284将排序的事务作为区块交付通道上的所有对等体281-283。在提交到区块链之前,每个对等体281-283可以验证该事务。例如,对等体可以检查背书策略,以确保指定对等体的正确分配已签署结果并对照事务负载293验证了签名。
再次参考图2B,客户端节点260通过构造请求并向对等节点281(背书者)发送请求来发起事务291。客户端260可以包括利用受支持的软件开发工具包(SDK)的应用程序,该工具包利用可用的API来生成事务建议。事务建议是一个调用链码函数以便可以读取数据和/或将数据写入分类账(即,写入资产的新键值对)的请求。该SDK可以充当一个填充程序,用于将事务建议封装成一个适当架构的格式(例如远程过程调用(RPC)上的协议缓冲区),并获取客户端的加密凭据来生成为事务建议的唯一性签名。
作为响应,背书对等节点281可以验证:(a)事务建议形成得很好,(b)该事务过去未曾提交(重放攻击保护),(c)签名有效,以及(d)提交方(submitter)(在该示例中为客户端260)被适当授权在该通道上执行所建议的操作。背书对等节点281可以将事务建议输入作为被调用的链码功能的参数。然后针对当前状态数据库执行链码以产生包括响应值、读取集和写入集的事务结果。但是,此时没有对分类账进行更新。在292中,将该组值与背书对等节点281的签名一起作为建议响应292传递回客户端260的SDK,其解析负载以供应用程序使用。
作为响应,客户端260的应用程序检查/验证背书对等体签名并比较建议响应以确定建议响应是否相同。如果链码仅查询了分类账,则应用程序将检查查询响应并且通常不将该事务提交给排序服务节点284。如果客户端应用程序打算将该事务提交给排序服务节点284以更新分类账,则应用程序在提交之前确定指定的背书策略是否已得到满足(即,事务所需的所有对等节点都支持该事务)。这里,客户端可以仅包括事务的多方中的一方。在这种情况下,每个客户端可以有自己的背书节点,并且每个背书节点都需要背书该事务。该体系结构使得即使某应用程序选择不检查响应或以其它方式转发未经背书的事务,该背书策略仍将由对等体实施并在提交验证(commit validation)阶段得到支持。
在成功检查之后,在步骤293中,客户端260将背书组装到事务中,并向排序节点284广播事务消息内的事务建议和响应。事务可以包含读取/写入集,背书对等体签名和通道ID。排序服务节点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从管理用户角色和许可的认证机构316检索用户的注册和事务证书。在某些情况下,区块链用户必须拥有这些数字证书才能在许可的区块链304上进行事务。同时,试图使用链码的用户可能需要验证他们在传统数据源312上的凭证。为了确认用户的授权,链码可以通过传统处理平台318使用与该数据的带外连接。
图3B示出了许可的区块链网络320的另一示例,其具有分布式、去中心化的对等架构。在该示例中,区块链用户322可以向许可的区块链324提交事务。在该示例中,事务可以是部署、调用或查询,并且可以利用SDK通过客户端侧的应用程序、直接通过API等方式来发布。区块链网络操作者328管理成员权限,例如将监管者326注册为“审核员”,将区块链用户322注册为“客户”。可以限制审核员只能查询分类账,而客户则可以被授权部署、调用和查询某些类型的链码。
区块链开发者330编写链码和客户端应用程序。区块链开发者330可以通过接口直接将链码部署到网络上。为了在链码中包含来自传统数据源332的凭证,开发者330可以使用带外连接来访问数据。在本例中,区块链用户322通过对等节点334连接到网络。在继续进行任何事务之前,对等节点334从认证机构336检索用户的注册和事务证书。在某些情况下,区块链用户必须拥有这些数字证书才能在许可的区块链324上进行事务。同时,试图使用链码的用户可能需要验证他们在传统数据源332上的凭证。为了确认用户的授权,链码可以通过传统的处理平台338使用与该数据的带外连接。
图4A示出了根据示例性实施例的用于在区块链网络中编校和协调文档的示例性方法的流程图400。参照图4A,方法400可以包括下述的一个或多个步骤。
图4A示出了由文档服务器102(参见图1)执行的示例方法的流程图。应当理解,图4A中描绘的方法400可以包括额外的操作,并且,可以在不脱离方法400的范围的情况下,移除和/或修改其中描述的一些操作。为了说明的目的,还参照图1所示的特征来描述方法400。特别地,文档服务器102的处理器104可以执行方法400中包括的部分或全部操作。
参照图4A,在框412,处理器104可以从文档所有者节点接收文档。文档可能包含受限的访问片段。在框414,处理器104可以将文档分割成多个要存储在区块链上的分类账条目。在框416,处理器104可以基于由授权的参与者节点所作的对文档的提议的更改来更新该多个分类账条目的一个分类账条目。在框418,处理器104可以基于从多个参与者节点收集的投票将该分类账条目提交到区块链。在框420,处理器104可以向多个参与者节点中的一组被授权查看文档的参与者节点发送通知。
图4B示出了根据示例性实施例的用于在区块链网络中编校和协调文档的示例性方法的流程图450。参照图4B,方法450还可以包括以下一个或多个步骤。在框452,处理器104可以基于从文档所有者接收到的指令来确定用于文档的更改的协商的共识方法。在框454,处理器104可以为该多个参与者节点确定对该文档的受限访问片段的每个的查看和编辑访问。在框456,处理器104可以指派多个参与者节点中的参与者节点对由文档所有者定义的提议的更改进行投票。在框458,如果被指派进行投票的参与者节点没有达成共识,处理器104可以生成一个分类账条目,该分类账条目指示该提议的更改被拒绝。在框460,处理器104可以执行智能合约以限制对文档片段的访问。在框462,处理器104可以在将分类账条目存储在区块链上之前将其转换为团块。
图4C示出了根据示例性实施例的用于在区块链网络中编校和协调文档的示例性方法的流程图410。参照图4C,方法410可以包括下述一个或多个步骤。
图4C示出了由文档服务器102(参见图1A)执行的示例方法的流程图。应当理解,图4C中描绘的方法410可以包括额外的操作,并且,在不脱离方法410的范围的情况下,可以移除和/或修改其中描述的一些操作。为了说明的目的,还参照图1A中描绘的特征来描述方法410。特别地,文档服务器102的处理器104可以执行方法410中包括的部分或全部操作。
参照图4C,在框413,处理器104可以将文档所有者节点提供的文档分割成要在区块链的分类账上存储的多个片段。在框415,处理器104可以检测由授权参与者节点所作的对文档的更改。在框417,处理器104可以基于对文档的更改来更新在分类账上存储的多个片段中的一个片段。在框419,处理器104可以从多个参与者节点收集对文档的更改的投票。在框421,处理器104可以基于投票将更新的片段提交给区块链。
图4D示出了根据示例性实施例的用于在区块链网络中编校和协调文档的示例性方法的流程图470。参照图4D,方法470还可以包括以下的一个或多个步骤。在框472,处理器104可以向多个参与者节点中被授权查看文档的一组参与者节点发送文档更改通知。在框474,处理器104可以为多个参与者节点确定文档的每个片段的查看和编辑访问。在框476,处理器104可以从文档所有者接收关于文档的更改的协调的共识方法的指令。在框478,处理器104可以指派由文档所有者从多个参与者节点中选择的参与者节点对文档更改进行投票。在框480,如果被指派进行投票的参与者节点没有就文档更改达成共识,则处理器104可以在区块链上记录分类账条目。在框482,处理器104可以执行智能合约,以限制对由文档所有者标识的文档片段的访问。
图5A例示了一个示例系统510,其包括一个配置为根据示例性实施例执行各种操作的基础物理设施510。参考图5A,基础物理设施510包括模块512和模块514。模块514包括区块链520和智能合约530(可以位于区块链520上),该智能合约可以执行任何示例性实施例中包含的任何操作步骤508(模块512中)。步骤/操作508可以包括所说明或描述的一个或多个实施例,并且可以表示从一个或多个智能合约530和/或区块链520写入或读取的输出或写入信息。基础物理设施510、模块512和模块514可包括一台或多台计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块512和模块514可以是同一模块。
图5B例示另一个示例系统540,其被配置得执行按照示例性实施例的各种操作。参照图5B,系统540包括模块512和模块514。模块514包括区块链520和智能合约530(可以位于区块链520上),该智能合约可以执行任何示例性实施例中包含的任何操作步骤508(模块512中)。步骤/操作508可以包括所说明或描述的一个或多个实施例,并且可以表示从一个或多个智能合约530和/或区块链520写入或读取的输出或写入信息。基础物理设施510、模块512和模块514可包括一台或多台计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块512和模块514可以是同一模块。
图5C例示按照示例性实施例的被配置为利用合约方与中介服务器之间智能合约配置的示例系统,该中介服务器被配置为在区块链上实施智能合约条款。参考图5C,配置550可以代表一个由智能合约530驱动的通信会话、资产转移会话或过程,其明确地标识一个或多个用户设备552和/或556。智能合约执行的执行、操作和结果可以由服务器554管理。智能合约530的内容可以要求由智能合约事务的参与方中的一个或多个实体552和556进行数字签名。智能合约执行的结果可以作为区块链事务写入区块链520。智能合约530驻留在区块链520上,区块链520可以驻留在一个或多个计算机、服务器、处理器、存储器和/或无线通信设备上。
图5D例示按照示例性实施例的包括区块链的系统660。参考图6的示例,应用程序编程接口(API)网关562提供用于访问区块链逻辑(例如智能合约530或其它链码)和数据(例如分布式分类账等)的公共接口。在该示例中,API网关562是用于通过将一个或多个实体552和556连接到区块链对等体(即,服务器554)来对区块链执行事务(调用、查询等)的公共接口。这里,服务器554是区块链网络对等组件,其保存世界状态的副本和分布式分类账,从而允许客户端552和556查询关于世界状态的数据以及将事务提交到区块链网络中,其中,取决于智能合约530和背书策略,背书对等体将运行智能合约530。
以上实施例可以以硬件、处理器执行的计算机程序、固件或以上的组合的形式来实现。计算机程序可以体现在计算机可读介质-例如存储介质-上。例如,计算机程序可以驻留在随机存取存储器(“RAM”)、闪存、只读存储器(“ROM”)、可擦除可编程只读存储器(“EPROM”)、电可擦除可编程只读存储器(“EEPROM”)、寄存器、硬盘、可移动磁盘、光盘只读存储器(“CD-ROM”)或本领域已知的任何其它形式的存储介质。
示例性存储介质可以耦合到处理器,使得处理器可以从存储介质读取信息,将信息写入存储介质。在替代性方案中,存储介质可以是处理器的组成部分。处理器和存储介质可以驻留在专用集成电路(“ASIC”)中。在替代性方案中,处理器和存储介质可以作为分立组件驻留。
图6A例示按照示例性实施例的将新的区块添加到分布式分类账620的过程600,图6B例示按照示例性实施例的用于区块链的新数据块结构630的内容。参考图6A,客户端(未予示出)可以向区块链节点611、612和/或613提交事务。客户端可以是从任何源接收的用以在区块链520上进行活动的指令。作为示例,客户端可以是代表请求者-如设备、人或实体-行事以针对区块链建议事务的应用程序。多个区块链对等体(例如区块链节点611、612和613)可以维护区块链网络的状态和分布式分类账620的副本。区块链网络中可以存在不同类型的区块链节点/对等体,包括模拟和背书由客户端提交的事务的背书对等体,验证背书、验证事务并向分布式分类账620提交事务的提交对等体。在该示例中,区块链节点611、612和613可以执行背书者节点、提交方节点或二者的角色。
分布式分类账620包括在区块中存储不可变的顺序记录的区块链,以及维护区块链722的当前状态的状态数据库624(当前世界状态)。每个通道可以对应有一个分布式分类账620,并且每个对等体维护其所属的每个通道的分布式分类账620的自己的副本。区块链622是以哈希链接的区块构造的事务日志,其中每个区块包含一系列的N个事务。区块可以包括诸如图6B中所示的各种组件。可以通过在当前区块的块头中添加先前区块的块头的哈希来生成区块的链接(由图6A中的箭头示出)。以这种方式,区块链622上的所有事务被排序并加密地链接在一起,从而防止不破坏哈希链接而篡改区块链数据。此外,由于链接,区块链622中的最新区块表示在其之前的每个事务。区块链622可以存储在对等文件系统(本地或附接存储)上,其支持只可附加的区块链工作负载。
区块链622和分布式分类账622的当前状态可以存储在状态数据库624中。这里,当前状态数据表示区块链622的链事务日志中包含的所有键的最新值。链码调用针对状态数据库624中的当前状态执行事务。为了使这些链码交互非常有效,所有键的最新值都存储在状态数据库624中。状态数据库624可以包含区块链622的事务日志的索引视图,因此可以随时根据区块链重新生成索引视图。在接受事务之前,状态数据库624可以在对等体启动时自动恢复(或根据需要生成)。
背书节点从客户端接收事务,并根据模拟结果对事务进行背书。背书节点持有模拟事务建议的智能合约。当背书节点背书某事务时,背书节点将创建一个事务背书,该背书是背书节点对客户端应用程序的签名响应,指示对模拟事务的背书。对事务进行背书的方法取决于可以在链码中规定的背书策略。背书策略的一个例子是“大多数背书等同体必须为事务背书”。不同的通道可以有不同的背书策略。背书的事务(endorsed transactions)由客户端应用程序转发给排序服务610。
排序服务610接收背书的事务,将它们排序到一个区块中,并将这些区块交付给提交对等体。例如,当达到事务阈值、计时器超时或其它条件时,排序服务610可以启动新的区块。在图6A的示例中,区块链节点612是已经接收到一个用于在区块链620上存储的新数据块630的提交对等体。区块链中的第一个区块可以称为起始区块,其中包括关于该区块链及其成员、存储在其中的数据等信息。
排序服务610可以由一组排序者组成。排序服务610不处理事务、智能合约或维护共享分类账。相反,排序服务610可以接受背书的事务,并指定将这些事务提交到分布式分类账620的顺序。可以将区块链网络的架构设计得使得“排序”的具体实现(如Solo、Kafka、BFT等)成为可插拔组件。
事务是按照一致性的顺序被写入分布式分类账620的。确立事务的顺序以确保状态数据库624的更新在提交到网络时是有效的。与通过解决加密难题或挖掘进行排序的加密货币区块链系统(如比特币等)不同的是,在本例中,分布式分类账620的各方可以选择最适合该网络的排序机制。
当排序服务610初始化一个新数据块630时,可以将新数据块630广播给提交对等体(例如区块链节点611、612和613)。作为响应,每个提交对等体通过确保读取集和写入集仍然与状态数据库624中的当前世界状态匹配的检查,来验证新数据块630中的事务。具体来说,提交对等体可以确定当背书者模拟事务时存在的读取数据是否与状态数据库624中的当前世界状态相同。当提交对等体确认该事务时,该事务被写入分布式分类账620上的区块链622,状态数据库624被读取-写入集中的写入数据更新。如果事务失败,即如果提交对等体发现读取-写入集与状态数据库624中的当前世界状态不匹配,则排序到区块中的事务仍将被包括在该区块中,但它将被标记为无效,并且状态数据库624将不会更新。
参考图6B,存储在分布式分类账620的区块链622上的新数据块630(也称为数据块)可以包括多个数据段,诸如块头640、块数据650和块元数据660。应该认识到,图6B中所示的各种描述的区块及其内容,例如新数据块630及其内容,仅仅为示例,并非是要限制示例性实施例的范围。新数据块630可以在块数据650中存储N(例如1、10、100、500、1000、2000、3000等)个事务的事务信息。新数据块630还可以在区块头640中包括指向(例如图6B中的区块链622上的)前一区块的链接。特别地,区块头640可以包括前一区块的头的哈希。区块头640还可以包括唯一性块号、新数据块630的块数据650的哈希等。新数据块630的块号可以是唯一性的,并以各种顺序,例如以从零开始的递增/顺序的顺序,进行分配。
块数据650可以存储新数据块630中记录的每个事务的事务信息。例如,事务数据可以包括下述的一个或多个:事务类型、版本、时间戳、分布式分类账620的通道ID、事务ID、时期(epoch)、有效负载可见性、链码路径(部署事务)、链码名、链码版本、输入(链码和函数)、客户(创建者)标识-诸如公钥和证书、客户签名、背书者身份、背书者签名、建议哈希、链码事件、响应状态、命名空间、读取集(事务读取的键和版本列表等)、写入集(键和值列表等)、开始键、结束键、键的列表、默克尔树(Merkel tree)查询摘要,等等。可以为N个事务中的每个事务存储事务数据。
在一些实施例中,块数据650还可以存储向区块链622中的区块的哈希链接的链添加附加信息的新数据662。附加信息包括本文说明或描述的步骤、特征、过程和/或操作的一个或多个。因此,可以将新数据662存储在分布式分类账620上的不可变区块日志中。存储这种新数据662的一些好处反映在本文公开和描述的各种实施例中。尽管在图6B中新数据662被显示为在块数据650中,但也可以位于区块头640或块元数据660中。
块元数据660可以存储多个元数据字段(例如以字节数组等形式)。元数据字段可以包括区块创建时的签名、对最后一个配置块的引用、标识区块内的有效和无效事务的事务筛选器、对该区块进行排序的排序服务的最后一个偏移量等。排序服务610可以添加签名、最后一个配置块和排序者元数据。同时,区块的提交方(如区块链节点612)可以添加基于背书策略的有效性/无效性信息、读取/写入集的验证等。事务筛选器可以包括一个大小等于块数据650中的事务个数的字节数组和一个标识事务有效还是无效的验证代码。
图6C例示按照本文所述实施例的针对数字内容的区块链670的实施例。数字内容可以包括一个或多个文件和相关信息。这些文件可以包括媒体、图像、视频、音频、文本、链接、图形、动画、网页、文档或其它形式的数字内容。区块链的不可改变、只可附加的特点对保护数字内容的完整性、有效性和真实性起着保障作用,使数字内容适用于其中应用了容许性规则的法律程序,或者适用于顾及证据或提交和使用数字信息很重要的其它情景。在这种情况下,数字内容可以称为数字证据。
区块链的形成方式有多种多样。在一个实施例中,可以将数字内容纳入区块链中并从区块链本身访问。例如,区块链的每个区块可以与相关的数字内容一起存储引用信息(例如块头、值等)的哈希值(hash value)。然后可以将哈希值和相关的数字内容一起加密。因此,可以通过解密区块链中的每个区块来访问每个区块的数字内容,每个区块的哈希值可以作为引用前一个区块的基础。这可以例示如下:
在一个实施例中,数字内容可以不含在区块链中。例如,区块链可以存储每个区块的内容的加密哈希,而不存储任何数字内容。可以将数字内容与原始文件的哈希值相关联地存储在另一个存储区或内存地址中。另一个存储区域可以是与存储区块链的相同的存储设备,也可以是不同的存储区,甚至是单独的关系数据库。通过获取或查询感兴趣的区块的哈希值,然后在存储区中查找与实际的数字内容对应存储的该哈希值,可以引用或访问每个区块的数字内容。这个操作可以由例如数据库网关管理器来执行。这可以例示如下:
在图6C的示例性实施例中,区块链670包括按顺序加密链接的若干区块6781、6782、……678N,其中N≥1。用于链接区块6781、6782、……678N的加密术可以是多个密钥化或非密钥化哈希函数中的任何一个。在一个实施例中,区块6781、6772、……678N受制于一个哈希函数,该函数从基于区块中信息的输入产生n比特的字母数字输出(其中n是256或其它数字)。这种哈希函数的例子包括但不限于SHA(安全哈希算法)型算法、Merkle-Damagard算法、HAIFA算法、Merkle-tree算法、基于随机数的算法和非抗冲突PRF的算法。在另一个实施例中,区块6781、6782、……678N可以通过不同于哈希函数的函数进行加密链接。为了便于说明,以下描述参考了一种哈希函数,例如SHA-2。
区块链中的每个区块6781、6782、……、678N都包含一个头、一个文件版本和一个值。由于区块链中的哈希,每个区块的头和值都不同。在一个实施例中,值可以包括在头中。如下面更详细的描述,该文件版本可以是原始文件,或者原始文件的不同版本。
区块链中的第一个区块6781被称为起始区块,包括头6721、原始文件6741和初始值6761。用于起始区块的哈希方案,以及所有后续区块的哈希方案,可能会有所不同。例如,第一个块6781中的所有信息可以一次哈希在一起,或者可以对第一个块6781中的每个或一部分信息单独进行哈希,然后对单独哈希的部分进行哈希。
头6721可以包括一个或多个初始参数,例如,可以包括版本号、时间戳、随机数、根信息、难度级别、共识协议、持续时间、媒体格式、来源、描述性关键字和/或与原始文件6741和/或区块链相关的其它信息。头6721可以自动生成(例如通过区块链网络管理软件),也可以由区块链参与者手动生成。与区块链中其它区块6782至678N中的头不同,起始区块中的头6721没有引用前一区块,这仅仅是因为没有前一区块。
例如,起始区块中的原始文件6741例如可以是设备捕获的、在将其纳入区块链之前处理或未处理的数据。原始文件6741通过系统接口从设备、媒体源或节点接收。将原始文件6741与例如可以由用户、设备和/或系统处理器手动或自动生成的元数据关联。可以将元数据与原始文件6741一起包含在第一个区块6781中。
起始区块中的值6761是基于原始文件6741的一个或多个唯一性属性生成的初始值。在一个实施例中,该一个或多个唯一性属性可以包括原始文件6741的哈希值、原始文件6741的元数据以及与该文件相关的其它信息。在一个实现中,初始值6761可以基于以下唯一性属性:
1)原始文件的SHA-2计算的哈希值
2)发起设备ID
3)原始文件的开始时间戳
4)原始文件的初始存储位置
5)用于软件目前控制原始文件和关联元数据的区块链网络成员ID
区块链中的其它区块6782到678N也具有头、文件和值。但是,与第一个区块的头6721不同的是,其它区块中的头6722到772N每个都包含前一区块的散列值。前一区块的散列值可能只是前一区块的头的散列,也可能是整个前一区块的散列值。通过将前一区块的散列哈希值包含在其余每个区块中,可以从第N个块逐个区块地反向跟踪到起始区块(以及相关的原始文件),如箭头680所示,以建立可审核和不可变的监护链。
其它区块中的每个头6722到672N还可以包括其它信息,例如版本号、时间戳、随机数、根信息、难度级别、共识协议和/或与相应文件和/或区块链相关的其它参数或信息。
其它区块中的文件6742到674N可以等于原始文件,也可以是起始区块中原始文件的修改版本,具体取决于所执行的处理的类型。所执行的处理的类型可能因区块而异。例如,处理可能涉及对前一区块中的文件的任何修改,例如修订信息或以其它方式更改文件的内容、从文件中去除信息或向文件添加或附接信息。
此外,或者作为替代,处理可能仅涉及从前一区块复制文件、更改文件的存储位置、分析一个或多个在前区块中的文件、将文件从一个存储或内存位置移动到另一个存储或内存位置,或者执行相对于区块链文件和/或其关联的元数据的操作。涉及分析文件的处理可以包括例如附加、包括或以其它方式关联与该文件关联的各种分析、统计或其它信息。
其它区块6762到676N中的每个其它区块的值都是唯一性的值,并且由于所执行的处理而不同。例如,任何一个区块中的值对应于前一区块中的值的更新版本。更新反映在向其分配值的区块的哈希中。因此,区块的值提供了区块中执行了什么处理的指示,并允许通过区块链回溯跟踪到原始文件。此跟踪确认了文件在整个区块链中的监管链。
例如,考察对前一区块中的文件的部分进行修订、分块或像素化以便保护文件中所示的人的身份的情况。在这种情况下,包括被修订文件的区块将包括与被修订文件相关联的元数据,例如修订操作的执行方式、谁执行修订操作、发生修订操作的时间戳等。可以对元数据进行哈希以形成值。由于区块的元数据与前一区块中通过哈希形成值的信息不同,因此这些值彼此不同,在解密时可以恢复。
在一个实施例中,当发生以下任何一个或多个情况时,可以更新前一区块的值(例如计算出新的哈希值),以形成当前区块的值。在本实施例中,新的哈希值可以通过哈希下面所述的全部或部分信息来计算。
a)新SHA-2计算的哈希值(如果文件已以任何方式处理)(例如如果文件已被修订、复制、更改、访问或采取了某些其它操作)
b)文件的新存储位置
c)识别的与文件关联的新元数据
d)将文件的访问或控制从一个区块链参与者转移到另一个区块链参与者
图6D例示可表示根据一个实施例的区块链690中的区块的结构的区块的实施例。该区块即区块Blocki包括头672i、文件674i和值676i。
头672i包括前一区块Blocki-1的哈希值和额外的引用信息,该信息例如可以是本文讨论的任何类型的信息(例如包括引用、特征、参数等的头信息)。所有区块都引用前一区块的哈希值,当然,起始区块除外。前一区块的哈希值可以只是前一区块中头的哈希,也可以是前一区块中的全部或部分信息-包括文件和元数据-的哈希。
文件674i包括多个数据,如依次的Data 1、Data 2、……、Data N。这些数据用描述与数据相关的内容和/或特征的元数据Metadata 1、Metadata 2、……、Metadata N来标记。例如,每个数据的元数据可以包括指示数据时间戳的信息、处理数据、指示数据中描述的人员或其它内容的关键字,和/或有助于确定文件整体的有效性和内容-尤其是其作为数字证据的用途,例如如下文所讨论的实施例所述的那样-的其它特征。除了元数据之外,每个数据还可以用对前一数据的引用REF 1、REF 2、……、REF N来标记,以防止篡改、文件中的间隙以及通过文件的顺序引用。
一旦元数据被分配给数据(例如通过智能合约),元数据在哈希没有改变情况下就不能被更改,而哈希的改变很容易被识别为无效。因此,元数据创建了可被访问以供区块链参与者使用的信息的数据日志。
值676i是基于前面讨论过的任何类型的信息计算出的哈希值或其它值。例如,对于任何给定的区块Blocki,可以更新该区块的值以反映为该区块执行的处理,例如,新哈希值、新存储位置、关联文件的新元数据、控制或访问的传输、标识符或要添加的其它操作或信息。尽管每个区块中的值被显示为是与文件的数据的元数据和头分离的,但是在另一个实施例中该值可以部分或全部基于元数据。
一旦区块链670形成,在任何时间点,可以通过向区块链查询跨区块的值的事务历史来获取文件的不可改变的监管链。此查询或跟踪过程可以始于解密最近被包括的区块(例如最后一个(第N个)区块)的值,然后继续解密其它区块的值,直到到达起始区块,然后恢复原始文件。解密也可能涉及到解密每个区块上的头和文件以及相关的元数据。
解密是根据每个区块中发生的加密的类型执行的。这可能涉及使用私钥、公钥或公钥-私钥对。例如,当使用非对称加密时,网络中的区块链参与者或处理器可以使用预定的算法生成公钥和私钥对。公钥和私钥通过某种数学关系相互关联。公钥可以被公开分发以用作从其它用户接收消息的地址(例如IP地址或家庭地址)。私钥是保密的,用于对发送给其它区块链参与者的消息进行数字签名。签名被包括在邮件中,以便接收者可以使用发件人的公钥进行验证。这样,接收者就可以确信只有发件人才可能发送了此邮件。
生成密钥对可以类似于在区块链上创建帐户但无须实际在任何地方注册。此外,在区块链上执行的每个事务都由发送方使用其私钥进行数字签名。此签名确保只有帐户所有者才能跟踪和处理区块链的文件(如果在智能合约确定的权限范围内)。
图7例示支持本文所述的一个或多个实施例的示例系统700。系统700包括一个计算机系统/服务器702,它与许多其它通用或专用计算系统环境或配置一起运行。适用于计算机系统/服务器702的计算系统、环境和/或配置示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、厚客户端、手持或笔记本设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型机计算机系统和包括上述任何系统或设备等的分布式云计算环境。
计算机系统/服务器702可在由计算机系统执行的计算机系统可执行指令(如程序模块)的一般上下文中描述。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器702可以在分布式云计算环境中使用,其中任务由通过通信网络连接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括内存存储设备的本地和远程计算机系统存储介质中。
如图7中所示,云计算节点700中的计算机系统/服务器702以通用计算设备的形式示出。计算机系统/服务器702的组件可以包括但不限于一个或多个处理器或处理单元704、系统存储器706,以及将包括系统存储器706的各种系统组件耦合到处理器704的总线。
总线代表若干类型的总线结构中的任何一种或多种,包括存储器总线或存储器控制器、外围设备总线、加速图形端口、以及使用各种总线架构中的任何总线架构的处理器或本地总线。作为示例而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线和外围组件互连(PCI)总线。
计算机系统/服务器702通常包括各种计算机系统可读介质。这样的媒体可以是计算机系统/服务器702可访问的任何可用媒体,包括易失性和非易失性媒体,可移动和不可移动媒体。在一个实施例中,系统存储器706实现其它附图中的流程图。系统存储器706可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)710和/或高速缓冲存储器712。计算机系统/服务器702还可以包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为示例,可以提供存储系统714用于对不可移动的非易失性磁介质(未予示出,通常称为“硬盘驱动器”)进行数据的读取和写入。尽管未予示出,但是可以提供用于读取和写入可移动的非易失性磁盘(例如“软盘”)的磁盘驱动器,以及用于读取或写入可移动的非易失性光学器件的光盘驱动器,诸如CD-ROM、DVD-ROM或其它光学介质的盘。在这种情况下,每个都可以通过一个或多个数据媒体接口连接到总线。如下面将进一步描绘和描述的,存储器706可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置为执行本申请的各种实施例的功能。
具有一组(至少一个)程序模块818的程序/实用程序816可以作为示例而非限制地存储在存储器706中,操作系统、一个或多个应用程序、其它程序模块和程序数据也同样。操作系统、一个或多个应用程序、其它程序模块和程序数据中的每一个或它们的某种组合可以包括网络环境的实现。程序模块818通常执行如本文所述的本申请的各种实施例的功能和/或方法。
所属领域的技术人员应当明白,本申请的各方面可体现为系统、方法或计算机程序产品。因此,本申请的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)的形式或者组合软件和硬件方面的实施例,这些实施例在这里通常可以被称为“电路”“模块”或“系统”。本申请的各方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有包含在其上的计算机可读程序代码。
计算机系统/服务器702还可以与一个或多个外部设备720通信,外部设备例如是键盘、指示设备、显示器722;一个或多个使用户能够与计算机系统/服务器702交互的设备;和/或使计算机系统/服务器702能够与一个或多个其它计算设备通信的任何设备(例如网卡,调制解调器等)。这种通信可以通过I/0接口724进行。此外,计算机系统/服务器702还可以经由网络适配器726与诸如局域网(LAN)、一般广域网(WAN)和/或公共的网络(例如因特网)的一个或多个网络通信。如图所示,网络适配器726经由总线与计算机系统/服务器702的其它组件通信。应当理解,尽管未予示出,但是其它硬件和/或软件组件可以与计算机系统/服务器702结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动器阵列,RAID系统、磁带驱动器和数据存档存储系统等。
尽管在附图中示出了系统、方法和非暂时性计算机可读介质中的至少一个的示例性实施例,并且在前面的详细描述中进行了描述,但是应该理解,本申请不限于所公开的实施例,而是能够进行如下所述的权利要求所阐述和限定的许多重新排列、修改和替换。例如,各附图的系统的功能可以由本文描述的一个或多个模块或组件或在分布式架构中执行,并且可以包括发射器、接收器或发射器-接收器对。例如,由各个模块执行的全部或部分功能可以由这些模块中的一个或多个执行。此外,本文描述的功能可以在不同时间并且与模块或组件内部或外部的各种事件相关地执行。此外,可以通过多个协议和/或通过以下的至少一个在模块之间发送在各个模块之间发送的信息:数据网络、因特网、语音网络、因特网协议网络、无线设备、有线设备。而且,可以直接和/或经由一个或多个其它模块发送或接收由任何模块发送或接收的消息。
本领域技术人员将理解,“系统”可以体现为个人计算机、服务器、控制台、个人数字助理(PDA)、蜂窝电话、平板计算设备、智能手机或任何其它合适的计算设备或设备的组合。将上述功能呈现为由“系统”执行并不旨在以任何方式限制本申请的范围,而是旨在提供许多实施例的示例。实际上,本文公开的方法、系统和装置可以以与计算技术一致的本地化和分布式形式实现。
应当注意,本说明书中描述的一些系统特征被呈现为模块,以便更具体地强调它们的实现独立性。例如,模块可以实现为包括定制的超大规模集成(VLSI)电路或门阵列的硬件电路,诸如逻辑芯片、晶体管或其它分立元件的现成半导体。模块还可以在诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等的可编程硬件设备中实现。
模块还可以至少部分地以软件实现,以由各种类型的处理器执行。所识别的可执行代码单元可以例如包括计算机指令的一个或多个物理或逻辑块,其可以例如被组织为对象、过程或功能。然而,所识别的模块的可执行文件不需要物理地位于一起,而是可以包括存储在不同位置的不同指令,当逻辑上连接在一起时,这些指令包括模块并实现模块的所述目的。此外,模块可以存储在计算机可读介质上,该计算机可读介质可以是例如硬盘驱动器、存设备、随机存取存储器(RAM)、磁带或用于存储数据的任何其它此类介质。
实际上,可执行代码的模块可以是单个指令或多个指令,甚至可以分布在几个不同的代码段上,不同的程序中以及若干个存储器设备上。类似地,操作数据可以在本文中在模块内被识别和示出,并且可以以任何合适的形式体现并且被组织在任何合适类型的数据结构中。操作数据可以作为单个数据集收集,或者可以分布在包括不同存储设备的不同位置上,并且可以至少部分地仅作为系统或网络上的电子信号存在。
容易理解的是,如本文附图中一般描述和例示的那样,本申请的组件可以以各种不同的配置来布置和设计。因此,实施例的详细描述不旨在限制所要求保护的本申请的范围,而仅仅代表本申请的所选实施例。
本领域普通技术人员将容易理解,可以以不同顺序的步骤和/或使用与所公开的配置不同的配置中的硬件元件来实现上述内容。因此,尽管已经基于这些优选实施例描述了本申请,但是对于本领域技术人员来说显而易见的是,某些修改、变化和替代构造将是显而易见的。
虽然已经描述了本申请的优选实施例,但是应该理解,所描述的实施例仅仅是说明性的,本申请的范围仅由所附的权利要求在考虑各种等同物和修改(例如协议、硬件设备、软件平台等)的全部范围的情况下限定。
Claims (20)
1.一种计算机实现的方法,包括:
由文档服务器从文档所有者节点接收文档,文档包含受限访问片段;
由文档服务器将文档分割成要在区块链上存储的多个分类账条目;
由文档服务器基于授权的参与者节点对文档所做的提议的更改而更新所述多个分类账条目的一个分类账条目;
由文档服务器基于从多个参与者节点收集的投票将该分类账条目提交到区块链;以及
由文档服务器向所述多个参与者节点中被授权查看文档的一组参与者节点发送通知。
2.根据权利要求1所述的方法,还包括为所述多个参与者节点确定文档的每个受限访问片段的查看和编辑访问。
3.根据权利要求1所述的方法,还包括基于从文档所有者收到的指令来确定用于文档的更改的协调的共识方法。
4.根据权利要求3所述的方法,还包括从所述多个参与者节点中指派参与者节点对所述文档所有者所定义的所述提议的更改进行投票。
5.根据权利要求4所述的方法,还包括:如果被指派进行投票的参与者节点未达成共识,则生成指示拒绝所提议的变更的分类账条目。
6.根据权利要求1所述的方法,还包括执行智能合同以限制对文档片段的访问。
7.根据权利要求1所述的方法,还包括在将所述分类账条目存储在区块链上之前将其转换为团块。
8.一种系统,包括:
文档服务器的处理器;
存储器,其上存储有机器可读指令,当所述机器可读指令由处理器执行时,使处理器执行如权利要求1至7中的任何一项所述的方法中的步骤。
9.一种非暂时性计算机可读介质,包含机器可读的指令,所述指令由处理器读取时,使处理器执行如权利要求1至7中的任何一项所述的方法中的步骤。
10.一种设备,包含被配置以实现如权利要求1至7中的任何一项所述的方法中的所有步骤的对应装置。
11.一种计算机实现的方法,包括:
由文档服务器将由文档所有者节点提供的文档分割成要在区块链上存储的多个片段;
由文档服务器检测由授权的参与者节点作出的对文档的变更;
由文档服务器基于对文档的变更而更新在区块链上存储的多个片段的一个片段。
由文档服务器从多个参与者节点收集对所述文档的变更的投票;以及
基于所述投票将被更新的片段提交到区块链。
12.根据权利要求11所述的方法,还包括向所述多个参与者节点中被授权查看文档的一组参与者节点发送通知。
13.根据权利要求11所述的方法,还包括为所述多个参与者节点确定文档的每个受限访问片段的查看和编辑访问。
14.根据权利要求11所述的方法,还包括从文档所有者接收关于用于文档的更改的协调的共识方法的指示。
15.根据权利要求11所述的方法,还包括文档所有者指派从所述多个参与者节点中选择的参与者节点对文档变更进行投票。
16.根据权利要求15所述的方法,还包括:如果被指派进行投票的参与者节点对文档变更未达成共识,则在区块链上记录一个分类账条目。
17.根据权利要求11所述的方法,还包括执行智能合同以限制对文档所有者标识的文档的片段的访问。
18.一种系统,包括:
文档服务器的处理器;
存储器,其上存储有机器可读指令,当所述机器可读指令由处理器执行时,使处理器执行如权利要求11至17中的任何一项所述的方法中的步骤。
19.一种非暂时性计算机可读介质,包含机器可读的指令,所述指令由处理器读取时,使处理器执行如权利要求11至17中的任何一项所述的方法中的步骤。
20.一种设备,包含被配置以实现如权利要求11至17中的任何一项所述的方法中的所有步骤的对应装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/438,427 US20200394321A1 (en) | 2019-06-11 | 2019-06-11 | Document redaction and reconciliation |
US16/438427 | 2019-06-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112069165A true CN112069165A (zh) | 2020-12-11 |
Family
ID=73657278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010526068.9A Pending CN112069165A (zh) | 2019-06-11 | 2020-06-10 | 文档编校和协调 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20200394321A1 (zh) |
CN (1) | CN112069165A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112686004A (zh) * | 2020-12-30 | 2021-04-20 | 海南大学 | 基于区块链的单份文档多接口编辑方法 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10796371B1 (en) | 2016-11-23 | 2020-10-06 | State Farm Mutual Automobile Insurance Company | Systems and methods for maintaining a distributed ledger of transactions pertaining to an autonomous vehicle |
US20210264000A1 (en) | 2017-01-25 | 2021-08-26 | State Farm Mutual Automobile Insurance Company | Blockchain based associate information and licensing |
US10824759B1 (en) | 2017-01-25 | 2020-11-03 | State Farm Mutual Automobile Insurance Company | Systems and methods for verifying agent sales data via blockchain |
US11301936B1 (en) | 2017-03-03 | 2022-04-12 | State Farm Mutual Automobile Insurance Company | Using a distributed ledger for total loss management |
US10832214B1 (en) | 2017-04-05 | 2020-11-10 | State Farm Mutual Automobile Insurance Company | Systems and methods for maintaining transferability of title via blockchain |
US20210264362A1 (en) | 2017-05-02 | 2021-08-26 | State Farm Mutual Automobile Insurance Company | Distributed ledger system for claim payouts |
US10554649B1 (en) | 2017-05-22 | 2020-02-04 | State Farm Mutual Automobile Insurance Company | Systems and methods for blockchain validation of user identity and authority |
US11270383B1 (en) | 2017-05-24 | 2022-03-08 | State Farm Mutual Automobile Insurance Company | Blockchain subrogation claims with arbitration |
US10872381B1 (en) | 2017-09-06 | 2020-12-22 | State Farm Mutual Automobile Insurance Company | Evidence oracles |
US11386498B1 (en) | 2017-09-06 | 2022-07-12 | State Farm Mutual Automobile Insurance Company | Using historical data for subrogation on a distributed ledger |
US11416942B1 (en) | 2017-09-06 | 2022-08-16 | State Farm Mutual Automobile Insurance Company | Using a distributed ledger to determine fault in subrogation |
US11556618B2 (en) * | 2020-02-18 | 2023-01-17 | At&T Intellectual Property I, L.P. | Split ledger software license platform |
US20220027350A1 (en) * | 2020-07-21 | 2022-01-27 | Gigaforce, Inc. | Blockchain enabled service provider system |
JP2022156182A (ja) * | 2021-03-31 | 2022-10-14 | 株式会社日立製作所 | データ管理システム、データ管理方法、及びノード |
US11461861B1 (en) | 2021-06-03 | 2022-10-04 | State Farm Mutual Automobile Insurance Company | Net settlement of subrogation claims using a distributed ledger |
WO2023168370A2 (en) * | 2022-03-03 | 2023-09-07 | Shaper Tools, Inc. | Methods and systems for exchanging information with tools |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170220815A1 (en) * | 2016-01-28 | 2017-08-03 | Nasdaq, Inc. | Systems and methods for securing and disseminating time sensitive information using a blockchain |
US20170243193A1 (en) * | 2016-02-18 | 2017-08-24 | Skuchain, Inc. | Hybrid blockchain |
US20170289111A1 (en) * | 2016-04-01 | 2017-10-05 | Jpmorgan Chase Bank, N.A. | Systems and methods for providing data privacy in a private distributed ledger |
CN108664803A (zh) * | 2018-04-04 | 2018-10-16 | 中国电子科技集团公司第三十研究所 | 一种基于密码的文档内容细粒度访问控制系统 |
CN108710681A (zh) * | 2018-05-18 | 2018-10-26 | 腾讯科技(深圳)有限公司 | 文件获取方法、装置、设备及存储介质 |
CN109564599A (zh) * | 2016-03-31 | 2019-04-02 | 克劳斯公司 | 用于创建和执行数据驱动法律合同的系统和方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2409541A (en) * | 2003-12-23 | 2005-06-29 | Mandorla Technology Ltd | Editable information management system and method |
US9870591B2 (en) * | 2013-09-12 | 2018-01-16 | Netspective Communications Llc | Distributed electronic document review in a blockchain system and computerized scoring based on textual and visual feedback |
US10402792B2 (en) * | 2015-08-13 | 2019-09-03 | The Toronto-Dominion Bank | Systems and method for tracking enterprise events using hybrid public-private blockchain ledgers |
US10922425B2 (en) * | 2018-04-04 | 2021-02-16 | Microsoft Technology Licensing, Llc | Establishment of a confidential blockchain network |
US10986097B2 (en) * | 2018-04-30 | 2021-04-20 | Bank Of America Corporation | System for using a distributed ledger to manage user entitlements to computing resources |
-
2019
- 2019-06-11 US US16/438,427 patent/US20200394321A1/en active Pending
-
2020
- 2020-06-10 CN CN202010526068.9A patent/CN112069165A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170220815A1 (en) * | 2016-01-28 | 2017-08-03 | Nasdaq, Inc. | Systems and methods for securing and disseminating time sensitive information using a blockchain |
US20170243193A1 (en) * | 2016-02-18 | 2017-08-24 | Skuchain, Inc. | Hybrid blockchain |
CN109564599A (zh) * | 2016-03-31 | 2019-04-02 | 克劳斯公司 | 用于创建和执行数据驱动法律合同的系统和方法 |
US20170289111A1 (en) * | 2016-04-01 | 2017-10-05 | Jpmorgan Chase Bank, N.A. | Systems and methods for providing data privacy in a private distributed ledger |
CN108664803A (zh) * | 2018-04-04 | 2018-10-16 | 中国电子科技集团公司第三十研究所 | 一种基于密码的文档内容细粒度访问控制系统 |
CN108710681A (zh) * | 2018-05-18 | 2018-10-26 | 腾讯科技(深圳)有限公司 | 文件获取方法、装置、设备及存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112686004A (zh) * | 2020-12-30 | 2021-04-20 | 海南大学 | 基于区块链的单份文档多接口编辑方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200394321A1 (en) | 2020-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11972004B2 (en) | Document redaction and reconciliation | |
CN112069165A (zh) | 文档编校和协调 | |
CN111800268B (zh) | 用于区块链背书的零知识证明 | |
CN111881129A (zh) | 用于数据库的索引管理 | |
US11200260B2 (en) | Database asset fulfillment chaincode deployment | |
CN111488393B (zh) | 虚拟区块链 | |
CN112053157B (zh) | 灵活交易验证 | |
CN111881099A (zh) | 数据库私有文档共享 | |
US11360946B2 (en) | Tracking data transfers | |
CN111796968A (zh) | 受数据库交易保证的提交 | |
US11240003B2 (en) | Consent-based data management | |
CN111881130A (zh) | 区块链存储结构的冲突解决方案 | |
CN112241919A (zh) | 具有数据流控制的多域区块链网络 | |
CN111831740B (zh) | 对等体的同步 | |
CN111831739A (zh) | 数据库复合背书 | |
US11457066B2 (en) | Splitting and merging of storages | |
CN114450708A (zh) | 基于现有链码的链码推荐 | |
CN115605868A (zh) | 跨网身份提供 | |
CN112052474A (zh) | 蓝光拷贝服务 | |
US11687904B2 (en) | Downstream tracking of content consumption | |
CN115668856A (zh) | 分散式数据库中的许可事件 | |
CN112035291A (zh) | 快照恢复 | |
CN111859411B (zh) | 用于区块链网络中的区块链的方法和系统 | |
CN111797426B (zh) | 一种用于去信任通知服务的方法和系统 | |
CN112052473A (zh) | 地理位置合规性 |
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 |