CN115151934A - 平台服务验证 - Google Patents
平台服务验证 Download PDFInfo
- Publication number
- CN115151934A CN115151934A CN202180015933.6A CN202180015933A CN115151934A CN 115151934 A CN115151934 A CN 115151934A CN 202180015933 A CN202180015933 A CN 202180015933A CN 115151934 A CN115151934 A CN 115151934A
- Authority
- CN
- China
- Prior art keywords
- transaction
- event
- client
- data
- blockchain
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- 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/42—Confirmation, e.g. check or permission by the legal debtor of payment
-
- 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/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/36—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
-
- 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
-
- 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/12—Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
-
- 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
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本公开提出了用于验证与平台相关联的区块链事务的方法、设备和系统,所述平台向一个或更多个客户端提供与区块链相关联的多项服务。
Description
技术领域
本公开总体涉及用于实现与一个或更多个客户端的分布式分类账(即区块链)相关联的一项或更多项服务的平台的方法和系统。具体而言,本公开涉及但不限于提供对与一个或更多个客户端的区块链相关联的多个功能和应用程序的访问,例如事件流或机器可读合约的实现方式。
背景技术
在本文中,术语“区块链”涵盖所有形式的基于计算机的电子分布式分类账。这些分类账包括基于共识的区块链和事务链技术、许可和非许可的分类账、共享分类账、公共和私有区块链,及其变型。虽然已提出并开发了其他区块链实施方案,但是区块链技术最广为人知的应用是比特币分类账。为了方便和说明的目的,在本文中可能会提及比特币。但应注意,本公开不限于与落入本公开范围内的比特币区块链以及与任何类型的数字资产或数字资产的表示相关联的替代区块链实施方案和协议一起使用。术语“客户端”、“实体”、“节点”、“用户”、“发送方”、“接收方”、“支付方”、“收受方”在本文中可指计算资源或基于处理器的资源。在本文中,术语“比特币”可包括源自或基于比特币协议的任何版本或变型。术语“数字资产”可以指任何可转让的资产,诸如加密货币、表示至少一部分财产的代币、智能合同、许可证(即软件许可证)或媒体内容的DRM合约等。应当理解的是,贯穿本文使用的术语“数字资产”表示可能与价值相关联的商品,该价值可以作为事务中的支付从一个实体转移到另一实体或提供给另一实体。
区块链是一种点对点的电子分类账,其实现为基于计算机的去中心化的分布式系统,所述系统由区块组成,而区块又由事务(transaction)组成。每个事务是一种数据结构,所述数据结构对所述区块链系统中参与者之间的数字资产控制权的转移进行编码,并且包括至少一个输入和至少一个输出。每个区块都包含先前区块的哈希值,由此区块被链接在一起,以创建自所述区块链创建以来写入其中的所有事务的永久性的不可更改的记录。事务包括嵌入到其输入和输出中的小程序,称为脚本,这些脚本指定如何以及由谁访问所述事务的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。
为了将事务写入区块链,必须对其进行“验证”。网络节点(矿工)进行工作以确保每个事务均有效,而无效事务则被网络拒绝。安装在所述节点上的软件客户端通过执行其锁定和解锁脚本对未花费的事务输出(UTXO)执行此验证工作。如果所述锁定和解锁脚本的执行评估为TRUE,则所述事务有效,然后将所述事务写入所述区块链。因此,为了将事务写入所述区块链,所述事务必须:i)由接收所述事务的第一个节点进行验证——如果所述事务通过验证,则此节点将其中继到网络中的其他节点;ii)添加到由矿工建造的新区块中;iii)已开采,即,添加到过去事务的公共分类账中。
应当理解,矿工执行的工作的性质将取决于用于维护区块链的共识机制的类型。虽然工作量证明(PoW)与原始比特币协议相关联,但应当理解,可以使用其他共识机制,诸如股权证明(PoS)、委托股权证明(DPoS)、容量证明(PoC)、过去时间证明(PoET)、权威证明(PoA)等。不同的共识机制在节点之间的挖掘分布方式上有所不同,成功挖掘区块的几率取决于矿工的哈希能力(PoW)、矿工持有的加密货币的数量(PoS)、委托矿工持有的加密货币的数量(DPoS)、矿工存储加密难题的预定解决方案的能力(PoC)、随机分配给矿工的等待时间(PoET)等。通常,矿工会因挖掘区块而获得激励或奖励。例如,比特币区块链用新发行的加密货币(比特币)和与区块中的事务相关联的费用(事务费用)奖励矿工。对于比特币区块链,加密货币的发行量会随时间的推移而减少,其激励最终仅由事务费用组成。因此,可以理解,事务费用的处理是将数据提交到公共区块链(诸如比特币区块链)的底层机制的一部分。
如先前所提及的,给定区块中的每个事务对区块链系统参与者之间的数字资产控制权转移进行编码。数字资产不一定对应于加密货币。例如,数字资产可能与文档、图像、实体对象等的数字表示有关。向矿工支付加密货币和/或事务费用可能只是作为一种激励,通过执行必要的工作来维持区块链的有效性。与区块链相关联的加密货币可能是矿工的安全保障,区块链本身是主要与加密货币以外的数字资产相关的事务的账本,而区块链本身是主要与加密货币以外的数字资产相关的事务分类账。在某些情况下,参与者之间的加密货币转账可能由不同于和/或独立于使用区块链维护事务分类账的实体的实体来处理。
一旦作为UTXO存储在区块链中,用户就可将相关联资源的控制权转移到与另一事务中的输入相关联的另一地址。这种转移通常使用数字钱包完成,但实际上并非如此。该数字钱包可以是:设备;物理介质;程序;诸如台式机、笔记本电脑或移动终端等计算设备上的应用程序;或与诸如互联网等网络上的域相关联的远程托管服务。数字钱包存储公钥和私钥,并可用于:跟踪与用户相关联的资源、代币和资产等的所有权;接收或花费数字资产;转移可能与诸如加密货币、许可证、财产或其他类型的资源等数字资产相关的代币。
虽然区块链技术最广为人知的是用于实现加密货币,但数字企业家正在探索如何利用比特币所基于的加密安全系统和可存储在区块链上的数据来实现新的系统。如果区块链可以用于加密货币领域之外的自动任务和过程,则会非常有利。这种解决方案将能够发挥区块链的优势(例如,永久性防篡改事件记录、分布式处理等),同时其应用将更加广泛。
当前研究的一个领域是使用区块链实现“智能合约”。这些是设计成自动执行机器可读合约或协议条款的计算机程序。与以自然语言编写的传统合约不同,智能合约是机器可执行程序,它包括能够处理输入以产生结果的规则,然后使得根据这些结果执行动作。与区块链相关的另一关注领域是使用“代币”(或“彩色币”)来表示现实世界的实体,并通过区块链转移现实世界的实体。潜在的敏感或保密项目可以由无可辨别意义或价值的代币表示。因此,代币充当允许从区块链引用现实世界项目的标识符。
利用区块链的优点提供永久性防篡改事件记录时,上述示例或场景需要客户端、客户端实体、计算设备或与客户端相关联的终端,以包括或实现软件和/或硬件或处理器/模块,例如一种数字钱包,这种数字钱包用于实现用于管理数字资产以及管理由比特币中本聪愿景(BSV)区块链等使用的椭圆曲线数字签名算法(ECDSA)的加密密钥的功能。此外,客户端设备还需要能够实现区块链事务构建并能够访问BSV库。因此,客户端不仅需要包括实现此类功能的处理,还需要确保在能够利用区块链网络发送、接收和查看数据和/或数字资产之前,对此类流程实施适当的安全措施,其中所述数据和/或数字资产涉及智能合约或表示现实世界资产事务的代币。
因此,需要实现安全、低复杂度、用户友好、高效和稳健的技术,这些技术将允许任何客户端(无论在计算上是否复杂)能够以简单、快速、准确、可靠和安全的方式即时访问与所述区块链相关联的有用应用程序并与其交互,该方式在计算上和功能上不那么繁琐。更具体地,需要利用分布式分类账(区块链)技术,以及提高记录的安全性、透明度和可靠性的优点来为多个区块链相关服务或应用程序提供公共平台或接口,使任何客户端计算设备能够确保与该客户端相关联的任何数据、事件或数字资产能够被即时且安全地挖掘或轻松地写入区块链,从而提供其持久性防篡改和可审计记录,其可以根据需要创建、写入、更新、读取或查看。
现在已设计出这种改进的解决方案。本公开通过提出一种或更多种技术来解决上述技术问题,因此,与客户端相关联的数据或信息可以通过为与区块链相关联的一项或更多项服务提供应用程序编程接口(API)的方法、设备和系统来简单、安全且即时地写入区块链或从区块链获取,而无需此类客户端实现用于使用区块链的任何处理或功能,同时仍然能够利用与区块链相关联的所有优点。
发明内容
在第一方面,本公开提出了用于使用与应用程序编程接口(API)相关联的平台处理器来实现提供与区块链相关联的多项服务的平台的方法、设备和系统,所述平台处理器能够以服务的超文本传输协议(HTTP)传输协议格式接收客户端请求。进一步适当地验证所述客户端的身份和/或所述请求,确定所述请求的区块链服务的目的地址或端点,并且基于所述目的地址生成至少一个区块链事务以获取输出脚本。然后,以所述HTTP传输协议格式将基于所述输出脚本的结果发送到给定客户端。
在第二方面,本公开提出了用于基于来自客户端的HTTP请求并且涉及使用区块链实现的事件流ES来实现与所述客户端的所述区块链相关联的事务的数据写入服务的方法、设备和系统,其中所述事件流可以用于表示或跟踪有限状态机(FSM)。例如,该FSM可以是智能合约。确定所述区块链上的所述事件流ESn的当前状态,在所接收的请求中标识所述事件流ES的新事件或下一事件En+1,并通过为所述事件流ES创建区块链事务来处理所述新事件或下一事件En+1,所述区块链事务包括:与上一事务TX的事务输出相关联的输入;以及与表示所述新事件En+1的事件数据相关联的未花费输出UTXO。提交给所述区块链后,基于所述新事件En+1,将所述区块链上的所述事件流的所述当前状态更新为ESn+1。以HTTP传输协议格式提供与所述当前状态ESn+1相关联的结果。
在第三方面,本公开提出了用于提供、创建、更新和/或终止使用区块链实现的事件流以及创建与事件链相关联的事件的防篡改日志或记录的方法、设备和系统。在所接收的请求中标识所述事件流ES的事件En,所述事件En表示所述事件流ES的当前长度。如果n=0,使得En是创建所述事件流ES的第一个事件,则创建区块链事务,包括作为尘埃输出的未花费输出。如果0<n≤N(其中N是n的最终值或最大值),使得En是修改所述事件流ES的事件,则创建区块链事务,包括:第一输入,花费与所述事件流的先前的事务相关联的尘埃输出;作为所述当前事务的尘埃输出的未花费事务输出;以及与表示所述当前事件En的事件数据相关联的未花费事务输出。如果n=N,使得En是终止所述事件流ES的事件,则创建区块链事务,包括:第一输入,花费与所述事件流的先前的事务相关联的尘埃输出;未花费事务输出,与超过定义的尘埃输出限值的数字资产相关联。接收所述创建的事务和/或将所述创建的事务提交给所述区块链后,以HTTP传输协议格式提供与所述事务相关联的结果。在一些实施例中,所述事件流中的一个或更多个事务虽然被接受或作为给定事件流的有效事务,但不会立即提交给所述区块链。例如,所述事件流中的事务将在经过给定数量事务或时间之后,即在事件流中发生约25个事务之后提交给区块。所述事务可以存储在内存池中,直到经过所述给定数量事务或时间。在其他实施例中,事件流中的事务可能会即时提交给所述区块链。
在第四方面,本公开提出了用于使用原子区块链事务同步与区块链相关联的多个事件流的方法、设备和系统。
在第五方面,本公开提出了用于验证与平台相关联的区块链事务的方法、设备和系统,所述平台向一个或更多个客户端提供与区块链相关联的多项服务。
贯穿本说明书使用的词语“包含”或变体(例如“包括”或“包含”)将被理解为意味着包含规定的元素、整数、步骤或元素、整数或步骤组,但不排除任何其他元素、整数或步骤或元素、整数或步骤组。
附图说明
现将仅通过举例的方式并参考附图对本公开的各方面和实施例进行说明,其中:
图1是示出第一方面提供的与区块链相关联的多项服务的平台的概述的示意图;
图2a是示出第一方面提供的用于提供与区块链相关联的多项服务的平台的方法的流程图,所述方法由与所述平台相关联的一个或更多个处理器实现;
图2b是示出第一方面提供的用于访问与区块链相关联的多项服务的平台的方法的流程图,所述方法由与客户端相关联的一个或更多个处理器实现;
图3是示出第一方面提供的与区块链相关联的多项服务的平台的组件的示意图;
图4是示出第二方面提供的用于实现与区块链相关联的事务的数据写入服务的方法的流程图,所述方法由与平台服务相关联的一个或更多个处理器实现;
图5是示出第三方面提供的用于创建与区块链相关联的事件流的方法的流程图,所述方法由与平台服务相关联的一个或更多个处理器实现;
图6是示出第三方面提供的用于更新与区块链相关联的事件流的方法的流程图,所述方法由与平台服务相关联的一个或更多个处理器实现;
图7是示出第三方面提供的用于终止与区块链相关联的事件流的方法的流程图,所述方法由与平台服务相关联的一个或更多个处理器实现;
图8是示出第二方面或第三方面提供的用于访问与区块链相关联的事务的数据写入服务的方法的流程图,所述方法由与客户端相关联的一个或更多个处理器实现;
图9是示出第四方面提供的用于同步多个事件流的一个实施例所述的方法的流程图,所述方法由与平台服务相关联的一个或更多个处理器实现;
图10是示出第四方面提供的用于访问数据写入服务以同步与区块链相关联的事件流的方法的流程图,所述方法由与客户端相关联的一个或更多个处理器实现;
图11是示出根据第五方面的第一实施例的与区块链的服务平台相关联的数据的独立验证方法的流程图;
图12是示出根据第五方面的第二实施例的与区块链的服务平台相关联的数据的独立验证方法的流程图;
图13是示出根据第五方面的第三实施例的与区块链的服务平台相关联的数据的独立验证方法的流程图;
图14是示出可以实现本公开的各个方面和实施例的计算环境的示意图。
具体实施方式
虽然所附权利要求涉及下面详细描述的本公开的第五方面,但本公开提供了对第一方面至第四方面的详细讨论,以向读者提供对本公开的要求保护的方面和相关实施例的全面和完整的理解。
根据第一方面,本公开提供了一种用于提供与区块链相关联的多项服务的平台的计算机实现的方法,该平台被提供给多个客户端,该方法由与应用程序编程接口(API)相关联的平台处理器实现。
有利地,平台处理器API允许基于Web的交互界面,即在一些实施例中,其可以实现为一个或更多个客户端的Web服务,使得可以使用基于Web的服务的标准互联网通信协议通过互联网进行通信。例如,在一些实施例中,可以基于诸如TCP/IP等传输层协议来发送和接收诸如HTTP、HTTPS等应用层或客户端与服务器之间的层(在这种情况下为平台服务)中的HTTP消息或请求。在本公开中,对HTTP传输协议或HTTP API的引用也包括诸如TCP/IP、UDP、HTTPS等所有标准互联网通信协议。
在一些实施例中,平台处理器实现为HTTP API端点。在一些实施例中,平台处理器实现为表征状态转移(REST)端点。有利地,该API可以实现为REST端点,从而还允许客户端使用标准互联网或基于网络的协议(例如,HTTP或HTTPS)进行通信。
根据第一方面所述的方法包括以下步骤:从多个客户端中的给定客户端接收请求,该请求与多项服务中的给定服务有关,并且来自给定客户端的请求基于超文本传输协议(HTTP)传输协议格式。然后,基于确定客户端身份和/或请求有效,该方法包括:获取与给定服务相关联的目的地址。在一些实施例中,目的地址可以是IP地址或网络地址端点。例如,这可以是端点统一资源标识符(URI),并且可以包括Web服务器的统一资源定位符(URL),其中支付处理器或所请求的服务的一个或更多个其他实体(包括客户端)可以从该URL访问所请求的服务。
在一些实施例中,该目的地址可以是与平台API端点相同的端点。如果平台提供诸如主要服务或核心服务等此类所请求的服务,则可能会出现这种情况。在其他实施例中,如果存在由平台提供的多种不同类型的服务,且每种类型的服务由不同的处理器或Web服务器实现,则目的地址可以不同于平台API,平台API可以充当与平台相关联的其他处理器和Web服务器的主机服务器。在这种情况下,平台处理器包括多个处理器,或者与多个处理器相关联,每个处理器用于实现区块链上的多项服务中的给定服务,并且每个处理器与相应处理器唯一的特定目的地址或端点相关联。
根据第一方面所述的方法进一步包括以下步骤:基于与获取的目的地址对应的至少一个区块链事务,处理给定服务的请求,以获取输出脚本。在一些实施例中,输出脚本与和所请求的服务有关的数据相关联,或者所请求的服务的结果包括在UTXO中并且包括用于事务的此类数据或数字资产。
在第一方面,然后以HTTP或类似传输协议格式将与输出脚本相关联的该结果发送到给定(请求)客户端。
有利地,通过实现作为用于一个或更多个客户端的API提供的平台,根据本公开第一方面所述的方法允许与客户端相关联的一个或更多个处理器注册,或者使用平台处理器提供的Web服务向区块链写入或访问数据。与平台相关联的一个或更多个处理器可以使用基于标准的接口设计来实现所提供的一项或更多项服务,例如但不限于表征状态转移(REST),REST是用于开发Web服务和基于Web的交互的架构模式。在REST API的上下文中,资源可以定义为具有类型、关联数据、与其他资源的关系以及在其上操作的一组方法的对象。因此,有利地,提供由根据第一方面所述的平台处理器实现的平台或服务作为API实现方式,以访问比特币SV(BSV)区块链等区块链或分布式分类账(的状态)并触发可通过应用程序接口改变该状态的操作或功能,并且将其公开为REST API。换言之,与平台相关联的一个或更多个服务器或处理器可以被视为选择使用此类服务的一个或更多个客户端的REST端点。因此,有利地,客户端可以通过HTTP或类似互联网命令与平台服务通信。更有利地,对于任何所提供的服务,客户端不需要实现BSV、比特币、区块链知识、ECDSA或其他加密密钥管理库或事务构建软件(例如数字钱包软件等)。使用一个或更多个处理资源或用户终端的客户端仅可通过某些公知的认证技术进行注册以使用平台,该认证技术包括密码保护授权或标准公钥基础设施(PKI)等,用于验证客户端身份。然后,客户端应能够通过基本HTTP或类似格式与平台服务通信。
在一些实施例中,可以通过该平台提供的与区块链相关联的服务的一些示例包括:
-数据服务,用于将数据写入/提交给区块链,以改变区块链的状态;
-数据服务,用于读取/获取反映区块链的当前状态的数据;
-与简单支付验证相关联的服务,用于与区块链相关联的事务;
-与管理与区块链相关联的一个或更多个事件流和/或机器可读合约相关
联的服务;
-与管理数字钱包框架相关联的服务,用于多个客户端。
在实施例中,如果有多个处理器或Web服务器与根据第一方面所述的平台处理器相关联,则根据第一方面所述的方法进一步包括:提供应用程序编程接口(API)转换器的步骤,用于执行以下步骤:以HTTP传输协议格式从客户端接收请求;将所接收的请求转换为远程过程调用(RPC)格式;将RPC请求发送到多个处理器中的给定处理器,该给定处理器被配置用于实现所接收的请求中标识的服务。在反向流路径中,该实施例包括以RPC格式接收来自给定处理器的相关联的响应,并使用HTTP或类似传输协议来转换要发送到客户端的相应响应。
这是有利的,因为它允许客户端使用基于Web的平台API经由简单的HTTP来传送与区块链相关联的请求,并且无缝地提供与实现上述服务的任何节点或服务器的互操作性,但是这些节点或服务器不使用针对Web服务的互联网协议通信标准进行通信。该实施例中实现的API转换器不限于HTTPS到RPC的转换,反之亦然;或者就此而言,也不限于其他基于Web的协议到平台处理器支持的替代通信协议的转换,此类平台处理器实现上述服务、用于给定加密货币的网络或以其他方式可以设想的数字资产中的一个或更多个。在反向流路径中,根据第一方面所述的方法还包括:以RPC格式从相应处理器接收与对应的区块链事务相关联的响应,并且相应地使用HTTP转换相应响应以发送到客户端。因此,有利地,由平台处理器实现所提出的接口能够实现无缝通信,用于在客户端(收受者)和矿工使用不同的无线数据通信协议和机制时向区块链提交事务。
在第一方面的一些实施例中,来自客户端的所接收请求是HTTP GET或HTTP POST或HTTP PUT或HTTP PATCH请求,该HTTP GET或HTTP PUT或HTTP PATCH请求包括特定于给定客户端的客户端标识符以及该平台提供的多项服务中所请求的给定服务的服务标识符或与其相关联,如上所述。在一些实施例中,发送到客户端的结果是基于客户端标识符的HTTPPOST请求。
在一些实施例中,为了简化区块链事务的客户端寻址,已经存在一些机制,其中使用可记忆且用户更友好的别名而不是一个或更多个客户端实体的复杂公共地址。此类解决方案以nChain Holdings Limited的名义在申请号为16/384696的美国专利申请案和申请号为1907180.2的英国专利申请案中提出。这些文档陈述了基于别名的支付服务和相关协议,其称为bsvalias支付服务,其中别名用于目标寻址,而不是客户端实体的公共地址。此类系统中的别名通常与发送/接收客户端实体的域名相关联,并且可以是URI或电子邮件地址。因此,只要发送者或实体知道别名或者向发送者或实体提供别名,这对于bsvalias支付系统或基于别名的寻址机制就足够了。例如,可以使用保存在用于bsvalias或其他支付服务的公知URI或位置中的机器可读资源(例如,JavaScript对象表示法(JSON)文档)中提供的指令,将消息发送到客户端的别名。在本公开的一些实施例中,多个客户端中的一个或更多个客户端可以具有上述别名等别名来标识相应客户端。
在相关实施例中,根据第一方面所述的方法包括:基于客户端标识符以及与客户端标识符对应的记录核实客户端,该记录与平台处理器相关联。例如,此类记录可以在客户端登录或注册时创建并存储在平台处理器中或与平台处理器关联。然后,基于客户端的成功核实,该方法包括:基于服务标识符以及相应记录中包括的属性或设置,确定来自客户端的所接收请求是否有效。在一些实施例中,所述属性或设置可以指示是否允许给定客户端访问全部或部分所请求的服务。例如,可以在属性或设置中提供与客户端标识符相关联的一个或更多个级别的权限。例如,可以允许给定客户端请求服务以读取区块链上关于特定事件的数据,但不允许修改、删除或终止此类事件;而另一客户端可能具有与一项或更多项服务有关的所有操作的权限。
在一些实施例中,验证给定客户端的身份的步骤可以基于与客户端相关联的数字签名。包括与每个客户端相关联的私钥和公钥(或公共地址)的加密密钥对可用于验证对服务的请求确实源自给定客户端,即其中由私钥签名的数据只能使用对应的公钥进行恢复或核实。如果验证基于数字签名,则可以使用和实现标准公钥基础设施(PKI)技术。
在第一方面的一些实施例中,提供了一种用于访问由多个客户端中的给定客户端的一个或更多个处理器实现的多项服务的平台的计算机实现的方法,该方法包括以下步骤:获取或标识与和平台相关联的一个或更多个处理器相关联的应用程序编程接口(API)端点;以及发送与多项服务中的给定服务有关的请求,该请求包括给定客户端的客户端标识符以及所请求的给定服务的服务标识符或与之相关联。如上所述,使用超文本传输协议(HTTP)或类似传输协议格式来发送请求。该方法还包括:接收和与请求相关联的区块链事务的输出脚本有关的结果,所述结果以HTTP传输协议格式提供给客户端。
在第二方面,本公开提供了一种用于实现与区块链相关联的事务的数据写入服务的计算机实现的方法,该方法由与应用程序编程接口(API)相关联的平台处理器实现,以使客户端能够访问该服务以将数据写入区块链。根据第二方面所述的方法包括以下步骤:从客户端接收请求,该请求与使用区块链实现的事件流ES有关,来自客户端的请求基于超文本传输协议(HTTP)传输协议格式。在一些实施例中,事件流可以跟踪或表示为确定有限状态自动机(DFA)等有限状态机(FSM),FSM是公知的计算术语,表示具有有限数量状态的系统,并且可以在给定时间内仅处于一种状态,具有用于从一个阶段转换到下一个阶段的转换函数或触发事件。在一些实施例中,此类事件流可用于表示技术过程的控制手段或技术。在一些实施例中,事件流可以表示或跟踪与区块链上的机器可读合约或智能合约相关联的输入、状态和/或事件,其中,有利地,记录了该合约的过去状态和当前状态的不可变记录。在一些实施例中,从客户端接收的请求包括触发事件,以使得能够在与事件流相关联的智能合约中进行状态转换。
根据第二方面所述的方法包括以下步骤:确定事件流ESi=n的当前状态,其中,i是从0至N的整数,每个整数i表示事件流ES的给定状态,因此i=0表示创建的事件流ES,i=n表示区块链中处于当前状态的事件流ES,i=N表示事件流ES的最终状态。在一些实施例中,确定当前状态可以基于与事件流相关联的最新结果来指示当前状态,所述结果存储在区块链上或事件流的一个或更多个单独的链下存储资源中。这可以基于与事件流相关联的较早或先前区块链事务的标识符。如果没有标识事件流的先前状态,则这将导致确定当前状态为n=0,即要创建新事件流。在一些实施例中,当前状态也可以从区块链中检索或读取。这可以由如上所述的数据读取器执行,其可以是平台处理器提供的多项服务中的一项服务。
在根据第二方面所述的方法中,基于所接收的请求处理事件流ES的新事件En+1包括以下步骤:创建区块链事务TXn+1,区块链事务TXn+1包括与先前的事务TXn的事务输出(TXOn)相关联的输入以及与表示新事件En的事件数据相关联的未花费输出(UTXOn+1)。在一些实施例中,如果n=0,则不存在花费先前输出的输入。然而,可能存在表示与事件流ES相关联的数字资产的其他输入。然后,该方法包括将事务TXn+1提交给区块链。
提交后,将事件流的当前状态更新为基于提交的区块链事务,即基于新创建的事件En+1,将状态更新为ESi=n+1,使得ESi=n=ESn+1。在一些实施例中,更新的状态基于事件流中最新事务的未花费输出UTXOn+1中存在的数据。然后,该方法包括:基于事件流ESn+1的更新后的当前状态发送结果,该结果基于HTTP传输协议格式提供。
本公开的第二方面讨论了由平台处理器实现的数据写入服务的实现方式;或者,换言之,该实现方式使得能够实现写入与现实世界过程相关联的数据的功能,例如控制智能合约的状态。根据第二方面所述的平台处理器与第一方面中讨论的平台处理器相关联,其中,第二方面讨论了多项区块链服务中的一项,即用于将数据写入区块链以改变其当前状态。由于请求是通过平台的API接收和提供的,因此第二方面提供了与第一方面相关联的所有优点。此外,数据写入服务有利地允许一个或更多个客户端通过简单地从效果中提取触发条件或事件来实现区块链实现的智能合约的状态事务。因此,智能合约的各个阶段的不可变记录可以由根据第二方面所述的数据写入服务提供。
本公开的第三方面涉及根据第二方面所述的数据写入服务,如上文针对事件流提供的服务所讨论的。在本方面,提供了一种用于建立防篡改记录或日志的技术,或用于确认与事件流相关联的事件的顺序发生的证书。因此,在第三方面,本公开的方法提出了用于提供、创建、更新和/或终止使用区块链实现的事件流的方法、设备和系统,并自动创建与事件链相关联的事件的防篡改日志或记录。
在第三方面,本公开提供了一种用于实现与区块链相关联的事务的数据写入服务的计算机实现的方法,该方法由与应用程序编程接口(API)相关联的平台处理器实现,以使客户端能够访问该服务以将数据写入区块链。根据第三方面所述的方法包括以下步骤:从客户端接收请求,该请求与区块链上的事件流ES有关,来自客户端的请求基于超文本传输协议(HTTP)传输协议格式。
然后,在来自客户端的所接收请求中标识事件流ES的事件En。对于事件流ES,n表示事件流ES的当前长度。如果n=0,使得En是创建事件流ES的第一个事件,则为事件流ES创建第一区块链事务,包括作为尘埃输出的第一未花费输出。在本公开的区块链事务上下文中,区块链事务尘埃或简称“尘埃”被理解为数字资产或加密货币的可花费事务,该数字资产或加密货币的输出具有低价值或极小价值,即该价值可以远远小于在区块链中挖掘输出的费用。尘埃输出可以是可花费的加密货币或数字资产输出的最小值。在一些实施例中,与此类尘埃事务相关联的数字资产或加密流动资金(即,处理其输出中数字资产的最小值转移的那些数字资产或加密流动资金)可以由平台处理器提供或管理。换言之,本公开中提到的区块链事务的尘埃输出与其价值低于事务的价值限制的数字资产相关联,即,尘埃输出的价值可能低于花费此类事务可能需要的挖矿费等。
如果0<n<N(其中N是n的最终值或最大值),使得En是修改事件流ES的事件,则创建当前区块链事务,包括:第一输入,花费与事件流的先前的事务相关联的尘埃输出;第一未花费事务输出,作为当前事务的尘埃输出;以及最终未花费事务输出,与表示当前事件En的事件数据相关联。在一些实施例中,事件数据包括在数据载体元素中。这可以是事务的不可花费的OP-RETURN输出。在一些实施例中,当前区块链事务的最终未花费事务输出中的事件En的事件数据包括事件数据的哈希值。这有利地对事件流ES的事件数据内容进行保密。在一些实施例中,也可以包括盐值,该盐值是可以由平台处理器为与事件流相关联的每个事务随机生成的唯一值。在一些实施例中,所述事件数据的哈希值由平台处理器应用,从而有利地允许平台服务或处理器私下保存此类事件数据。在其他实施例中,所述事件数据的哈希值在包括在平台处理器接收的请求中之前由客户端设备应用。有利地,这使客户端能够在请求中私下保存事件或与事件相关联的数据,甚至不与平台共享事件或数据。在其他实施例中,最终未花费事务输出中的事件En的事件数据包括原始事件数据,该原始事件数据在写入或提交给区块链后在区块链上公开。
如果n=N,使得En是终止事件流ES的事件,则创建区块链事务,包括:第一输入,花费与事件流的先前的事务相关联的尘埃输出;第一未花费事务输出,与超过定义的尘埃输出限值(即,超过数字资产或加密货币的定义值或最小值)的数字资产相关联。有利地,在这种情况下,不存在尘埃输出表示事件流终止,因为这表示事件流中没有更多要跟踪的事件,即序列中没有更多事件。第一输出超过尘埃限值的规定是以信令方式表明链的结束。进一步地,最终区块链事务没有任何事件数据输出,即不存在数据载体元素,这有利地表明这不是改变事件流而是终止事件流的数据事件。
在上述关于n的三种情况中的任一种情况中,事务提交给区块链,并且与事务相关联的结果基于HTTP传输协议格式提供。在一些实施例中,与请求相关联的事件(即E0、En或EN)可以是与相应请求有关的单个事件或两个或更多事件。例如,请求可以包括每个E0、En或EN的两个或更多个子事件的数据集。在一些实施例中,结果基于事务的事件数据输出或与相应事务相关联的事件。在一些实施例中,返回的任何结果或事件数据都可以保存在事务的不可花费的OP_RETURN输出中。这是一种脚本操作码,可用于在区块链上写入任意数据,也可用于将事务输出标记为无效。再如,OP_RETURN是脚本语言操作码,用于创建事务的不可花费输出,其可以将数据和/或元数据存储在事务中,从而将元数据不可变地记录在区块链中。元数据可以包括希望存储在区块链中的日志或时间条目或文档。在一些实施例中,事件数据或结果可以被视为相应事务的不可花费输出中包括的有效载荷(payload)。此类输出可以通过终止该输出的锁定脚本的操作码(例如,上文提到的OP_RETURN)变得不可花费。然而,在其他实施例中,可以通过其他方式包括有效载荷或事件数据。
在事务中使用尘埃输出对于维护所有事务在事件流ES中发生时的不可变顺序记录是有利且至关重要的。这是因为,尽管通过将事务发布到区块链,所有区块链事务都将带有时间戳并按顺序保留在区块链中,但这并不保证其顺序保持不变。这是因为,事务可能在不同时间被挖掘到区块中。因此,在区块链中,只有链中的区块按时间顺序进行排序,单独的事务并非如此。然而,为了跟踪、记录和审计可能是智能合约的事件流的事件的准确顺序,有利地,使用序列中的下一个事务的第一输入必须花费的尘埃输出确保按时间顺序跟踪事务的顺序并创建防篡改记录。这是因为,一旦挖掘到区块中,从序列中的上一个事务到下一个事务的尘埃支付即可确保:根据比特币协议规则,所嵌入的数据载体元素(每个事务中的最终输出)的序列无法重新排序,并且不会发生插入或删除,这可能会改变序列,而不会立即明显地表明事件流已被破坏。在一些实施例中,比特币协议固有的双重花费保护确保加密货币(例如,尘埃)在不同地址之间移动,并且因此相关联的事件仍然按时间顺序进行排序。因此,这提高了区块链上的智能合约以及一系列事件发生的日志、副本或复制的安全性。
在一些实施例中,确定要用于与事件流ES相关联的请求的分层确定性密钥链K。此类密钥链对于给定事件流是唯一的。然后,可以针对相关联的每个事件导出来自种子密钥或父密钥或主密钥对K的加密私钥/公钥对,使得K=Kn=0至N,其中,n是从0至N的整数,每个整数n表示与事件流ES相关联的事件的当前长度或当前数量,N表示n的最大值或最终值。有利地,这可确保针对特定事件流导出的密钥与公共主密钥或种子密钥有关,并且可以导出用于处理每个相应事件。有利地,通过这种方式,利用针对当前事件导出的密钥Kn来保护与尘埃输出相关联的锁定脚本,并且使用先前密钥对Kn-1,第一输入中的每个第一输入花费先前事务的尘埃输出。这确保输出只能与对应的密钥对一起花费,该密钥对特定于相应的先前事务。
在一些实施例中,与事件流ES相关联的结果包括确认以下至少一项的证书:
-事务标识符,在该事务标识符中事件En过去提交给区块链;
-默克尔包含证明,证明事务包括在区块链中的区块头中;
-区块头的副本,所述事务过去包括在区块头中。
在一些实施例中,如上文针对第三方面所讨论的,创建的每个事务可以进一步包括与数字资产相关联的其他输入。这可以基于由平台处理器管理的运营浮动来提供。在一些实施例中,这可以与由支付处理器维护或控制的数字资产或加密货币资源或基金相关联,以涵盖区块链的事务挖矿费以及一个或更多个其他操作等。事务还可以具有与数字资产相关联的一个或更多个变更输出。如上所述,最终事务具有所有变更输出。
在一些实施例中,可以基于与提交的区块链事务相关联的事务标识符来标识事件流ES。在一些实施例中,还可以基于与最近提交的区块链事务相关联的事务标识符来标识与事件流ES相关联的状态。
在一些实施例中,该方法包括:将记录副本或基于事件流ES的每个事件的结果的日志存储在链下存储资源中。该存储资源可以与平台处理器相关联,或者在不同的设备、数据库或服务中,当客户端请求时,可以从该设备、数据库或服务中请求或检索该存储资源。有利地,与事件流的结果相关联的日志的存储是单独存储的,以避免要求下载整个区块链并通过数据筛选与事件流相关联的任何查询。在审计或数据验证的情况下,可以检查实现事件流的区块链本身。然后,可以使用备份或单独的副本进行快速查询。
在第四方面,本公开提供了一种用于同步与区块链相关联的多个事件流的计算机实现的方法,该方法由与应用程序编程接口(API)相关联的平台处理器实现。如上文第三方面所述,根据第四方面所述的方法涉及附加或修改单个事件流的方法。然而,第四方面涉及一种使用单个区块链事务(称为原子事务atomic transaction或跨多个事件流的会面事务rendezvous transaction)基于单个或公共事件来同步多个单独且独立进行的事件流的技术。用于实现第四方面的平台服务的该API可以是上述第三方面中引用的相同API,也可以是与用于同步事件流的平台处理器相关联的单独且特定的API。
根据第四方面所述的方法包括以下步骤:从客户端接收请求,该请求与区块链上的多个(M个)事件流有关。在一些实施例中,来自客户端的请求基于超文本传输协议(HTTP)传输协议格式。来自客户端的请求是更新与区块链相关联的多个现有事件流ESn=1至M,n是从1至M的整数,其中,M≥2。该方法还包括:获取要附加到多个(M个)事件流ESn=1至M中的每个事件流ESn的当前事件En。
如上所述,客户端可以是处理器、计算资源、软件应用程序或程序,或者可以访问事件流或经授权访问事件流跟踪的资源的其他实体。在一些实施例中,对于根据第四方面所述的同步请求,也可以将代表参与的多个(M个)事件流ESn=1至M的代理或协调器的智能合约视为作出同步请求的客户端。
来自客户端的请求可以作为JSON对象在API处接收,该JSON对象包括多个事件流ESn=1至M中的每个事件流的标识符,即M个事件流标识符将包括在表示该请求的JSON对象中。在大多数情况下,作为该请求的一部分,从客户端接收标识符。在一些情况下,API可以从与客户端相关联的账户或记录中获取多个(M个)事件流标识符。
在一些实施例中,来自客户端的请求还可以为所标识的事件流ESn中的一个或更多个事件流指定目标索引,目标索引是要用于同步请求的相应事件流ESn的索引,即目标索引表示要附加当前事件En的给定事件流中的下一可用位置。
在一些实施例中,目标索引等同于相应事件流ESn的序列号,并标识事件流ESn中要用于同步请求的点。在大多数情况下,作为该请求的一部分,从客户端接收目标索引。在一些情况下,API可以自动或直接从事件流ESn或从与事件流ESn相关联的外部日志获取相应的索引。
在一些实施例中,与第三方面类似,确定要用于每个事件流ESn的分层确定性密钥链。此类密钥链对于多个(M个)事件流ESn=1至M中的给定事件流是唯一的。
在一些实施例中,基于每个事件流ESn的相应密钥链K或公钥,对每个事件流ESn执行验证检查,同样如上文针对第三方面所述。在一些实施例中,该方法还可以包括验证步骤,以检查多个事件流ESn=1至M中的每个事件流ESn的下一可用索引值是否与请求中指定的相应事件流ESn的目标索引相同。在一些实施例中,多个(M个)事件流ESn=1至M中的事件流子集可能具有指定的目标索引值,而其他事件流子集则不具有指定的目标索引值。在这种情况下,仅对于该子集,将检查目标索引,而对于其他子集,所使用的任何下一可用索引都不会导致失败。
例如,考虑两个账户X和Y,其中资金从一个账户X减去并添加到另一个账户Y,即从X转账到Y。本实施例可以用于实现逻辑时钟以同步两个账户,从而可以验证转账中涉及的每个账户的状态。对于从中减去资金的账户X,一旦来自X的减法事件被添加到与X和Y相关联的事件流中,则提供或记录X的下一可用事务索引。在完成向Y的转账以使其为真或有效之前,X的下一可用事务索引不应改变,即与账户X相关联的事件流中的下一个事件应该是将资金添加到账户Y,并且该下一可用索引应该与来自客户端的请求中的X的指定目标索引(如果提供)相匹配,以便取得成功。如果提供了目标索引,则可以基于减法事件之后用于X的事件流中的事务的下一可用索引值来验证这一点。然而,对于账户Y,即资金添加到其中的一个账户,在减法事件已记录在Y的事件流之后,Y的事务索引可以自由地增加而不受任何限制。例如,在来自X的减法事件之后,还可能有其他资金存入账户Y中,从而导致在减法事件之后不久Y的事件流中产生进一步的事务。可以允许并且可以不选中这一点,因为这不影响从X转账到Y所需的转账或余额。因此,可能不需要验证与Y相关联的事件流中的事务的索引值,并且因此可能不会出于此目的提供此类索引值。
如果针对多个事件流ESn=1至M中的所有事件流的一个或更多个验证检查成功,则与将当前事件En附加到每个相应事件流ESn以同步多个事件流有关的请求随后将得到推进。否则,该方法包括生成错误通知并将其发送到客户端。
然后,对于多个事件流中的每个事件流ESn,该方法包括标识与相应事件流ESn相关联的先前的区块链事务TXn-1。
然后,该方法包括:为要附加到多个(M个)事件流ESn=1至M中的每个事件流ESn的当前事件En创建原子区块链事务TXn,以同步所述多个(M个)事件流。
在一些实施例中,对于多个(M个)事件流中的每个事件流,与用于同步多个(M个)事件流的当前事件En相关联的事件数据是相同的。例如,这可以是从所有事件流中添加或移除使用相同汇率或相同货币的基金或数字资产的情况。在其他实施例中,对于多个(M个)事件流中的一个或更多个事件流,与当前事件En相关联的事件数据可以是不同的。例如,M个事件流中的一个或更多个事件流可以对其余事件流应用不同的汇率,或者可以对当前事件En使用不同类型的代币或数字资产或加密货币。在一些情况下,甚至可能没有与用于同步的当前事件En相关联的任何事件数据。在这种情况下,事件En可以仅与元数据相关联。元数据可以与时间、日期或任何其他参数相关联,对于多个(M个)事件流,所述任何其他参数可以用于验证给定事件是在给定时间使用相同或不同数据或不使用任何数据来添加或执行的。因此,同步事件En可以是逻辑定时器,以确保通过原子区块链事务附加相同的事件或实际上不同的事件,从而在给定时间点提供多个(M个)事件流同步。
原子区块链事务TXn也称为集合事务(rendezvous transaction),并包括:
-n=M个输入,每个第n个输入花费与相应事件流ESn的先前的事务TXn-1相关联的尘埃输出;
-n个输入中的每个输入的相应未花费事务输出(UTXOn_dust),该未花费事务输出是与相应事件流ESn相关联的原子事务TXn的第n个尘埃输出;以及
-未花费事务输出(UTXOn_data),与表示当前事件En的事件数据相关联。
第三方面已经提到尘埃输入和输出的用途和优点。在本公开中讨论的所有事件流中,跟踪事务的尘埃输入/输出(即,尘埃链)用于防止在插入/删除之后对日志中的条目重新排序。如第三方面所述,事件En是原子事务的数据载体有效载荷,包括事务的不可花费的OP-RETURN输出。在一些情况下,除事件数据En之外,每个输入可以有单独的或附加的输出,以包括或存储与相应流的状态相关联的数据。如上所述,每个输入/输出还可以使用事件流的相应密钥来保护。
然而,根据第四方面所述的原子事务使得许多尘埃链能够通过单个区块链事务,每个尘埃链与不同的事件流有关。为了确保原子事务中每个相应事件流的可追溯性,多个事件流ESn=1至M中的给定事件流ESn的每个第n个尘埃输入/输出对与其在原子区块链事务中的对应索引值相关联。
有利地,无论多个事件流ESn=1至M中的每个事件流的状态或进度如何,第四方面提供了一种机制,由此可以在单个区块链事务中将公共事件En或与公共事件En相关联的数据有效载荷附加到多个事件流中的每个事件流。这对于应用是有利的,其中,在多个资源或实体之间应用给定事件或更新是有用的,然后能够验证数据在这些多个资源中的每个资源之间是一致的。在参与事件流由给定客户端或账户关联或拥有的实施例中,可以实现这一点。在一些情况下,多个事件流中的一个或更多个事件流由不同的实体拥有。例如,客户端可以与用于发起同步的智能合约相关联,其中,该合约的规则规定所有输入必须相同。在这种情况下,验证实体可以推断出,所有其他流包含与正在接受检查的流相同的事件或数据,即使客户端未拥有或无法访问所有流。例如,确保与多个银行账户的资产相关联的借方和/或贷方分录在相同的时间点反映相同的信息,并且可以使用所有相关账户的相同事务进行验证。又如,如果要将全局变更应用于与智能合约相关联的所有客户端或账户,其中,多方同意使用新汇率,每个账户由与给定方相应的单独事件流维护。
在一些实施例中,可以将与来自客户端的请求相关联的每个事件流ESn锁定或保持在任何其他请求或实体不能访问或更改的状态,直到当前事件En已附加到多个(M个)事件流ESn=1至M,或者直到为所述多个事件流中的一个或更多个事件流生成错误消息。有利地,这可确保在进行同步时更新每个事件流的已知和预期先前状态,并确保自从客户端发送同步请求以来未发生任何变化。
在一些实施例中,对于与来自客户端的请求相关联的多个事件流,可以检查是否符合可以在请求中可选地指定的时间窗口。如果处理请求的时间超出该时间窗口,则可能会生成错误消息。
在一些实施例中,然后该方法包括:响应于将当前事件En附加到多个(M个)事件流ESn=1至M中的每个事件流中,获取事件流ES中的每个事件流的下一可用索引值。然后,将其作为多个(M个)事件流的所获取的下一索引值的响应数组来提供。有利地,这可确认多个(M个)事件流已更新和同步。此外,这还可提供这些流中的每个流的新索引值或当前索引值,以便能够在原子区块链事务之后对每个单独的流事件作出未来请求。在一些实施例中,如果同步请求失败,则返回的索引值是有利的,意外索引可用于指示需要与相应事件流中的其他数据重新同步。在一些实施例中,在客户端可以重试失败的请求之前,可能需要进行此类重新同步。
在一些情况下,响应数组可以单独存储或在外部存储,以便其他授权实体可以访问。
在一些实施例中,将原子区块链事务的n=M个输入中的每个输入的尘埃输入索引记录在与第n个输入相关联的相应事件流ESn中。这是有利的,因为尘埃输入索引可用于导出多个ESn=1至M中的给定事件流的其他索引,例如尘埃输出索引和/或事件数据索引。在一些实施例中,将原子区块链事务的所有索引记录在与第n个输入相关联的相应事件流ESn中。
附加到事件流后,该方法包括:向客户端发送与多个同步事件流ESn=1至M中的每个同步事件流相关联的结果。此外,也可以将响应数组作为该结果的一部分发送。在一些实施例中,进一步将结果返回以进行事件流的批准或将原子区块链事务TXn提交给区块链。
在第三方面和第四方面的一些实施例中,提供了一种用于访问用于写入与事件流相关联的数据的服务的计算机实现的方法,该方法由多个客户端中的给定客户端的一个或更多个处理器实现。该方法包括以下步骤:获取或标识与平台的一个或更多个处理器相关联的应用程序编程接口(API)端点;发送与数据写入服务有关的请求;然后发送与事件流有关的一个或更多个事件En的请求。在第四方面,该请求包括同步区块链中的多个(M个)事件流与事件En的请求,其中,M≥2。如上所述,使用超文本传输协议(HTTP)传输协议格式来发送请求。该方法还包括:接收与所请求的事件En有关的结果,其中所述结果基于HTTP传输协议格式接收。在一些实施例中,该方法包括:对与所请求的事件En相关联的事件数据应用哈希函数,使得该请求包括事件En的哈希事件数据,而不是原始数据。
在第四方面,在请求同步M个事件流以附加公共事件En的情况下,该方法包括:在该请求中提供多个(M个)事件流中的每个事件流的标识符。在一些情况下,还包括要用于在每个相应事件流中附加事件En的多个(M个)事件流中的一个或更多个事件流的目标索引值(如果可用)。
本公开的第五方面涉及一种用于验证事务包含在区块链中的方法。根据本方面所述的事务与客户端相关联,该客户端与根据第一方面所述的服务平台相关联。
在第一种实现方式(也称为上述第一方面中提到的平台的基本验证)中,本公开的第五方面提供了一种方法,该方法包括以下步骤:标识要验证的事务T;以及获取与事务T相关联的证书C。该证书包括给定区块的区块标识符以及将事务T链接到区块链中的给定区块的包含证明。然后,该方法包括:确定区块链中有效区块的最长链;以及验证给定区块包含在所确定的最长链中。在一些实施例中,该方法包括:使用区块头客户端来获取最长区块链。区块头客户端是被配置为存储与事务T相关联的区块头的客户端。应当理解的是,也可以使用确定最长链的其他已知方法,并且第五方面不限于使用区块头客户端。
在一些实施例中,第五方面的第一种实现方式包括以下步骤:根据将事务T连接到与给定区块相关联的默克尔根R的包含证明来计算默克尔根R’。这可以与给定区块的区块头相关联。然后,基于确定R=R’,该方法包括:验证R’包含在给定区块中,然后验证给定区块包含在上面确定的最长链中。
在一些情况下,基于确定R与R’不匹配,和/或R’不包含在给定区块中,和/或给定区块不包含在最长链中,该方法包括生成错误消息。
有利地,当实体(例如但不限于客户端或验证器)希望验证事务实际上被提交给区块链且有效时,第五方面允许进行独立验证或交叉检查或审计。验证可以基于和从与平台相关联的来源或从多个独立来源获取的事务有关的数据,从而确保用于验证的数据真实、无偏,而不依赖于任何一个或少数实体获取验证数据。通过这种方式,即使客户端或平台或数据服务被破坏,只有用于单独获取的验证数据(例如,证书和包含证明)的数据才能根据在通过平台提交给区块链之后提供给客户端的数据进行核对,事务验证才会成功,否则事务验证将失败。
在一些实施例中,证书C是从与客户端相关联的本地存储器中获取的。在替代实施例中,证书C是从与可能和客户端和/或平台相关联或独立于客户端和/或平台的验证器实体相关联的存储器中获取的。
有利地,如果来源在平台外部,则不依赖于平台获取要用于验证的信息,从而提高验证的准确性。
在另一实施例中,事务T的证书C是从与平台相关联的存储器或模块中获取的。如果客户端无权访问证书,即没有在提交事务之后获取结果或没有手段在提交事务之后获取结果,或没有手段接收验证所需的证书等附加数据,则该选项可能是有用的。在这种情况下,基于从平台接收的验证数据,仍然可以由客户端或为客户端执行验证。
在第五方面的第二种实现方式中,本公开的方法提供了一种用于验证与平台的数据服务相关联的事务的方法,如上文第一方面和第二方面所述。这也称为数据写入器验证。第五方面的第二种实现方式包括以下步骤:获取与客户端相关联的数据D,即与客户端相关联的有效载荷或请求数据;然后,基于数据D,确定提交给区块链的数据的值d。在一些情况下,d可以等于D;或者,在其他情况下,d可以与盐值或哈希函数相关联,或者盐值为D,其中盐值与密钥集或任意值相关联,并且哈希值可以是一个或更多个已知哈希函数,例如SHA256。然后,该方法包括:提取或标识与提交值d相关联的事务T。
第二种实现方式提供了与第一种实现方式相同的有用优点,此外还提供了一种使用平台的数据写入器专门针对已经提交给区块链的事务执行验证的方式。
在第五方面的第三种实现方式中,本公开的方法提供了一种用于验证与和平台相关联的事件流相关联的事务的方法,如上文第二方面至第四方面所述。这也称为事件流ES验证。与第三方面类似,第五方面的第三种实现方式包括以下步骤:通过使用根据第一种实现方式所述的方法来验证包含与ES0相关联的第一事务T0,验证事件流ESn=0至N的创建,即基本验证,其中,n是从0至N的整数,n表示事件流的长度,0是第一事件或创建事件,N是最终事件或终止事件。该方法进一步包括以下步骤:确定第一事务T0的第一输入不是尘埃输入,然后确定T0的第一输出是尘埃输出;如果第一事务T0的第一输入是尘埃输入和/或如果T0的第一输出不是尘埃输出,则该方法包括生成错误消息。在没有产生错误的情况下,对于与事件流ESn=0至N的客户端相关联的事件的每个第n个数据条目Dn,执行根据第二种实现方式所述的方法,即数据写入器验证。然后,该方法包括:当n>0时,验证与事件流ESn中的第n个事务Tn对应的输入花费与上一个事务Tn-1相关联的输出。
在一些实施例中,根据第三种实现方式所述的方法进一步包括以下步骤:通过使用根据第一种实现方式所述的基本验证来验证包含与ESN相关联的最终事务TN,验证事件流ESN的关闭。然后,该方法包括:确定第一事务TN的第一输入是尘埃输入,并且T0的第一输出不是尘埃输出;以及,与事件流ESN中的最终第N个事务TN对应的输入花费与上一个事务TN-1相关联的输出。如果第一事务TN的第一输入不是尘埃输入和/或TN的第一输出是尘埃输出,则生成错误消息。
第五方面的第三种实现方式提供了与第一种实现方式和第二种实现方式相同的有用优点,此外还提供了一种使用平台专门针对与已经提交给区块链的事件流相关联的事务执行验证的方式。事件流提供可使用上述方法进行验证的一系列事件的日志。
第五方面的第一种实现方式、第二种实现方式和第三种实现方式可以由与客户端相关联的一个或更多个处理器实现。在另一实施例中,第一种实现方式、第二种实现方式和第三种实现方式可以由与验证器实体相关联的一个或更多个处理器实现。验证器实体可以独立于客户端和/或平台。
有利地,第五实施例可以由与平台或客户端无关的模块或实体执行,从而确保无信任的实现方式,而不依赖于任何一个数据来源来验证所提交的事务。
在替代实施例中,与第五方面相关联的第一种实现方式、第二种实现方式和第三种实现方式可以由与平台本身相关联的一个或更多个处理器实现。如上所述,在用于验证数据的外部数据来源对于客户端或验证器实体不可用或离线或以其他方式泄露的情况下,这也是可能的。
根据第五方面,本公开还涉及一种用于为一个或更多个客户端实现通道服务的计算机实现的方法,该方法由通道处理器实现并且包括以下步骤:从一个或更多个客户端中的给定客户端接收请求,该请求与通道创建有关;以及向给定客户端提供对一项或更多项功能的访问权限,该一项或更多项功能使得能够通过通道在给定客户端与另一实体之间进行直接通信。该一项或更多项功能包括:与用于数据传输的通道有关的通道功能或过程;和/或与使用通道传输的数据有关的消息功能或过程。
该方法还包括:为通道发布一个或更多个访问令牌,该一个或更多个访问令牌被配置为通过通道与另一实体进行安全通信。该方法包括:存储和/或提供与给定客户端的通道相关联的一个或更多个通知。
根据第五方面,本公开可以进一步涉及一种用于处理与区块链相关联的事务的计算机实现的方法,该方法由与客户端相关联的一个或更多个处理器实现。该方法包括以下步骤:从通道服务获取对一项或更多项功能的访问权限,该一项或更多项功能使得能够在给定客户端与另一实体之间进行直接通信,该一项或更多项功能包括:与用于数据传输的通道有关的通道功能或过程;和/或与使用通道传输的数据有关的消息功能或过程。该方法包括:从通道服务获取一个或更多个访问令牌,所述访问令牌使得能够与另一实体进行安全通信。响应于获取或标识与客户端相关联的给定事务的事务标识符,该方法包括:使用从通道处理器接收的一项或更多项通道功能,创建用于与另一实体通信的给定通道;以及向另一实体发送与给定通道相关联的一个或更多个访问令牌。该方法包括:接收与给定通道相关联的通知,该通知与和给定事务相关联的给定通道中的数据有关,所述数据被提供用于验证给定事务包含在区块链中。
有利地,使用通道通过为通道或消息传递服务提供接口或功能的方法、设备和系统来实现客户端的直接通信或点对点通信,而无需此类客户端实现区块链的任何处理或功能,同时仍然能够利用与其相关联的所有优点。在第五方面中用于验证的数据或与客户端相关联的信息可以简单、安全且即时地写入区块链或从区块链中获取,同时解除客户端与区块链的关联。
通道服务可以由单独的通道处理器提供,可以由上述平台或平台处理器提供,可以与客户端集成,也可以独立于客户端和/或平台实现。通道使得能够在实体之间实现直接或点对点通信路径或会话,用于传输验证所需的消息或数据,例如传输证书或提供客户端数据等。在大多数实施例中,每个通道只有两个实体。以nChain Holdings Limited名义递交的申请号为2007597.4的英国专利申请案中详细描述了通道服务和/或通道处理器的示例,该专利申请案的主题通过引用并入本文。
在一些实施例中,访问令牌(特别是API令牌)可以充当请求访问通道的实体或应用程序的唯一标识符。在一些实施例中,访问令牌可以视为分配给客户端的唯一认证凭证,甚至可以与各个通道或每个通道中的各个消息一样精细。在一些实施例中,访问令牌可以使得客户端能够将这些令牌提供给其他实体以用于每个通道的认证。
在第五方面,上述信道可以由客户端或验证器实体建立,用于验证数据的请求或提供或处理,例如事务T、事务标识符TxID、客户端数据D、证书C、包含证明等。
本公开的各方面还包括一种计算设备,所述计算设备包括处理器和存储器,所述存储器包括可执行指令,在由所述处理器执行时,所述可执行指令使得所述设备执行如上所述的计算机实现的方法,其中所述计算设备与平台处理器有关。
本公开的各方面还包括一种计算设备,所述计算设备包括处理器和存储器,所述存储器包括可执行指令,在由所述处理器执行时,所述可执行指令使得所述设备执行如上所述的计算机实现的方法,其中所述计算设备与客户端有关。
本公开的各方面还包括一种计算机系统,所述计算机系统包括:至少一个平台处理器,通过无线通信网络与至少一个客户端通信耦合,所述至少一个平台处理器与用于处理来自所述至少一个客户端的HTTP请求的应用程序编程接口(API)端点相关联,所述至少一个平台处理器根据上述计算设备实现,所述至少一个客户端根据上述客户端计算设备实现。
本公开的各方面还包括其上存储有可执行指令的计算机可读存储介质,在由计算机的处理器执行时,所述可执行指令使得所述计算机执行上述任何方面和实施例的方法。
现在参照附图以图示方式描述一些具体实施例,其中相似的附图标记表示相似的特征。
第一方面–一种用于与区块链相关联的多项服务的平台API
用于提供第一方面的上述多项服务的平台处理器可以是平台即服务(PaaS)和软件即服务(SaaS)产品,有利地,平台处理器使得能够使用BSV区块链等区块链网络来快速交付有用的现实世界业务和技术应用,例如管理软件控制的技术系统或智能合约。平台服务概述见图1,其中示出了系统的概要示意图。平台服务具有提供API 108的平台处理器100,通过API 108,一个或更多个客户端可以访问服务。
如图所示,平台服务100由三个服务系列组成,旨在让用户和组织轻松、安全地利用区块链的独特属性提供的优势,而无需在客户端实际实现任何基于区块链的软件、知识或库。这些服务包括:
-数据服务102,旨在简化链作为商品数据分类账的使用;
-计算服务104,旨在提供由比特币SV等数字资产支持的通用计算框架;
-商务服务106,提供企业级能力,用于使用比特币SV等数字资产处理事务。
如上所述,可以在API处通过或使用HTTPS协议从客户端接收请求,因为API实现为Web服务。然后,所请求的服务由一个或更多个服务模块或处理资源102-106使用底层软件110来实现,此类底层软件110与区块链相关联,即实现用于创建、处理和提交与区块链相关联的事务的资源、库和/或密钥管理钱包实现方式。处理后,可以将事务提交给区块链网络112(而不是实现任何此类功能或事务库的客户端)。客户端最多可以或能够实现与加密货币或某些其他数字资产相关联的数字钱包等,但这并不是必需的,因为平台服务100也可以为客户端提供和管理数字资产。
图2a涉及本公开的第一方面,并示出一种用于提供与区块链相关联的多项服务的平台(例如,图1中所示的平台100)的计算机实现的方法。图2a中的方法由与应用程序编程接口(API)相关联的平台处理器实现。
步骤202a描述从多个客户端中的给定客户端接收请求。在一些实施例中,所述客户端可以是与客户端相关联的一个或更多个计算设备、资源或处理器,所述客户端已经登录或注册以访问由平台处理器提供的多项服务。如上所述,平台处理器可以是一个或更多个处理器,每个处理器提供要使用区块链实现的不同类型的功能或服务,例如比特币SV区块链(例如,用于图1中所示的数据服务、计算服务和商务服务的处理器)。对于单项服务,也可以仅有一个处理器。由于平台处理器与平台的URI等API端点相关联,来自给定客户端的请求可以基于诸如超文本传输协议(HTTP)传输协议格式的标准互联网协议。在一些实施例中,请求可以包括客户端的标识符以及所请求的服务的标识符。
在步骤204a中,检查客户端的身份以查看该客户端是否是注册为使用平台处理器及其所提供的功能的有效客户端。在一些实施例中,这可以基于已知的认证方法,诸如受密码保护的登录认证等。在这种情况下,可以基于密码以及请求中包括的客户端标识符或别名来为给定客户端创建记录。核实可以基于在API处接收的与记录中的密码匹配的密码。在其他实施例中,还可以使用基于加密私钥/公钥对的标准PKI技术来核实在步骤202中从客户端接收的请求中存在的数字签名。在这种情况下,可以通过检查私钥签名的请求是否可以使用公钥成功恢复或核实来验证客户端的身份。
如果客户端身份无法验证或验证失败,则在步骤206a中不再进一步处理该请求。
如果客户端成功核实,则在步骤208a中,检查步骤202a中对服务的请求的有效性。这一步骤是为了确保给定客户端确实获授权使用所请求的服务。对此的权限或属性可以存在于客户端的记录中,以指示可以或不可以提供给相应客户端的一种或更多种类型的访问级别或服务。
如果发现该请求对于请求客户端是不允许的或无效的,则在步骤210a中不再进一步处理该请求。
应当理解的是,尽管上述核实客户端和/或服务的实施例对于第一方面的操作是有用的,但并不是必需的。在一些情况下,可以仅执行步骤204a或208a中的核实。在一些情况下,不执行核实。在这种情况下,无论是否注册,任何客户端都可以在适当支付后使用服务或平台进行此类访问。
在步骤212a中,获取目的地址,该目的地址可以是负责在步骤202a中实现所请求的服务的服务器或处理器的端点URI。在一些实施例中,如果有多个平台处理器,则主机服务器或平台API可以将所接收的请求转换为远程过程调用(RPC)格式,以发送至与用于实现所标识的服务的处理器相关联的目的地址。
在步骤214a中,由负责所请求服务的相应平台处理器处理所请求的服务。由平台处理器基于负责处理器的目的地址/端点获取或读取或生成区块链事务,并获取该事务的输出脚本。虽然图2a是指在该步骤中生成区块链事务,但应当理解的是,本公开的第一方面并不限于此。如果步骤202a中的请求是从区块链中读取或获取数据,则不能生成事务,只能从区块链中读取或获取事务。对于所生成的一个或更多个区块链事务,可以存在多个区块链事务或更多个输出脚本。
在步骤216a中,输出脚本可以包括作为结果的数据输出(例如,可以有数据载体UTXO),也可以基于事务标识符或事务的其余输出来获取结果。此外,还可以存在与可从其中获取结果的事务相关联的不可花费的OP-RETURN输出。
在步骤218a中,以HTTP或类似传输协议格式将与输出脚本相关联的结果提供至给定客户端。在一些实施例中,如果服务的负责处理器位于主机平台API的远程位置,则平台处理器以RPC格式从负责处理器接收与区块链事务相关联的响应。然后,API转换器将其转换为可以基于HTTP格式发送的消息,然后再发送到客户端。如上所述,如果所述客户端使用别名寻址服务,例如bsvalias,则结果在寻址到客户端别名的HTTP消息中以bsvalias机器可读资源规定的格式发送。
图2b涉及本公开的第一方面,并示出一种用于访问与区块链相关联的多项服务的平台(例如,图1中所示的平台100)的计算机实现的方法。图2b中的方法由与客户端相关联的一个或更多个处理器实现。
在步骤202b中,标识与平台相关联的应用程序编程接口(API)端点。如前所述,这可以是与主机平台处理器相关联的API,并且可以有一个或更多个其他处理器负责实现服务,每个处理器具有自己的服务端点或目的地址。
在步骤204b中,客户端准备对图1中的数据写入服务102等服务的请求。在一些实施例中,客户端在请求中包括客户端别名或标识符和/或服务标识符,使得请求可以路由到正确的服务端点。这对于平台处理器检查请求客户端的有效性以及客户端使用所请求服务的权限是有用的。
在步骤206b中,使用超文本传输协议(HTTP)或类似传输协议格式发送在步骤204b中准备的请求,因为平台处理器实现为HTTP或REST API。
在步骤208b中,从平台处理器提供和与请求相关联的区块链事务的输出脚本有关的结果。该结果以HTTP传输协议格式提供给客户端。
有利地,利用根据第一方面所述的方法,客户端以HTTP传输协议格式发送和接收基于区块链的服务的请求,因此客户端可以利用区块链独有的所有优势和服务,而无需实现任何事务能力或区块链库。这是因为该服务是通过平台API提供的,该平台API可以是HTTP或REST API端点。例如,REST API设计标准可以通过互联网使用以下HTTP命令处理HTTP请求和通信,这是客户端所需的全部功能,即能够通过互联网发送和接收消息。平台处理器远程执行命令,或为客户端单独执行命令。
命令 | GET | POST | PUT | DELETE | PATCH |
资源 | 读取 | 创建 | 更新或创建 | 删除 | 部分更新 |
图3示出了与区块链相关联的多项服务的更细粒度示意图,所述多项服务可以由平台300实现,平台300与API相关联,通过API可以访问所提供的任何一项或更多项服务。如图所示,数据服务302可以包括数据写入器302a和数据读取器服务302b。图4至图8将详细说明使用数据写入器服务302a实现事件流,以使客户端能够以简单、安全和优化的方式将数据写入区块链中。数据读取器服务302b使客户端能够发送查询,该查询返回存储在区块链中的数据。这可以使用过滤后的流,其中,客户端可以临时或定期(即,在特定时间范围内)预定义他们希望从区块链中读取的数据类型,或与在区块链310中处理的一组相关或不相关事件或文档相关联的数据类型。数据存档功能允许访问指定事件或合约的先前的事务的日志。
平台300的计算服务306包括与智能合约相关联的应用程序306a和框架306b,在一些实施例中,应用程序306a和框架306b可以表示为区块链310中的状态机。计算服务306与数据服务302交互,因为需要输入数据并将结果提供给客户端以进行任何此类计算。
商务服务304负责基于一流的安全实践和技术,通过企业钱包304a提供企业级能力,以通过区块链310处理事务。例如,在一些实施例中,当多个人员或用户或账户可能需要确认符合定义标准的事务(即,与超过某个预定义限制的高价值加密货币相关联)时,企业钱包可以实现启用区块链事务处理的功能。企业钱包还可以包括实现阈值数量和/或类型的签名以移动大量数字资产(例如,表示其他资源的加密货币或代币)的功能。然后,在基于此类企业钱包实现方式所应用的标准进行处理之后,这些资产的移动可以在区块链上表示。
简单支付验证(SPV)服务308是需要来自区块链的信息的应用程序,但不包括指向区块链的直接链路,因为它们不运行矿工节点。此类SPV服务308允许轻量级客户端验证事务是否包括在区块链中,而无需下载整个区块链310。
第二方面–一种用于提供与区块链相关联的数据写入服务的平台
图4涉及本公开的第二方面,并示出一种用于为与区块链相关联的事务提供数据写入服务(例如,第一方面的图3中所示的数据写入器302a)的计算机实现的方法。图3中的方法由与用于该服务的应用程序编程接口(API)相关联的平台处理器实现。
步骤402描述了从客户端接收请求,该请求与使用区块链实现的事件流ES有关。如第一方面所述,来自客户端的请求采用超文本传输协议(HTTP)传输协议格式。在一些实施例中,事件流涉及一种状态机,并且表示在区块链中实现为有限状态机的机器可读合约或智能合约。有限状态机(FSM)是公知的数学计算模型。FSM是一种抽象机器,可以在任何给定时间恰好处于有限数量状态中的一种状态。FSM可以响应于一些外部输入而从一种状态转变到另一种状态,从一种状态到另一种状态的转变称为转换。FSM可以通过其一系列状态、初始状态以及每个转换的条件来定义。在比特币SV区块链中,UTXO集合可以视为状态机,其中,给定输出的花费状态是事务(机器)的先前输入的函数。因此,通过重放所有事务,可以使用区块链确定地建立任何输出的当前花费状态和UTXO集合的当前内容。因此,在图4的实施例中,该请求可以视为改变智能合约的当前状态的请求,其在区块链中实现为事件流ES。
步骤404描述了由数据写入器或用于实现数据写入服务的平台处理器来确定事件流ESi=n的当前状态。假设i是从0至N的整数,每个整数i表示具有有限数量状态的事件流ES的给定状态,因此i=0表示创建的事件流ES,i=n表示区块链中处于当前状态的事件流ES,i=N表示事件流ES的最终状态。因此,事件流ES的当前状态将为En。
步骤406描述了基于在步骤402中接收的请求来标识或获取与事件流ES的后续事件或新事件En+1相关联的数据。在该实施例中,新事件可以是数据,也可以是触发状态改变以使事件流转换到下一状态的函数。
步骤408描述了由与实现数据写入器的平台处理器相关联的一个或更多个处理器为后续事件En+1创建区块链事务TXn+1的步骤。区块链事务TXn+1至少包括:
-与先前事务TXn的事务输出(TXOn)相关联的输入,该输入将花费先前事务的TXOn输出;
-与表示新事件En+1的事件数据相关联的未花费输出(UTXOn+1),在一些实施例中,该输出是数据输出,即表示事务的数据载体元素。
可能会有额外的输入,如酌情支付网络挖矿费的资金输入;也可能会有其他输出,如事务的变更输出。
步骤410描述了将在步骤408中创建的事务TXn+1提交给区块链。在该步骤中,事务可以提交给比特币SV网络等区块链,以便由与平台处理器相关联的矿工节点或BSV节点软件包含在后续区块中。
步骤412描述了基于新创建的事件En+1将事件流ES的当前状态更新为ESi=n+1,使得ESi=n=ESn+1。这对应于提交给ES的区块链的最新事务TXn+1。在一些实施例中,基于最终事务输出UTXOn+1中的事件数据输出来标识和更新该新状态。
步骤414描述了在步骤412中基于更新的当前状态ESn+1发送结果,该结果基于HTTP传输协议格式提供给客户端。
第三方面–一种用于提供数据写入服务以记录与区块链相关联的事件流的平台
图5、图6和图7讨论了与实现事件流相关联的应用,例如关于第二方面的图4所讨论的应用。第三方面涉及一种技术,用于在区块链上建立事件流ES截至当前状态的不可变顺序日志或记录。在一些实施例中,除了存储在区块链上之外,日志还可以在链下提供或存储。由于事件流的状态基于与事务相关联的输入和输出,下面针对第三方面描述的技术提出了一种方法,用于在区块链上建立与事件流相关联的所有事务的不可变时序日志。事件流可以表示应用于使用FSM、DFA等实现的智能合约的顺序输入。
图5涉及本公开的第二方面,并示出一种用于为与区块链相关联的事务提供数据写入服务(例如,第一方面的图3中所示的数据写入器302a)的计算机实现的方法。图5中的方法由与应用程序编程接口(API)相关联的平台处理器实现。该方法涉及创建新事件流。
步骤502描述了从客户端接收请求,该请求是使用区块链创建新事件流ES。如第一方面和第二方面所述,来自客户端的请求采用超文本传输协议(HTTP)传输协议格式。
步骤504描述了确定将与要创建的新事件流ES一起使用的分层确定性(HD)密钥链K的步骤。在一些实施例中,这可以通过与平台处理器相关联的HD钱包实现方式来实现,以基于已知BIP 21协议来生成密钥(从种子密钥或父密钥或主密钥开始)的分层树状结构。HD密钥创建和传输协议显著简化了密钥生成,并允许创建可独立操作的子账户,使每个父账户能够监测或控制其子账户,即使该子账户泄露也是如此。HD协议使用单个根种子密钥来创建子密钥、孙密钥和其他降级密钥的层次结构,这些密钥具有单独的确定性生成的整数值。每个子密钥还从其父密钥获取确定性生成的种子,称为链码。通过这种方式,一个链码泄露不一定会影响整个层次结构的整数序列。除上述优点之外,在本方面中,该密钥生成由平台处理器执行,因此从客户端移除了该密钥生成的资源和功能。因此,客户端不需要实现HD钱包。在步骤504中,密钥链K包括从所选择的父密钥对导出的一系列私钥/公钥对,使得:
K=Kn=0至N,其中,n是从0至N的整数,每个整数n表示与事件流ES相关联的事件的当前长度或当前数量,N表示n的最大值或最终值。
步骤506描述了标识或获取与第一事件E0相关联的数据,这是针对在步骤502中基于所接收请求中的事件数据在区块链中创建的新事件流ES。
步骤508描绘了由与实现数据写入器的平台处理器相关联的一个或更多个处理器为新事件流ES创建第一区块链事务TX0,其中,n=0。
步骤510描述了在步骤508中创建的区块链事务TX0的输出至少包括作为尘埃输出的第一未花费事务输出(UTXO0_dust),所述尘埃输出与锁定脚本相关联,该锁定脚本使用在步骤504中从HD密钥链K导出的一系列密钥中的第一导出密钥对K0来保护。尘埃输出与低于事务的定义限制或具有定义的最小值的(数字资产)值相关联,即低于花费此类事务所需的挖矿费。此外,还可以存在其他输入,该输入与和运营浮动相关联的数字资产或是维护或和支付处理器相关联的数字资产或加密货币基金相关联。事务中的其他输出也可以是数字资产变更输出。
因此,在一些实施例中,根据本实施例的用于区块链事务以创建事件流的创建模板是第一输入必须大于尘埃输入的模板。这是为了有利地指示事件流中没有上一个条目,并且这是第一条目。创建模板还指定模板的第一输出是尘埃输出,并且没有数据载体或数据输出(因此没有OP_RETURN),因为除创建新事件流ES之外,不存在与创建状态相关联的事件数据。在一些实施例中,包括用于创建帧的OP_RETURN,但这不保存任何事件数据。这可以保存描述新创建流的参数的元数据。元数据的示例可以包括公开或公证属性、写入区块链的时间、首次接受事件的时间、不再接受事件的时间、将存储备份或相关数据的地理区域、可接受数据的最大大小、序列号等详细信息。
步骤512描述了将事务TX0提交给区块链。在该步骤中,事务可以提交给比特币SV网络等区块链,以便由与平台处理器相关联的矿工节点或BSV节点软件包含在后续区块中。在一些实施例中,挖掘后,事务标识符TX0可以用于唯一地标识新创建的事件流ES。
步骤514描述了将与在TX0中创建的事件流ES相关联的结果发送到客户端,该结果以HTTP传输协议格式提供。与事件流有关的结果可以从区块链中单独复制或保存。
在一些实施例中,创建事件流可以与提交给区块链进行链上结算分离。在这种情况下,也可以使用相应事件流独有的事件流id,并且可以在结果中将其提供给客户端。
图6涉及本公开的第三方面,并示出一种用于为与区块链相关联的事务提供数据写入服务(例如,第一方面的图3中所示的数据写入器302a)的计算机实现的方法。图6中的方法由与应用程序编程接口(API)相关联的平台处理器实现。该图涉及将新事件附加到区块链上的现有事件流ES的请求。
步骤602描述了从客户端接收请求,该请求是修改在请求中标识并在区块链中实现的现有流ES。如第一方面和第二方面所述,来自客户端的请求采用超文本传输协议(HTTP)传输协议格式。如结合图5的步骤504所讨论的,区块链上的事件流ES与密钥链K相关联,使得K=Kn=0至N,其中,n是从0至N的整数,每个整数n表示与事件流ES相关联的事件的当前长度或当前数量,N表示n的最大值或最终值。在一些实施例中,执行认证和授权检查,此类检查可以是API访问令牌存在性测试或会话检查或密码/数字签名测试,或用于核实客户端或作出的服务请求的某些其他适当方法。
在步骤604中,确定事件流ES的当前长度n。
步骤606描述了基于在步骤602中接收的请求中的事件数据来标识或获取与事件En相关联的数据,该事件是当前添加或附加到区块链上的事件流ES的事件。
在步骤608中,标识与事件流ES相关联的先前的区块链事务TXn-1。标识后,则确定与所标识的先前事务TXn-1相关联的密钥对Kn-1。如上所述,这基于在步骤602中描述的相同种子密钥对K。
在步骤610中,从种子密钥对K中导出当前事件En的密钥对Kn。
步骤612描述了由与实现数据写入器的平台处理器相关联的一个或更多个处理器为新事件流ES创建当前区块链事务TXn,其中,0<n<N。为要附加到事件流ES的当前事件En创建的区块链事务TXn包括:
-第一输入,花费与先前事务TXn-1相关联的尘埃输出,所述花费使用在步骤608中获取的先前事务的所获取密钥对Kn-1来授权;
-第一未花费事务输出(UTXOn_dust),作为当前事务TXn的尘埃输出,所述尘埃输出与使用在步骤610中导出的密钥对Kn来保护的锁定脚本相关联;以及
-最终未花费事务输出(UTXOn_data),与表示当前事件En的事件数据相关联。
如上所述,尘埃输出与低于事务的定义限制或具有定义的最小值的(数字资产)值相关联。此外,还可以存在基于运营浮动的与数字资产相关联的其他输入。该浮动可以由平台处理器控制。事务中的其他输出也可以是数字资产变更输出。
因此,在一些实施例中,根据本实施例的用于区块链事务以更新事件流的更新模板是第一输入必须是尘埃输入且第一输出必须是尘埃输出的模板。这是为了有利地指示事件流中存在先前条目。这也指示相关事件En(目前或当前事件数据)在先前的事务或状态之后发生。因此,事务有利地遵循尘埃链并在下一状态之前进行。更新模板包括数据载体,即携带事件数据或与当前事件或状态相关联的结果的数据输出。这可以是不可花费的OP_RETURN输出。
在事务中使用尘埃输出对于维护所有事务在区块链中的事件流ES中发生时的不可变顺序记录的区块链是有利的。这是因为,尽管通过将事务发布到区块链,所有区块链事务都将带有时间戳并按顺序保留在区块链中,但这并不保证其顺序保持不变。这是因为,事务可能在不同时间被挖掘到区块中。使用正在花费的上一个事务的尘埃输出作为当前事务的第一输入,其中花费基于与每个事务的锁定/解锁脚本有关的相应唯一密钥,可确保按时间顺序生成事件流的清晰防篡改顺序记录。
步骤614描述了将事务TXn提交给区块链。在该步骤中,事务可以提交给比特币SV网络等区块链,以便由与平台处理器相关联的矿工节点或BSV节点软件包含在后续区块中。在一些实施例中,挖掘后,事务标识符可以用于唯一地标识事件流ES。
步骤616描述了将与在TXn中创建的事件流ES相关联的结果发送到客户端,该结果以HTTP传输协议格式提供。该结果可以单独复制或保存到区块链。在一些实施例中,这可以基于最终未花费事务输出(UTXOn_data)中的事件数据。在一些实施例中,(UTXOn_data)中事件En的事件数据包括所述事件数据的哈希值,从而确保所述事件数据由平台处理器保密。哈希值可以由平台处理器应用,也可以由客户端应用,即,在生成与在步骤602中在平台处理器处接收的针对事件En的请求有关的事件数据之前,在一些实施例中应用。在由客户端应用的情况下,请求中的事件数据即使在到达平台处理器之前也是保密的。在其他实施例中,事件数据可以作为可从区块链公开获得的原始数据来提供。
图7涉及本公开的第三方面,并示出一种用于为与区块链相关联的事务提供数据写入服务(例如,第一方面的图3中所示的数据写入器302a)的计算机实现的方法。图7中的方法由与应用程序编程接口(API)相关联的平台处理器实现。图7中的请求是终止区块链上的现有事件流。
步骤702描述了从客户端接收请求,该请求与终止使用区块链实现的现有事件流ES有关。如第一方面和第二方面所述,来自客户端的请求采用超文本传输协议(HTTP)传输协议格式。如结合图5的步骤504所讨论的,区块链上的事件流ES与密钥链K相关联,使得K=Kn=0至N,其中,n是从0至N的整数,每个整数n表示与事件流ES相关联的事件的当前长度或当前数量,N表示n的最大值或最终值。在一些实施例中,执行认证和授权检查,此类检查可以是API访问令牌存在性测试或会话检查或密码/数字签名测试,或用于核实客户端或作出的请求的某些其他适当方法。
在步骤704中,确定事件流ES的当前长度N。
步骤706描述了基于在步骤702中接收的请求中的事件数据来标识或获取与最终事件EN相关联的数据,该事件是当前添加或附加到区块链上的事件流ES的事件。
在步骤708中,标识与事件流ES相关联的先前的区块链事务TXN-1。标识后,则确定与所标识的先前事务TXN-1相关联的密钥对KN-1。如上所述,这基于在步骤702中描述的相同种子密钥对K。
在步骤710中,从种子密钥对K中导出当前事件EN的密钥对KN。
步骤712描述了由与实现数据写入器的平台处理器相关联的一个或更多个处理器为新事件流ES创建当前区块链事务TXN,其中,n=N。为当前事件EN创建以终止事件流ES的区块链事务TXN包括:
-第一输入,花费与先前事务TXN-1相关联的尘埃输出,所述花费使用在步骤708中获取的先前事务的所获取密钥对KN-1来授权;
-第一未花费事务输出(UTXON),与超过定义的尘埃输出限制的数字资产相关联。
对于最终事件,所有事务输出都返回变更。不存在尘埃输出,因为没有要求或不需要跟踪终止事件流的下一阶段。因此,当n=N时,平台处理器不提供尘埃输出,换言之,输出可以视为与事件流ES相关联的变更输出(数字资产支付)。这有利地标记或指示正在跟踪的事件流的最终终止状态。在一些实施例中,当事件或合约处于终止状态时,输出也不存在事件数据或数据载体元素,即事件数据不存在OP_RETURN。因此,不会生成单独的尘埃和数据载体输出以终止事件流ES,并且第一输出高于尘埃限制以通过信令方式表明这是区块链上事件流的结束,并且不存在也指示终止的事件数据输出。在OP_RETURN中存在元数据而不是事件数据的实施例中,该元数据可能对验证实体有所帮助。可能存在与运营浮动的数字资产相关联的其他输入或变更输出。在一些实施例中,与结合图5和图6列出的尘埃相关联的数字资产的价值可以简单地添加到一个或更多个其他输出中。
因此,在一些实施例中,根据本实施例的用于终止事件流的区块链事务的关闭模板是第一输入必须是尘埃输入的模板,与图6中的更新模板的第一输入一样。第一输出不能是尘埃输出,并且这有利地充当分类账结束标记,并进一步区分关闭模板和更新模板。与图5中的创建模板一样,事件数据可能没有数据载体,但是OP_RETURN可以在关闭模板中包括元数据。
步骤714描述了将事务TXN提交给区块链。在该步骤中,事务可以提交给比特币SV网络等区块链,以便由与平台处理器相关联的矿工节点或BSV节点软件包含在后续区块中。
步骤716描述了将与在TXN中创建的事件流ES相关联的结果发送到客户端,该结果以HTTP传输协议格式提供。
图8涉及本公开的第三方面,并示出一种用于访问平台或用于将数据写入与区块链相关联的事件流的数据写入服务的计算机实现的方法,例如图1中所示的平台100或图3中所示的平台300。图8中的方法由与客户端相关联的一个或更多个处理器实现。
在步骤802中,标识与平台相关联的应用程序编程接口(API)端点。如前所述,这可以是与主机平台处理器相关联的API,并且可以有一个或更多个其他处理器负责实现服务,每个处理器具有服务端点或目的地址。
在步骤804中,客户端准备对图3中的数据写入服务302等服务的请求。该请求与和区块链中的事件流ES有关的一个或更多个事件En相关联。在一些实施例中,客户端在请求中包括客户端别名或标识符和/或服务标识符,使得请求可以路由到正确的服务端点,并且使得平台处理器可以检查请求客户端的有效性以及客户端使用所请求服务的权限。
在步骤806中,使用超文本传输协议(HTTP)或类似传输协议格式发送在步骤804准备的请求,因为平台处理器实现为HTTP或REST API。
在步骤808中,接收与请求中的事件En相关联的区块链事务的输出脚本有关的结果。该结果以HTTP传输协议格式提供给客户端。在一些实施例中,结果可以单独保存在区块链的日志中,该区块链在平台处理器中或与平台处理器相关联。
有利地,通过根据本公开第三方面所述的方法实现的与区块链相关联的事件流及其顺序日志的实现方式提供了与事件的不可变性和事件排序的不可变性有关的保证。写入后,以下列任何方式篡改事件流的任何尝试都将被阻止或变得明显:
-更改事件的内容
-对事件进行重新排序
-在流开始处或中间位置插入事件
-从流中的任意位置删除事件
换言之,根据第三方面所述的方法使得与事件流有关的以下属性是可证明的:
-事件流中的各个条目自写入后未曾修改
-先前连续条目之间未插入任何条目
-未删除任何条目
-未对任何条目进行重新排序
这些属性和优点具有许多实际应用,从审计/合规性日志到状态机复制,再到更高效、防篡改、准确的方法,用于从所有客户端的区块链中读取数据并将数据写入区块链。
捕获事件日志将对其有用的事件流的一个示例是使用区块链来跟踪和记录圈叉游戏等游戏事件的应用程序。
例如,假设n=4(从0至4的5种状态)的游戏处于以下状态:
A | B | C | |
1 | O | O | |
2 | O | ||
3 | X | X |
随着游戏的进行,通过根据第三方面所述的方法,基于区块链事务的输出的日志可以记录如下:
0 | B2 |
1 | A3 |
2 | A1 |
3 | C3 |
4 | C1 |
假设有人试图篡改或更改为该序列维护的日志的副本,例如,当n=4时,为结果插入不同的条目,使得日志不会反映游戏的实际状态,如下所示:
0 | B2 |
1 | A3 |
2 | A1 |
3 | C3 |
4 | B3 |
4 | C1 |
这将立即从对区块链上事件流的自动生成的顺序日志的检查或审计中标识出来,因为对于n=3的事务,花费尘埃输出的事务的输入将不会被核实。应当理解的是,如果此类游戏涉及金融事务(例如,付费游戏),玩家可能希望检查其游戏日志的真实性,以及给定游戏提供商是否遵循其宣传的赔率或难度。通过如上所述将给定游戏的各个游戏条目(或其哈希值)存储在事件流中,可以确保玩家能够独立于游戏提供商维护的任何内部系统来检查和验证游戏中的事件。
此外,应当进一步理解的是,给定事件流中的每个事件不需要对应于在游戏会话内发生的各个事件。可以为需要所述事件的准确防篡改顺序日志的任何事件日志定义事件流。例如,给定事件流中的事件示例可以包括本地或远程(优选地,链下)执行的给定智能合约的输入和/或输出;在给定在线消息收发对话的两个或更多个参与者之间发送的消息;由传感器或物联网(IoT)设备执行的用于测量天气、车辆、货物、人员等的位置等的物理测量;药物/药物跟踪–包括生产地、运输、分配器位置、处方剂量、受体信息等;金融事务,例如贷记和/或借记账户的金额(无论账户是使用加密货币还是法定货币贷记)、汇率变化、交易执行、购买商品或股票的请求等。最终,生成和使用事件流的上下文将由使用平台处理器生成此类事件流的一方随意使用。
第四方面-一种用于提供数据写入服务以同步与区块链相关联的多个事件流的平
台
图9示出了用于更新多个事件流的技术。结合上述第二方面和第三方面,尤其是图6,讨论了事件流,该图示出了一种用于将数据附加到单个事件流或修改单个事件流的方法。除了在区块链上建立事件流截至当前状态的不可变顺序日志或记录之外,本公开的第四方面使得能够同步多个单独的事件流,每个事件流能够如图5至图7中所示单独进行。如第二方面和第三方面所述,根据第四方面同步一次的事件流除了存储在区块链上之外,还可以在链下提供或存储。由于多个事件流中的每个事件流的状态基于与区块链事务相关联的输入和输出,包括通过将同步事件附加到所有事务来同步流的单个或原子事务,因此提供了所有事务的不可变时序日志,其中同步点可以追溯到单个原子事务。如上所述,与用于同步多个事件流的事件相关联的事件数据对于多个事件流中的每个事件流可以是相同的,或者对于多个事件流中的至少一个事件流可以是不同的,或者在某些情况下可能不存在事件数据。可以理解的是,图9中对当前或同步事件的引用涵盖了所有这些可能性。仅为了便于说明,并且在没有隐含限制的情况下,第四方面的一些实施例从单个事件的角度或在相同事件数据的情况下进行说明。
图9涉及本公开的第四方面,并示出一种用于提供数据写入服务以同步多个事件流的计算机实现的方法。该方法可以由提供如第一方面的图3中所示的数据写入器302a的功能或服务的平台处理器实现。图9中的方法由与应用程序编程接口(API)相关联的平台处理器实现。在大多数情况下,该API是不同于图6中所示API的端点,该API介绍了更新单个事件流的方法。然而,在一些情况下,如果同一端点具有一次服务多个事件流的功能,则该API可以是与图6中所示API相同的端点。图9涉及来自客户端的请求,该请求将新事件附加到区块链上的多个(M个)事件流以同步所有M个流。
步骤902描述了从客户端接收请求,该请求是同步与区块链相关联的多个(M个)现有事件流ESn=1至M,n是从1至M的整数,其中,M≥2。在一些实施例中,如前述各方面所述,来自客户端的请求采用超文本传输协议(HTTP)传输协议格式。
如结合第三方面所讨论的,在一些实施例中,多个(M个)事件流ESn=1至M中的每个事件流ESn还可以与特定于给定事件流ESn的密钥链K相关联,使得K=K0至i,其中,在该实施例中,i是表示与给定事件流ESn相关联的事件的当前索引值或长度或当前数量的整数。此外,还可以基于非对称密钥对或数字签名来执行对客户端附加到给定事件流的权限的其他认证和验证检查,此类检查可以是API访问令牌存在性测试或会话检查或密码/数字签名测试,或用于核实事件流ESn或作出的服务请求的某些其他适当方法。
在该步骤中,来自客户端的请求可以作为JSON对象在API处接收,该JSON对象具有多个事件流ESn=1至M中的每个事件流的标识符,即M个事件流标识符将包括在表示该请求的JSON对象中。在一些实施例中,来自客户端的请求还可以为一个或更多个标识的事件流ESn指定目标索引,该目标索引是下一可用索引,或者换言之,表示将用于同步请求的事件流的实际或当前长度+1。
步骤904描述了从步骤902中的请求标识或获取与当前事件En相关联的数据。这是用于同步多个(M个)事件流的数据,并且是要添加或附加到请求中标识的M个事件流ESn中的每个事件流的事件En。
在上述一些实施例中,作为同步过程的一部分,与添加到每个流中的事件En相关联的事件数据可能不同于多个流中的一个或更多个其他流。例如,当与其他参与事件流相比时,与每个事件流相关联的元数据可能有所不同。元数据可以与同步逻辑时钟、特定于给定事件流的不同货币或汇率的使用、向每个流添加随机值(即,盐值)、哈希值和/或盐值函数的属性等相关联。
步骤906描述了在可以同步多个流之前执行一个或更多个验证步骤的实施例。当在步骤902中在API处接收到同步两个或更多个流的请求时,将通过检查针对创建事件流时提供的公钥提供的签名是否核实对流的签名输入来核实多个ESn=1至M中的每个流ESn,在这种情况下,数据是附加同步事件En的请求。例如,签名可以基于在创建时为给定事件流提供的公钥(参见图5)。
然后,仅当对于多个(M个)事件流ESn=1至M中的每个事件流的核实成功时,同步请求才会继续。即使如果其中一个失败,则同步请求不会继续,并且可以生成错误消息,如步骤912所示。
在一些实施例中,该步骤还包括验证客户端在步骤902中为一个或更多个标识的事件流指定的数据En的目标索引是否与事件流的最后一个索引匹配。这将是用于将数据附加到相应事件流中的下一可用索引。这针对所有多个(M个)事件流ESn=1至M执行。如果其中一个失败,则同步不会继续,并且在步骤912中生成错误消息。因此,该步骤检查是否同时发生,并验证没有与可能已导致实际索引值发生更改的给定事件流相关联的且在时间上可能重叠的请求。
下面给出了错误响应示例,其中目标索引与事件流id1中的实际最后一个或下一可用索引不匹配,但与JSON请求对象中标识的事件流id0匹配:
在步骤906中成功核实之后,在步骤908中,对于多个(M个)事件流ESn=1至M中的每个事件流ESn,标识与相应事件流ES相关联的先前的区块链事务TXn-1。如上所述,在步骤902中,种子密钥对K或密钥链可以与每个事件流ESn相关联并且特定于每个事件流ESn。在这种情况下,然后确定与所标识的先前事务TXn-1相关联的密钥对Ki-1。基于此,从种子密钥对K中导出要添加到事件流ESn的当前事件En的密钥对Kn。
步骤910描述了为要附加到M个事件流ESn中的每个事件流的当前事件En创建原子区块链事务TXn,以便同步多个事件流ESn=1至M。该事务是更新多个流的单个事务,以便同步M个事件流与给定事件En。原子区块链事务可以称为会面事务。此类事务是对图6中启用单个附加操作的事件流的增强,因为它们可以原子方式将同一事件附加到多个流,即,与会面事务或原子事务相关的所有事件流都会扩展或与给定En同步,或者都不会扩展或同步。事件En可以与所有事件流的相同事件数据相关联,或者事件En可以与多个(M个)事件流中的一个或更多个事件流的不同事件数据相关联。
原子事务或会面事务是跨事件流的事务,并且与图6的步骤612中的事务不同,这些事务涉及构建多个尘埃链,每个尘埃链对应于作为第一输入的多个(M个)事件流中的给定事件流ESn。
因此,原子区块链事务TXn包括:
-n=M个输入,每个输入与多个事件流中的相应事件流ESn相关联,每个第n个输入花费与相应事件流ESn的先前事务TXn-1相关联的尘埃输出;
-n个输入中的每个输入的相应未花费事务输出(UTXOn_dust),该未花费事务输出是与相应事件流ESn相关联的原子事务TXn的第n个尘埃输出;以及
-未花费事务输出(UTXOn_data),与表示当前事件En的事件数据相关联,即数据载体。
如上述各方面所述,可能会有额外的输入,如酌情支付网络挖矿费的资金输入;也可能会有其他输出,如变更输出或数据载体输出,例如,与原子事务的每个事件流相关联的OP_RETURN。
如果事件流ESn与密钥链K相关联,则与步骤602类似,使用在步骤908中获取的先前的事务的所获取密钥对Ki-1来授权相应的第n个尘埃输入花费。原子区块链事务TXn的第n个尘埃输出与使用在步骤908中导出的密钥对Kn来保护的锁定脚本相关联。
在本公开中讨论的所有事件流中,跟踪事务的尘埃输入/输出(即,尘埃链)用于防止对日志中的条目重新排序,防止事后插入/删除、分叉(即,可选时间线)等,利用区块链网络的安全性、不可变性和双重花费保护。由一系列数据载体事务中的第n个输入/输出对形成的该尘埃链共同保护相应的单个事件流ESn。
与标准事件流尘链事务一样,会面事务或原子事务包含尘埃链、平台资金和(事务费用)变更,以及每个事件流的数据载体。然而,原子事务使得许多尘埃链能够通过单个区块链事务,每个尘埃链与不同的事件流有关。
因此,所有尘埃链对都会进行平台资金和变更。在上述实施例中用于同步的数据有效载荷或事件数据En将是原子事务中的输出。该事务的语义是将该数据有效载荷附加到其尘埃链包括在开始的n=M个输入/输出对中的所有流,从而有效地跨多个事件流提供数据的原子提交。
在一些实施例中,例如上文图9中所示,输入和输出索引具有一对一映射,其中,单个数据元素具有最终输出索引。如上所述,可以单独验证参与原子区块链事务的多个事件流是否已正确同步/更新。审计员或验证实体或程序可能需要用于相应事件流ESn的输入索引以检查该特定事件流。在一些实施例中,索引可以通过平台处理器作为客户端或验证实体可用的元数据的一部分来提供,或者索引可以通过观察事务输入在链上获取,即通过扫描输入以与相应事件流的先前的事件的输出匹配。
假设代表客户端操作的验证实体拥有或能够访问正在验证的事件流,考虑使用复式记账策略来验证已经使用图9的方法同步的事件流的示例,其中,需要验证一个账户的每个余额变化与另一个账户的相同和相反的余额变化相匹配。该示例并不限于一个借方账户和一个贷方账户,只要所有余额变化的总和为零,则可以应用于任意数量的账户。例如,考虑两个事件流A和B,其中A表示使用汇率或约定偏移量X的账户,而B表示使用给定货币的汇率或约定偏移量Y的账户,其中,1X=0.5Y。假设当A将2个单位货币以偏移量X转移到B时,这两个账户将同步。虽然该转移表示每个流的同步事件En,但与每个流相关联的事件数据可能不同。对于A,事件数据可以表示以偏移量X减少2个单位。对于B,事件数据可以表示以偏移量Y增加1个单位,这相当于以从A转移的偏移量X增加2个单位。在其他示例中,可以将该转移分为两个单独的原子事务,一个用于记录在两个事件流中的从A的2X减法事件,另一个用于记录在两个流中的转移到B的1Y个单位的加法事件。
可以按顺序处理验证以检查给定事件流ESn的事件,直到遇到原子区块链或会面事务。从这一点开始,验证实体可以审查也属于相同客户端的其他账户并执行零和计算。然后,可以在该阶段标记任何错误,并且如果没有错误,验证实体只需继续验证其正在检查的流中的下一事件。
下面给出了附加到三个流的原子事务输入/输出的示例:
花费尘埃1 | 输出尘埃1 |
花费尘埃2 | 输出尘埃2 |
花费尘埃3 | 输出尘埃3 |
平台资金(事务费) | 平台变更(=资金-费用) |
OP_RETURN数据载体(语义附加到所有流) |
图11中示出了与两个事件流T1和T2相关联的原子事务的示例。在该图中可以看出,每个T1和T2的尘埃输入/输出对分别是原子事务TX12中索引0和索引1处的前两个条目。TX12跟踪与两个事件流T1和T2相关联的尘埃链。
在同步多个事件流ESn=1至M的原子事务之后,在一些实施例中,API端点返回与多个ESn=1至M中的每个事件流ESn相关联的下一可用索引值的响应数组。这可以提供给请求同步的客户端。可以提供响应数组,以便针对每个事件流进行独立验证,或者使得客户端知道要对相应事件流ESn使用哪些索引值来请求后续事件。如果一个或更多个事件流的索引未知,例如,如果事件流为空,则事件流可以包括空值。
数据已附加并且因此跨所有M个事件流同步后,每个相应事件流ESn可以在原子事务之后作为诸如在第三方面中所讨论的单独流继续独立进行。
操作后,将多个事件流ESn=1至M提交给区块链,以在单个多输入/多输出集合事务或原子事务中进行链上结算。在进行链上结算时,在步骤902中,API收集要在链上结算的M个事件流中的每个事件流,并将它们分组为单个区块链集合事务。
图10涉及本公开的第四方面,并示出一种用于访问平台或数据写入服务以同步与区块链相关联的事件流的计算机实现的方法,例如图1中所示的平台100或图3中所示的平台300。图10中的方法由与客户端相关联的一个或更多个处理器实现。
在步骤1002中,标识与用于同步事件流的平台相关联的应用程序编程接口(API)端点。该API可以通过一种或更多种已知的API提交方式提供给客户端。如结合图8所述,这可以是与用于提供数据写入服务的主机平台处理器相关联的API,或者可以是专用于同步多个事件流的单独API。
在步骤1004中,客户端准备与事件En相关联的请求以同步或附加到多个(M个)事件流ESn=1至M。如上所述,多个(M个)事件流ESn=1至M的标识符和/或更多个事件流中的每个事件流的目标索引也可以包括在请求中。
在步骤1006中,使用超文本传输协议(HTTP)或类似传输协议格式发送在步骤1004准备的请求,因为平台处理器实现为HTTP或REST API。该请求作为JSON对象发送,如上面结合图9所述。
在步骤1008中,接收与M个事件流中的每个事件流有关的结果。如果事件En未附加到多个事件流中的任何一个事件流,则结果将是错误消息。如果事件En成功附加到所有M个事件流,则在一些实施例中,API返回响应数组,该响应数组包含多个事件流ESn=1至M中的每个事件流的当前索引或长度的详细信息。在一些实施例中,还接收与事件En的原子区块链事务的输出脚本相关联的结果。该结果以HTTP传输协议格式提供给客户端。在一些实施例中,结果可以单独保存在区块链的日志中,该区块链在平台处理器中或与平台处理器相关联。
第五方面–验证与区块链相关联的事务
与图3中所示的平台300提供的平台服务相关联的数据服务302,例如与数据写入器302a相关联的一个或更多个处理器,通过时间戳、防篡改证据和不可否认机制来确保数据完整性,以通过使用如本公开的第二方面、第三方面和第四方面中所讨论的事件流等机制来提供不可变性。与数据写入器相关联的实施例提供了符合现代数据保护规则的数据存储和检索解决方案,引入了不可否认属性,并以允许独立验证数据的简单过程提供了所有属性的认证。
数据服务302(尤其是数据写入器302a)利用嵌入其中的客户或客户端数据构建链上事务。如本文所述,事务是不可变的且公开的,一旦包含在区块链中就不能删除。进一步地,这些事务通过区块链网络广播。
在某些情况下,在处理受数据隐私和保护法保护或属于机密数据的敏感数据时,事务的不可变性和公共属性的优点可能会造成一些障碍。
与平台300相关联的公证的第一概念,以及优选地或特别地,与数据写入器302a相关联的一个或更多个处理器将客户或客户端数据的加盐指纹或记录提交给区块链。应当理解的是,盐值是可以针对与数据写入器相关联的每个事务随机生成的唯一值。第一概念的盐值数据具有无需显示任何内容并防止蛮力原像攻击(例如,脑钱包攻击)的优点。
与平台相关联的公开的第二概念,以及特别地,与数据写入器302a相关联的一个或更多个处理器将全部数据有效载荷提交给区块链。有利地,该第二概念提供客户端数据的持久性和分布性。
数据一旦公证或公开,平台就会生成包含在数据区块链中的证明。所附事务及其包含证明的组合构成证书。这些证书是数学上可靠的证明,不能伪造或篡改,并且有利地可以独立于平台300或与平台相关联的任何服务(例如,数据写入器302a)单独验证和分离。
在本公开的第五方面,与图3中所示的平台300的数据服务302相关联的一个或更多个特征、方法或过程,同时能够独立于平台300来实现,以允许在公证或公开时存储或提供经公证或公开的客户或客户端数据,并允许随后检索所述数据。此外,在一些实施例中,提供了数据检索功能,其有利地允许客户端或客户实体从平台300检索上述公证和公开证书。
作为认证过程的一部分,如上所述,与平台300或数据服务302相关联的一个或更多个处理器生成一个或更多个链上事务。一旦包含在区块中,事务就会继承不可变性的基本属性,并且将与时间戳和篡改证据相关联。数据服务进一步生成证书,该证书是包括事务、区块头以及将事务链接到区块头的包含证明的数据包。
平台服务验证–第一种实现方式
第五方面的第一实施例或实现方式描述了一种用于确定如何证明任何事务可以包含在区块中的方法。
采取以下步骤验证事务包含在区块链中:
1.确保所认证的事务包含在区块中。在一些实施例中,这包括使用证书中包含的包含证明。
2.确保步骤1中的区块是区块的最长工作量证明链的一部分。在一些实施例中,这包括使用最长工作量证明区块链的独立来源视图。
在一些示例中,这些步骤可以由与数据服务本身相关联的一个或更多个处理器或工具或软件执行。然而,使用数据服务在平台300上引入了信任元素以进行验证。为了提供完全独立的验证,有利地执行根据本公开的验证过程,而不需要任何依赖数据服务302或实际上依赖任何平台服务工具。
下面给出了根据第五方面的第一种实现方式的验证过程的示例性架构,如图11所示。
术语表:
方法
1.在步骤1102中,获取或标识事务T。然后,在步骤1104中,从与客户端或账户相关联的本地副本或存储器中或从数据服务存储设施中获取C。
2.根据步骤1106确定有效区块的最长链。在一些实施例中,例如,可以使用仅本地区块头的网络客户端来获取最长工作量证明区块链视图。本地区块头客户端是被配置为存储与事务T相关联的区块头的客户端。此外,还可以使用用于建立最长链的其他已知或现有技术。为了便于参考,本公开的下文中提及了区块头客户端的示例。
3.在步骤1108中,如下所述计算R′:
H(T):=sha256(sha256(T))
σ:=H(T)
对于PT H B中的每个引理λ
如果λ在左,则λ′:=(λ||σ)T
如果λ在右,则λ′:=(σ||λ)
σ:=sha256(sha256(λ′))
R′:=σ
4.在步骤1110中验证R=R′,否则在步骤1112中验证失败。
5.在步骤1114中验证R′包含在HB中,否则验证失败;根据步骤1114验证HB∈Ω,否则在步骤1116中验证失败。
可以针对比特币区块头的本地数据库执行验证。通过实时同步来自网络中所有对等体的轮换子集的区块头消息,可以从比特币网络填充该数据库。有利地,最长链独立地来源于所有对等体的随机和轮换选择,从而最终与所有对等体同步。这可有利地防止对根据第一实施例所述的验证过程的日蚀攻击,因此如果恶意方能够访问或控制区块链网络中的多个节点或IP地址,则创建对抗分叉。日蚀攻击是指恶意方可能试图通过提供仍然可以在数学上追溯到区块的错误证据来隐藏有效的区块链,但该区块可能是无效的或可能是由恶意方生成的区块。
例如,可以提供开源比特币SV(BSV)区块头客户端。区块头客户端如上所述地运行,并且可以用于获取区块头的最长链。由于区块头客户端是开源客户端,因此也可以由独立的验证器实体检查,以确保所标识的链准确、真实地表示区块头的最长链。
或者,也可以具有其他含义,或者独立的验证器可以实现自己的区块头客户端来获取所需的数据。
存在公共区块资源管理器服务。无论这些服务是通过Web界面还是通过API运行,这些公共区块资源管理器通常会在给定区块哈希值时提供获取区块元数据的功能。与获取区块头一样,如果使用第三方或独立数据来源,则优选地可以使用来源选择。正如任何独立验证器所看到的那样,这是为了有利地降低单个或少数外部参与者控制区块链视图的可能性。
如上所述,通道可以用于要发送和接收的验证数据。
数据写入器验证–第二种实现方式
如上关于第一方面至第三方面所讨论的,数据服务的数据写入器302a提供API,以允许客户公证和/或公开单独的数据有效载荷。这是通过将数据(如上文所述公开)或数据的加盐哈希值提交(如上文所述公证)嵌入比特币事务中。然后,平台为事务提供资金。因此,除通过HTTP请求(例如,POST)提供嵌入式数据之外,有利地,客户或客户端不参与链上事务构建。
如上文第三方面所述,数据载体事务将价值或资金从平台支付回平台(变更,减去任何挖矿费),然后包括数据提交作为额外的可证明不可花费的事务输出。上述公证和公开遵循类似的流程。
首先,将数据封装到事务中,该事务将提交给区块链。
其次,稍后将事务包含在区块中。
然后,客户端通过发出HTTP POST请求来启动操作,例如下面给出的示例:
POST/api/v1/writer/(notarise|publicise)[?store=true]HTTP/1.1
Host:(region-code).data.services.example.org
Authorization:Bearer(api-token)Content-length:...
<在此处插入原始数据>
在一些实施例中,平台可以提供一个或更多个存储器或存储模块,该存储器或存储模块集成在平台内或以其他方式与平台相关联。可以为与平台服务相关联的一个或更多个客户端提供这些存储器。因此,如果客户端可以是不具有与其相关联的存储器的客户端,或者优选地将与平台300相关联的数据存储在客户端实体之外的位置或与和客户端相关联的一个或更多个处理器相关联的位置,则可以购买或租赁或使用与平台相关联的存储器。在这种情况下,如果与平台相关的存储器存在或处于活动状态,则将客户端请求(HTTPPOST)中的有效载荷写入与平台相关联的私有和/或受地理限制的数据存储器中。
如果经过公证,则会生成提交有效载荷,即全部客户或客户端有效载荷的加盐哈希值。
构建数据载体事务,然后将提供资金的事务提交给区块链,从而允许接收接受/拒绝消息作为响应。
对请求的响应包含标识符,即写入标识符,该标识符稍后可以用于请求数据证书(如果可用)的副本并检索原始数据有效载荷(如果已存储)。
示例性数据写入器HTTP响应模板如下所示:
HTTP/1.1 201Created
Location:https://(region-code).data.services.example.org
/api/v1/writer/write/(write-id)Content-type:application/json Content-length:...
{
//unique id for this write"id":"(write-id)",
//accepted:transaction created,not in block yet
//certified:transaction mined into block,certificate
available
"status":"accepted"|"certified",
//path to latest version of this document
//matches the Location header"manifest":"https://(region-
code).data.services.example.org/api/v1/writer/write/(write-id)",
//if storage was opted into,path to retrieve the raw payload
"payload":
"https://(region-code).data.services.example.org/api/v1/writer/write/(write-id)/payload",
//if status is certified,path to retrieve the system-generatedcertificate
"certificate":
"https://(region-code).data.services.example.org/api/v1/writer/write/(write-id)/certificate"
}
在第五方面的第二种实现方式中,本公开扩展了第一实施例中所述的验证,使得其不仅适用于事务的完整性,而且还用于确认事务包含预期客户或客户端数据。
可以在不依赖平台处理器的情况下执行第二种实现方式。
下面给出了根据第五方面的第二种实现方式的验证过程的示例性架构,如图12所示。
术语表:
方法:
1.在公证S的情况下,从本地副本或从数据服务存储设施中获取D、C。请参阅图12的步骤1202。
2.在步骤1204中,确定数据提交d:
对于所公证的数据,d:=sha256(sha256(S||D));
对于所公开的数据,d:=D。
3.在步骤1206中,从C中提取T。如果证书采用JSON格式,则提取可以包括基于密钥读取数据。或者,可以使用二进制编码或其他已知方法来解析C中的数据以提取T。
4.验证T包含满足以下测试的至少一个输出,否则验证失败:
值==0,即测试T中至少一个输出的值是否设置为0;
脚本==OP_FALSE OP_RETURN<d>,即测试其中一个脚本T是否返回。
5.执行如第一种实现方式和图11所述的过程。
事件流验证–第三种实现方式
如关于本公开的第二方面和第三方面所讨论的,事件流是区块链支持的仅附加日志。如图5至8所示,与平台服务300相关联的客户端可以创建、附加和关闭事件流。与所有数据服务302一样,附加到事件流的数据可以公证或公开,并且可选地,底层数据可以存储在私有和/或地理围栏存储器中。可以根据流ES而不是根据条目En做出这些选择。
如上所述,与事件流相关联的数据写入器302a可以用于验证日志中的任何单个条目。事件流利用底层区块链,至少通过以下与事件流相关联的固有属性或规则或事实来扩展与第五方面的第一实施例和第二实施例相关联的优点:
-事件流中的单个条目一旦写入就无法修改;
-这些流是仅附加流,因此
先前连续条目之间无法插入任何条目
无法删除条目
无法对任何条目进行重新排序
-未经授权方不得将事件附加到事件流中。
利用链上嵌入数据的概念,与第五方面的第一种实现方式和第二种实现方式相关联的验证过程仍然适用于事件流内的任何单个事件。在第三种实现方式中,将事务模板扩展为包括链接单个事务的尘埃链(如上所述,这是比特币的最低可能值)。该尘埃链中的每个事务都包含数据载体,该数据载体表示流中的单个事件。尘埃链中的事务通过连续事务来链接,该连续事务花费来自上一个事务的尘埃输出,如第三方面中详细描述的。
比特币区块链不允许重复花费系统中的任何值。因此,每个已花费的事务输出仅在一个后继事务中花费一次。有利地,该属性可(i)防止日志的任何分叉;(ii)确保每个条目恰好具有一个前导项和零个或一个后继项;(iii)除上述事务外,没有其他事务在比特币规则下有效,因此,事件流不可能有其他结构。
不可变分类账可防止稍后重新写入事务图。有利地,这可确保无法在事后插入任何条目。虽然一方可以保留事务的详细信息,并因此输入尘埃链中的某个位置;但该方无法构建将通过事务包含确认检查的替代资金转移来使另一方相信尘埃链中不包括某一特定条目。尘埃链将显示一方试图保留的任何条目不存在。
所有事件流交互都由HTTP API驱动。可以使用以下示例请求构建流:
POST/api/v1/stream/create?mode=(notarise|publicise)[&store=true]HTTP/1.1
Host:(region-code).data.services.example.org
Authorization:Bearer(api-token)
与本公开中的示例一样,上面的请求架构是简化架构。实际的API调用可以接受定义访问控制策略、保留策略、链上可见性等的多个参数。
然后,API可以响应与事件流有关的信息:
HTTP/1.1 201Created
Location:https://(region-code).data.services.example.org
/api/v1/stream/(es-id)
Content-type:application/json
Content-length:...
{
//unique id for this event stream"id":"(es-id)",
//accepted:transaction created,not in block yet
//certified:transaction mined into block,certificate
available
"status":"accepted"|"certified"
}
数据可以通过额外的HTTP请求附加到事件流中,例如:
POST/api/v1/stream/(es-id)[?after=(seq-no)]HTTP/1.1
Host:(region-code).data.services.example.org
Authorization:Bearer(api-token)
Content-length:...
<原始条目有效载荷>
seq-no的可选的after参数允许调用程序仅在自上次观察以来该参数未附加到事件流时才附加到事件流。使用根据第四方面所述的原子区块链或会面事务在多个客户端之间同步事件流操作时,这可能是有用的。这可以用作开放式并发控制的一种形式。
HTTP响应模板的示例如下:
HTTP/1.1 201Created
Location:https://(region-code).data.services.example.org
/api/v1/stream/(es-id)/(seq)
Content-type:application/json Content-length:...
{
//(globally)unique id for this write"id":"(write-id)",
//event stream id"esid":"(es-id)",
//sequence number within this event stream"seq":(sequence-number),
//accepted:transaction created,not in block yet
//certified:transaction mined into block,certificate
available
"status":"accepted"|"certified",
//path to latest version of this document
//matches the Location header"manifest":"https://(region-
code).data.services.example.org/api/v1/stream/(es-id)/(seq)",
//if storage was opted into,path to retrieve the raw payload
"payload":
"https://(region-code).data.services.example.org/api/v1/stream/(es-id)/(seq)
/payload",
//if status is certified,path to retrieve the system-generatedcertificate
"certificate":
"https://(region-code).data.services.example.org/api/v1/stream/(es-id)/(seq)
/certificate"
}
如果提供了after参数,并且发现所提供的seq-no不是事件流中的最后一个条目,则返回HTTP 409冲突响应,而不是上述内容。
可以从平台服务300HTTP API下载事件流数据,例如可选地存储的有效载荷以及证书。或者,授权观察者可以使用不同的API(例如,与简单支付验证(SPV)相关联的API),接收事件流的副本。该API可能会为新数据提供推送通知。在该配置中,事件流服务充当SPV通道服务器,并且观察者(接收副本)可以是SPV通道客户端。
第五方面的第三种实现方式扩展了第一种实现方式和第二种实现方式,以便附加地确认事件流中事件之间的关系。由事件流生成的证书构成了因果之前、之后、紧前和紧后关系的证明。
除针对各个条目的第一种实现方式和第二种实现方式之外,在第三种实现方式中,可以通过从流的一端开始并遍历尘埃链中的每个事务直至到达该流的另一端来验证事件流的完整性。
对于每个事务,首先执行根据图12针对第二个实施例中的数据写入器描述的验证,这单独确认了与数据写入器服务相同的保证。
其次,检查事务的输入和输出。事务的第一输入必须引用上一个事务的第一输出,第一输出必须是尘埃输出。尘埃链中的任何差异表明相关联的仅附加日志不可靠。
与所有数据服务一样,虽然根据该实现方式所述的方法可以由平台服务300执行以执行该验证;但是,第五方面允许执行完全独立的验证。
下面给出了根据第五方面的第三种实现方式的验证过程的示例性架构,如图13所示。
术语表:
方法:
该验证可以在事件流中向前或向后执行。前向验证[T0、……、Tn、……、Tfinal]在本文中进行描述,但不应被视为具有限制性。
1.验证流创建:根据图13中的步骤1302,获取T0、C0。
针对T0、C0,执行根据第一实施例(图11)所述的验证
在步骤1304中,验证T0的第一输入不是尘埃输入,否则在步骤1306中验证失败
根据步骤1308验证T0的第一输出是尘埃输出,否则在步骤1310中验证失败
2.对于仅附加日志中的每个数据条目Dn:
获取Dn、Cn
根据步骤1312针对Dn、dn、Cn执行数据写入器验证,传播任意失败结果
根据步骤1314验证输入Tnin0花费输出Tprevout0,否则在步骤1316验证失败
Tnin0 prevout、previdx与H(Tprev),0匹配,否则验证失败
Tnin0scriptSig赎回脚本正确解决
Tprevout0 scriptPubKey锁定脚本(通过执行该脚本)
3.可选地,对于关闭的流,基于以下内容在步骤1318中验证关闭事务:
获取Tfinal、Cfinal
针对Tfinal、Cfinal执行根据第一实施例所述的验证
验证Tfinal的第一输入是尘埃输入,否则验证失败
验证Tfinal的第一输出不是尘埃输出,否则验证失败
验证输入Tfinalin0花费输出Tprevout0
现在转到图14,提供了可用于实施本公开的至少一个实施例的计算设备2600的说明性简化框图。在各种实施例中,所述计算设备2600可用于实现以上示出和说明的任何系统。例如,计算设备2600可被配置为用作图中DBMS的一个或更多个组件,或者计算设备2600可被配置为与给定用户相关联的客户端实体,该客户端实体针对由图14的DBMS管理的数据库提出数据库请求。因此,计算设备2600可以是便携式计算设备、个人计算机或任何电子计算设备。如图14所示,计算设备2600可包括具有一级或更多级高速缓存的一个或更多个处理器以及存储器控制器(统称为2602),所述存储器控制器可被配置为与包括主存储器2608和永久存储器2610的存储子系统2606通信。如图所示,主存储器2608可以包括动态随机存取存储器(DRAM)2618和只读存储器(ROM)2620。存储子系统2606和高速缓存存储器2602可用于存储信息,诸如与本公开中所描述的事务和区块相关联的细节。处理器2602可用于提供本公开中描述的任何实施例的步骤或功能。
处理器2602还可以与一个或更多个用户界面输入设备2612、一个或更多个用户界面输出设备2614和网络接口子系统2616通信。
总线子系统2604可以提供用于使计算设备2600的各个组件和子系统能够按预期彼此通信的机制。虽然总线子系统2604示意性地示出为单个总线,但是总线子系统的替代实施例可以利用多个总线。
网络接口子系统2616可以向其他计算设备和网络提供接口。网络接口子系统2616可以作为从计算设备2600接收数据和向其他系统传输数据的接口。例如,网络接口子系统2616可以使数据技术人员能够将设备连接到网络,使得数据技术人员能够在远程位置(例如数据中心)向设备发送数据并从设备接收数据。
用户界面输入设备2612可以包括一个或更多个用户输入设备,例如键盘;指点设备,如集成鼠标、轨迹球、触摸板或图形平板电脑;扫描仪;条形码扫描仪;包含在显示器中的触摸屏;音频输入设备,如语音识别系统、麦克风;以及其他类型的输入设备。一般而言,术语“输入设备”的使用旨在包括用于向计算设备2600输入信息的所有可能类型的设备和机制。
一个或更多个用户界面输出设备2614可包括显示子系统、打印机、或非视觉显示器(例如音频输出设备等)。显示子系统可以是阴极射线管(CRT)、平板设备(例如液晶显示器(LCD))、发光二极管(LED)显示器或投影或其他显示设备。通常,术语“输出设备”的使用旨在包括用于从计算设备2600输出信息的所有可能类型的设备和机制。例如,可以使用一个或更多个用户界面输出设备2614来呈现用户界面,以便于用户与执行所描述的过程和其中变型的应用程序进行交互(当这种交互可能合适时)。
存储子系统2606可以提供计算机可读存储介质,该计算机可读存储介质用于存储可提供本公开的至少一个实施例的功能的基本编程和数据构造。当由一个或更多个处理器执行时,应用程序(程序、代码模块、指令)可以提供本公开的一个或更多个实施例的功能,并且可以存储在存储子系统2606中。这些应用程序模块或指令可以由一个或更多个处理器2602执行。存储子系统2606可另外提供用于存储根据本公开所使用的数据的存储库。例如,主存储器2608和高速缓存存储器2602可以为程序和数据提供易失性存储。永久存储器2610可以提供用于程序和数据的永久(非易失性)存储,且可包括闪存、一个或更多个固态驱动器、一个或更多个磁硬盘驱动器、一个或更多个具有关联可移动介质的软盘驱动器、一个或更多个具有关联可移动介质的光驱动器(例如CD-ROM或DVD或蓝光)以及其他类似的存储介质。这样的程序和数据可以包括用于执行如在本公开中描述的一个或更多个实施例的步骤的程序以及与在本公开中描述的事务和区块相关联的数据。
计算设备2600可以是各种类型的,包括便携式计算机设备、平板电脑、工作站或下文描述的任何其他设备。另外,计算设备2600可包括可通过一个或更多个端口(例如,USB、耳机插孔、闪电连接器等)连接至计算设备2600的另一设备。可以连接到计算设备2600的设备可以包括被配置为接受光纤连接器的多个端口。因此,该设备可以被配置为将光信号转换成电信号,所述电信号可经由将该设备连接至计算设备2600进行处理的端口传输。由于计算机和网络的不断变化的性质,图14所示的计算设备2600的描述仅用作说明设备的优选实施例的特定示例。与图14中描述的系统相比,具有更多或更少组件的许多其他配置是可能的。
列举的示例性实施例
本公开在此基于与上述方面相关的以下条款进行讨论,本文中提供这些条款作为示例性实施例,以便更好地解释、描述和理解要求保护的方面和实施例。
1.一种用于验证事务包含在区块链中的方法,所述方法包括以下步骤:
标识待验证的事务T;
获取与所述事务T相关联的证书C,其中,所述证书包括给定区块的区块标识符、和将所述事务链接到所述区块链中的所述给定区块的包含证明(inclusion proof);
确定所述区块链中有效区块的最长链;以及
验证所述给定区块包含在所述最长链中。
2.根据条款1所述的方法,其中,所述证书C是从与客户端相关联的本地存储器中获取的。
3.根据条款1所述的方法,其中,所述证书C是从与验证器实体相关联的存储器中获取的。
4.根据条款1所述的方法,其中,所述证书C是从与平台相关联的存储器中获取的。
5.根据前述任一项条款所述的方法,包括以下步骤:使用被配置为存储与所述事务T相关联的区块头的区块头客户端来获取所述最长区块链。
6.根据前述任一项条款所述的方法,进一步包括以下步骤:
根据将所述事务T连接到与所述给定区块相关联的默克尔根R的包含证明来计算默克尔根R’;
响应于R=R’,所述方法包括以下步骤:
确定R’包含在所述给定区块中;和
确定所述给定区块包含在所述最长链中。
7.根据条款6所述的方法,其中,所述方法进一步包括:
基于确定R与R’不匹配,生成错误消息;和/或
基于确定R’不包含在所述给定区块中,生成错误消息;和/或
基于确定所述给定区块不包含在所述最长链中,生成错误消息。
8.根据条款1至7中任一项所述的方法,进一步包括以下步骤:
获取与客户端相关联的数据D;
基于所述数据D,确定提交给区块链的数据的值d;以及
提取或标识与所述提交值d相关联的所述事务T。
9.根据条款8所述的方法,其中,所述提交值d基于盐值S。
10.根据条款9所述的方法,其中,所述提交值d是所述客户端数据D和所述盐值S的哈希值。
11.根据条款8至10中任一项所述的方法,包括:
通过使用根据条款1至7中任一项所述的方法来验证包含与ES0相关联的第一事务T0,验证事件流ESn=0至N的创建,其中,n是从0至N的整数,n表示所述事件流的长度,0是第一事件或创建事件,N是最终事件或终止事件;
确定所述第一事务T0的第一输入不是尘埃输入;
确定T0的第一输出是尘埃输出;
对于与所述事件流ESn=0至N的客户端相关联的事件的每个第n个数据条目Dn,执行根据条款8至10中任一项所述的方法;以及
当n>0时,验证与所述事件流ESn中的第n个事务Tn对应的输入花费与上一个事务Tn-1相关联的输出。
12.根据条款11所述的方法,其中,
如果所述第一事务T0的所述第一输入是尘埃输入,则生成错误消息;和/或
如果T0的所述第一输出不是尘埃输出,则生成错误消息。
13.根据条款11或12所述的方法,进一步包括:
通过使用根据条款1至7中任一项所述的方法来验证包含与ESN相关联的最终事务TN,验证事件流ESN的关闭;
确定所述第一事务TN的第一输入是尘埃输入;
确定T0的第一输出不是尘埃输出;以及
验证与所述事件流ESN中的最终第N个事务TN对应的输入花费与上一个事务TN-1相关联的输出。
14.根据条款14所述的方法,其中,
如果所述第一事务TN的所述第一输入不是尘埃输入,则生成错误消息;和/或
如果TN的所述第一输出是尘埃输出,则生成错误消息。
15.根据前述任一项条款所述的方法,其中,由与所述客户端相关联的一个或更多个处理器实现。
16.根据条款1至15中任一项所述的方法,其中,由与平台相关联的一个或更多个处理器实现。
17.根据条款1至15中任一项所述的方法,其中,所述方法由与验证器实体相关联的一个或更多个处理器实现。
18.根据条款17所述的方法,其中,所述验证器实体独立于所述客户端和/或所述平台。
19.一种用于为一个或更多个客户端实现通道服务的计算机实现的方法,所述方法由通道处理器实现并且包括以下步骤:
从所述一个或更多个客户端中的给定客户端接收请求,所述请求与通道创建有关;
向所述给定客户端提供对一项或更多项功能的访问权限,所述一项或更多项功能使得能够通过所述通道在所述给定客户端与另一实体之间进行直接通信,其中,所述一项或更多项功能包括:
与用于数据传输的所述通道有关的通道功能或过程;和/或
与使用所述通道传输的所述数据有关的消息功能或过程;
为所述通道发布一个或更多个访问令牌,所述一个或更多个访问令牌被配置为通过所述通道与另一实体进行安全通信;以及
存储和/或提供与所述给定客户端的所述通道相关联的一个或更多个通知。
20.一种用于处理与区块链相关联的事务的计算机实现的方法,所述方法由与客户端相关联的一个或更多个处理器实现并且包括以下步骤:
从通道服务获取对一项或更多项功能的访问权限,所述一项或更多项功能使得能够在所述给定客户端与另一实体之间进行直接通信,所述一项或更多项功能包括:
与用于数据传输的通道有关的通道功能或过程;和/或
与使用通道传输的所述数据有关的消息功能或过程;
从所述通道服务获取一个或更多个访问令牌,所述访问令牌使得能够与所述另一实体进行安全通信;
响应于获取或标识与所述客户端相关联的给定事务的事务标识符(TxID);
使用从通道处理器接收的一项或更多项通道功能,创建用于与另一实体通信的给定通道;
向所述另一实体发送与所述给定通道相关联的所述一个或更多个访问令牌;
接收与所述给定通道相关联的通知,所述通知与所述给定通道中的数据有关,以验证所述给定事务包含在所述区块链中。
应当注意的是,上述的方面和实施例是说明而不是限制本公开,并且本领域技术人员在不脱离由所附权利要求书所限定的本公开的范围的情况下将能够设计许多替代实施例。在权利要求书中,括号中的任何附图标记都不应解释为对权利要求的限制。词语“包括”等不排除任一项权利要求或说明书中整体列出的元件或步骤之外的元件或步骤的存在。在本说明书中,“包括”是指“包含“或”由......组成”。元件的单数形式并不排除此类元件的复数形式,反之亦然。本公开可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个装置的设备权利要求中,这些装置中的几个装置可以由同一硬件来体现。在互不相同的从属权利要求中引用某些措施的事实并不意味着不能有利地使用这些措施的组合。
Claims (20)
1.一种用于验证事务包含在区块链中的方法,所述方法包括以下步骤:
标识待验证的事务T;
获取与所述事务T相关联的证书C,其中,所述证书包括给定区块的区块标识符、和将所述事务链接到所述区块链中的所述给定区块的包含证明;
确定所述区块链中有效区块的最长链;以及
验证所述给定区块包含在所述最长链中。
2.根据权利要求1所述的方法,其中,所述证书C是从与客户端相关联的本地存储器中获取的。
3.根据权利要求1所述的方法,其中,所述证书C是从与验证器实体相关联的存储器中获取的。
4.根据权利要求1所述的方法,其中,所述证书C是从与平台相关联的存储器中获取的。
5.根据前述任一项权利要求所述的方法,包括以下步骤:使用被配置为存储与所述事务T相关联的区块头的区块头客户端来获取所述最长区块链。
6.根据前述任一项权利要求所述的方法,进一步包括以下步骤:
根据将所述事务T连接到与所述给定区块相关联的默克尔根R的包含证明来计算默克尔根R’;
响应于R=R’,所述方法包括以下步骤:
确定R’包含在所述给定区块中;和
确定所述给定区块包含在所述最长链中。
7.根据权利要求6所述的方法,其中,所述方法进一步包括:
基于确定R与R’不匹配,生成错误消息;和/或
基于确定R’不包含在所述给定区块中,生成错误消息;和/或
基于确定所述给定区块不包含在所述最长链中,生成错误消息。
8.根据权利要求1至7中任一项所述的方法,进一步包括以下步骤:
获取与客户端相关联的数据D;
基于所述数据D,确定提交给区块链的数据的值d;以及
提取或标识与所述提交值d相关联的所述事务T。
9.根据权利要求8所述的方法,其中,所述提交值d基于盐值S。
10.根据权利要求9所述的方法,其中,所述提交值d是所述客户端数据D和所述盐值S的哈希值。
11.根据权利要求8至10中任一项所述的方法,包括:
通过使用根据权利要求1至7中任一项所述的方法来验证包含与ES0相关联的第一事务T0,验证事件流ESn=0至N的创建,其中,n是从0至N的整数,n表示所述事件流的长度,0是第一事件或创建事件,N是最终事件或终止事件;
确定所述第一事务T0的第一输入不是尘埃输入;
确定T0的第一输出是尘埃输出;
对于与所述事件流ESn=0至N的客户端相关联的事件的每个第n个数据条目Dn,执行根据权利要求8至10中任一项所述的方法;以及
当n>0时,验证与所述事件流ESn中的第n个事务Tn对应的输入花费与上一个事务Tn-1相关联的输出。
12.根据权利要求11所述的方法,其中,
如果所述第一事务T0的所述第一输入是尘埃输入,则生成错误消息;和/或
如果T0的所述第一输出不是尘埃输出,则生成错误消息。
13.根据权利要求11或12所述的方法,进一步包括:
通过使用根据权利要求1至7中任一项所述的方法来验证包含与ESN相关联的最终事务TN,验证事件流ESN的关闭;
确定所述第一事务TN的第一输入是尘埃输入;
确定T0的第一输出不是尘埃输出;以及
验证与所述事件流ESN中的最终第N个事务TN对应的输入花费与上一个事务TN-1相关联的输出。
14.根据权利要求14所述的方法,其中,
如果所述第一事务TN的所述第一输入不是尘埃输入,则生成错误消息;和/或
如果TN的所述第一输出是尘埃输出,则生成错误消息。
15.根据前述任一项权利要求所述的方法,其中,由与所述客户端相关联的一个或更多个处理器实现。
16.根据权利要求1至15中任一项所述的方法,其中,由与平台相关联的一个或更多个处理器实现。
17.根据权利要求1至15中任一项所述的方法,其中,所述方法由与验证器实体相关联的一个或更多个处理器实现。
18.根据权利要求17所述的方法,其中,所述验证器实体独立于所述客户端和/或所述平台。
19.一种用于为一个或更多个客户端实现通道服务的计算机实现的方法,所述方法由通道处理器实现并且包括以下步骤:
从所述一个或更多个客户端中的给定客户端接收请求,所述请求与通道创建有关;
向所述给定客户端提供对一项或更多项功能的访问权限,所述一项或更多项功能使得能够通过所述通道在所述给定客户端与另一实体之间进行直接通信,其中,所述一项或更多项功能包括:
与用于数据传输的所述通道有关的通道功能或过程;和/或
与使用所述通道传输的所述数据有关的消息功能或过程;
为所述通道发布一个或更多个访问令牌,所述一个或更多个访问令牌被配置为通过所述通道与另一实体进行安全通信;以及
存储和/或提供与所述给定客户端的所述通道相关联的一个或更多个通知。
20.一种用于处理与区块链相关联的事务的计算机实现的方法,所述方法由与客户端相关联的一个或更多个处理器实现并且包括以下步骤:
从通道服务获取对一项或更多项功能的访问权限,所述一项或更多项功能使得能够在所述给定客户端与另一实体之间进行直接通信,所述一项或更多项功能包括:
与用于数据传输的通道有关的通道功能或过程;和/或
与使用通道传输的所述数据有关的消息功能或过程;
从所述通道服务获取一个或更多个访问令牌,所述访问令牌使得能够与所述另一实体进行安全通信;
响应于获取或标识与所述客户端相关联的给定事务的事务标识符(TxID);
使用从通道处理器接收的一项或更多项通道功能,创建用于与另一实体通信的给定通道;
向所述另一实体发送与所述给定通道相关联的所述一个或更多个访问令牌;
接收与所述给定通道相关联的通知,所述通知与所述给定通道中的数据有关,以验证所述给定事务包含在所述区块链中。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB2002285.1A GB202002285D0 (en) | 2020-02-19 | 2020-02-19 | Computer-implemented system and method |
GB2002285.1 | 2020-02-19 | ||
GB2013929.1 | 2020-09-04 | ||
GBGB2013929.1A GB202013929D0 (en) | 2020-09-04 | 2020-09-04 | Computer-implemented system and method |
GBGB2020279.2A GB202020279D0 (en) | 2020-12-21 | 2020-12-21 | Computer-implemented system and method |
GB2020279.2 | 2020-12-21 | ||
PCT/IB2021/051333 WO2021165848A1 (en) | 2020-02-19 | 2021-02-17 | Platform services verification |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115151934A true CN115151934A (zh) | 2022-10-04 |
Family
ID=83405446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180015933.6A Pending CN115151934A (zh) | 2020-02-19 | 2021-02-17 | 平台服务验证 |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP4107689A1 (zh) |
CN (1) | CN115151934A (zh) |
-
2021
- 2021-02-17 EP EP21709101.6A patent/EP4107689A1/en active Pending
- 2021-02-17 CN CN202180015933.6A patent/CN115151934A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4107689A1 (en) | 2022-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7461417B2 (ja) | セキュアなオフチェーンのブロックチェーントランザクション | |
US11164165B1 (en) | Multi-asset blockchain network platform | |
US20190236562A1 (en) | Systems, methods, and apparatuses for implementing document interface and collaboration using quipchain in a cloud based computing environment | |
WO2020234814A1 (en) | System or method to implement right to be forgotten on metadata driven blockchain using secret sharing and consensus on read | |
US11887072B2 (en) | Digital currency minting in a system of network nodes implementing a distributed ledger | |
CN111919417A (zh) | 在基于云的计算环境中用共识管理为分布式分类账技术实现超级社区和社区侧链的系统、方法和装置 | |
Zakhary et al. | Towards global asset management in blockchain systems | |
US20230362010A1 (en) | Systems and methods for predicting communication account identities across decentralized applications | |
CN115176248A (zh) | 与区块链相关联的一系列事件的事件流 | |
US20230095965A1 (en) | Compute services for a platform of services associated with a blockchain | |
US20230119035A1 (en) | Platform services verification | |
US20230308276A1 (en) | Creating non-fungible token shards | |
US20220399988A1 (en) | Linking blockchain operations | |
CN115151934A (zh) | 平台服务验证 | |
CN115136170A (zh) | 同步事件流 | |
US20220058597A1 (en) | Multi-asset blockchain network platform | |
US20230068597A1 (en) | Cryptocurrency system and method for performing financial transactions | |
US20220067028A1 (en) | Trustless operations for blockchain networks | |
US20230267457A1 (en) | Privacy preserving asset transfer between networks | |
WO2023161741A1 (en) | Privacy preserving asset token exchange |
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 |