与区块链相关联的一系列事件的事件流的制作方法

文档序号:31759246发布日期:2022-10-12 02:28阅读:56来源:国知局
与区块链相关联的一系列事件的事件流的制作方法

1.本公开总体涉及用于实现与一个或更多个客户端的分布式分类账(即区块链)相关联的一项或更多项服务的平台的方法和系统。具体而言,本公开涉及但不限于提供对与一个或更多个客户端的区块链相关联的多个功能和应用程序的访问,例如事件流或机器可读合约的实现方式。


背景技术:

2.在本文中,术语“区块链”涵盖所有形式的基于计算机的电子分布式分类账。这些分类账包括基于共识的区块链和事务链技术、许可和非许可的分类账、共享分类账、公共和私有区块链,及其变型。虽然已提出并开发了其他区块链实施方案,但是区块链技术最广为人知的应用是比特币分类账。为了方便和说明的目的,在本文中可能会提及比特币。但应注意,本公开不限于与落入本公开范围内的比特币区块链以及与任何类型的数字资产或数字资产的表示相关联的替代区块链实施方案和协议一起使用。术语“客户端”、“实体”、“节点”、“用户”、“发送方”、“接收方”、“支付方”、“收受方”在本文中可指计算资源或基于处理器的资源。在本文中,术语“比特币”可包括源自或基于比特币协议的任何版本或变型。术语“数字资产”可以指任何可转让的资产,诸如加密货币、表示至少一部分财产的代币、智能合同、许可证(即软件许可证)或媒体内容的drm合约等。应当理解的是,贯穿本文使用的术语“数字资产”表示可能与价值相关联的商品,该价值可以作为事务中的支付从一个实体转移到另一实体或提供给另一实体。
3.区块链是一种点对点的电子分类账,其实现为基于计算机的去中心化的分布式系统,所述系统由区块组成,而区块又由事务(transaction)组成。每个事务是一种数据结构,所述数据结构对所述区块链系统中参与者之间的数字资产控制权的转移进行编码,并且包括至少一个输入和至少一个输出。每个区块都包含先前区块的哈希值,由此区块被链接在一起,以创建自所述区块链创建以来写入其中的所有事务的永久性的不可更改的记录。事务包括嵌入到其输入和输出中的小程序,称为脚本,这些脚本指定如何以及由谁访问所述事务的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。
4.为了将事务写入区块链,必须对其进行“验证”。网络节点(矿工)进行工作以确保每个事务均有效,而无效事务则被网络拒绝。安装在所述节点上的软件客户端通过执行其锁定和解锁脚本对未花费的事务输出(utxo)执行此验证工作。如果所述锁定和解锁脚本的执行评估为true,则所述事务有效,然后将所述事务写入所述区块链。因此,为了将事务写入所述区块链,所述事务必须:i)由接收所述事务的第一个节点进行验证——如果所述事务通过验证,则此节点将其中继到网络中的其他节点;ii)添加到由矿工建造的新区块中;iii)已开采,即,添加到过去事务的公共分类账中。
5.应当理解,矿工执行的工作的性质将取决于用于维护区块链的共识机制的类型。虽然工作量证明(pow)与原始比特币协议相关联,但应当理解,可以使用其他共识机制,诸如股权证明(pos)、委托股权证明(dpos)、容量证明(poc)、过去时间证明(poet)、权威证明
(poa)等。不同的共识机制在节点之间的挖掘分布方式上有所不同,成功挖掘区块的几率取决于矿工的哈希能力(pow)、矿工持有的加密货币的数量(pos)、委托矿工持有的加密货币的数量(dpos)、矿工存储加密难题的预定解决方案的能力(poc)、随机分配给矿工的等待时间(poet)等。通常,矿工会因挖掘区块而获得激励或奖励。例如,比特币区块链用新发行的加密货币(比特币)和与区块中的事务相关联的费用(事务费用)奖励矿工。对于比特币区块链,加密货币的发行量会随时间的推移而减少,其激励最终仅由事务费用组成。因此,可以理解,事务费用的处理是将数据提交到公共区块链(诸如比特币区块链)的底层机制的一部分。
6.如先前所提及的,给定区块中的每个事务对区块链系统参与者之间的数字资产控制权转移进行编码。数字资产不一定对应于加密货币。例如,数字资产可能与文档、图像、实体对象等的数字表示有关。向矿工支付加密货币和/或事务费用可能只是作为一种激励,通过执行必要的工作来维持区块链的有效性。与区块链相关联的加密货币可能是矿工的安全保障,区块链本身是主要与加密货币以外的数字资产相关的事务的账本,而区块链本身是主要与加密货币以外的数字资产相关的事务分类账。在某些情况下,参与者之间的加密货币转账可能由不同于和/或独立于使用区块链维护事务分类账的实体的实体来处理。
7.一旦作为utxo存储在区块链中,用户就可将相关联资源的控制权转移到与另一事务中的输入相关联的另一地址。这种转移通常使用数字钱包完成,但实际上并非如此。该数字钱包可以是:设备;物理介质;程序;诸如台式机、笔记本电脑或移动终端等计算设备上的应用程序;或与诸如互联网等网络上的域相关联的远程托管服务。数字钱包存储公钥和私钥,并可用于:跟踪与用户相关联的资源、代币和资产等的所有权;接收或花费数字资产;转移可能与诸如加密货币、许可证、财产或其他类型的资源等数字资产相关的代币。
8.虽然区块链技术最广为人知的是用于实现加密货币,但数字企业家正在探索如何利用比特币所基于的加密安全系统和可存储在区块链上的数据来实现新的系统。如果区块链可以用于加密货币领域之外的自动任务和过程,则会非常有利。这种解决方案将能够发挥区块链的优势(例如,永久性防篡改事件记录、分布式处理等),同时其应用将更加广泛。
9.当前研究的一个领域是使用区块链实现“智能合约”。这些是设计成自动执行机器可读合约或协议条款的计算机程序。与以自然语言编写的传统合约不同,智能合约是机器可执行程序,它包括能够处理输入以产生结果的规则,然后使得根据这些结果执行动作。与区块链相关的另一关注领域是使用“代币”(或“彩色币”)来表示现实世界的实体,并通过区块链转移现实世界的实体。潜在的敏感或保密项目可以由无可辨别意义或价值的代币表示。因此,代币充当允许从区块链引用现实世界项目的标识符。
10.利用区块链的优点提供永久性防篡改事件记录时,上述示例或场景需要客户端、客户端实体、计算设备或与客户端相关联的终端,以包括或实现软件和/或硬件或处理器/模块,例如一种数字钱包,这种数字钱包用于实现用于管理数字资产以及管理由比特币中本聪愿景(bsv)区块链等使用的椭圆曲线数字签名算法(ecdsa)的加密密钥的功能。此外,客户端设备还需要能够实现区块链事务构建并能够访问bsv库。因此,客户端不仅需要包括实现此类功能的处理,还需要确保在能够利用区块链网络发送、接收和查看数据和/或数字资产之前,对此类流程实施适当的安全措施,其中所述数据和/或数字资产涉及智能合约或表示现实世界资产事务的代币。
11.因此,需要实现安全、低复杂度、用户友好、高效和稳健的技术,这些技术将允许任何客户端(无论在计算上是否复杂)能够以简单、快速、准确、可靠和安全的方式即时访问与所述区块链相关联的有用应用程序并与其交互,该方式在计算上和功能上不那么繁琐。更具体地,需要利用分布式分类账(区块链)技术,以及提高记录的安全性、透明度和可靠性的优点来为多个区块链相关服务或应用程序提供公共平台或接口,使任何客户端计算设备能够确保与该客户端相关联的任何数据、事件或数字资产能够被即时且安全地挖掘或轻松地写入区块链,从而提供其持久性防篡改和可审计记录,其可以根据需要创建、写入、更新、读取或查看。
12.现在已设计出这种改进的解决方案。本公开通过提出一种或更多种技术来解决上述技术问题,因此,与客户端相关联的数据或信息可以通过为与区块链相关联的一项或更多项服务提供应用程序编程接口(api)的方法、设备和系统来简单、安全且即时地写入区块链或从区块链获取,而无需此类客户端实现用于使用区块链的任何处理或功能,同时仍然能够利用与区块链相关联的所有优点。


技术实现要素:

13.本公开提出了用于提供、创建、更新和/或终止使用区块链实现的事件流以及创建与事件链相关联的事件的防篡改日志或记录的方法、设备和系统。在所接收的请求中标识所述事件流es的事件en,所述事件en表示所述事件流es的当前长度。如果n=0,使得en是创建所述事件流es的第一个事件,则创建区块链事务,包括作为尘埃输出的未花费输出。如果0《n≤n(其中n是n的最终值或最大值),使得en是修改所述事件流es的事件,则创建区块链事务,包括:第一输入,花费与所述事件流的先前的事务相关联的尘埃输出;作为所述当前事务的尘埃输出的未花费事务输出;以及与表示所述当前事件en的事件数据相关联的未花费事务输出。如果n=n,使得en是终止所述事件流es的事件,则创建区块链事务,包括:第一输入,花费与所述事件流的先前的事务相关联的尘埃输出;未花费事务输出,与超过定义的尘埃输出限值的数字资产相关联。接收所述创建的事务和/或将所述创建的事务提交给所述区块链后,以http传输协议格式提供与所述事务相关联的结果。在一些实施例中,所述事件流中的一个或更多个事务虽然被接受或作为给定事件流的有效事务,但不会立即提交给所述区块链。例如,所述事件流中的事务将在经过给定数量事务或时间之后,即在事件流中发生约25个事务之后提交给区块。所述事务可以存储在内存池中,直到经过所述给定数量事务或时间。在其他实施例中,事件流中的事务可能会即时提交给所述区块链。
14.贯穿本说明书使用的词语“包含”或变体(例如“包括”或“包含”)将被理解为意味着包含规定的元素、整数、步骤或元素、整数或步骤组,但不排除任何其他元素、整数或步骤或元素、整数或步骤组。
附图说明
15.现将仅通过举例的方式并参考附图对本公开的各方面和实施例进行说明,其中:
16.图1是示出第一方面提供的与区块链相关联的多项服务的平台的概述的示意图;
17.图2a是示出第一方面提供的用于提供与区块链相关联的多项服务的平台的方法的流程图,所述方法由与所述平台相关联的一个或更多个处理器实现;
18.图2b是示出第一方面提供的用于访问与区块链相关联的多项服务的平台的方法的流程图,所述方法由与客户端相关联的一个或更多个处理器实现;
19.图3是示出第一方面提供的与区块链相关联的多项服务的平台的组件的示意图;
20.图4是示出第二方面提供的用于实现与区块链相关联的事务的数据写入服务的方法的流程图,所述方法由与平台服务相关联的一个或更多个处理器实现;
21.图5是示出第三方面提供的用于创建与区块链相关联的事件流的方法的流程图,所述方法由与平台服务相关联的一个或更多个处理器实现;
22.图6是示出第三方面提供的用于更新与区块链相关联的事件流的方法的流程图,所述方法由与平台服务相关联的一个或更多个处理器实现;
23.图7是示出第三方面提供的用于终止与区块链相关联的事件流的方法的流程图,所述方法由与平台服务相关联的一个或更多个处理器实现;
24.图8是示出第二方面或第三方面提供的用于访问与区块链相关联的事务的数据写入服务的方法的流程图,所述方法由与客户端相关联的一个或更多个处理器实现;
25.图9是示出可以实现本公开的各个方面和实施例的计算环境的示意图。
具体实施方式
26.虽然所附权利要求涉及下面详细描述的本公开的第三方面,但本公开提供了对第一方面和第二方面的详细讨论,以向读者提供对本公开的要求保护的方面和相关实施例的全面和完整的理解。
27.根据第一方面,本公开提供了一种用于提供与区块链相关联的多项服务的平台的计算机实现的方法,该平台被提供给多个客户端,该方法由与应用程序编程接口(api)相关联的平台处理器实现。
28.有利地,平台处理器api允许基于web的交互界面,即在一些实施例中,其可以实现为一个或更多个客户端的web服务,使得可以使用基于web的服务的标准互联网通信协议通过互联网进行通信。例如,在一些实施例中,可以基于诸如tcp/ip等传输层协议来发送和接收诸如http、https等应用层或客户端与服务器之间的层(在这种情况下为平台服务)中的http消息或请求。在本公开中,对http传输协议或http api的引用也包括诸如tcp/ip、udp、https等所有标准互联网通信协议。
29.在一些实施例中,平台处理器实现为http api端点。在一些实施例中,平台处理器实现为表征状态转移(rest)端点。有利地,该api可以实现为rest端点,从而还允许客户端使用标准互联网或基于网络的协议(例如,http或https)进行通信。
30.根据第一方面所述的方法包括以下步骤:从多个客户端中的给定客户端接收请求,该请求与多项服务中的给定服务有关,并且来自给定客户端的请求基于超文本传输协议(http)传输协议格式。然后,基于确定客户端身份和/或请求有效,该方法包括:获取与给定服务相关联的目的地址。在一些实施例中,目的地址可以是ip地址或网络地址端点。例如,这可以是端点统一资源标识符(uri),并且可以包括web服务器的统一资源定位符(url),其中支付处理器或所请求的服务的一个或更多个其他实体(包括客户端)可以从该url访问所请求的服务。
31.在一些实施例中,该目的地址可以是与平台api端点相同的端点。如果平台提供诸
如主要服务或核心服务等此类所请求的服务,则可能会出现这种情况。在其他实施例中,如果存在由平台提供的多种不同类型的服务,且每种类型的服务由不同的处理器或web服务器实现,则目的地址可以不同于平台api,平台api可以充当与平台相关联的其他处理器和web服务器的主机服务器。在这种情况下,平台处理器包括多个处理器,或者与多个处理器相关联,每个处理器用于实现区块链上的多项服务中的给定服务,并且每个处理器与相应处理器唯一的特定目的地址或端点相关联。
32.根据第一方面所述的方法进一步包括以下步骤:基于与获取的目的地址对应的至少一个区块链事务,处理给定服务的请求,以获取输出脚本。在一些实施例中,输出脚本与和所请求的服务有关的数据相关联,或者所请求的服务的结果包括在utxo中并且包括用于事务的此类数据或数字资产。
33.在第一方面,然后以http或类似传输协议格式将与输出脚本相关联的该结果发送到给定(请求)客户端。
34.有利地,通过实现作为用于一个或更多个客户端的api提供的平台,根据本公开第一方面所述的方法允许与客户端相关联的一个或更多个处理器注册,或者使用平台处理器提供的web服务向区块链写入或访问数据。与平台相关联的一个或更多个处理器可以使用基于标准的接口设计来实现所提供的一项或更多项服务,例如但不限于表征状态转移(rest),rest是用于开发web服务和基于web的交互的架构模式。在rest api的上下文中,资源可以定义为具有类型、关联数据、与其他资源的关系以及在其上操作的一组方法的对象。因此,有利地,提供由根据第一方面所述的平台处理器实现的平台或服务作为api实现方式,以访问比特币sv(bsv)区块链等区块链或分布式分类账(的状态)并触发可通过应用程序接口改变该状态的操作或功能,并且将其公开为rest api。换言之,与平台相关联的一个或更多个服务器或处理器可以被视为选择使用此类服务的一个或更多个客户端的rest端点。因此,有利地,客户端可以通过http或类似互联网命令与平台服务通信。更有利地,对于任何所提供的服务,客户端不需要实现bsv、比特币、区块链知识、ecdsa或其他加密密钥管理库或事务构建软件(例如数字钱包软件等)。使用一个或更多个处理资源或用户终端的客户端仅可通过某些公知的认证技术进行注册以使用平台,该认证技术包括密码保护授权或标准公钥基础设施(pki)等,用于验证客户端身份。然后,客户端应能够通过基本http或类似格式与平台服务通信。
35.在一些实施例中,可以通过该平台提供的与区块链相关联的服务的一些示例包括:
[0036]-数据服务,用于将数据写入/提交给区块链,以改变区块链的状态;
[0037]-数据服务,用于读取/获取反映区块链的当前状态的数据;
[0038]-与简单支付验证相关联的服务,用于与区块链相关联的事务;
[0039]-与管理与区块链相关联的一个或更多个事件流和/或机器可读合约相关
[0040]
联的服务;
[0041]-与管理数字钱包框架相关联的服务,用于多个客户端。
[0042]
在实施例中,如果有多个处理器或web服务器与根据第一方面所述的平台处理器相关联,则根据第一方面所述的方法进一步包括:提供应用程序编程接口(api)转换器的步骤,用于执行以下步骤:以http传输协议格式从客户端接收请求;将所接收的请求转换为远
程过程调用(rpc)格式;将rpc请求发送到多个处理器中的给定处理器,该给定处理器被配置用于实现所接收的请求中标识的服务。在反向流路径中,该实施例包括以rpc格式接收来自给定处理器的相关联的响应,并使用http或类似传输协议来转换要发送到客户端的相应响应。
[0043]
这是有利的,因为它允许客户端使用基于web的平台api经由简单的http来传送与区块链相关联的请求,并且无缝地提供与实现上述服务的任何节点或服务器的互操作性,但是这些节点或服务器不使用针对web服务的互联网协议通信标准进行通信。该实施例中实现的api转换器不限于https到rpc的转换,反之亦然;或者就此而言,也不限于其他基于web的协议到平台处理器支持的替代通信协议的转换,此类平台处理器实现上述服务、用于给定加密货币的网络或以其他方式可以设想的数字资产中的一个或更多个。在反向流路径中,根据第一方面所述的方法还包括:以rpc格式从相应处理器接收与对应的区块链事务相关联的响应,并且相应地使用http转换相应响应以发送到客户端。因此,有利地,由平台处理器实现所提出的接口能够实现无缝通信,用于在客户端(收受者)和矿工使用不同的无线数据通信协议和机制时向区块链提交事务。
[0044]
在第一方面的一些实施例中,来自客户端的所接收请求是http get或http post或http put或http patch请求,该http get或http put或http patch请求包括特定于给定客户端的客户端标识符以及该平台提供的多项服务中所请求的给定服务的服务标识符或与其相关联,如上所述。在一些实施例中,发送到客户端的结果是基于客户端标识符的http post请求。
[0045]
在一些实施例中,为了简化区块链事务的客户端寻址,已经存在一些机制,其中使用可记忆且用户更友好的别名而不是一个或更多个客户端实体的复杂公共地址。此类解决方案以nchain holdings limited的名义在申请号为16/384696的美国专利申请案和申请号为1907180.2的英国专利申请案中提出。这些文档陈述了基于别名的支付服务和相关协议,其称为bsvalias支付服务,其中别名用于目标寻址,而不是客户端实体的公共地址。此类系统中的别名通常与发送/接收客户端实体的域名相关联,并且可以是uri或电子邮件地址。因此,只要发送者或实体知道别名或者向发送者或实体提供别名,这对于bsvalias支付系统或基于别名的寻址机制就足够了。例如,可以使用保存在用于bsvalias或其他支付服务的公知uri或位置中的机器可读资源(例如,javascript对象表示法(json)文档)中提供的指令,将消息发送到客户端的别名。在本公开的一些实施例中,多个客户端中的一个或更多个客户端可以具有上述别名等别名来标识相应客户端。
[0046]
在相关实施例中,根据第一方面所述的方法包括:基于客户端标识符以及与客户端标识符对应的记录核实客户端,该记录与平台处理器相关联。例如,此类记录可以在客户端登录或注册时创建并存储在平台处理器中或与平台处理器关联。然后,基于客户端的成功核实,该方法包括:基于服务标识符以及相应记录中包括的属性或设置,确定来自客户端的所接收请求是否有效。在一些实施例中,所述属性或设置可以指示是否允许给定客户端访问全部或部分所请求的服务。例如,可以在属性或设置中提供与客户端标识符相关联的一个或更多个级别的权限。例如,可以允许给定客户端请求服务以读取区块链上关于特定事件的数据,但不允许修改、删除或终止此类事件;而另一客户端可能具有与一项或更多项服务有关的所有操作的权限。
[0047]
在一些实施例中,验证给定客户端的身份的步骤可以基于与客户端相关联的数字签名。包括与每个客户端相关联的私钥和公钥(或公共地址)的加密密钥对可用于验证对服务的请求确实源自给定客户端,即其中由私钥签名的数据只能使用对应的公钥进行恢复或核实。如果验证基于数字签名,则可以使用和实现标准公钥基础设施(pki)技术。
[0048]
在第一方面的一些实施例中,提供了一种用于访问由多个客户端中的给定客户端的一个或更多个处理器实现的多项服务的平台的计算机实现的方法,该方法包括以下步骤:获取或标识与和平台相关联的一个或更多个处理器相关联的应用程序编程接口(api)端点;以及发送与多项服务中的给定服务有关的请求,该请求包括给定客户端的客户端标识符以及所请求的给定服务的服务标识符或与之相关联。如上所述,使用超文本传输协议(http)或类似传输协议格式来发送请求。该方法还包括:接收和与请求相关联的区块链事务的输出脚本有关的结果,所述结果以http传输协议格式提供给客户端。
[0049]
在第二方面,本公开提供了一种用于实现与区块链相关联的事务的数据写入服务的计算机实现的方法,该方法由与应用程序编程接口(api)相关联的平台处理器实现,以使客户端能够访问该服务以将数据写入区块链。根据第二方面所述的方法包括以下步骤:从客户端接收请求,该请求与使用区块链实现的事件流es有关,来自客户端的请求基于超文本传输协议(http)传输协议格式。在一些实施例中,事件流可以跟踪或表示为确定有限状态自动机(dfa)等有限状态机(fsm),fsm是公知的计算术语,表示具有有限数量状态的系统,并且可以在给定时间内仅处于一种状态,具有用于从一个阶段转换到下一个阶段的转换函数或触发事件。在一些实施例中,此类事件流可用于表示技术过程的控制手段或技术。在一些实施例中,事件流可以表示或跟踪与区块链上的机器可读合约或智能合约相关联的输入、状态和/或事件,其中,有利地,记录了该合约的过去状态和当前状态的不可变记录。在一些实施例中,从客户端接收的请求包括触发事件,以使得能够在与事件流相关联的智能合约中进行状态转换。
[0050]
根据第二方面所述的方法包括以下步骤:确定事件流es
i=n
的当前状态,其中,i是从0至n的整数,每个整数i表示事件流es的给定状态,因此i=0表示创建的事件流es,i=n表示区块链中处于当前状态的事件流es,i=n表示事件流es的最终状态。在一些实施例中,确定当前状态可以基于与事件流相关联的最新结果来指示当前状态,所述结果存储在区块链上或事件流的一个或更多个单独的链下存储资源中。这可以基于与事件流相关联的较早或先前区块链事务的标识符。如果没有标识事件流的先前状态,则这将导致确定当前状态为n=0,即要创建新事件流。在一些实施例中,当前状态也可以从区块链中检索或读取。这可以由如上所述的数据读取器执行,其可以是平台处理器提供的多项服务中的一项服务。
[0051]
在根据第二方面所述的方法中,基于所接收的请求处理事件流es的新事件e
n+1
包括以下步骤:创建区块链事务tx
n+1
,区块链事务tx
n+1
包括与先前的事务txn的事务输出(txon)相关联的输入以及与表示新事件en的事件数据相关联的未花费输出(utxo
n+1
)。在一些实施例中,如果n=0,则不存在花费先前输出的输入。然而,可能存在表示与事件流es相关联的数字资产的其他输入。然后,该方法包括将事务tx
n+1
提交给区块链。
[0052]
提交后,将事件流的当前状态更新为基于提交的区块链事务,即基于新创建的事件e
n+1
,将状态更新为es
i=n+1
,使得es
i=n
=es
n+1
。在一些实施例中,更新的状态基于事件流中最新事务的未花费输出utxo
n+1
中存在的数据。然后,该方法包括:基于事件流es
n+1
的更新后
的当前状态发送结果,该结果基于http传输协议格式提供。
[0053]
本公开的第二方面讨论了由平台处理器实现的数据写入服务的实现方式;或者,换言之,该实现方式使得能够实现写入与现实世界过程相关联的数据的功能,例如控制智能合约的状态。根据第二方面所述的平台处理器与第一方面中讨论的平台处理器相关联,其中,第二方面讨论了多项区块链服务中的一项,即用于将数据写入区块链以改变其当前状态。由于请求是通过平台的api接收和提供的,因此第二方面提供了与第一方面相关联的所有优点。此外,数据写入服务有利地允许一个或更多个客户端通过简单地从效果中提取触发条件或事件来实现区块链实现的智能合约的状态事务。因此,智能合约的各个阶段的不可变记录可以由根据第二方面所述的数据写入服务提供。
[0054]
本公开的第三方面涉及根据第二方面所述的数据写入服务,如上文针对事件流提供的服务所讨论的。在本方面,提供了一种用于建立防篡改记录或日志的技术,或用于确认与事件流相关联的事件的顺序发生的证书。因此,在第三方面,本公开的方法提出了用于提供、创建、更新和/或终止使用区块链实现的事件流的方法、设备和系统,并自动创建与事件链相关联的事件的防篡改日志或记录。
[0055]
在第三方面,本公开提供了一种用于实现与区块链相关联的事务的数据写入服务的计算机实现的方法,该方法由与应用程序编程接口(api)相关联的平台处理器实现,以使客户端能够访问该服务以将数据写入区块链。根据第三方面所述的方法包括以下步骤:从客户端接收请求,该请求与区块链上的事件流es有关,来自客户端的请求基于超文本传输协议(http)传输协议格式。
[0056]
然后,在来自客户端的所接收请求中标识事件流es的事件en。对于事件流es,n表示事件流es的当前长度。如果n=0,使得en是创建事件流es的第一个事件,则为事件流es创建第一区块链事务,包括作为尘埃输出的第一未花费输出。在本公开的区块链事务上下文中,区块链事务尘埃或简称“尘埃”被理解为数字资产或加密货币的可花费事务,该数字资产或加密货币的输出具有低价值或极小价值,即该价值可以远远小于在区块链中挖掘输出的费用。尘埃输出可以是可花费的加密货币或数字资产输出的最小值。在一些实施例中,与此类尘埃事务相关联的数字资产或加密流动资金(即,处理其输出中数字资产的最小值转移的那些数字资产或加密流动资金)可以由平台处理器提供或管理。换言之,本公开中提到的区块链事务的尘埃输出与其价值低于事务的价值限制的数字资产相关联,即,尘埃输出的价值可能低于花费此类事务可能需要的挖矿费等。
[0057]
如果0《n《n(其中n是n的最终值或最大值),使得en是修改事件流es的事件,则创建当前区块链事务,包括:第一输入,花费与事件流的先前的事务相关联的尘埃输出;第一未花费事务输出,作为当前事务的尘埃输出;以及最终未花费事务输出,与表示当前事件en的事件数据相关联。在一些实施例中,事件数据包括在数据载体元素中。这可以是事务的不可花费的op-return输出。在一些实施例中,当前区块链事务的最终未花费事务输出中的事件en的事件数据包括事件数据的哈希值。这有利地对事件流es的事件数据内容进行保密。在一些实施例中,也可以包括盐值,该盐值是可以由平台处理器为与事件流相关联的每个事务随机生成的唯一值。在一些实施例中,所述事件数据的哈希值由平台处理器应用,从而有利地允许平台服务或处理器私下保存此类事件数据。在其他实施例中,所述事件数据的哈希值在包括在平台处理器接收的请求中之前由客户端设备应用。有利地,这使客户端能够
在请求中私下保存事件或与事件相关联的数据,甚至不与平台共享事件或数据。在其他实施例中,最终未花费事务输出中的事件en的事件数据包括原始事件数据,该原始事件数据在写入或提交给区块链后在区块链上公开。
[0058]
如果n=n,使得en是终止事件流es的事件,则创建区块链事务,包括:第一输入,花费与事件流的先前的事务相关联的尘埃输出;第一未花费事务输出,与超过定义的尘埃输出限值(即,超过数字资产或加密货币的定义值或最小值)的数字资产相关联。有利地,在这种情况下,不存在尘埃输出表示事件流终止,因为这表示事件流中没有更多要跟踪的事件,即序列中没有更多事件。第一输出超过尘埃限值的规定是以信令方式表明链的结束。进一步地,最终区块链事务没有任何事件数据输出,即不存在数据载体元素,这有利地表明这不是改变事件流而是终止事件流的数据事件。
[0059]
在上述关于n的三种情况中的任一种情况中,事务提交给区块链,并且与事务相关联的结果基于http传输协议格式提供。在一些实施例中,与请求相关联的事件(即e0、en或en)可以是与相应请求有关的单个事件或两个或更多事件。例如,请求可以包括每个e0、en或en的两个或更多个子事件的数据集。在一些实施例中,结果基于事务的事件数据输出或与相应事务相关联的事件。在一些实施例中,返回的任何结果或事件数据都可以保存在事务的不可花费的op_return输出中。这是一种脚本操作码,可用于在区块链上写入任意数据,也可用于将事务输出标记为无效。再如,op_return是脚本语言操作码,用于创建事务的不可花费输出,其可以将数据和/或元数据存储在事务中,从而将元数据不可变地记录在区块链中。元数据可以包括希望存储在区块链中的日志或时间条目或文档。在一些实施例中,事件数据或结果可以被视为相应事务的不可花费输出中包括的有效载荷(payload)。此类输出可以通过终止该输出的锁定脚本的操作码(例如,上文提到的op_return)变得不可花费。然而,在其他实施例中,可以通过其他方式包括有效载荷或事件数据。
[0060]
在事务中使用尘埃输出对于维护所有事务在事件流es中发生时的不可变顺序记录是有利且至关重要的。这是因为,尽管通过将事务发布到区块链,所有区块链事务都将带有时间戳并按顺序保留在区块链中,但这并不保证其顺序保持不变。这是因为,事务可能在不同时间被挖掘到区块中。因此,在区块链中,只有链中的区块按时间顺序进行排序,单独的事务并非如此。然而,为了跟踪、记录和审计可能是智能合约的事件流的事件的准确顺序,有利地,使用序列中的下一个事务的第一输入必须花费的尘埃输出确保按时间顺序跟踪事务的顺序并创建防篡改记录。这是因为,一旦挖掘到区块中,从序列中的上一个事务到下一个事务的尘埃支付即可确保:根据比特币协议规则,所嵌入的数据载体元素(每个事务中的最终输出)的序列无法重新排序,并且不会发生插入或删除,这可能会改变序列,而不会立即明显地表明事件流已被破坏。在一些实施例中,比特币协议固有的双重花费保护确保加密货币(例如,尘埃)在不同地址之间移动,并且因此相关联的事件仍然按时间顺序进行排序。因此,这提高了区块链上的智能合约以及一系列事件发生的日志、副本或复制的安全性。
[0061]
在一些实施例中,确定要用于与事件流es相关联的请求的分层确定性密钥链k。此类密钥链对于给定事件流是唯一的。然后,可以针对相关联的每个事件导出来自种子密钥或父密钥或主密钥对k的加密私钥/公钥对,使得k=k
n=0至n
,其中,n是从0至n的整数,每个整数n表示与事件流es相关联的事件的当前长度或当前数量,n表示n的最大值或最终值。有利
地,这可确保针对特定事件流导出的密钥与公共主密钥或种子密钥有关,并且可以导出用于处理每个相应事件。有利地,通过这种方式,利用针对当前事件导出的密钥kn来保护与尘埃输出相关联的锁定脚本,并且使用先前密钥对k
n-1
,第一输入中的每个第一输入花费先前事务的尘埃输出。这确保输出只能与对应的密钥对一起花费,该密钥对特定于相应的先前事务。
[0062]
在一些实施例中,与事件流es相关联的结果包括确认以下至少一项的证书:
[0063]-事务标识符,在该事务标识符中事件en过去提交给区块链;
[0064]-默克尔包含证明,证明事务包括在区块链中的区块头中;
[0065]-区块头的副本,所述事务过去包括在区块头中。
[0066]
在一些实施例中,如上文针对第三方面所讨论的,创建的每个事务可以进一步包括与数字资产相关联的其他输入。这可以基于由平台处理器管理的运营浮动来提供。在一些实施例中,这可以与由支付处理器维护或控制的数字资产或加密货币资源或基金相关联,以涵盖区块链的事务挖矿费以及一个或更多个其他操作等。事务还可以具有与数字资产相关联的一个或更多个变更输出。如上所述,最终事务具有所有变更输出。
[0067]
在一些实施例中,可以基于与提交的区块链事务相关联的事务标识符来标识事件流es。在一些实施例中,还可以基于与最近提交的区块链事务相关联的事务标识符来标识与事件流es相关联的状态。
[0068]
在一些实施例中,该方法包括:将记录副本或基于事件流es的每个事件的结果的日志存储在链下存储资源中。该存储资源可以与平台处理器相关联,或者在不同的设备、数据库或服务中,当客户端请求时,可以从该设备、数据库或服务中请求或检索该存储资源。有利地,与事件流的结果相关联的日志的存储是单独存储的,以避免要求下载整个区块链并通过数据筛选与事件流相关联的任何查询。在审计或数据验证的情况下,可以检查实现事件流的区块链本身。然后,可以使用备份或单独的副本进行快速查询。
[0069]
现在参照附图以图示方式描述一些具体实施例,其中相似的附图标记表示相似的特征。
[0070]
第一方面

一种用于与区块链相关联的多项服务的平台api
[0071]
用于提供第一方面的上述多项服务的平台处理器可以是平台即服务(paas)和软件即服务(saas)产品,有利地,平台处理器使得能够使用bsv区块链等区块链网络来快速交付有用的现实世界业务和技术应用,例如管理软件控制的技术系统或智能合约。平台服务概述见图1,其中示出了系统的概要示意图。平台服务具有提供api 108的平台处理器100,通过api 108,一个或更多个客户端可以访问服务。
[0072]
如图所示,平台服务100由三个服务系列组成,旨在让用户和组织轻松、安全地利用区块链的独特属性提供的优势,而无需在客户端实际实现任何基于区块链的软件、知识或库。这些服务包括:
[0073]-数据服务102,旨在简化链作为商品数据分类账的使用;
[0074]-计算服务104,旨在提供由比特币sv等数字资产支持的通用计算框架;
[0075]-商务服务106,提供企业级能力,用于使用比特币sv等数字资产处理事务。
[0076]
如上所述,可以在api处通过或使用https协议从客户端接收请求,因为api实现为web服务。然后,所请求的服务由一个或更多个服务模块或处理资源102-106使用底层软件
110来实现,此类底层软件110与区块链相关联,即实现用于创建、处理和提交与区块链相关联的事务的资源、库和/或密钥管理钱包实现方式。处理后,可以将事务提交给区块链网络112(而不是实现任何此类功能或事务库的客户端)。客户端最多可以或能够实现与加密货币或某些其他数字资产相关联的数字钱包等,但这并不是必需的,因为平台服务100也可以为客户端提供和管理数字资产。
[0077]
图2a涉及本公开的第一方面,并示出一种用于提供与区块链相关联的多项服务的平台(例如,图1中所示的平台100)的计算机实现的方法。图2a中的方法由与应用程序编程接口(api)相关联的平台处理器实现。
[0078]
步骤202a描述从多个客户端中的给定客户端接收请求。在一些实施例中,所述客户端可以是与客户端相关联的一个或更多个计算设备、资源或处理器,所述客户端已经登录或注册以访问由平台处理器提供的多项服务。如上所述,平台处理器可以是一个或更多个处理器,每个处理器提供要使用区块链实现的不同类型的功能或服务,例如比特币sv区块链(例如,用于图1中所示的数据服务、计算服务和商务服务的处理器)。对于单项服务,也可以仅有一个处理器。由于平台处理器与平台的uri等api端点相关联,来自给定客户端的请求可以基于诸如超文本传输协议(http)传输协议格式的标准互联网协议。在一些实施例中,请求可以包括客户端的标识符以及所请求的服务的标识符。
[0079]
在步骤204a中,检查客户端的身份以查看该客户端是否是注册为使用平台处理器及其所提供的功能的有效客户端。在一些实施例中,这可以基于已知的认证方法,诸如受密码保护的登录认证等。在这种情况下,可以基于密码以及请求中包括的客户端标识符或别名来为给定客户端创建记录。核实可以基于在api处接收的与记录中的密码匹配的密码。在其他实施例中,还可以使用基于加密私钥/公钥对的标准pki技术来核实在步骤202中从客户端接收的请求中存在的数字签名。在这种情况下,可以通过检查私钥签名的请求是否可以使用公钥成功恢复或核实来验证客户端的身份。
[0080]
如果客户端身份无法验证或验证失败,则在步骤206a中不再进一步处理该请求。
[0081]
如果客户端成功核实,则在步骤208a中,检查步骤202a中对服务的请求的有效性。这一步骤是为了确保给定客户端确实获授权使用所请求的服务。对此的权限或属性可以存在于客户端的记录中,以指示可以或不可以提供给相应客户端的一种或更多种类型的访问级别或服务。
[0082]
如果发现该请求对于请求客户端是不允许的或无效的,则在步骤210a中不再进一步处理该请求。
[0083]
应当理解的是,尽管上述核实客户端和/或服务的实施例对于第一方面的操作是有用的,但并不是必需的。在一些情况下,可以仅执行步骤204a或208a中的核实。在一些情况下,不执行核实。在这种情况下,无论是否注册,任何客户端都可以在适当支付后使用服务或平台进行此类访问。
[0084]
在步骤212a中,获取目的地址,该目的地址可以是负责在步骤202a中实现所请求的服务的服务器或处理器的端点uri。在一些实施例中,如果有多个平台处理器,则主机服务器或平台api可以将所接收的请求转换为远程过程调用(rpc)格式,以发送至与用于实现所标识的服务的处理器相关联的目的地址。
[0085]
在步骤214a中,由负责所请求服务的相应平台处理器处理所请求的服务。由平台
处理器基于负责处理器的目的地址/端点获取或读取或生成区块链事务,并获取该事务的输出脚本。虽然图2a是指在该步骤中生成区块链事务,但应当理解的是,本公开的第一方面并不限于此。如果步骤202a中的请求是从区块链中读取或获取数据,则不能生成事务,只能从区块链中读取或获取事务。对于所生成的一个或更多个区块链事务,可以存在多个区块链事务或更多个输出脚本。
[0086]
在步骤216a中,输出脚本可以包括作为结果的数据输出(例如,可以有数据载体utxo),也可以基于事务标识符或事务的其余输出来获取结果。此外,还可以存在与可从其中获取结果的事务相关联的不可花费的op-return输出。
[0087]
在步骤218a中,以http或类似传输协议格式将与输出脚本相关联的结果提供至给定客户端。在一些实施例中,如果服务的负责处理器位于主机平台api的远程位置,则平台处理器以rpc格式从负责处理器接收与区块链事务相关联的响应。然后,api转换器将其转换为可以基于http格式发送的消息,然后再发送到客户端。如上所述,如果所述客户端使用别名寻址服务,例如bsvalias,则结果在寻址到客户端别名的http消息中以bsvalias机器可读资源规定的格式发送。
[0088]
图2b涉及本公开的第一方面,并示出一种用于访问与区块链相关联的多项服务的平台(例如,图1中所示的平台100)的计算机实现的方法。图2b中的方法由与客户端相关联的一个或更多个处理器实现。
[0089]
在步骤202b中,标识与平台相关联的应用程序编程接口(api)端点。如前所述,这可以是与主机平台处理器相关联的api,并且可以有一个或更多个其他处理器负责实现服务,每个处理器具有自己的服务端点或目的地址。
[0090]
在步骤204b中,客户端准备对图1中的数据写入服务102等服务的请求。在一些实施例中,客户端在请求中包括客户端别名或标识符和/或服务标识符,使得请求可以路由到正确的服务端点。这对于平台处理器检查请求客户端的有效性以及客户端使用所请求服务的权限是有用的。
[0091]
在步骤206b中,使用超文本传输协议(http)或类似传输协议格式发送在步骤204b中准备的请求,因为平台处理器实现为http或rest api。
[0092]
在步骤208b中,从平台处理器提供和与请求相关联的区块链事务的输出脚本有关的结果。该结果以http传输协议格式提供给客户端。
[0093]
有利地,利用根据第一方面所述的方法,客户端以http传输协议格式发送和接收基于区块链的服务的请求,因此客户端可以利用区块链独有的所有优势和服务,而无需实现任何事务能力或区块链库。这是因为该服务是通过平台api提供的,该平台api可以是http或rest api端点。例如,rest api设计标准可以通过互联网使用以下http命令处理http请求和通信,这是客户端所需的全部功能,即能够通过互联网发送和接收消息。平台处理器远程执行命令,或为客户端单独执行命令。
[0094]
命令getpostputdeletepatch资源读取创建更新或创建删除部分更新
[0095]
图3示出了与区块链相关联的多项服务的更细粒度示意图,所述多项服务可以由平台300实现,平台300与api相关联,通过api可以访问所提供的任何一项或更多项服务。如图所示,数据服务302可以包括数据写入器302a和数据读取器服务302b。图4至图8将详细说
明使用数据写入器服务302a实现事件流,以使客户端能够以简单、安全和优化的方式将数据写入区块链中。数据读取器服务302b使客户端能够发送查询,该查询返回存储在区块链中的数据。这可以使用过滤后的流,其中,客户端可以临时或定期(即,在特定时间范围内)预定义他们希望从区块链中读取的数据类型,或与在区块链310中处理的一组相关或不相关事件或文档相关联的数据类型。数据存档功能允许访问指定事件或合约的先前的事务的日志。
[0096]
平台300的计算服务306包括与智能合约相关联的应用程序306a和框架306b,在一些实施例中,应用程序306a和框架306b可以表示为区块链310中的状态机。计算服务306与数据服务302交互,因为需要输入数据并将结果提供给客户端以进行任何此类计算。
[0097]
商务服务304负责基于一流的安全实践和技术,通过企业钱包304a提供企业级能力,以通过区块链310处理事务。例如,在一些实施例中,当多个人员或用户或账户可能需要确认符合定义标准的事务(即,与超过某个预定义限制的高价值加密货币相关联)时,企业钱包可以实现启用区块链事务处理的功能。企业钱包还可以包括实现阈值数量和/或类型的签名以移动大量数字资产(例如,表示其他资源的加密货币或代币)的功能。然后,在基于此类企业钱包实现方式所应用的标准进行处理之后,这些资产的移动可以在区块链上表示。
[0098]
简单支付验证(spv)服务308是需要来自区块链的信息的应用程序,但不包括指向区块链的直接链路,因为它们不运行矿工节点。此类spv服务308允许轻量级客户端验证事务是否包括在区块链中,而无需下载整个区块链310。
[0099]
第二方面

一种用于提供与区块链相关联的数据写入服务的平台
[0100]
图4涉及本公开的第二方面,并示出一种用于为与区块链相关联的事务提供数据写入服务(例如,第一方面的图3中所示的数据写入器302a)的计算机实现的方法。图3中的方法由与用于该服务的应用程序编程接口(api)相关联的平台处理器实现。
[0101]
步骤402描述了从客户端接收请求,该请求与使用区块链实现的事件流es有关。如第一方面所述,来自客户端的请求采用超文本传输协议(http)传输协议格式。在一些实施例中,事件流涉及一种状态机,并且表示在区块链中实现为有限状态机的机器可读合约或智能合约。有限状态机(fsm)是公知的数学计算模型。fsm是一种抽象机器,可以在任何给定时间恰好处于有限数量状态中的一种状态。fsm可以响应于一些外部输入而从一种状态转变到另一种状态,从一种状态到另一种状态的转变称为转换。fsm可以通过其一系列状态、初始状态以及每个转换的条件来定义。在比特币sv区块链中,utxo集合可以视为状态机,其中,给定输出的花费状态是事务(机器)的先前输入的函数。因此,通过重放所有事务,可以使用区块链确定地建立任何输出的当前花费状态和utxo集合的当前内容。因此,在图4的实施例中,该请求可以视为改变智能合约的当前状态的请求,其在区块链中实现为事件流es。
[0102]
步骤404描述了由数据写入器或用于实现数据写入服务的平台处理器来确定事件流es
i=n
的当前状态。假设i是从0至n的整数,每个整数i表示具有有限数量状态的事件流es的给定状态,因此i=0表示创建的事件流es,i=n表示区块链中处于当前状态的事件流es,i=n表示事件流es的最终状态。因此,事件流es的当前状态将为en。
[0103]
步骤406描述了基于在步骤402中接收的请求来标识或获取与事件流es的后续事件或新事件e
n+1
相关联的数据。在该实施例中,新事件可以是数据,也可以是触发状态改变
以使事件流转换到下一状态的函数。
[0104]
步骤408描述了由与实现数据写入器的平台处理器相关联的一个或更多个处理器为后续事件e
n+1
创建区块链事务tx
n+1
的步骤。区块链事务tx
n+1
至少包括:
[0105]-与先前事务txn的事务输出(txon)相关联的输入,该输入将花费先前事务的txon输出;
[0106]-与表示新事件e
n+1
的事件数据相关联的未花费输出(utxo
n+1
),在一些实施例中,该输出是数据输出,即表示事务的数据载体元素。
[0107]
可能会有额外的输入,如酌情支付网络挖矿费的资金输入;也可能会有其他输出,如事务的变更输出。
[0108]
步骤410描述了将在步骤408中创建的事务tx
n+1
提交给区块链。在该步骤中,事务可以提交给比特币sv网络等区块链,以便由与平台处理器相关联的矿工节点或bsv节点软件包含在后续区块中。
[0109]
步骤412描述了基于新创建的事件e
n+1
将事件流es的当前状态更新为es
i=n+1
,使得es
i=n
=es
n+1
。这对应于提交给es的区块链的最新事务tx
n+1
。在一些实施例中,基于最终事务输出utxo
n+1
中的事件数据输出来标识和更新该新状态。
[0110]
步骤414描述了在步骤412中基于更新的当前状态es
n+1
发送结果,该结果基于http传输协议格式提供给客户端。
[0111]
第三方面

一种用于提供数据写入服务以记录与区块链相关联的事件流的平台
[0112]
图5、图6和图7讨论了与实现事件流相关联的应用,例如关于第二方面的图4所讨论的应用。第三方面涉及一种技术,用于在区块链上建立事件流es截至当前状态的不可变顺序日志或记录。在一些实施例中,除了存储在区块链上之外,日志还可以在链下提供或存储。由于事件流的状态基于与事务相关联的输入和输出,下面针对第三方面描述的技术提出了一种方法,用于在区块链上建立与事件流相关联的所有事务的不可变时序日志。事件流可以表示应用于使用fsm、dfa等实现的智能合约的顺序输入。
[0113]
图5涉及本公开的第二方面,并示出一种用于为与区块链相关联的事务提供数据写入服务(例如,第一方面的图3中所示的数据写入器302a)的计算机实现的方法。图5中的方法由与应用程序编程接口(api)相关联的平台处理器实现。该方法涉及创建新事件流。
[0114]
步骤502描述了从客户端接收请求,该请求是使用区块链创建新事件流es。如第一方面和第二方面所述,来自客户端的请求采用超文本传输协议(http)传输协议格式。
[0115]
步骤504描述了确定将与要创建的新事件流es一起使用的分层确定性(hd)密钥链k的步骤。在一些实施例中,这可以通过与平台处理器相关联的hd钱包实现方式来实现,以基于已知bip 21协议来生成密钥(从种子密钥或父密钥或主密钥开始)的分层树状结构。hd密钥创建和传输协议显著简化了密钥生成,并允许创建可独立操作的子账户,使每个父账户能够监测或控制其子账户,即使该子账户泄露也是如此。hd协议使用单个根种子密钥来创建子密钥、孙密钥和其他降级密钥的层次结构,这些密钥具有单独的确定性生成的整数值。每个子密钥还从其父密钥获取确定性生成的种子,称为链码。通过这种方式,一个链码泄露不一定会影响整个层次结构的整数序列。除上述优点之外,在本方面中,该密钥生成由平台处理器执行,因此从客户端移除了该密钥生成的资源和功能。因此,客户端不需要实现hd钱包。在步骤504中,密钥链k包括从所选择的父密钥对导出的一系列私钥/公钥对,使得:
[0116]
k=k
n=0至n
,其中,n是从0至n的整数,每个整数n表示与事件流es相关联的事件的当前长度或当前数量,n表示n的最大值或最终值。
[0117]
步骤506描述了标识或获取与第一事件e0相关联的数据,这是针对在步骤502中基于所接收请求中的事件数据在区块链中创建的新事件流es。
[0118]
步骤508描绘了由与实现数据写入器的平台处理器相关联的一个或更多个处理器为新事件流es创建第一区块链事务tx0,其中,n=0。
[0119]
步骤510描述了在步骤508中创建的区块链事务tx0的输出至少包括作为尘埃输出的第一未花费事务输出(utxo
0_dust
),所述尘埃输出与锁定脚本相关联,该锁定脚本使用在步骤504中从hd密钥链k导出的一系列密钥中的第一导出密钥对k0来保护。尘埃输出与低于事务的定义限制或具有定义的最小值的(数字资产)值相关联,即低于花费此类事务所需的挖矿费。此外,还可以存在其他输入,该输入与和运营浮动相关联的数字资产或是维护或和支付处理器相关联的数字资产或加密货币基金相关联。事务中的其他输出也可以是数字资产变更输出。
[0120]
因此,在一些实施例中,根据本实施例的用于区块链事务以创建事件流的创建模板是第一输入必须大于尘埃输入的模板。这是为了有利地指示事件流中没有上一个条目,并且这是第一条目。创建模板还指定模板的第一输出是尘埃输出,并且没有数据载体或数据输出(因此没有op_return),因为除创建新事件流es之外,不存在与创建状态相关联的事件数据。在一些实施例中,包括用于创建帧的op_return,但这不保存任何事件数据。这可以保存描述新创建流的参数的元数据。元数据的示例可以包括公开或公证属性、写入区块链的时间、首次接受事件的时间、不再接受事件的时间、将存储备份或相关数据的地理区域、可接受数据的最大大小、序列号等详细信息。
[0121]
步骤512描述了将事务tx0提交给区块链。在该步骤中,事务可以提交给比特币sv网络等区块链,以便由与平台处理器相关联的矿工节点或bsv节点软件包含在后续区块中。在一些实施例中,挖掘后,事务标识符tx0可以用于唯一地标识新创建的事件流es。
[0122]
步骤514描述了将与在tx0中创建的事件流es相关联的结果发送到客户端,该结果以http传输协议格式提供。与事件流有关的结果可以从区块链中单独复制或保存。
[0123]
在一些实施例中,创建事件流可以与提交给区块链进行链上结算分离。在这种情况下,也可以使用相应事件流独有的事件流id,并且可以在结果中将其提供给客户端。
[0124]
图6涉及本公开的第三方面,并示出一种用于为与区块链相关联的事务提供数据写入服务(例如,第一方面的图3中所示的数据写入器302a)的计算机实现的方法。图6中的方法由与应用程序编程接口(api)相关联的平台处理器实现。该图涉及将新事件附加到区块链上的现有事件流es的请求。
[0125]
步骤602描述了从客户端接收请求,该请求是修改在请求中标识并在区块链中实现的现有流es。如第一方面和第二方面所述,来自客户端的请求采用超文本传输协议(http)传输协议格式。如结合图5的步骤504所讨论的,区块链上的事件流es与密钥链k相关联,使得k=k
n=0至n
,其中,n是从0至n的整数,每个整数n表示与事件流es相关联的事件的当前长度或当前数量,n表示n的最大值或最终值。在一些实施例中,执行认证和授权检查,此类检查可以是api访问令牌存在性测试或会话检查或密码/数字签名测试,或用于核实客户端或作出的服务请求的某些其他适当方法。
[0126]
在步骤604中,确定事件流es的当前长度n。
[0127]
步骤606描述了基于在步骤602中接收的请求中的事件数据来标识或获取与事件en相关联的数据,该事件是当前添加或附加到区块链上的事件流es的事件。
[0128]
在步骤608中,标识与事件流es相关联的先前的区块链事务tx
n-1
。标识后,则确定与所标识的先前事务tx
n-1
相关联的密钥对k
n-1
。如上所述,这基于在步骤602中描述的相同种子密钥对k。
[0129]
在步骤610中,从种子密钥对k中导出当前事件en的密钥对kn。
[0130]
步骤612描述了由与实现数据写入器的平台处理器相关联的一个或更多个处理器为新事件流es创建当前区块链事务txn,其中,0《n《n。为要附加到事件流es的当前事件en创建的区块链事务txn包括:
[0131]-第一输入,花费与先前事务tx
n-1
相关联的尘埃输出,所述花费使用在步骤608中获取的先前事务的所获取密钥对k
n-1
来授权;
[0132]-第一未花费事务输出(utxo
n_dust
),作为当前事务txn的尘埃输出,所述尘埃输出与使用在步骤610中导出的密钥对kn来保护的锁定脚本相关联;以及
[0133]-最终未花费事务输出(utxo
n_data
),与表示当前事件en的事件数据相关联。
[0134]
如上所述,尘埃输出与低于事务的定义限制或具有定义的最小值的(数字资产)值相关联。此外,还可以存在基于运营浮动的与数字资产相关联的其他输入。该浮动可以由平台处理器控制。事务中的其他输出也可以是数字资产变更输出。
[0135]
因此,在一些实施例中,根据本实施例的用于区块链事务以更新事件流的更新模板是第一输入必须是尘埃输入且第一输出必须是尘埃输出的模板。这是为了有利地指示事件流中存在先前条目。这也指示相关事件en(目前或当前事件数据)在先前的事务或状态之后发生。因此,事务有利地遵循尘埃链并在下一状态之前进行。更新模板包括数据载体,即携带事件数据或与当前事件或状态相关联的结果的数据输出。这可以是不可花费的op_return输出。
[0136]
在事务中使用尘埃输出对于维护所有事务在区块链中的事件流es中发生时的不可变顺序记录的区块链是有利的。这是因为,尽管通过将事务发布到区块链,所有区块链事务都将带有时间戳并按顺序保留在区块链中,但这并不保证其顺序保持不变。这是因为,事务可能在不同时间被挖掘到区块中。使用正在花费的上一个事务的尘埃输出作为当前事务的第一输入,其中花费基于与每个事务的锁定/解锁脚本有关的相应唯一密钥,可确保按时间顺序生成事件流的清晰防篡改顺序记录。
[0137]
步骤614描述了将事务txn提交给区块链。在该步骤中,事务可以提交给比特币sv网络等区块链,以便由与平台处理器相关联的矿工节点或bsv节点软件包含在后续区块中。在一些实施例中,挖掘后,事务标识符可以用于唯一地标识事件流es。
[0138]
步骤616描述了将与在txn中创建的事件流es相关联的结果发送到客户端,该结果以http传输协议格式提供。该结果可以单独复制或保存到区块链。在一些实施例中,这可以基于最终未花费事务输出(utxo
n_data
)中的事件数据。在一些实施例中,(utxo
n_data
)中事件en的事件数据包括所述事件数据的哈希值,从而确保所述事件数据由平台处理器保密。哈希值可以由平台处理器应用,也可以由客户端应用,即,在生成与在步骤602中在平台处理器处接收的针对事件en的请求有关的事件数据之前,在一些实施例中应用。在由客户端应
用的情况下,请求中的事件数据即使在到达平台处理器之前也是保密的。在其他实施例中,事件数据可以作为可从区块链公开获得的原始数据来提供。
[0139]
图7涉及本公开的第三方面,并示出一种用于为与区块链相关联的事务提供数据写入服务(例如,第一方面的图3中所示的数据写入器302a)的计算机实现的方法。图7中的方法由与应用程序编程接口(api)相关联的平台处理器实现。图7中的请求是终止区块链上的现有事件流。
[0140]
步骤702描述了从客户端接收请求,该请求与终止使用区块链实现的现有事件流es有关。如第一方面和第二方面所述,来自客户端的请求采用超文本传输协议(http)传输协议格式。如结合图5的步骤504所讨论的,区块链上的事件流es与密钥链k相关联,使得k=k
n=0至n
,其中,n是从0至n的整数,每个整数n表示与事件流es相关联的事件的当前长度或当前数量,n表示n的最大值或最终值。在一些实施例中,执行认证和授权检查,此类检查可以是api访问令牌存在性测试或会话检查或密码/数字签名测试,或用于核实客户端或作出的请求的某些其他适当方法。
[0141]
在步骤704中,确定事件流es的当前长度n。
[0142]
步骤706描述了基于在步骤702中接收的请求中的事件数据来标识或获取与最终事件en相关联的数据,该事件是当前添加或附加到区块链上的事件流es的事件。
[0143]
在步骤708中,标识与事件流es相关联的先前的区块链事务tx
n-1
。标识后,则确定与所标识的先前事务tx
n-1
相关联的密钥对k
n-1
。如上所述,这基于在步骤702中描述的相同种子密钥对k。
[0144]
在步骤710中,从种子密钥对k中导出当前事件en的密钥对kn。
[0145]
步骤712描述了由与实现数据写入器的平台处理器相关联的一个或更多个处理器为新事件流es创建当前区块链事务txn,其中,n=n。为当前事件en创建以终止事件流es的区块链事务txn包括:
[0146]-第一输入,花费与先前事务tx
n-1
相关联的尘埃输出,所述花费使用在步骤708中获取的先前事务的所获取密钥对k
n-1
来授权;
[0147]-第一未花费事务输出(utxon),与超过定义的尘埃输出限制的数字资产相关联。
[0148]
对于最终事件,所有事务输出都返回变更。不存在尘埃输出,因为没有要求或不需要跟踪终止事件流的下一阶段。因此,当n=n时,平台处理器不提供尘埃输出,换言之,输出可以视为与事件流es相关联的变更输出(数字资产支付)。这有利地标记或指示正在跟踪的事件流的最终终止状态。在一些实施例中,当事件或合约处于终止状态时,输出也不存在事件数据或数据载体元素,即事件数据不存在op_return。因此,不会生成单独的尘埃和数据载体输出以终止事件流es,并且第一输出高于尘埃限制以通过信令方式表明这是区块链上事件流的结束,并且不存在也指示终止的事件数据输出。在op_return中存在元数据而不是事件数据的实施例中,该元数据可能对验证实体有所帮助。可能存在与运营浮动的数字资产相关联的其他输入或变更输出。在一些实施例中,与结合图5和图6列出的尘埃相关联的数字资产的价值可以简单地添加到一个或更多个其他输出中。
[0149]
因此,在一些实施例中,根据本实施例的用于终止事件流的区块链事务的关闭模板是第一输入必须是尘埃输入的模板,与图6中的更新模板的第一输入一样。第一输出不能是尘埃输出,并且这有利地充当分类账结束标记,并进一步区分关闭模板和更新模板。与图
5中的创建模板一样,事件数据可能没有数据载体,但是op_return可以在关闭模板中包括元数据。
[0150]
步骤714描述了将事务txn提交给区块链。在该步骤中,事务可以提交给比特币sv网络等区块链,以便由与平台处理器相关联的矿工节点或bsv节点软件包含在后续区块中。
[0151]
步骤716描述了将与在txn中创建的事件流es相关联的结果发送到客户端,该结果以http传输协议格式提供。
[0152]
图8涉及本公开的第三方面,并示出一种用于访问平台或用于将数据写入与区块链相关联的事件流的数据写入服务的计算机实现的方法,例如图1中所示的平台100或图3中所示的平台300。图8中的方法由与客户端相关联的一个或更多个处理器实现。
[0153]
在步骤802中,标识与平台相关联的应用程序编程接口(api)端点。如前所述,这可以是与主机平台处理器相关联的api,并且可以有一个或更多个其他处理器负责实现服务,每个处理器具有服务端点或目的地址。
[0154]
在步骤804中,客户端准备对图3中的数据写入服务302等服务的请求。该请求与和区块链中的事件流es有关的一个或更多个事件en相关联。在一些实施例中,客户端在请求中包括客户端别名或标识符和/或服务标识符,使得请求可以路由到正确的服务端点,并且使得平台处理器可以检查请求客户端的有效性以及客户端使用所请求服务的权限。
[0155]
在步骤806中,使用超文本传输协议(http)或类似传输协议格式发送在步骤804准备的请求,因为平台处理器实现为http或rest api。
[0156]
在步骤808中,接收与请求中的事件en相关联的区块链事务的输出脚本有关的结果。该结果以http传输协议格式提供给客户端。在一些实施例中,结果可以单独保存在区块链的日志中,该区块链在平台处理器中或与平台处理器相关联。
[0157]
有利地,通过根据本公开第三方面所述的方法实现的与区块链相关联的事件流及其顺序日志的实现方式提供了与事件的不可变性和事件排序的不可变性有关的保证。写入后,以下列任何方式篡改事件流的任何尝试都将被阻止或变得明显:
[0158]-更改事件的内容
[0159]-对事件进行重新排序
[0160]-在流开始处或中间位置插入事件
[0161]-从流中的任意位置删除事件
[0162]
换言之,根据第三方面所述的方法使得与事件流有关的以下属性是可证明的:
[0163]-事件流中的各个条目自写入后未曾修改
[0164]-先前连续条目之间未插入任何条目
[0165]-未删除任何条目
[0166]-未对任何条目进行重新排序
[0167]
这些属性和优点具有许多实际应用,从审计/合规性日志到状态机复制,再到更高效、防篡改、准确的方法,用于从所有客户端的区块链中读取数据并将数据写入区块链。
[0168]
捕获事件日志将对其有用的事件流的一个示例是使用区块链来跟踪和记录圈叉游戏等游戏事件的应用程序。
[0169]
例如,假设n=4(从0至4的5种状态)的游戏处于以下状态:
[0170] abc
1o o2 o 3x x
[0171]
随着游戏的进行,通过根据第三方面所述的方法,基于区块链事务的输出的日志可以记录如下:
[0172]
0b21a32a13c34c1
[0173]
假设有人试图篡改或更改为该序列维护的日志的副本,例如,当n=4时,为结果插入不同的条目,使得日志不会反映游戏的实际状态,如下所示:
[0174][0175]
这将立即从对区块链上事件流的自动生成的顺序日志的检查或审计中标识出来,因为对于n=3的事务,花费尘埃输出的事务的输入将不会被核实。应当理解的是,如果此类游戏涉及金融事务(例如,付费游戏),玩家可能希望检查其游戏日志的真实性,以及给定游戏提供商是否遵循其宣传的赔率或难度。通过如上所述将给定游戏的各个游戏条目(或其哈希值)存储在事件流中,可以确保玩家能够独立于游戏提供商维护的任何内部系统来检查和验证游戏中的事件。
[0176]
此外,应当进一步理解的是,给定事件流中的每个事件不需要对应于在游戏会话内发生的各个事件。可以为需要所述事件的准确防篡改顺序日志的任何事件日志定义事件流。例如,给定事件流中的事件示例可以包括本地或远程(优选地,链下)执行的给定智能合约的输入和/或输出;在给定在线消息收发对话的两个或更多个参与者之间发送的消息;由传感器或物联网(iot)设备执行的用于测量天气、车辆、货物、人员等的位置等的物理测量;药物/药物跟踪

包括生产地、运输、分配器位置、处方剂量、受体信息等;金融事务,例如贷记和/或借记账户的金额(无论账户是使用加密货币还是法定货币贷记)、汇率变化、交易执行、购买商品或股票的请求等。最终,生成和使用事件流的上下文将由使用平台处理器生成此类事件流的一方随意使用。
[0177]
现在转到图9,提供了可用于实施本公开的至少一个实施例的计算设备2600的说明性简化框图。在各种实施例中,所述计算设备2600可用于实现以上示出和说明的任何系统。例如,计算设备2600可被配置为用作图中dbms的一个或更多个组件,或者计算设备2600可被配置为与给定用户相关联的客户端实体,该客户端实体针对由图9的dbms管理的数据
库提出数据库请求。因此,计算设备2600可以是便携式计算设备、个人计算机或任何电子计算设备。如图9所示,计算设备2600可包括具有一级或更多级高速缓存的一个或更多个处理器以及存储器控制器(统称为2602),所述存储器控制器可被配置为与包括主存储器2608和永久存储器2610的存储子系统2606通信。如图所示,主存储器2608可以包括动态随机存取存储器(dram)2618和只读存储器(rom)2620。存储子系统2606和高速缓存存储器2602可用于存储信息,诸如与本公开中所描述的事务和区块相关联的细节。处理器2602可用于提供本公开中描述的任何实施例的步骤或功能。
[0178]
处理器2602还可以与一个或更多个用户界面输入设备2612、一个或更多个用户界面输出设备2614和网络接口子系统2616通信。
[0179]
总线子系统2604可以提供用于使计算设备2600的各个组件和子系统能够按预期彼此通信的机制。虽然总线子系统2604示意性地示出为单个总线,但是总线子系统的替代实施例可以利用多个总线。
[0180]
网络接口子系统2616可以向其他计算设备和网络提供接口。网络接口子系统2616可以作为从计算设备2600接收数据和向其他系统传输数据的接口。例如,网络接口子系统2616可以使数据技术人员能够将设备连接到网络,使得数据技术人员能够在远程位置(例如数据中心)向设备发送数据并从设备接收数据。
[0181]
用户界面输入设备2612可以包括一个或更多个用户输入设备,例如键盘;指点设备,如集成鼠标、轨迹球、触摸板或图形平板电脑;扫描仪;条形码扫描仪;包含在显示器中的触摸屏;音频输入设备,如语音识别系统、麦克风;以及其他类型的输入设备。一般而言,术语“输入设备”的使用旨在包括用于向计算设备2600输入信息的所有可能类型的设备和机制。
[0182]
一个或更多个用户界面输出设备2614可包括显示子系统、打印机、或非视觉显示器(例如音频输出设备等)。显示子系统可以是阴极射线管(crt)、平板设备(例如液晶显示器(lcd))、发光二极管(led)显示器或投影或其他显示设备。通常,术语“输出设备”的使用旨在包括用于从计算设备2600输出信息的所有可能类型的设备和机制。例如,可以使用一个或更多个用户界面输出设备2614来呈现用户界面,以便于用户与执行所描述的过程和其中变型的应用程序进行交互(当这种交互可能合适时)。
[0183]
存储子系统2606可以提供计算机可读存储介质,该计算机可读存储介质用于存储可提供本公开的至少一个实施例的功能的基本编程和数据构造。当由一个或更多个处理器执行时,应用程序(程序、代码模块、指令)可以提供本公开的一个或更多个实施例的功能,并且可以存储在存储子系统2606中。这些应用程序模块或指令可以由一个或更多个处理器2602执行。存储子系统2606可另外提供用于存储根据本公开所使用的数据的存储库。例如,主存储器2608和高速缓存存储器2602可以为程序和数据提供易失性存储。永久存储器2610可以提供用于程序和数据的永久(非易失性)存储,且可包括闪存、一个或更多个固态驱动器、一个或更多个磁硬盘驱动器、一个或更多个具有关联可移动介质的软盘驱动器、一个或更多个具有关联可移动介质的光驱动器(例如cd-rom或dvd或蓝光)以及其他类似的存储介质。这样的程序和数据可以包括用于执行如在本公开中描述的一个或更多个实施例的步骤的程序以及与在本公开中描述的事务和区块相关联的数据。
[0184]
计算设备2600可以是各种类型的,包括便携式计算机设备、平板电脑、工作站或下
文描述的任何其他设备。另外,计算设备2600可包括可通过一个或更多个端口(例如,usb、耳机插孔、闪电连接器等)连接至计算设备2600的另一设备。可以连接到计算设备2600的设备可以包括被配置为接受光纤连接器的多个端口。因此,该设备可以被配置为将光信号转换成电信号,所述电信号可经由将该设备连接至计算设备2600进行处理的端口传输。由于计算机和网络的不断变化的性质,图9所示的计算设备2600的描述仅用作说明设备的优选实施例的特定示例。与图9中描述的系统相比,具有更多或更少组件的许多其他配置是可能的。
[0185]
列举的示例性实施例
[0186]
本公开在此基于与上述方面相关的以下条款进行讨论,本文中提供这些条款作为示例性实施例,以便更好地解释、描述和理解要求保护的方面和实施例。
[0187]
1.一种用于提供与区块链相关联的多项服务的平台的计算机实现的方法,所述平台被提供给多个客户端,所述方法由与应用程序编程接口(api)相关联的平台处理器实现,所述方法包括以下步骤:
[0188]
从所述多个客户端中的给定客户端接收请求,所述请求与所述多项服务中的给定服务有关,并且来自所述给定客户端的所述请求基于超文本传输协议(http)传输协议格式;
[0189]
基于对客户端身份和/或请求有效的确定,获取与所述给定服务相关联的目的地址;
[0190]
基于与所述获取的目的地址对应的至少一个区块链事务,处理对于所述给定服务的所述请求,以获取输出脚本;以及
[0191]
将与所述输出脚本相关联的结果发送到所述给定客户端,所述结果基于所述http传输协议格式提供。
[0192]
2.根据条款1所述的方法,其中,所述平台处理器实现为http api端点。
[0193]
3.根据条款2所述的方法,其中,所述平台处理器实现为表征状态转移(representational state transfer,简称rest)端点。
[0194]
4.根据前述任一项条款所述的方法,其中,所述平台处理器包括多个处理器,或者与多个处理器相关联,每个处理器被配置用于实现所述区块链上的所述多项服务中的给定服务,并且每个处理器与相应处理器唯一的特定目的地址或端点相关联。
[0195]
5.根据前述任一项条款所述的方法,其中,所述平台处理器与api转换器相关联,所述api转换器被配置用于执行以下步骤:
[0196]
以所述http传输协议格式从所述给定客户端接收所述请求;
[0197]
将所述接收的请求转换为远程过程调用(remote procedure call,简称rpc)格式,并将所述rpc请求发送到所述多个处理器中的给定处理器,所述给定处理器被配置为实现在所述接收的请求中标识的所述给定服务;
[0198]
以所述rpc格式从所述给定处理器接收与至少一个区块链事务相关联的响应;以及
[0199]
使用所述http传输协议转换要发送到所述客户端的所述相应响应。
[0200]
6.根据前述任一项条款所述的方法,其中,所述接收的请求是http get或post或put或patch请求,所述http get或post或put或patch请求包括所述给定客户端的客户端标
识符和所述请求的给定服务的服务标识符,或与所述给定客户端的客户端标识符和所述请求的给定服务的服务标识符相关联,并且发送到所述客户端的所述结果是基于所述给定客户端的所述客户端标识符的http post请求。
[0201]
7.根据条款6所述的方法,包括:基于所述客户端标识符以及与所述客户端标识符对应的记录核实所述客户端,所述记录与所述平台处理器相关联;以及
[0202]
基于所述客户端的成功核实,根据所述服务标识符以及相应记录中包括的属性或设置,确定来自所述客户端的所述接收的请求是否有效。
[0203]
8.根据条款6或7所述的方法,其中,所述客户端标识符是为给定客户端提供的别名,所述别名特定于所述给定客户端并且由基于别名的寻址服务提供,所述寻址服务具有可从定义的或公知的位置访问的机器可读资源,所述机器可读资源包括与所述给定客户端有关的一项或更多项功能。
[0204]
9.根据条款8所述的方法,其中,所述别名与所述给定客户端的域名相关联。
[0205]
10.根据前述任一项条款所述的方法,其中,所述平台包括使用所述区块链实现的以下服务中的至少一项或更多项服务:
[0206]
数据服务,用于将数据写入/提交给区块链,以改变所述区块链的状态;
[0207]
数据服务,用于读取/获取反映所述区块链的当前状态的数据;
[0208]
与简单支付验证相关联的服务,用于与所述区块链相关联的事务;
[0209]
与管理与所述区块链相关联的一个或更多个事件流和/或智能合约相关联的服务;
[0210]
与管理与所述区块链相关联的多个客户端的数字钱包框架相关联的服务。
[0211]
11.一种用于访问与区块链相关联的多项服务的平台的计算机实现的方法,所述平台被提供给多个客户端,所述方法由所述多个客户端中的给定客户端的一个或更多个处理器实现,所述方法包括以下步骤:
[0212]
获取或标识与一个或更多个处理器相关联的应用程序编程接口(api)端点,所述一个或更多个处理器与所述平台相关联;
[0213]
发送与所述多项服务中的给定服务有关的请求,所述请求包括所述给定客户端的客户端标识符和所述请求的给定服务的服务标识符,或与所述给定客户端的客户端标识符和所述请求的给定服务的服务标识符相关联,其中所述请求基于超文本传输协议(http)传输协议格式发送;以及
[0214]
接收与区块链事务的输出脚本有关的结果,所述区块链事务与所述请求相关联,所述结果基于所述http传输协议格式提供给所述客户端。
[0215]
12.一种用于实现与区块链相关联的事务的数据写入服务的计算机实现的方法,所述方法由与应用程序编程接口(api)相关联的平台处理器实现,所述方法包括以下步骤:
[0216]
从客户端接收请求,所述请求与使用所述区块链实现的事件流es有关,来自所述客户端的所述请求基于超文本传输协议(http)传输协议格式;
[0217]
确定所述事件流es
i=n
的当前状态,其中,i是从0至n的整数,每个整数i表示所述事件流es的给定状态,因此i=0表示创建的事件流es,i=n表示所述区块链中处于当前状态的事件流es,i=n表示所述事件流es的最终状态;
[0218]
基于所述接收的请求,通过以下步骤处理所述事件流es的新事件e
n+1

[0219]
创建区块链事务tx
n+1
,所述区块链事务tx
n+1
包括:
[0220]
与先前事务txn的事务输出(txon)相关联的输入;和
[0221]
与表示所述新事件e
n+1
的事件数据相关联的未花费输出(utxo
n+1
);
[0222]
将所述事务tx
n+1
提交给所述区块链;
[0223]
其中,响应于所述提交,所述方法包括:基于所述新创建的事件e
n+1
将所述事件流的所述当前状态更新为es
i=n+1
,使得es
i=n
=es
n+1
;以及
[0224]
基于所述更新的当前状态es
n+1
发送结果,所述结果基于所述http传输协议格式提供。
[0225]
13.一种用于实现与区块链相关联的事件流的计算机实现的方法,所述方法由与应用程序编程接口(api)相关联的平台处理器实现,所述方法包括以下步骤:
[0226]
从客户端接收与事件流es有关的请求,所述请求是基于超文本传输协议(http)传输协议格式接收到的;
[0227]
确定所述事件流e的当前长度n;
[0228]
其中,如果n=0,则所述方法包括:
[0229]
将所述接收的请求中的所述事件流的事件en标识为第一事件,以创建所述事件流es;
[0230]
通过创建包括第一未花费输出utxo
0_dust
的区块链事务,处理所述接收的事件en,所述第一未花费输出是尘埃输出;
[0231]
其中,如果0《n《n,其中n是最终值或最大值,则所述方法包括:
[0232]
将所述接收的请求中的所述事件流的事件en标识为当前事件,以修改所述事件流es;
[0233]
通过创建区块链事务,处理所述接收的事件en,所述区块链事务包括:
[0234]
第一输入,其花费与所述事件流es的先前的事务相关联的尘埃输出;
[0235]
第一未花费事务输出utxo
n_dust
,其作为尘埃输出;和
[0236]
最终未花费事务输出utxo
n_data
,其与表示当前事件en的事件数据相关联;
[0237]
其中,如果n=n,则所述方法包括:
[0238]
将所述接收的请求中的所述事件流的事件en标识为最终事件,以终止所述事件流es;
[0239]
通过创建区块链事务,处理所述接收的事件en,所述区块链事务包括:
[0240]
第一输入,其花费与所述事件流es的先前的事务相关联的尘埃输出;和
[0241]
最终未花费输出utxon,其与超过定义的尘埃输出值的数字资产相关联;
[0242]
所述方法包括:
[0243]
将所述创建的事务提交给所述区块链;以及
[0244]
将与tx0中的所述事件流es相关联的结果发送到所述客户端,所述结果基于所述http传输协议格式提供。
[0245]
14.一种用于创建与区块链相关联的事件流的计算机实现的方法,所述方法由与应用程序编程接口(api)相关联的平台处理器实现,所述方法包括以下步骤:
[0246]
从客户端接收与新事件流es有关的请求,所述接收的请求基于超文本传输协议(http)传输协议格式;
[0247]
确定将与所述新事件流es一起使用的分层确定性密钥链k,其中,所述密钥链k包括从所选择的父密钥对导出的一系列私钥/公钥对,使得k=k
n=0至n
,其中,n是从0至n的整数,每个整数n表示与所述事件流es相关联的事件的当前长度或当前数量,n表示n的最大值或最终值;
[0248]
为所述新事件流es创建第一区块链事务tx0,其中,n=0,所述区块链事务包括:
[0249]
第一未花费事务输出(utxo
0_dust
),其作为尘埃输出,所述尘埃输出与使用从所述密钥链k中导出的第一密钥对k0来保护的锁定脚本相关联;
[0250]
将所述事务tx0提交给所述区块链;以及
[0251]
将与tx0中的所述创建的事件流es相关联的结果发送到所述客户端,所述结果基于所述http传输协议格式提供。
[0252]
15.一种用于更新与区块链相关联的事件流的计算机实现的方法,所述方法由与应用程序编程接口(api)相关联的平台处理器实现,所述方法包括以下步骤:
[0253]
从客户端接收对与所述区块链相关联的现有事件流es进行更新的请求,所述请求是基于超文本传输协议(http)传输协议格式来接收的,其中,所述事件流es与密钥链k相关联,使得k=k
n=0至n
,其中,n是从0至n的整数,每个整数n表示与所述事件流es相关联的事件的当前长度或当前数量,n表示n的最大值或最终值;
[0254]
确定所述事件流es的当前长度n;
[0255]
从所述请求中获取要附加到所述事件流es的当前事件en;
[0256]
标识与所述事件流es相关联的先前的区块链事务tx
n-1

[0257]
获取与所述标识的先前的事务tx
n-1
相关联的密钥对k
n-1

[0258]
为所述当前事件en的产生密钥对kn;
[0259]
为拟附加到所述事件流es的所述当前事件en创建当前区块链事务txn,其中,0《n《n,所述当前区块链事务包括:
[0260]
第一输入,所述第一输入花费与所述先前的事务tx
n-1
相关联的尘埃输出,所述花费使用所述先前的事务的所获取密钥对k
n-1
来授权;
[0261]
第一未花费事务输出(utxo
n_dust
),所述第一未花费事务输出作为所述当前事务txn的尘埃输出,所述尘埃输出与使用所述导出的密钥对kn来保护的锁定脚本相关联;和
[0262]
最终未花费事务输出(utxo
n_data
),所述最终未花费事务输出与表示所述当前事件en的事件数据相关联;
[0263]
将所述事务txn提交给所述区块链;以及
[0264]
将与所述更新的事件流es相关联的结果发送到所述客户端,所述结果基于所述http传输协议格式提供。
[0265]
16.根据条款15所述的方法,其中,所述当前区块链事务txn的所述最终未花费事务输出(utxo
n_data
)中的所述事件en的所述事件数据包括所述事件数据的哈希值。
[0266]
17.根据条款16所述的方法,其中,所述事件数据的所述哈希值由所述平台处理器应用。
[0267]
18.根据条款16所述的方法,其中,所述事件数据的所述哈希值在包括在所述平台处理器接收的所述请求中之前由所述客户端设备应用。
[0268]
19.根据条款15所述的方法,其中,所述当前区块链事务txn的所述最终未花费事
务输出(utxo
n_data
)中的所述事件en的所述事件数据包括原始事件数据。
[0269]
20.一种用于终止与区块链相关联的事件流的计算机实现的方法,所述方法由与应用程序编程接口(api)相关联的平台处理器实现,所述方法包括以下步骤:
[0270]
从客户端接收对与所述区块链相关联的现有事件流es进行终止的请求,所述接收的请求基于超文本传输协议(http)传输协议格式,其中,所述事件流es与密钥链k相关联,使得k=k
n=0至n
,其中,n是从0至n的整数,每个整数n表示与所述事件流es相关联的事件的当前长度或当前数量,n表示n的最大值或最终值;
[0271]
确定所述事件流es的当前长度n=n;
[0272]
从所述请求中获取要附加到所述事件流es的最终事件en;
[0273]
标识与所述事件流es相关联的先前的区块链事务tx
n-1

[0274]
获取与所述先前的事务tx
n-1
相关联的密钥对k
n-1

[0275]
导出所述最终事件en的密钥对kn;
[0276]
为拟附加到所述事件流es的所述最终事件en创建最终区块链事务txn,所述最终区块链事务包括:
[0277]
第一输入,其花费与所述先前的事务tx
n-1
相关联的尘埃输出,所述花费使用所述先前的事务的所获取密钥对k
n-1
来授权;
[0278]
第一未花费事务输出(utxon),其与超过定义的尘埃输出限制的数字资产相关联;
[0279]
将所述事务txn提交给所述区块链;以及
[0280]
将与所述终止的事件流es相关联的结果发送到所述客户端,所述结果基于所述http传输协议格式提供。
[0281]
21.根据条款12-19中任一项所述的方法,其中,与所述事件流es相关联的所述结果包括确认以下至少一项的证书:
[0282]-事务标识符,在所述事务标识符中所述事件en过去提交给所述区块链;
[0283]-默克尔包含证明,证明所述事务包括在所述区块链中的区块头中;
[0284]-所述区块头的副本,所述事务过去包括在所述区块头中。
[0285]
22.根据条款12-21中任一项所述的方法,其中,所述提交步骤包括:将所述创建的事务包括在与要挖掘的区块链相关联的后续区块中。
[0286]
23.根据条款12-22中任一项所述的方法,其中,所述创建的区块链事务进一步包括:
[0287]
与数字资产相关联的输入;以及
[0288]
与所述数字资产相关联的一个或多个变更输出。
[0289]
24.根据条款23所述的方法,其中,所述数字资产与运营浮动相关联。
[0290]
25.根据条款12-24中任一项所述的方法,包括以下步骤:基于与所述提交的区块链事务相关联的事务标识符,标识所述事件流es。
[0291]
26.根据条款12-25中任一项所述的方法,包括以下步骤:基于与所述提交的区块链事务相关联的事务标识符,标识与所述事件流sc相关联的状态。
[0292]
27.根据条款12-26中任一项所述的方法,其中,所述事件流用于表示所述区块链上的智能合约。
[0293]
28.根据条款27所述的方法,其中,所述智能合约实现为有限状态机(fsm)。
[0294]
29.根据条款13-28中任一项所述的方法,包括:将基于所述事件流的每个事件的结果的副本或记录或日志存储在链下存储资源中。
[0295]
30.一种用于在区块链中写入与事件流相关联的数据的计算机实现的方法,所述方法由多个客户端中的给定客户端的一个或多个处理器实现,所述方法包括以下步骤:
[0296]
获取或标识与一个或多个处理器相关联的应用程序编程接口(api)端点,所述一个或多个处理器与平台相关联,用于提供数据写入服务;
[0297]
发送对与事件流有关的一个或多个事件en的请求,其中所述请求基于超文本传输协议(http)传输协议格式发送;以及
[0298]
接收与区块链事务的输出脚本相关联的结果,其中,所述区块链事务与所述请求的事件en有关,所述结果基于所述http传输协议格式接收。
[0299]
31.根据条款30所述的方法,包括:对所述事件en的事件数据应用哈希函数,使得所述请求包括所述事件en的哈希事件数据。
[0300]
32.一种计算设备,所述计算设备包括处理器和存储器,所述存储器包括可执行指令,所述处理器执行所述可执行指令时,使得所述设备执行根据条款1-10和12-29中任一项所述的计算机实现的方法,所述计算设备与平台处理器有关。
[0301]
33.一种计算设备,所述计算设备包括处理器和存储器,所述存储器包括可执行指令,所述处理器执行所述可执行指令时,使得所述设备执行根据条款11、30或31中任一项所述的计算机实现的方法,其中所述计算设备与客户端有关。
[0302]
34.一种计算机系统,所述计算机系统包括:
[0303]
至少一个平台处理器,通过无线通信网络与至少一个客户端通信耦合,所述至少一个平台处理器与用于处理来自所述至少一个客户端的http请求的应用程序编程接口(api)端点相关联,所述至少一个平台处理器根据条款32所述的计算设备实现,所述至少一个客户端根据条款33所述的计算设备实现。
[0304]
35.一种计算机可读存储介质,其上存储有可执行指令,计算机的处理器执行所述可执行指令时,使得所述计算机执行根据条款1-31中任一项所述的方法。
[0305]
应当注意的是,上述的方面和实施例是说明而不是限制本公开,并且本领域技术人员在不脱离由所附权利要求书所限定的本公开的范围的情况下将能够设计许多替代实施例。在权利要求书中,括号中的任何附图标记都不应解释为对权利要求的限制。词语“包括”等不排除任一项权利要求或说明书中整体列出的元件或步骤之外的元件或步骤的存在。在本说明书中,“包括”是指“包含“或”由......组成”。元件的单数形式并不排除此类元件的复数形式,反之亦然。本公开可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个装置的设备权利要求中,这些装置中的几个装置可以由同一硬件来体现。在互不相同的从属权利要求中引用某些措施的事实并不意味着不能有利地使用这些措施的组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1