CN111797426B - 一种用于去信任通知服务的方法和*** - Google Patents
一种用于去信任通知服务的方法和*** Download PDFInfo
- Publication number
- CN111797426B CN111797426B CN202010257798.3A CN202010257798A CN111797426B CN 111797426 B CN111797426 B CN 111797426B CN 202010257798 A CN202010257798 A CN 202010257798A CN 111797426 B CN111797426 B CN 111797426B
- Authority
- CN
- China
- Prior art keywords
- blockchain
- notifier
- block
- node
- transaction
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000004044 response Effects 0.000 claims abstract description 21
- 230000006870 function Effects 0.000 claims description 29
- 230000011664 signaling Effects 0.000 claims description 16
- 230000008569 process Effects 0.000 description 20
- 238000012545 processing Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000013475 authorization Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 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
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000008707 rearrangement Effects 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
Classifications
-
- 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
-
- 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
-
- 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/104—Peer-to-peer [P2P] networks
-
- 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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/02—Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- 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/50—Network services
- H04L67/55—Push-based network services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- 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
-
- 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/3247—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 digital signatures
-
- 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
- G06Q2220/00—Business processing using cryptography
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Finance (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Databases & Information Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
示例操作可以包括以下操作中的一个或多个:由通知者节点连接到被配置成指定通知者节点的通知者服务节点,由通知者节点从通知者服务节点接收从区块链的账本中读取区块的通知,由通知者节点在该区块上应用函数,以确定该通知者节点是否是该区块中至少一个已递交的交易的指定通知者,并且响应于确定该通知者是指定通知者,由通知者节点向与该区块相关联的交易中所涉及的用户节点发送推送通知。
Description
技术领域
本申请总体上涉及一种数据库存储***,并且更具体地涉及去信任(trustless)通知服务。
背景技术
集中式数据库在位于一个位置的单个数据库(例如,数据库服务器)中存储和维护数据。该位置通常是中央计算机,例如,台式中央处理器(CPU)、服务器CPU、或大型计算机。通常可以从多个不同点访问存储在集中式数据库中的信息。例如,基于客户端/服务器配置,多个用户或客户端工作站可以在集中式数据库上同时工作。集中式数据库易于管理、维护和控制,特别是出于安全目的,因为它位于单个位置。在集中式数据库中,由于所有数据的单个存储位置也暗示给定的一组数据仅具有一个主记录,因此数据冗余被最小化。
然而,集中式数据库遭受重大缺陷。例如,集中式数据库具有单点故障。特别是,如果没有容错性的考虑,并且发生硬件故障(例如,硬件,固件和/或软件故障),则数据库中的所有数据都将丢失,并且所有用户的工作都会中断。此外,集中式数据库高度依赖于网络连接。结果,连接速度越慢,每次数据库访问所需的时间量就会增加。另一个缺点是当集中式数据库由于单个位置而遇到高流量时,会出现瓶颈。此外,由于数据库仅维护数据的一个副本,因此集中式数据库提供了对数据的有限访问。结果,多个设备无法同时访问同一段数据而不造成严重的问题或产生覆盖已存储数据的风险。此外,由于数据库存储***的数据冗余很小甚至没有,因此,除了通过手动操作从备份存储中恢复之外,很难恢复意外丢失的数据。
这样,需要一种克服这些缺点和局限性的基于区块链的解决方案。
如果客户端应用程序1在区块链上记录交易,则客户端应用程序2可能“希望”立即被通知该区块链交易,以使得应用程序2可以及时地执行后续动作。然而,客户端应用程序1可能有动机阻止这种通知的发生。由于客户端应用程序2不拥有对等体,因此它需要针对此通知信任一个或多个对等体。如果客户端应用程序招募了(enlist)更多对等体,则它会降低其对对等体故障/恶意的敏感性。在这种情况下,利用区块链以去信任的方式执行此类通知的能力可能非常有用。当前,区块链对等体不提供此作为服务。
因此,期望具有一种利用区块链的分散式去信任通知服务。
发明内容
一个示例实施例提供了一种包括处理器和存储器的***,其中,该处理器被配置成执行以下操作中的一个或多个:连接到被配置成指定通知者节点的通知者服务节点,从该通知者服务节点接收从区块链的账本中读取区块的通知,在该区块上应用函数以确定该通知者节点是否是该区块中至少一个已递交的交易的指定通知者,以及响应于确定该通知者是指定通知者,向与该区块关联的交易中所涉及的用户节点发送推送通知。
另一示例实施例提供了一种方法,该方法包括以下操作中的一个或多个:由通知者节点连接到被配置成指定该通知者节点的通知者服务节点,由该通知者节点从该通知者服务节点接收从区块链的账本中读取区块的通知,由通知者节点在该区块上应用函数以确定该通知者节点是否是该区块中至少一个已递交的交易的指定通知者,以及响应于确定该通知者是指定通知者,由该通知者节点向与该区块相关联的交易中所涉及的用户节点发送推送通知。
另一示例实施例提供了一种包括指令的非暂时性计算机可读介质,该指令当被处理器读取时使处理器执行以下操作中的一个或多个:连接到被配置成指定通知者节点的通知者服务节点,从该通知者服务节点接收从区块链的账本中读取区块的通知,在该区块上应用函数以确定该通知者节点是否是该区块中至少一个已递交的交易的指定通知者,以及响应于确定该通知者是指定通知者,向与该区块相关联的交易中所涉及的用户节点发送推送通知。
附图说明
图1示出了根据示例实施例的包括数据库的***的网络图。
图2A示出了根据示例实施例的示例区块链体系结构配置。
图2B示出了根据示例实施例的区块链交易流程。
图3A示出了根据示例实施例的经许可的(permissioned)网络的图。
图3B示出了根据示例实施例的另一经许可的网络的图。
图4A示出了根据示例实施例的流程图。
图4B示出了根据示例实施例的进一步的流程图。
图5A示出了根据示例实施例的被配置成执行本文所述的一个或多个操作的示例***。
图5B示出了根据示例实施例的被配置成执行本文所述的一个或多个操作的另一示例***。
图5C示出了根据示例实施例的被配置成利用智能合约的另一示例***。
图5D示出了根据示例实施例的被配置成利用区块链的又一示例***。
图6A示出了根据示例实施例的用于将新区块添加至分布式账本的过程。
图6B示出了根据示例实施例的新数据区块的内容。
图6C示出了根据示例实施例的用于数字内容的区块链。
图6D示出了根据示例实施例的可表示区块链中的区块的结构的区块。
图7示出了支持一个或多个示例实施例的示例***。
具体实施方式
容易理解的是,如在本文附图中一般描述和说明的示例组件可以以各种不同的配置来布置和设计。因此,如附图中所示的方法、装置、非暂态计算机可读介质和***中的至少一个的实施例的以下详细描述并非旨在限制所要求保护的本申请的范围,而是仅代表所选实施例。
贯穿本说明书描述的示例特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合或移除。例如,贯穿本说明书,短语“示例实施例”、“一些实施例”或其它类似语言的使用是指结合该实施例描述的特定特征、结构或特性可包括在至少一个实施例中的事实。因此,贯穿本说明书出现的短语“示例实施例”、“在一些实施例中”、“在其它实施例中”或其它类似语言不一定是指相同的一组实施例,并且所描述的特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合或移除。
另外,尽管在实施例的描述中可能已经使用术语“消息”,但是本申请可应用于许多类型的网络和数据。此外,尽管在示例性实施例中可描绘某些类型的连接、消息和信令,但是本申请不限于特定类型的连接、消息和信令。
示例实施例提供了方法、***、组件、非暂态计算机可读介质、设备、和/或网络,其提供了一种去信任通知服务区块链网络。
在一个实施例中,本申请利用作为分布式存储***的分散式数据库(例如,区块链),该分布式存储***包括彼此通信的多个节点。分散式数据库包括类似于分布式账本的仅附加(append-only)的不可篡改数据结构,分布式账本能够维持互不信任的各方之间的记录。不受信方在本文中称为对等体或对等节点。每个对等体都维持数据库记录的副本,并且在分布式对等体之间未达成共识的情况下,没有任何单个对等体可以修改数据库记录。例如,对等体可执行共识协议以使区块链存储交易生效(validate),将存储交易分组为区块,以及在这些区块上构建散列链。为了保持一致性,此过程通过对存储交易进行排序来形成账本。在各种实施例中,可以使用经许可的和/或无需许可的(permissionless)区块链。在公共或无需许可的区块链中,任何人都可以在没有特定身份的情况下参与。公共区块链通常涉及本机加密货币,并基于各种协议(例如,工作量证明(PoW))使用共识。另一方面,经许可的区块链数据库在一组共享共同目标但彼此之间并不完全信任的实体(例如交换资金、商品、信息等的企业)之间提供安全的交互。
本申请可以利用如下区块链,该区块链可操作针对分散式存储方案量身定制并称为“智能合约”或“链码”的任意可编程逻辑。在某些情况下,可能存在用于管理功能和参数的专用链码,其称为***链码。本申请可进一步利用如下智能合约,该智能合约是受信任的分布式应用程序,其利用了区块链数据库的防篡改属性和节点之间被称为背书或背书策略的基础协议。与该应用程序相关联的区块链交易可以在提交(commit)给区块链之前被“背书”,而未被背书的交易则被忽略。背书策略允许链码以背书所必需的一组对等节点的形式指定交易的背书者。当客户向背书策略中指定的对等体发送交易时,将执行交易以使交易生效。生效之后,交易进入排序阶段,在该阶段中,使用共识协议来生成被分组为区块的所背书的交易的有序序列。
本申请可利用作为区块链***中的通信实体的节点。在不同类型的多个节点可在同一物理服务器上运行的意义上,“节点”可执行逻辑功能。节点在信任域中分组,并与以各种方式控制它们的逻辑实体相关联。节点可包括不同类型,诸如客户端或递交客户端节点,其向背书者(例如,对等体)递交交易调用,并且向排序服务(例如,排序节点)广播交易提议(proposal)。另一种类型的节点是对等节点,其可接收客户端递交的交易,提交交易并维持区块链交易的账本的状态和副本。对等体也可扮演背书者的角色,尽管这不是必需的。排序服务节点或排序者是针对所有节点运行通信服务的节点,并且该节点实现投递保证,诸如,当提交交易和修改区块链的世界状态时对***中的每个对等节点的广播,这是针对初始区块链交易的另一个名称,初始区块链交易通常包括控制和设置信息。
本申请可以利用如下账本,该账本是区块链的所有状态转变的有序防篡改记录。状态转变可由参与者(例如,客户端节点、排序节点、背书者节点、对等节点等)递交的链码调用(即,交易)产生。每个参与者(诸如对等节点)可维持账本的一个副本。交易可导致一组资产密钥值(key-value)对被提交给账本作为一个或多个操作数,诸如创建、更新、删除等。账本包括区块链(也称为链),其用于以区块为单位存储不可篡改的顺序记录。账本还包括状态数据库,该数据库维持区块链的当前状态。
本申请可以利用作为交易日志的链,该交易日志被构造为散列链接区块,并且每个区块包含具有N个交易的序列,其中N等于或大于1。区块头包括区块的交易的散列,以及前一区块的头的散列。通过这种方式,在账本上的所有交易都可被排序并以加密方式链接在一起。因此,不可能在不破坏散列链接的情况下篡改账本数据。最近添加的区块链区块的散列表示在其之前的链上的每个交易,使得可确保所有对等节点处于一致且可信的状态。链可被存储在对等节点文件***(即,本地、附加存储、云等)上,有效地支持区块链工作负载的仅附加性质。
不可篡改账本的当前状态表示链交易日志中包括的所有密钥的最新值。因为当前状态表示信道已知的最新密钥值,所以它有时被称为世界状态。链码调用针对账本的当前状态数据来执行交易。为了使这些链码交互有效,密钥的最新值可被存储在状态数据库中。状态数据库可以仅仅是链的交易日志的索引视图,因此可以随时从链中重新生成。在对等节点启动后以及在接受交易之前,状态数据库可自动恢复(或在需要时生成)。
本文描述和描绘的示例解决方案的一些益处包括一种用于区块链网络中的去信任通知服务的方法和***。示例性实施例通过扩展数据库的特征(例如不可篡改性、数字签名和是真实(truth)的单一来源),解决了时间和信任的问题。示例性实施例提供了用于基于区块链的网络中的去信任通知服务的解决方案。基于资产类型和基于智能合约管理资产的规则,区块链网络可以是同质的(homogenous)。
区块链与传统数据库的不同之处在于,区块链不是集中式存储,而是分散式的不可篡改且安全的存储,其中,节点必须共享对存储中的记录的更改。区块链固有的有助于实现区块链的某些特性包括但不限于本文将进一步进行描述的不可篡改账本、智能合约、安全性、隐私性、分散性、共识、背书、可访问性等。根据各个方面,用于区块链网络中的去信任通知服务的***由于区块链固有且独特的不可篡改的责任性(accountability)、安全性、隐私性、经许可的分散性、智能合约的可用性、背书和可访问性而实现。特别是,区块链账本数据是不可篡改的,并且其提供了针对区块链网络中的去信任通知服务的有效方法。此外,在区块链中对加密的使用提供安全性并建立信任。智能合约管理资产的状态以完成生命周期。示例区块链是许可分散的。因此,每个最终用户可拥有自己的账本副本以进行访问。多个组织(和对等体)可加入(on-boarded)区块链网络。密钥组织可充当背书对等体,以使智能合约执行结果、读取集和写入集生效。换句话说,区块链固有特征提供了一种用于去信任通知服务的方法的有效实现方式。
示例实施例的益处之一是,它通过在基于区块链的***中实现用于去信任通知服务的方法来改善计算***的功能。通过本文所述的区块链***,计算***可通过提供对诸如分布式账本、对等体、加密技术、MSP、事件处理等能力的访问,来执行用于区块链网络中去信任通知服务的功能。此外,区块链使得能够创建商业网络,并让所有用户或组织参与其中。因此,区块链不仅是数据库。区块链具有创建用户和场内(on-board)/场外(off-board)组织的商业网络的能力,从而以智能合约的形式协作和执行服务过程。
示例实施例提供了优于传统数据库的多个益处。例如,通过区块链,实施例提供了区块链固有和独特的不可篡改的责任性、安全性、隐私性、经许可的分散性、智能合约的可用性、背书和可访问性。
同时,传统数据库不能用于实现示例实施例,因为它没有将各方都带到商业网络上,它没有创建受信任的协作并且没有提供数字资产的有效存储。传统数据库不提供防篡改存储,也不提供对所存储数字资产的保存。因此,在传统数据库中无法实现所提出的用于区块链网络中的去信任通知服务的方法。
同时,如果将传统数据库用于实现示例实施例,则示例实施例将遭受不必要的缺陷,例如搜索能力、安全性缺乏和缓慢的交易速度。此外,简直不可能在区块链网络中实现去信任通知服务的自动化方法。
因此,示例实施例提供了对区块链网络中的交易通知的技术/领域中的问题的特定解决方案。
示例实施例还改变了数据可如何在区块链的区块结构内存储。例如,数字资产数据可被安全地存储在数据区块的特定部分内(即,头、数据段或元数据中)。通过将数字资产数据存储在区块链的数据区块中,可通过散列链接的区块链将数字资产数据附加到不可篡改的区块链账本。在一些实施例中,通过使与数字资产相关联的个人数据不与资产一起存储在区块链的传统区块结构内,该数据区块可不同于传统数据区块。通过删除与数字资产相关联的个人数据,区块链可基于不可篡改的责任性和安全性提供匿名性的益处。
根据示例性实施例,提供了一种用于利用区块链的分散式去信任通知服务的***和方法。根据一个实施例,该服务将被所有如下高层业务应用程序所利用,该高层业务应用程序需要被通知有关被提交到区块链的任何相关事件(针对其业务过程)。
换句话说,分散式通知服务由区块链对等体支持。但是,客户端组织不必为该通知而信任对等体的固定子集。示例性实施例既适用于无需许可的区块链网络又适用于经许可的区块链网络。本质上,示例性实施例可将“警惕性(vigilance)”外包给区块链通知者,即,当发生与业务过程对应的相关事件时通知各方的区块链对等体。注意,任何一方都无法与通知者串通。
根据示例性实施例,如下实现去信任通知服务:
-发送者不能识别监控交易的通知者,因此它们不能串通以欺骗接收者;
-接收者不能识别监控交易的通知者,因此它们不能串通以欺骗发送者;以及
-通知者仅在交易提交后才能够识别关注的当事方,因此通知者将无法与关注的当事方串通以欺骗另一方。
根据示例性实施例,在区块提交时为区块中的每个交易选择通知节点(即,选择随机对等体作为每个交易的通知者),而不是为每个客户端或业务过程选择通知者。记录在区块链中的交易可与其他方关注的与特定业务活动相关的事件相对应。在一个实施例中,通知者选择是随机的但是可验证的。这可确保作弊方(例如,发送者或接收者)可能不会猜测到该通知者,因为它是随机的。***可验证该通知者确实是正确的通知者(即,生成消息的通知者)。对通知者的选择可在交易提交时进行。这可确保作弊方(例如,发送者或接收者)在递交交易之前不知道通知者是谁。因此,潜在的作弊者没有时间串通和欺骗另一方。通知者选择应包括多个候选者。这将确保作弊方(例如,发送者或接收者)与所有通知者串通的可能性极低,并且至少一个通知者总是发送推送通知。
根据示例性实施例,通知者服务节点具有足够大的通知者池,例如N个(为了使随机化有效)。通知者的数量可在区块链的条目中更新。每个新通知者在下列情况下变得活跃:
-将当前条目作为其索引;
-更新条目并将其递交给区块链。
对于在区块链网络中创建的每个区块,在每个通知者处:
-通知者读取该区块;
-在该区块上应用DetermineFn(),其确定该通知者是否是该区块中任何递交的交易的指定通知者;
-如果DetermineFn()指示该通知者负责生成推送通知,则通知者向所有关注方(即,发送者和接收者)发送推送通知。
各方在接收到通知后可检查递交的交易并采取必要的追索权(recourse)。为了确保伪匿名性(pseudo-anonymity),各方可提供随机的(用于公共区块链参与者的电子邮件、推特用户名(twitter handle),或公钥可寻址钱包等)地址来接收消息。根据一个实施例,DetermineFn()函数被实现为如下:
-取该区块的SHA256散列;
-使用该散列作为伪随机数生成器的种子;
-读取伪随机数生成器的前K个条目,并检查其索引是否存在于所生成的条目中(K=该区块中的交易的数量);
-如果不存在该条目,则忽略;
-否则,对于该区块中的每个关闭交易(closure-transaction),向所涉及的各方发送消息。
区块链中的下一个区块是真正随机的,并且可从多个来源访问,因此很难篡改。作弊方无法事先猜测,因此该区块的SHA256散列也是随机的。可使用伪随机生成器,因此,所有通知者都可生成相同的输出。在一个实施例中,伪随机生成器可在诸如英特尔TMSGX的受信任的计算平台上运行以确保通知者不作弊。在另一个实施例中,伪随机生成器可在所有通知者都咨询的受信任的甲骨文(oracle)服务中运行。可为每个交易指定一个以上的通知者,因此,通知者中的至少一个通知者发送推送通知的可能性很高。通知者的数量可能会大大增加,以确保消息传递的接近统计确定性(near statistical certainty)。由于通知***需要可达地址来发送信息,为了确保(伪)匿名性,各方可使用不可链接的随机地址(例如,用于公共区块链参与者的随机电子邮件ID、推特用户名(twitter handle),或公钥可寻址钱包等)。
在一个实施例中,传递的通知可使得能够基于发生在一个区块链中的特定交易来触发另一个区块链中的交易。
在另一个实施例中,传递的通知可使一个或多个支付渠道能够工作而没有串通。这种支付渠道的示例包括(但不限于)闪电网络(Lightning Network)、Raiden、Plasma等。
在另一个实施例中,传递的通知可启用对区块链外业务过程的动作。
在又一个实施例中,消息可受到未直接受事件影响但可能具有某些第三级(间接)利益的各方关注。例如,负责货物运输的第三站的货运操作员可能会关注在第一站中被延误的货物。
图1示出了根据示例实施例的用于区块链网络中的去信任通知服务的逻辑网络图。
参考图1,示例网络100包括连接到通知者服务节点107和用户节点105(即,发送者和接收者节点)的通知者节点102。通知者节点102可连接到区块链106,该区块链106具有用于存储交易110的账本108。尽管该示例仅详细描述了一个通知者节点102,但是多个这样的节点可被连接到区块链106并且可被通知者服务节点107选择。应当理解,通知者节点102可包括附加组件,并且可在不脱离本文公开的通知者节点102的范围的情况下移除和/或修改本文描述的一些组件。通知者节点102可以是计算设备或服务器计算机等,并且可包括处理器104,该处理器可以是基于半导体的微处理器、中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或另一硬件设备。尽管示出了单个处理器104,但是应该理解,在不脱离通知者节点102***的范围的情况下,通知者节点102可包括多个处理器、多个核等。
通知者节点102还可包括非暂时性计算机可读介质112,非暂时性计算机可读介质112可具有存储在其上的可由处理器104执行的机器可读指令。机器可读指令的示例被示为114-120,并且将在下面进一步讨论。非暂时性计算机可读介质112的示例可包括包含或存储可执行指令的电子、磁性、光学或其它物理存储设备。例如,非暂时性计算机可读介质112可以是随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、硬盘、光盘或其它类型的存储设备。
处理器104可获取、解码和执行机器可读指令114以连接到被配置成指定通知者节点的通知者服务节点。如上所述,区块链账本108可存储交易110的区块。区块链106网络可被配置成使用一个或多个智能合约来管理多个参与节点的交易。通知者节点102可向用户节点105提供推送通知。处理器104可获取、解码和执行机器可读指令116,以从通知者服务节点107接收从区块链106的账本108读取区块的通知。处理器104可获取、解码和执行机器可读指令118以在该区块上应用函数以确定该通知者节点102是否是该区块中至少一个已递交的交易的指定通知者。处理器104可获取、解码和执行机器可读指令120以响应于确定通知者节点102是指定通知者,向与该区块相关联的交易中所涉及的用户节点105发送推送通知。
图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,交易流程可包括由应用程序客户端节点260发送给背书对等节点281的交易提议291。背书对等体281可验证客户端签名并执行链码功能以发起交易。输出可包括链码结果、在链码(读取集)中读取的一组密钥/值版本、以及被写入链码(写入集)的一组密钥/值。如果交易提议被批准,则提议响应292连同背书签名被一起发送回客户端260。客户端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广播交易提议和响应。交易可包含读取/写入集、背书对等体的签名和信道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。参考图4A,方法400可包括以下描述的一个或多个步骤。
图4A示出了由通知者节点102(参见图1)执行的示例方法的流程图。应该理解的是,图4中描绘的方法400可包括附加操作,并且在不脱离方法400的范围的情况下,可删除和/或修改其中描述的一些操作。出于说明目的,方法400的描述也参考图1中所描绘的特征进行。特别地,通知者节点102的处理器104可执行方法400中包括的一些或全部操作。
参考图4A,在框412处,处理器104可连接到被配置成指定通知者节点的通知者服务节点。在框414处,处理器104可从通知者服务节点接收从区块链的账本中读取区块的通知。在框416处,处理器104可在该区块上应用函数以确定通知者节点是否是该区块中至少一个已递交的交易的指定通知者。在框418,处理器104可响应于确定通知者节点是指定通知者而向与该区块相关联的交易中所涉及的用户节点发送推送通知。
图4B示出了根据示例实施例的在区块链网络中的去信任通知的示例方法的流程图450。参考4B,方法450还可包括以下步骤中的一个或多个。在框452,处理器104可检测在区块链上该区块的基于条目的数据。在框454,处理器104可将基于条目的数据分配为通知者节点的索引。在框456,处理器104可应用函数来获得该区块的散列。在框458,处理器104可使用该区块的散列作为伪随机数生成器的种子。在框460,处理器104可读取伪随机数生成器的前K个条目,以确定在前K个条目中是否存在通知者的索引。注意,K是该区块中的交易的数量。在框462,如果在前K个条目中存在通知者的索引,则处理器104可向交易中所涉及的用户节点发送消息。
图5A示出了根据示例实施例的包括被配置成执行各种操作的物理基础设施510的示例***500。参考图5A,物理基础设施510包括模块512和模块514。模块514包括区块链520和智能合约530(其可驻留在区块链520上),其可执行任何示例实施例中包括的(模块512中的)操作步骤508中的任何操作步骤。步骤/操作508可包括所描述或描绘的实施例中的一个或多个实施例,并且可表示从一个或多个智能合约530和/或区块链520写入或读取的输出或写入信息。物理基础设施510、模块512、以及模块514可包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块512和模块514可以是相同的模块。
图5B示出了根据示例实施例的被配置成执行各种操作的另一示例***540。参考图5B,***540包括模块512和模块514。模块514包括区块链520和智能合约530(其可驻留在区块链520上),其可执行任何示例实施例中包括的(模块512中的)操作步骤508中的任何操作步骤。步骤/操作508可包括所描述或描绘的实施例中的一个或多个实施例,并且可表示从一个或多个智能合约530和/或区块链520写入或读取的输出或写入信息。物理基础设施510、模块512、以及模块514可包括一个或多个计算机、服务器、处理器、存储器、和/或无线通信设备。此外,模块512和模块514可以是相同的模块。
图5C示出了根据示例实施例的被配置成利用缔约方之间的智能合约配置的示例***以及被配置成在区块链上实施智能合约条款的中介服务器。参考图5C,配置550可表示由智能合约530驱动的通信会话、资产转移会话或过程或进程,该智能合约530明确地标识一个或多个用户设备552和/或556。智能合约执行中的执行、操作和结果可由服务器554管理。智能合约530的内容可要求由作为智能合约交易的参与者的实体552和556中的一个或多个进行数字签名。智能合约执行的结果可作为区块链交易被写入区块链520。智能合约530驻留在区块链520上,该区块链520可驻留在一个或多个计算机、服务器、处理器、存储器、和/或无线通信设备上。
图5D示出了根据示例实施例的包括区块链的***560。参考图5D的示例,应用编程接口(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递交交易。客户端可执行从任何来源接收的指令以在区块链622上制定活动。作为示例,客户端可以是代表请求者行动的应用程序,该请求者例如是针对区块链提出交易的设备、个人或实体。多个区块链对等体(例如,区块链节点611、612和613)可维持区块链网络的状态以及分布式账本620的副本。在区块链网络中可存在不同类型的区块链节点/对等体,包括背书对等体和提交对等体,背书对等体模拟和背书由客户端提议的交易,提交对等体验证背书,使交易有效,并将交易提交到分布式账本620。在此示例中,区块链节点611、612和613可执行背书者节点、提交者节点或二者的角色。
分布式账本620包括以区块为单位存储不可篡改的排序记录的区块链,以及维持区块链622的当前状态的状态数据库624(当前世界状态)。每个信道可存在一个分布式账本620,并且每个对等体针对它们是其成员的每个信道,维持它本身的分布式账本620的副本。区块链622是交易日志,被构造为散列链接的区块,其中每个区块包含具有N个交易的序列。区块可包括各种组成部分,诸如图6B所示。可通过在当前区块的区块头中添加前一区块头的散列来生成区块的链接(由图6A中的箭头所示)。以这种方式,区块链622上的所有交易被排序,并以密码链接在一起,以防止在不破坏散列链接的情况下篡改区块链数据。此外,由于该链接,区块链622中的最新区块表示在其之前的每个交易。区块链622可存储在对等文件***(本地或附加存储)上,该对等文件***支持仅附加的区块链工作负载。
区块链622的当前状态和分布式账本622可存储在状态数据库624中。这里,当前状态数据表示区块链622的链交易日志中曾经包括的所有密钥的最新值。链码调用针对状态数据库624中的当前状态执行交易。为了使这些链码交互非常高效,所有密钥的最新值都存储在状态数据库624中。状态数据库624可将索引视图包括到区块链622的交易日志中,因此状态数据库624可随时从链中重新生成。状态数据库624可在交易被接受之前在对等体启动时自动恢复(或在需要时生成)。
背书节点从客户端接收交易,并基于模拟结果背书该交易。背书节点持有模拟交易提议的智能合约。当背书节点背书交易时,背书节点创建交易背书,该交易背书是来自背书节点的对客户端应用程序的签名响应,其指示了模拟交易的背书。背书交易的方法取决于可在链码中指定的背书策略。背书策略的一个示例是“大多数背书对等体必须背书交易”。不同的信道可有不同的背书策略。客户端应用程序向排序服务610转发所背书的交易。
排序服务610接受所背书的交易,将它们排序为区块,并将该区块递送给提交对等体。例如,当已经达到交易的阈值,计时器超时或其它条件时,排序服务610可发起新区块。在图6A的示例中,区块链节点612是提交对等体,其已接收新数据区块630以用于将新数据区块存储在区块链620上。区块链中的第一个区块可被称为创世区块,其包括关于区块链、其成员、存储在其中的数据等的信息。
排序服务610可由排序者集群组成。排序服务610不处理交易、智能合约、或维护共享账本。而是,排序服务610可接受所背书的交易并指定将那些交易提交给分布式账本620的顺序。区块链网络的体系结构可被设计为使得“排序”的特定实现(例如,Solo、Kafka、BFT等)成为可插拔组件。
交易以一致的顺序被写入分布式账本620。交易的顺序被制定为确保对状态数据库624的更新在它们被提交给网络时是有效的。与在其中通过解决密码难题或挖掘进行排序的加密货币区块链***(例如,比特币等)不同,在本示例中,分布式账本620的参与者可选择最适合该网络的排序机制。
当排序服务610初始化新数据区块630时,可向提交对等体(例如,区块链节点611、612和613)广播新数据区块630。作为响应,每个提交对等体通过检查以确保读取集和写入集仍与状态数据库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内的到前一区块(例如,在图6A中的区块链622上)的链接。特别地,区块头640可包括前一区块头的散列。区块头640还可包括唯一区块编号,新数据区块630的区块数据650的散列等。新数据区块630的区块编号可以是唯一的,并且可以以各种顺序分配,例如从零开始的递增/相继顺序。
区块数据650可存储记录在新数据区块630内的每个交易的交易信息。例如,交易数据可包括以下中的一个或多个:交易类型,版本,时间戳,分布式账本620的信道ID,交易ID,时期(epoch),有效载荷可见性,链码路径(部署tx),链码名称,链码版本,输入(链码和功能),客户端(创建者)标识(诸如公钥和证书),客户签名,背书者的身份,背书者签名,提议的散列,链码事件,响应状态,名称空间,读取集(交易所读取的密钥和版本的列表等),写入集(密钥和值的列表等),开始密钥,结束密钥,密钥列表,默克尔树查询摘要(Merkeltree query summary)等。可针对N个交易中的每一个存储交易数据。
在一些实施例中,区块数据650还可存储新数据662,该新数据662将附加信息添加到区块链622中的散列链接的区块链。附加信息包括本文所描述或描绘的步骤、特征、过程和/或动作中的一个或多个。因此,新数据662可存储在分布式账本620上的不可篡改的区块日志中。存储这种新数据662的一些益处反映在本文公开和描绘的各种实施例中。虽然在图6B中,新数据662被描绘在区块数据650中,但是新数据662也可位于区块头640或区块元数据660中。
区块元数据660可存储元数据的多个字段(例如,作为字节阵列等)。元数据字段可包括在区块创建时的签名、对最后一个配置区块的引用、识别区块内的有效交易和无效交易的交易过滤器、对区块进行排序的排序服务的所持续的最后偏移等。签名、最后一个配置区块、和排序者元数据可由排序服务610添加。同时,区块的提交者(例如区块链节点612)可基于背书策略、读取/写入集的验证等来添加有效性/无效性信息。交易过滤器可包括大小等于区块数据650中的交易数量的字节阵列和标识交易是否有效/无效的验证码。
图6C示出了根据本文所述实施例的用于数字内容的区块链670的实施例。数字内容可包括一个或多个文件和相关联的信息。文件可包括媒体、图像、视频、音频、文本、链接、图形、动画、网页、文档、或其它形式的数字内容。区块链的不可篡改的仅附加的方面可作为保护数字内容的完整性、有效性和真实性的保障,使其适用于应用可采性规则的法律程序或考虑证据或以其它方式使数字信息的展示和使用受关注的其它设定。在这种情况下,数字内容可被称为数字证据。
区块链可以以各种方式形成。在一个实施例中,数字内容可被包括在区块链自身中并且可从区块链自身访问。例如,区块链的每个区块可沿着相关联的数字内容存储引用信息的散列值(例如,头、值等)。然后散列值和相关联的数字内容可被加密在一起。因此,可通过解密区块链中的每个区块来访问每个区块的数字内容,并且每个区块的散列值可被用作引用前一区块的基础。这可被描述为如下:
区块1 区块2 …… 区块N
散列值1 散列值2 散列值N
数字内容1 数字内容2 数字内容N
在一个实施例中,数字内容可不被包括在区块链中。例如,区块链可存储每个区块的内容的加密散列,而没有任何数字内容。数字内容可与原始文件的散列值相关联地存储在另一存储区域或存储器地址中。其它存储区域可以是用于存储区块链的同一存储设备,或者可以是不同的存储区域,或者甚至是单独的关系数据库。可通过获得或查询感兴趣的区块的散列值,以及然后在存储区域中查找具有与实际数字内容相对应地存储的值的散列值,来引用或访问每个区块的数字内容。该操作例如可由数据库关守(gatekeeper)执行。这可被描述为如下:
在图6C的示例实施例中,区块链670包括在有序序列中以密码链接的多个区块6781,6782,……,678N,其中N≥1。用于链接区块6781,6782,……,678N的加密术可以是多个有密钥散列函数或无密钥散列函数中的任一个。在一个实施例中,区块6781,6782,……,678N服从散列函数,该散列函数从基于区块中的信息的输入中产生n位字母数字输出(其中n是256或另一个数字)。此类散列函数的示例包括但不限于:SHA型(SHA代表安全散列算法)算法,Merkle-Damgard算法,HAIFA算法,默克尔树(Merkle-tree)算法,和基于随机数(nonce-based)的算法。在另一实施例中,可通过与散列函数不同的函数来以密码链接区块6781,6782,……,678N。为了说明的目的,参考诸如SHA-2的散列函数进行以下描述。
区块链中的每个区块6781,6782,……,678N包括头、文件版本、和值。由于区块链中的散列法(hashing),每个区块的头和值都不同。在一个实施例中,值可被包括在头中。如下面更详细描述的,文件的版本可以是原始文件或原始文件的不同版本。
区块链中的第一个区块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至672N中的每一个头包括紧接的前一区块的散列值。该紧接的前一区块的散列值可只是前一区块的头的散列,也可以是整个前一区块的散列值。通过在剩余的每个区块中包括前一区块的散列值,追溯可逐个区块地从第N个区块返回到创世区块(以及相关联的原始文件)来执行,如箭头680所示,以建立可审计且不可篡改的监管链。
其它区块中的头6722至672N中的每一个还可包括其它信息,例如版本号、时间戳、随机数、根信息、难度级别、共识协议、和/或与对应文件和/或一般的区块链相关联的其它参数或信息。
例如取决于所执行的处理类型,其它区块中的文件6742至674N可等于原始文件,或者可以是创世区块中原始文件的修改版本。所执行的处理类型可能因区块而异。该处理可涉及例如在前一区块中对文件的任何修改,诸如编辑信息或以其它方式改变文件的内容,从文件中取走信息,或向文件添加或附加信息。
附加地或可替代地,该处理可涉及仅从前一区块复制文件、改变文件的存储位置、从一个或多个先前区块分析文件、将文件从一个存储或存储器位置移动到另一存储或存储器位置、或者关于区块链的文件和/或其相关联的元数据执行动作。涉及分析文件的处理可包括例如附加、包括或以其它方式关联与文件相关联的各种分析、统计或其它信息。
其它区块中的其它区块6762至676N中的每个区块的值是唯一值,并且由于所执行的处理而全都不同。例如,任何一个区块中的值都对应于前一区块中值的更新版本。更新被反映在分配该值的区块的散列中。因此,区块的值提供了对在区块中执行了哪些处理的指示,并且还允许通过区块链追溯回到原始文件。这种追踪确认了整个区块链中文件的监管链。
例如,考虑如下情况:为了保护文件中所示的人员的身份而对前一区块中的文件的一部分进行编辑,遮挡或打上马赛克的情况。在这种情况下,包括已编辑文件的区块将包括与已编辑文件相关联的元数据,例如,执行编辑的方式、执行编辑的人员、进行编辑的时间戳等。元数据可被散列化以形成值。因为该区块的元数据与被散列化以形成前一区块中的值的信息不同,所以这些值互不相同,并且在解密时可被恢复。
在一个实施例中,当以下中的任何一个或多个发生时,前一区块的值(例如,所计算的新的散列值)可被更新以形成当前区块的值。在该示例实施例中,可通过对以下所述的信息中的全部或部分信息进行散列化来计算新的散列值。
a)如果文件已经以任何方式被处理(例如,如果文件已被编辑、复制、更改、访问,或已采取其它措施),则新的SHA-2计算的散列值
b)文件的新存储位置
c)与文件相关联的识别的新元数据
d)将文件的访问权或控制权从一个区块链参与者转移到另一个区块链参与者。
图6D示出了根据一个实施例的可表示区块链790中的区块的结构的区块的实施例。区块(区块i)包括头672i、文件674i、和值676i。
头672i包括前一区块(区块i-1)的散列值和附加引用信息,该附加引用信息例如可以是本文讨论的任何类型的信息(例如,头信息包括引用、特性、参数等)。当然,除创世区块外,所有区块都引用前一区块的散列。前一区块的散列值可以仅是前一区块中头的散列,或者是前一区块中所有或部分信息的散列,包括文件和元数据。
文件674i包括多个数据,例如依次是数据1、数据2、……、数据N。数据被标记有元数据元数据1、元数据2、……、元数据N,这些元数据描述了与数据相关联的内容和/或特性。例如,每个数据的元数据可包括指示数据的时间戳,处理数据的信息,指示人员或数据中描述的其它内容的关键字,和/或有助于作为整体建立文件的有效性和内容的其它特征,以及特别地,例如,如以下结合实施例所描述的,其使用数字证据。除元数据外,每个数据可被标记有对前一数据的引用REF 1、REF 2、…、REF N,以防止篡改,文件中的空白,以及通过文件的顺序引用。
在元数据被分配给数据(例如,通过智能合约)之后,不能在不改变散列的情况下改变元数据,其可以针对无效性容易地识别。因此,元数据创建信息的数据日志,该数据日志可被访问以供区块链中的参与者使用。
值676i是散列值或基于先前讨论的任何类型的信息计算的其它值。例如,对于任何给定区块(区块i),该区块的值可被更新以反映对该区块执行的处理,例如,新的散列值、新的存储位置、相关联文件的新元数据、控制权或访问权的转移、标识符或将要添加的其它动作或信息。尽管示出了每个区块中的值与文件和头的数据的元数据分离,但是在另一实施例中,该值可部分或全部基于该元数据。
在形成区块链670之后,在任何时间点,可通过向区块链查询跨区块的值的交易历史来获得文件的不可篡改的监管链。该查询或追踪过程可从解密最近包括的区块(例如,最后一个(第N个)区块)的值开始,然后继续解密其它区块的值,直到到达创世区块为止,并且恢复原始文件。解密还可涉及在每个区块处解密头和文件以及相关联的元数据。
基于在每个区块中发生的加密的类型来执行解密。这可涉及私钥、公钥、或公钥-私钥对的使用。例如,当使用非对称加密时,网络中的区块链参与者或处理器可使用预定算法来生成公钥和私钥对。公钥和私钥通过某种数学关系相互关联。可公开分布公钥,以用作接收来自其它用户的消息的地址,例如,IP地址或家庭地址。私钥是保密的,并用于对发送给其它区块链参与者的消息进行数字签名。签名被包括在消息中,以便接收者可以使用发送者的公钥进行验证。这样,接收者可确定只有发送者可以发送此消息。
生成密钥对可类似于在区块链上创建账户,但是不必实际在任何地方进行注册。此外,在区块链上执行的每个交易由发送者使用其私钥进行数字签名。该签名确保只有账户所有者可追踪和处理(如果在智能合约确定的许可范围内)区块链中的文件。
图7示出了示例***700,该示例***700支持本文描述和/或描绘的一个或多个示例实施例。***700包括计算机***/服务器702,其可与许多其它通用或专用计算***环境或配置一起操作。可适于与计算机***/服务器702一起使用的众所周知的计算***、环境和/或配置的示例包括但不限于:个人计算机***、服务器计算机***、瘦客户机、厚客户机、手持或膝上型设备、多处理器***、基于微处理器的***、机顶盒、可编程消费电子产品、网络PC、小型计算机***、大型计算机***、以及包括任何上述***或设备的分布式云计算环境等。
计算机***/服务器702可在由计算机***执行的计算机***可执行指令(诸如程序模块)的一般上下文中描述。通常,程序模块可包括执行特定任务或实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机***/服务器702可在分布式云计算环境中实践,在分布式云计算环境中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可位于包括存储器存储设备的本地和远程计算机***存储介质二者中。
如图7所示,云计算节点700中的计算机***/服务器702以通用计算设备的形式表现。计算机***/服务器702的组件可以包括但不限于:一个或者多个处理器或者处理单元704,***存储器706,连接不同***组件(包括***存储器706和处理单元704)的总线。
总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
计算机***/服务器702典型地包括多种计算机***可读介质。这些介质可以是任何能够被计算机***/服务器702访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。在一个实施例中,***存储器706实现其它附图的流程图。***存储器706可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)710和/或高速缓存存储器712。计算机***/服务器702可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***714可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线相连。存储器706可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块718的程序/实用工具716,可以存储在例如存储器706中,这样的程序模块718包括——但不限于——操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块718通常执行本发明所描述的实施例中的功能和/或方法。
如所属领域的技术人员将了解的,本申请的各方面可体现为***、方法、或计算机程序产品。因此,本申请的各方面可采用完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或者组合软件和硬件方面的实施例的形式,这些实施例在此通常可被称为“电路”、“模块”或“***”。此处,本申请的各方面可采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有体现在其中的计算机可读程序代码。
计算机***/服务器702也可以与一个或多个外部设备720(例如键盘、指向设备、显示器722等)通信,还可与一个或者多个使得用户能与该计算机***/服务器702交互的设备通信,和/或与使得该计算机***/服务器702能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口724进行。并且,计算机***/服务器702还可以通过网络适配器726与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器726通过总线与计算机***/服务器702的其它模块通信。应当明白,尽管图中未示出,可以结合计算机***/服务器702使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
尽管在附图中示出了***、方法和非暂态计算机可读介质中的至少一个的示例性实施例,并且在前面的详细描述中对其进行了描述,但是应该理解,本申请不限于所公开的实施例,而是能够进行如下权利要求所述和定义的许多重排、修改和替换。例如,各种附图中的***的能力可由在此描述的一个或多个模块或组件来执行或以分布式体系结构来执行,并且可包括发射机、接收机或二者的对。例如,由各个模块执行的全部或部分功能可由这些模块中的一个或多个执行。此外,在此描述的功能可在不同时间并且与模块或组件内部或外部的各种事件相关地执行。此外,在各个模块之间发送的信息可经由以下中的至少一个在模块之间发送:数据网络、因特网、语音网络、因特网协议网络、无线设备、有线设备和/或多个协议。此外,可直接和/或经由一个或多个其它模块发送或接收由任何模块发送或接收的消息。
本领域技术人员将理解,“***”可被体现为个人计算机、服务器、控制台、个人数字助理(PDA)、蜂窝电话、平板计算设备、智能手机或任何其它合适的计算设备、或设备的组合。将上述功能呈现为由“***”执行并不旨在以任何方式限制本申请的范围,而是旨在提供许多实施例的一个示例。实际上,在此公开的方法、***和装置可以以与计算技术一致的本地化和分布式形式实现。
应当注意,本说明书中描述的一些***特征已经作为模块呈现,以便更具体地强调它们的实现独立性。例如,模块可被实现为硬件电路,该硬件电路包括:定制的超大规模集成(VLSI)电路或门阵列,诸如逻辑芯片的现成半导体、晶体管,或其它分立组件。模块还可在可编程硬件设备中实现,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等。
模块还可至少部分地以软件实现,以由各种类型的处理器执行。所识别的可执行代码单元可例如包括计算机指令的一个或多个物理或逻辑块,其可例如被组织为对象、过程或功能。然而,所识别的模块的可执行文件不需要物理地位于一处,而是可包括存储在不同位置的不同指令,当该指令在逻辑上连接在一起时,该指令包括模块并实现针对模块的所述目的。此外,模块可被存储在计算机可读介质上,该计算机可读介质可以是例如硬盘驱动器、闪存设备、随机存取存储器(RAM)、磁带,或用于存储数据的任何其它此类介质。
实际上,可执行代码的模块可以是单个指令或多个指令,并且甚至可以分布在多个不同的代码段上,分布在不同的程序中,以及跨多个存储器设备分布。类似地,操作数据可在此在模块内被识别和示出,并且可以以任何合适的形式体现并且被组织在任何合适类型的数据结构内。操作数据可作为单个数据集收集,或者可分布在不同位置上(包括分布在不同存储设备上),并且可以至少部分地仅作为***或网络上的电子信号存在。
容易理解的是,如在本文附图中一般描述和说明的,本申请的组件可以以各种不同的配置来布置和设计。因此,实施例的详细描述不旨在限制所要求保护的本申请的范围,而仅仅代表本申请的所选实施例。
本领域普通技术人员将容易理解,可以以不同顺序的步骤和/或使用与所公开的配置不同的配置中的硬件元件来实践上述内容。因此,尽管已经基于这些优选实施例描述了本申请,但是对于本领域技术人员来说显而易见的是,某些修改、变化和替代构造将是显而易见的。
虽然已经描述了本申请的优选实施例,但是应该理解,所描述的实施例仅是说明性的,并且当用所附权利要求的等同物和修改(例如,协议、硬件设备、软件平台等)的整个范围来考虑时,本申请的范围仅由所附权利要求限定。
Claims (9)
1.一种用于去信任通知服务的方法,包括:
由通知者节点连接到通知者服务节点,所述通知者服务节点被配置成指定所述通知者节点;
由所述通知者节点从所述通知者服务节点接收从区块链的账本中读取区块的通知;
由所述通知者节点在所述区块上应用函数以确定所述通知者节点是否是所述区块中至少一个已递交的交易的指定通知者;以及
响应于确定所述通知者是所述指定通知者,由所述通知者节点向与所述区块相关联的交易中所涉及的用户节点发送推送通知。
2.根据权利要求1所述的方法,进一步包括:在所述区块链上检测所述区块的基于条目的数据。
3.根据权利要求2所述的方法,进一步包括:将所述基于条目的数据分配为所述通知者节点的索引。
4.根据权利要求3所述的方法,进一步包括:应用所述函数以获得所述区块的散列。
5.根据权利要求4所述的方法,进一步包括:使用所述区块的所述散列作为伪随机数生成器的种子。
6.根据权利要求5所述的方法,进一步包括:读取所述伪随机数生成器的前K个条目,以确定在所述前K个条目中是否存在所述通知者的所述索引,其中,K是所述区块中的交易的数量。
7.根据权利要求6所述的方法,进一步包括:如果在所述前K个条目中存在所述通知者的所述索引,则向所述交易中所涉及的所述用户节点发送消息。
8.一种用于去信任通知服务的***,包括:
通知者节点的处理器;
存储器,在所述存储器上存储有机器可读指令,所述指令当由所述处理器执行时使所述处理器执行根据权利要求1至7中任一项所述的步骤。
9.一种包括指令的非暂时性计算机可读介质,所述指令在由处理器读取时使所述处理器执行根据权利要求1至7中任一项所述的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/376268 | 2019-04-05 | ||
US16/376,268 US11032355B2 (en) | 2019-04-05 | 2019-04-05 | Trustless notification service |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111797426A CN111797426A (zh) | 2020-10-20 |
CN111797426B true CN111797426B (zh) | 2024-02-02 |
Family
ID=72663286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010257798.3A Active CN111797426B (zh) | 2019-04-05 | 2020-04-03 | 一种用于去信任通知服务的方法和*** |
Country Status (2)
Country | Link |
---|---|
US (1) | US11032355B2 (zh) |
CN (1) | CN111797426B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020112484A1 (en) * | 2018-11-26 | 2020-06-04 | Kansas State University Research Foundation | Puf-ipa: a puf-based identity preserving lightweight authentication protocol using binary string shuffling |
US11507569B2 (en) * | 2019-05-20 | 2022-11-22 | Chia Network Inc. | Methods for extending a proof-of-space-time blockchain |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106464729A (zh) * | 2014-05-30 | 2017-02-22 | 苹果公司 | 代理推送 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6463446B1 (en) * | 1998-02-26 | 2002-10-08 | Sun Microsystems, Inc. | Method and apparatus for transporting behavior in an event-based distributed system |
US8620926B2 (en) * | 2008-01-14 | 2013-12-31 | International Business Machines Corporation | Using a hashing mechanism to select data entries in a directory for use with requested operations |
US9849364B2 (en) | 2016-02-02 | 2017-12-26 | Bao Tran | Smart device |
US20170323394A1 (en) * | 2016-05-09 | 2017-11-09 | Sharon Margaret Campione | Systems and methods for performing real-time forensic investigation of records for financial institutions and businesses |
BR112019015066A2 (pt) * | 2017-01-23 | 2020-06-02 | Kamran Hasan Syed | Sistema de conexões universais de bchain todos/tudo/toda parte |
US10424176B2 (en) * | 2017-09-27 | 2019-09-24 | Harman International Industries, Incorporated | AMBER alert monitoring and support |
US10476847B1 (en) * | 2017-12-08 | 2019-11-12 | Symbiont.Io, Inc. | Systems, methods, and devices for implementing a smart contract on a distributed ledger technology platform |
US20200034788A1 (en) * | 2018-07-24 | 2020-01-30 | Eugenio S. YNION, JR. | Method, system, apparatus, and program for real-time and online freight management |
-
2019
- 2019-04-05 US US16/376,268 patent/US11032355B2/en active Active
-
2020
- 2020-04-03 CN CN202010257798.3A patent/CN111797426B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106464729A (zh) * | 2014-05-30 | 2017-02-22 | 苹果公司 | 代理推送 |
Non-Patent Citations (1)
Title |
---|
发布区块链CNWW3 标准的高并发快速交易及交易验证体系模型;李东云等;《信息技术与网络安全》;第53-56页 * |
Also Published As
Publication number | Publication date |
---|---|
US20200322420A1 (en) | 2020-10-08 |
US11032355B2 (en) | 2021-06-08 |
CN111797426A (zh) | 2020-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111800268B (zh) | 用于区块链背书的零知识证明 | |
US11487886B2 (en) | Database private document sharing | |
CN115210741B (zh) | 部分有序的区块链 | |
CN112053157B (zh) | 灵活交易验证 | |
CN110674128B (zh) | 区块链的链上治理 | |
CN111666332B (zh) | 自动演进的数据库背书策略 | |
US11360946B2 (en) | Tracking data transfers | |
US11240003B2 (en) | Consent-based data management | |
CN111831740B (zh) | 对等体的同步 | |
CN111796968A (zh) | 受数据库交易保证的提交 | |
CN115211093A (zh) | 数据对象的有效阈值存储 | |
CN111881109B (zh) | 数据库可合并分类账 | |
US11457066B2 (en) | Splitting and merging of storages | |
CN111831739A (zh) | 数据库复合背书 | |
CN111698198B (zh) | 秘密生成和份额分发 | |
CN112052474A (zh) | 蓝光拷贝服务 | |
CN112035291A (zh) | 快照恢复 | |
US20210224405A1 (en) | Privacy-preserving document sharing | |
US11082215B2 (en) | Immutable broadcasting queues | |
CN111797426B (zh) | 一种用于去信任通知服务的方法和*** | |
CN111859411B (zh) | 用于区块链网络中的区块链的方法和*** | |
CN114981773A (zh) | 无冲突版本控制 | |
CN112052473A (zh) | 地理位置合规性 | |
US10970307B2 (en) | Information transparency control | |
US20210248271A1 (en) | Document verification |
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 |