权利管理系统的制作方法

文档序号:15935392发布日期:2018-11-14 02:18阅读:159来源:国知局

本公开涉及权利管理系统和方法,并且具体地涉及分布式账本技术和硬件/软件认证。

背景技术

权利,尤其是涉及企业硬件和软件的权利是复杂的。例如,目前的用于企业硬件和软件的权利管理方法缺乏用于创建、分发、获取和授权企业许可的统一方案。无论是通过购买发送许可代码,还是维护具有访问的指定用户的数据库的供应商/第三方,这些解决方案都是完全不同的,实现了无数的变体,面临许多脆弱性,并导致所涉及各方的困惑和复杂化。从供应商到分销商到客户以及在复杂的公司结构中缺乏对权利的可见性源自用于获取和跟踪权利的不同的解决方案和不连贯的过程中。致力于授权硬件和/或软件的使用的计算系统遭受各种低效率,包括缺乏与权利相对应的认证信息的统一且一致的源。另外,目前的用于权利管理的方案遭受各种缺陷、限制和缺点。

附图说明

参考以下附图和描述可以更好地理解实施例。图中的组件不必是按比例的。此外,在附图中,贯穿不同视图的相同参考数字表示相应部分。

图1图示了用于控制对许可组件的访问的系统。

图2图示了包括去中心化节点的系统的示例。

图3图示了区块链的示例。

图4图示了自执行令牌的示例。

图5图示了配置有自执行令牌的区块链的示例实现。

图6图示了用于系统的逻辑的流程图的示例。

图7图示了用于系统的逻辑的流程图的第二示例。

图8图示了用于系统的逻辑的流程图的第三示例。

图9图示了用于系统的逻辑的消息序列图的第一示例。

图10图示了用于系统的逻辑的消息序列图的第二示例。

图11图示了用于系统的逻辑的消息序列图的第三示例。

图12图示了用于系统的逻辑的消息序列图的第四示例。

图13图示了用于系统的逻辑的消息序列图的第五示例。

图14图示了用于系统的逻辑的消息序列图的第六示例。

图15图示了用于系统的逻辑的流程图的第四示例。

图16图示了包括存储器和处理器的系统的示例。

具体实施方式

提供了用于管理和控制软件权利的系统和方法。作为介绍性示例,用于控制对许可组件的访问的服务器节点可以接收包括许可创建参数的许可创建消息。服务器节点响应于接收到许可创建消息,可以从区块链获取许可工厂智能合约。许可工厂智能合约可能包括许可工厂逻辑,许可工厂逻辑可执行用于生成许可智能合约。服务器节点基于许可创建参数和许可工厂逻辑的执行,可以生成许可智能合约。许可智能合约可以包括许可逻辑,许可逻辑可执行用于验证与在远程设备上配置的许可组件相对应的访问事件。许可智能合约可以将包括许可智能合约的数据区块附加到区块链。服务器节点可以跨多个节点同步区块链。服务器节点可以通过许可逻辑的执行来控制对在远程设备上配置的许可组件的访问。

通过下面描述的系统和方法实现的技术进步的一个示例可以是通过使用区块链技术来减少存储在多个系统中的许可协议的多个数字表示之间的不一致。电子和通信技术的快速发展已经导致安全数据系统的广泛采用,这些安全数据系统以分布式账本(例如区块链)的形式采用密码分布的安全数据存储层。在许多实际应用中,区块链有助于信息共享和资产管理。由于区块链技术减少了实施安全授权的不一致和/或过时的协议,因此根据双方同意的协议对授权硬件和软件的使用的安全授权和控制得到了改进。

通过下面描述的系统和方法实现的技术进步的另一个示例是,对许可硬件和软件的安全使用的控制可以以在一方或多方之间达成一致的透明方式被自动化。例如,硬件或软件的权利可以被表示为包括在区块链中的自执行令牌。区块链可能允许有形资产存在于数字领域,同时提供真实世界事务的好处以及数字架构的好处。就像有形物品一样,许可可以在公司、供应商、经销商、用户等之间无缝地转手。通过创建由一个或多个智能合约启用的自执行令牌,诸如期满、使用准许、跟踪和整体企业协议等规则可以作为嵌入式自执行逻辑被构建。通过这种方案,各方可以采用多对多的方案,以跨任意参与的供应商和客户共享准确、最新和完整的权利信息的源。由于智能合约存储在分布式账本中,从智能合约访问并用于控制对软件和硬件的访问的逻辑可以与由参与供应商和客户所利用的硬件基础设施无关。因此,代替每个参与的供应商和客户实施分离的规则和逻辑集合来实施企业协议,分布式区块链可以包括参与供应商和客户之间一致的自执行逻辑。

替代地或另外地,由下述系统和方法实现的技术进步的另一示例是存储的许可协议和控制访问硬件和软件的可执行逻辑的增加的可访问性、透明度和一致性。例如,通过利用区块链的透明度,供应商可以知道谁在使用他们的平台,并让公司看到他们的许可的完整条款,所有这些都没有在任一端的沉重的管理成本。用于所有权利的这种共享的分布式账本可以允许许可所有权和授权的永久记录以及可审计的历史。本文描述的系统和方法减少和/或消除先前致力于确保许可协议的数据一致性的处理时间。此外,这些系统和方法显著减少了配置为实施许可协议的逻辑。

下面描述的系统和方法的另一个有益的特征可以是区块链可以为包括企业软件事务服务的许多覆盖应用供电。例如,软件事务服务可以允许企业的员工从包括现有企业协议的授权收购的策划目录中对软件进行许可。利用区块链中的数据,该解决方案能够实现分析和有针对性的建议,以指导策划决策。该企业软件事务服务还可以允许集中式电子事务。如下所述,这可以通过部署私有/混合区块链,为涉及的每个实体的总体应用提供api,以及管理许可的管理web应用来完成。web应用可以提供接口来设计智能许可和将智能许可部署到区块链,用通过这些接口可配置的逻辑创建即时智能合约。那些智能许可可能会在整个底层区块链中交付和执行。在一些示例中,对软件/硬件的用户访问和权利可以由部署到应用中的软件开发工具包(sdk)或与区块链本身通信的应用来管理,从而能够实现对拥有有效智能许可或由有效智能许可委托的那些应用的访问。

本文描述的系统和方法提供了对现有市场解决方案的其他改进。在下面描述的系统和方法中,明显比现有市场解决方案带来附加益处、效率和改进。

图1图示了用于控制对许可组件的访问的系统100。

远程设备

系统100可以包括远程设备102。远程设备102可以包括电子计算设备。例如,远程设备102可以包括服务器、移动设备、个人计算机、工作站、电路和/或任意其他类型的一个或多个计算设备。远程设备102可以存储、执行、控制或与许可组件104通信。许可组件104可以包括软件、硬件或者软件和硬件的组合,其中与许可组件104相对应访问、使用权、所有权和/或准许由协议管理。例如,许可组件104可以包括安装在远程设备102上和/或在远程设备102上执行的软件,诸如应用。备选地或另外地,许可组件104可以包括被打包用于在远程设备102上安装的软件,诸如在安装之前被压缩为zip(或其他压缩标准)。在其他示例中,许可组件104可以包括与远程设备102连接的硬件。许可组件104的非限制性示例包括例如移动应用、操作系统、网页和/或程序套件、usb设备、蓝牙设备、联网设备或任意其他类型的设备和/或软件。备选地或附加地,许可组件104可以包括:软件和/或硬件,被配置在远程设备102外部并且被远程设备102访问用于执行和/或显示。例如,许可组件104可以包括诸如html、javascript的逻辑,或由远程设备102从与远程设备102远程的源加载的任意其他类型的可执行信息。

远程设备102还可以包括准许服务106。准许服务106可以控制对许可组件104的访问和/或操作。例如,准许服务106可以从远程位置接收通信并且基于通信来控制对许可组件104的访问和/或许可组件104的执行。如本文所述,对许可组件的访问意味着软件和/或硬件组件的安装;与硬件和/或软件组件的通信;和/或以任意方式与软件和/或硬件组件进行交互。对许可组件104的访问可以由许可组件104外部的基于机器的通信或基于人的通信和/或由许可组件本身来执行或发起。控制对许可组件104的访问可以包括禁止或准许应用的安装和/或启动。备选地或另外地,控制对许可组件104的访问可以包括禁止或准许参与由许可组件104提供的一个或多个特征的能力。在其他示例中,控制对许可组件104的访问可以包括禁止或准许执行包括在许可组件104中或由许可组件104提供的可执行指令的全部或一部分的能力。

如图1所示,准许服务106可以在许可组件104的外部。在其他示例中,准许服务106可以被包括在许可组件104中。例如,准许服务106可以与许可组件104集成。相应地,许可组件104可以控制对其自身的访问。在其他示例中,准许服务106可以被包括在从外部来源加载软件的安装程序或软件主机中,诸如网页浏览器。备选地,准许服务106可以位于远程设备102的外部并且与远程设备102通信以控制对许可组件104的访问。

准许服务106和/或许可组件104可以收集和/或传送与许可组件104有关的使用信息。使用信息可以包括与许可组件104的使用有关的信息。例如,使用信息可以包括记录许可组件104的安装、卸载、启动、关闭和/或下载的事件。备选地或另外地,使用信息可以包括描述以下各项的信息:使用许可组件104的时间、使用许可组件104的时间量、使用许可组件104的位置(诸如地理位置)和/或与使用许可组件104的环境或方式有关的任意其他信息。在其他示例中,使用信息可以包括在图形用户界面中与许可组件104提供的特征(诸如按钮、列表、下拉等)的交互或试图交互。在其他示例中,使用信息可以描述许可组件104执行的或请求执行的逻辑。通常,使用信息可以包括描述任意种类的与许可组件104进行的试图或实际交互和/或通信的信息。

许可组件104可以与管理许可组件104的使用或许可组件104的特征的协议相关联。例如,许可组件104可以与诸如许可协议的合约相关联,其向许可组件104的用户授予某些权利和义务。除了本文描述的其他特征之外,可以由使用去中心化和安全区块链平台的系统100来管理许可的创建、所有权、实施和管理。

去中心化的服务器节点

系统100许多包括去中心化服务器节点108。去去中心化服务器节点108可以包括权利管理堆栈110。权利管理堆栈110可以遵从用于插入、删除、验证或以其他方式管理区块链以及用于许可在区块链上存储的信息的协议。因此,权利管理堆栈110可以除了本文描述的其他特征之外,使用区块链技术以去中心化和安全的方式来控制软件许可或其他类型的协议的创建、所有权、执行和管理。权利管理堆栈110可以包括区块链数据库112。

区块链数据库112可以包括存储和/或管理一个或多个区块链的存储库。区块链数据库112可以包括数据结构,数据结构包括一个或多个区块链。例如,区块链数据库可以包括形成一个或多个区块链的链接的数据区块集合。在一些示例中,区块链数据库可以包括创建、修改和维护一个或多个区块链的程序。区块链数据库112和/或权利管理堆栈110可以跨其他去中心化的服务器节点108同步一个或多个区块链。同步区块链114可以包括根据区块链协议将区块链的添加/修改共享给其他去去中心化的服务器节点。区块链数据库112可以防止对一个或多个区块链中先前附加的或现有的信息的修改。备选地或另外地,区块链数据库112可以使用其他去去中心化的服务器节点来验证区块链。在一些示例中,可以禁止对一个或多个区块链的修改,除非其他去中心化服务器节点的诸如多数或某些其他预定义数量的节点的共识同意这些修改。在其他示例中,可以根据区块链协议来控制对区块链数据库112中的一个或多个区块链的添加和修改,区块链协议定义用于管理和同步区块链的标准化规则。

区块链数据库112可以包括区块链114。区块链114可以包括跨多个分布式节点复制以提供分布式账本的信息账本。区块链114可以包括数据区块,数据区块附加在一起以形成区块链114。区块链114可以提供增长的共享数字数据流,其用作访问存储在区块链114中的数据的各方之间的真相源。例如,区块链114可以提供按时间顺序的信息账本。在一个实施例中,一个或多个连续数据区块可以包括先前数据区块的散列。对区块链114中的一个或多个数据区块的修改可以引起存储在连续数据区块中的散列信息不一致。区块链数据库112可以与其他去去中心化的服务器节点合作来检测和管理不一致性。

在一些示例中,区块链114可以针对特定目的而被裁剪。例如,区块链114可以提供与物理和/或虚拟资产的权利有关的事务的历史。区块链114可以被裁剪用于管理许可协议的虚拟表示,许可协议包含和/或标识对软件和/或硬件的所有权和/或控制对软件和/或硬件的访问。区块链114可以包括一个或多个自执行令牌116中。

自执行令牌116可以包括诸如软件或硬件的有形或无形财产的所有权的虚拟表示。在一些示例中,自执行令牌116可以包括编程地确定诸如许可协议的权利的权利或义务是否被满足的逻辑。备选地或另外地,自执行令牌116可以包括基于权利的权利或义务的确定满足(或未满足)来控制对财产的访问的逻辑。在一个示例中,自执行令牌可对应于软件许可协议的虚拟表示,其中许可协议的条款、条件、定义和各方在自执行令牌116中被数字地表示。自执行令牌116可以包括控制启动、安装、参与根据许可协议许可的硬件和/或软件和/或与根据许可协议许可的硬件和/或软件进行通信的逻辑。

在其他示例中,自执行令牌116可以包括用于控制其自身、其它自执行令牌、或不包括自执行逻辑的其他令牌的所有权的规则。例如,自执行令牌116可以包括用于在用户之间分配自执行令牌和/或创建其他自执行令牌的规则。在一个示例中,对于由第一方授权给第二方的软件,自执行令牌116可对应于软件许可协议。自执行令牌116可以包括根据软件许可协议的条款和条件来确定这种转移是否有效的逻辑。备选地或附加地,自执行令牌116可以包括控制第二方对下载、安装和/或执行软件的访问的逻辑。

自执行令牌116可以被存储在一个或多个区块链中。例如,当自执行令牌116被存储在区块链114中时,对自执行令牌116的未授权改变被最小化并且被容易地被检测到。对自执行令牌116的授权改变被记录在区块链114中,使得区块链114向自执行令牌116和/或授权改变的各方提供对所有改变的可审计记录。例如,区块链114可以包括与自执行令牌116中的一个或多个相关联的历史的账本。可以修改自执行令牌116和/或可以将自执行令牌116的所有权随时间转移。在一些示例中,区块链114可以包括事务历史,事务历史包括对自执行令牌116的所有权的更新和/或对自执行令牌116的修改。因此,与传统数据库不同,区块链114可以提供不可变的令牌记录。例如,区块链114可以提供对令牌的修改和/或所有权转移的账本。另外,区块链114可以包括基于存储在区块链114中的自执行令牌116中的一个或多个来控制对软件的访问所需的逻辑。

自执行令牌116的逻辑可以被称为“自执行”,因为逻辑可以通过在一个或多个去去中心化服务器节点108和/或一个或多个远程设备上实现,而不管具体操作系统、硬件和/或其他硬件或软件约束。因此,自执行令牌116的逻辑可能对于其中自执行令牌的逻辑被评估或执行的硬件、操作系统和/或平台是不可知的。由于逻辑被存储在区块链114中,所以对自执行逻辑的未授权的改变被最小化并且容易被检测到。对自执行逻辑的授权改变被记录在区块链114中,使得区块链114提供对自执行逻辑和/或授权改变的各方的所有改变的可审计记录。

权利管理堆栈110可以附加地或备选地包括令牌管理器118。令牌管理器118可以包括api、服务、过程和/或可以经由与去去中心化的服务器节点108的交互或在去中心化的服务器节点108内部启动或触发的任意类型的逻辑。在一些示例中,令牌管理器118可以与区块链数据库112交互。例如,令牌管理器118可以提供诸如应用编程接口(api)的接口,用于添加和更新存储在区块链114中的信息。替代地或附加地,令牌管理器118可以提供用于基于存储在区块链114中的自执行令牌116中的一个或多个来确定授权组件104或其中的特征的使用是否被授权。附加地或备选地,令牌管理器118可以提供用于发送和接收与一个或多个许可组件有关的使用信息的接口,一个或多个许可组件是根据自执行令牌116中的一个或多个而被许可的。备选地或另外地,令牌管理器118可以提供接口,接口用于确定远程设备102是否被授权以基于自执行令牌116中的一个或多个来启动许可组件104和/或访问该许可组件104的各种特征。

当许可组件被访问或试图被访问时,令牌管理器118可以接收(或检测)访问事件。访问事件可以包括描述对许可组件104的访问或试图访问的信息。访问事件可以包括描述访问事件的时间、位置和/或访问描述符等信息。在一个示例中,对许可组件的访问可以包括在远程设备102上的许可组件的安装。在另一个示例中,访问事件可以包括与许可组件104的诸如启动器的特征的交互。一般来说,访问事件可以包括指示对本文描述的许可组件的任意类型的访问的信息。访问事件可以由远程设备102、去去中心化的服务器节点108和/或被配置为监视对许可组件104的访问的任意设备或组件来生成。

令牌管理器118可以接收对应于一个或多个许可组件的一个或多个访问事件。在一些示例中,可以经由访问消息将访问事件传送给令牌管理器118。访问消息可以指代被配置为传送访问事件的信息。访问消息可以包括例如api调用、经由消息服务发送的消息、程序调用等。

在一些示例中,自执行令牌可以在用户之间转移。用户可以包括自执行令牌的所有者和/或受让人。例如,用户可以包括与自执行令牌相对应的合约的各方,被许可人和/或受让人。令牌管理器118和/或包括在自执行令牌中的逻辑可以基于转移来控制对许可组件104的访问。例如,自执行令牌可能先前已被分配有第一用户标识符或者与第一用户标识符相关联,第一用户标识符与第一用户相关联。第一用户可以具有对许可组件104的访问。自执行令牌可以被转移到与第二用户相关联的第二用户标识符。在自执行令牌被转移之后,第一用户可能不再具对许可组件104的访问,而第二用户可以具有对许可组件104的访问。区块链114可以维护与自执行令牌相关的转移事件的记录。转移事件可以指自执行令牌被重新分配、重新关联和/或在用户之间转移的任意事件。转移事件的检测可以包括程序调用的检测和/或表示用户之间的转移的特定数据的存在。区块链114可以包括一个或多个数据区块,一个或多个数据区块包括转移信息。例如,转移信息可以指示自执行令牌从第一用户被转移到第二用户。令牌管理器118可以响应于转移事件的检测来将包括转移信息的数据区块添加到块链中。

管理服务

系统100可以包括管理服务120。管理服务120可以向最终用户和设备提供用户界面。管理服务120可响应于由用户界面传送或由用户界面创建的触发操作来与去中心化服务器节点108交互。在一些示例中,管理服务120可以与去去中心化服务器节点108进行通信以创建、转移和/或修改自执行令牌116中的一个或多个。

管理服务120可以包括模板数据库122。模板数据库122可以包括模板信息,模板信息用于创建、转移和/或修改自执行令牌116中的一个或多个。例如,模板数据库可以包括用于自执行逻辑的模板逻辑和/或参数。模板逻辑可以包括可以与其他参数组合以完成逻辑的逻辑,例如使逻辑可执行。备选地或另外地,模板逻辑可以包括可以被填充以裁剪模板逻辑以用于特定目的的占位符。在一个示例中,模板逻辑可以包括“在y年之后限制对软件的访问”,其中y是模板逻辑中的占位符。管理服务120可以接收与模板逻辑组合以生成自执行令牌的一个或多个模板参数。例如,管理服务120可以向管理终端122提供包括模板逻辑和一个或多个模板参数的用户界面。管理终端122可以选择模板参数和模板逻辑的任意组合。管理服务120可以基于所选择的模板参数和模板逻辑来生成自执行令牌。在另一个示例中,模板逻辑可以包括“用户x被授权访问许可的usb设备”,其中占位符x可以被替换为特定的用户名和/或由用户控制的私钥代表。

在一些示例中,管理终端124可以与管理服务120通信。管理终端124可以接收并显示用于创建自执行令牌116的用户界面。用户界面可以由具有诸如管理准许的特定准许的用户访问。在其他示例中,管理终端可以接收其他请求以发起自执行令牌的转移。例如,管理服务120可以传送用于将自执行令牌从第一用户传送到第二用户的请求。去中心化的服务器节点108可以基于请求来更新区块链114。

供应商服务

该系统还可以包括供应商服务126。供应商服务126可以提供虚拟资产,诸如可用于购买的资产。虚拟资产可以包括自执行令牌116。虚拟资产的访问、使用、控制和所有权可以由存储在区块链114中的自执行令牌116中的一个或多个来管理。供应商服务可以通知去中心化服务器节点108用户和/或设备正在购买、请求访问或访问一个或多个虚拟资产。令牌管理器118可以记录在各方之间的一个或多个自执行令牌的转移。例如,令牌管理器118可以将记录自执行令牌的转移的一个或多个数据区块附加到区块链114。备选地或另外地,自执行令牌可以包括确定转移是否有效的逻辑。令牌管理器118可以授予或拒绝转移自执行令牌的能力。

在一些示例中,自执行令牌的转移可对应于诸如硬件、软件和/或许可协议的销售的转移。在一个示例中,管理终端124可以与管理服务120通信以创建自执行令牌。自执行令牌可以与供应商相关联。管理服务120可以与去中心化服务器节点108交互以将包括自执行令牌的数据区块附加到区块链114。远程设备102或一些其他设备可以与供应商服务进行通信以获取和/或购买对许可组件104的访问权利。供应商服务126可以与去中心化节点108通信以将附加数据区块附加到区块链114,附加数据区块记录自执行令牌的所有权从供应商到购买者的转移。权利管理堆栈和/或准许服务可以控制对许可组件104的访问。

自执行令牌116、对应于一个或多个许可组件的使用信息、以及与许可组件有关的附加信息可以由去中心化服务器节点108存储在一个或多个区块链中。使用区块链技术,一个或多个区块链可以跨多个节点被同步。区块链技术允许通过多个协调的可信和/或不可信各方的可信任工作流程进行可验证的进展,其具有授权的检查点和可证实的不可变审计日志。一个或多个区块链的验证是去中心化的。

该系统可以包括通信网络。通信网络130可以包括促进基于计算机的通信的任意网络。通信网络可以促进远程设备102、去去中心化服务器节点108、管理服务120、管理终端124、供应商服务126和/或供应商终端128中的一个或多个之间的通信。备选地或另外地,通信网络130可以促进授权管理堆栈110、许可组件104和/或准许服务106之间的通信。在一些示例中,通信网络130可以包括ip网络。在另一个示例中,通信网络可以包括总线、存储器、进程间通信或任意其他方式的计算机通信。

系统100可以用比图1中所示的附加、不同或更少的组件来实现。例如,在一些实现中,系统可以包括去去中心化服务器节点108,而远程设备102、管理服务120、管理终端124、供应商服务126和/或供应商终端128可以被包括在外部系统中。备选地或附加地,去去中心化服务器节点108和/或权利管理堆栈110可以包括附加的或更少的组件。例如,去中心化的服务器节点108和/或权利管理堆栈110还可以包括准许服务106、管理服务120、模板数据库122和/或供应商服务。

系统100可以以多种方式来实现。尽管图1中的示例图示了与远程设备102分离的权利管理堆栈110,但是其他实现也是可能的。在一些示例中,远程设备102可以包括权利管理堆栈110。例如,多个远程设备可以集体同步和/或验证分布式账本或以其他方式参与分布式账本环境。备选地或另外地,许可组件106和/或准许服务106可以包括权利管理堆栈110。例如,许可组件可以包括软件和/或硬件,软件和/或硬件包括权利管理堆栈110。

图2图示了包括去中心化节点202a-e的系统100的示例。去中心化的节点202a-e可以经由通信网络201彼此通信。去去中心化的服务器节点202a-e可以各自包括参照图1描述的去中心化的服务器节点108的实施例。

系统100的去中心化节点202a-e可以是用于例如存储、维护、更新、处理和查询在诸如区块链的分布式机制中存储的安全数据的软件和硬件的组合。去中心化节点202a-e中的每一个可以基于单个计算机、集中式或分布式计算机组、或者由云计算服务提供商托管的单个虚拟机或虚拟机组。

参与实体204a-d可以经由通信网络参与系统100。参与实体可以包括远程设备102、管理服务120、供应商服务126、管理终端124、管理终端128、去中心化服务器节点108、和/或与在区块链114(图1)中存储的信息交互的任意设备中的一个或多个。在一个实现中,系统100的去中心化服务器节点202a节点中的每一个可以支持一个参与实体。在另一个实现中,每个节点可以支持多个参与实体或参与实体的多个用户。为了变成系统100的去中心化服务器节点,节点处的一个或多个计算机可以被安装有诸如权利管理堆栈110的区块链软件堆栈。在软件堆栈的顶部,应用层可以提供由软件堆栈的较下层支持的各种区块链功能。这些功能可以包括例如加密数据元素,提交用于插入区块链的数据元素,验证要提交给区块链的数据元素,经由共识机制在区块链中创建新数据区块,存储区块链的本地副本,和/或其他功能。

系统100的配置和功能可以由区块链协议230管理。区块链协议230可以定义数据元素如何由参与实体对加密。区块链协议230还可以指定加密的数据元素的格式,使得加密的数据元素可以被系统中的参与实体和节点解密和理解。区块链协议230可以另外指定上面讨论的功能的类型以及应当如何执行这些功能。区块链协议230可以另外指定参与实体和节点的可能角色。例如,区块链节点可以作为能够执行所有区块链功能的全功能节点参与。备选地,区块链节点可仅参与执行区块链功能的子集中的一个。区块功能的每个子集可以包含来自可用区块链功能的一个或多个区块链功能。区块链功能的可能子集可以在区块链协议230中被指定。参与实体可以选择子集中的一个并安装相应的软件堆栈以执行在所选子集中包括的功能。在另一个实现中,区块链协议230可以允许参与实体选择功能的任意组合并相应地配置其节点,而不是通过区块链协议230遵循规定的子集中的一个。

图3图示了用于系统100的区块链114的示例。区块链114可以包括一系列链接的数据区块302,各自由区块id(b0、b1、b2和bn)唯一地标识。数据区块中的每一个可以包括数据元素304。数据区块中的数据元素可以包括参与实体希望存储在区块链114中的任意类型的数据。数据元素例如可以具有描述实体之间的关系的类型,例如双方之间基于货币或服务事务的关系。作为另一个示例,数据元素可以包括用于自动执行嵌入在计算机指令中的协议或合约的规定的计算机指令。存储在区块链114中的并且这种类型的数据元素可以被称为可执行数据元素。例如,存储在区块链114中的数据元素可以包括自执行令牌116等。如下面更详细描述的,可以通过和从区块链114中的其他数据元素调用可执行数据元素中的计算机指令的一个或多个段的执行。

每个数据区块中的数据元素304的真实性可以使用各种密码技术来实现。例如,可以使用基于公钥和私钥密码的数字签名来确保要插入区块链114的数据元素确实来自其公布的提交实体。具体而言,参与系统并且希望将数据元素存储在区块链114中的每个实体可以拥有始终保密的私钥。公钥可以从私钥中得到并且可以公开可用。当实体希望将数据元素存储在区块链114中时,在该数据被提交用于插入区块链114之前,实体可以首先使用私钥来对数据元素进行加密。加密的数据元素可以被具有对实体的公钥访问的任意方解密。加密数据的任意篡改都可以导致在使用公钥进行解密时不可读取的数据。这样,使用私钥的加密表示实体对数据元素的数字签名,并且对加密数据的任意篡改容易被检测到。

区块链114的数据区块302被顺序创建并链接到链中。在一个示例实现中,并且如图3所图示,数据区块与其紧邻的先前数据区块之间的链接可以是散列值而不是数据结构中的传统指针。具体而言,通过包括该紧邻先前区块中的数据区块的数据区块的散列值,本文称为链接散列值,数据区块可以被链接到其紧邻先前数据区块。在图3中,例如,块b0的散列值hash1可以被包括在紧接块b0之后的数据区块b1中作为链接散列值。如此,数据区块b1与数据区块b0链接。例如,用于计算包含在区块中的数据元素的散列值的算法可以基于但不限于sha256散列。

如图3所示,包含数据元素的系统的每个数据区块还可以使用签名代码进行签名。备选地,签名代码可以被称为随机数和/或散列。根据区块链协议230(图2),数据区块的签名代码被确定和/或被用于帮助检测数据区块的篡改。例如,当签名代码和数据区块中的数据元素的组合的散列值包含具有预定义散列模式的散列部分时,根据区块链协议230,数据区块签名代码可被认为是有效的。预定义的散列模式可以由区块链协议指定(例如,散列值开始处的预定数量的前导零)。因此,可以通过解决困难的密码问题来计算区块的签名代码。在上面的示例实现中,签名代码可以被计算,使得计算的签名代码和数据元素的组合的散列值符合签名协议。例如,用于区块b0签名代码1被计算,使得签名代码1和标记为b0的数据区块的数据元素的组合的sha256散列与区块签名协议兼容,例如由零的预定义数目的前导。签名块中的数据的任意篡改均会导致与签名协议不兼容的块的哈希值。

区块链114可以通过一次附加一个数据区块来创建。特别地,来自系统的各个节点的加密(或数字签名)数据元素可以被广播到系统。这些加密的数据元素然后可以被收集到数据区块中以存储到区块链114中。区块链协议230可以指定共识算法或机制。共识算法可以管理新数据元素如何被验证,如何从验证的新数据元素组装新数据区块,以及新区块如何被广播到区块链节点、被检查并接受到区块链114中。

在一个示例共识算法中,可以周期性地(例如,每10分钟或大致需要由区块链节点求解区块签名代码的时间段)收集从节点提交的数据元素。此外,各种节点可参与根据由区块链协议230指定的数据元素验证规则来验证这些数据元素。例如,验证规则可包括被数字签名的数据元素的验证,是否将数据元素组装到区块的确定,数据区块的签名码或散列的计算,和/或是否向系统广播新块以供接受的确定。在一个实现中,广播可接受块的第一个节点将负责将其块插入区块链中。各个节点中区块链的副本将用新块进行更新。这种需要解决签名代码的特定算法,有时称为“工作证明”,只是可能的共识算法的一个示例。诸如“权益证明”的其他共识算法可以由区块链节点用于验证和创建新数据区块。嵌入其数据区块并插入到区块链114中的数据项的插入备选地称为将数据项与区块链114链接。

系统的功能(例如加密和提交数据元素、共识功能(包括数据元素的验证、签名代码的计算、和新数据区块的组装)以及存储区块链114的本地副本)可以由各种节点执行。例如,参与共识算法的节点可能被称为矿工。如前所述,节点在参与系统时可以通过安装相应的软件堆栈来决定节点可以执行的功能的子集。例如,全功能节点可以执行上面讨论的所有功能。然而,有限功能的节点可能仅执行所选择的功能子集。例如,一些节点可能仅参与加密并将数据元素提交到区块链114中。

如上所述,区块链114的数据区块中的数据元素可以是参与实体希望存储在区块链114中的任意类型的数据,包括特殊类型的可执行数据元素(或智能合约)。区块链协议230(图1的230)可以规定用于调用来自其他数据元素的可执行数据元素中的可执行计算机指令的全部或部分的机制和接口。例如,可执行数据元素可以包括可以独立调用的指令段。这些可执行数据元素中的每一个可以由id来标识,并且可执行数据元素内的每个指令段还可以由段id来标识。

可执行数据元素的全部或一部分的执行可以以各种方式并在各种时序场景下被调用。在一个示例实现中,区块链协议230可以提供以下机制:当另一个数据元素被插入到新数据区块中并且新数据区块被节点之一验证和附加到区块链114时,调用来自另一个数据元素的可执行数据元素中的指令的一部分的执行。调用接口可以根据区块链协议230在调用数据元素中提供,用于指定例如可执行数据元素的id、要执行的可执行数据元素内的指令的特定部分的id、以及被传递给可执行指令的参数。

在区块链中和许多其他区块链应用中的信息共享的上下文中,参与实体可能希望针对信息查询区块链114。例如,许可信息的协作供应商之一可以需要搜索与供应商提供的产品相关的许可。对于典型的区块链系统,如果包含特定数据元素的数据区块的数据id和/或区块id是已知的并且被用作查询关键字,则通常直接从区块链114获取特定数据元素。然后可以使用适当的公钥对返回的数据元素进行解密,并且如果数据有效载荷是专有的,则它可以被查询实体进一步解密。备选地或附加地,可以在查询之前执行隐蔽的解密,然后在返回id或数据元素的列表之前进行重新加密。id或数据元素可以从外部解密。

在一些其它实现中,当数据区块以使用传统的数据库查询处理更高效地查询的分离的数据库(诸如关系数据库)的形式被附加到区块链114时,关于区块链114中的数据元素的整个集合的信息可以被提取并被跟踪。

图4图示了系统100的自执行令牌116的示例。在一些示例中,自执行令牌116可以针对特定目的进行裁剪。例如,自执行令牌116可以被裁剪用于实施、实现和监视在一个或多个许可协议下出现的权利和义务。备选地或另外地,自执行令牌116之一可以被配置为管理其他自执行令牌116,包括例如许可协议的创建和实施。

自执行令牌116可以包括一个或多个智能合约。智能合约可包括根据协议组织的逻辑和信息,该协议促进、验证和/或实施各方之间的相关联的协议和/或单方的意图的协商或执行。智能合约可以包括构成相关联的协议的定义和条款的参数。智能合约可以包括可执行以控制、实施和执行一方或多方同意的权利和/或义务的规则、指令和/或逻辑。备选地或另外地,智能合约可包括自执行逻辑,自执行逻辑以一方或多方之间建议或同意的任意方式检测信息、执行计算机实现的动作、或对事件作出响应。

自执行令牌可以包括例如公司智能合约402、产品智能合约404、许可工厂智能合约406、许可智能合约408和用户智能合约410。在其他示例中,智能合约可以由更少或更多数量的智能合约来表示。

公司智能合约402可以包括用于开发、许可和/或提供软件产品的公司的智能合约的示例。公司智能合约402可以包括公司数据字段。公司数据字段可以包括与公司有关的信息和/或从公司产生的产品许可协议的管理中使用的其他信息。例如,公司数据字段可以包括公司名称(例如microsoft)、对与公司相关联的用户标识符的引用、和/或对产品智能合约地址的引用。公司智能合约402的数据字段可以另外包括与公司有关或描述公司的任意其他信息,包括公司创建、销售、发布或以其他方式可用的产品(例如office、word等)的类型。公司逻辑可以包括自执行逻辑,自执行逻辑被配置用于对由公司智能合约402提供或与公司智能合约402相关联的信息、产品和/或许可的管理。例如,公司逻辑可以包括下载、安装或访问由公司提供和/或由公司获得的产品(诸如软件应用)的逻辑。备选地或另外地,公司逻辑可以包括用于创建一个或多个产品智能合约和/或许可工厂智能合约的逻辑。

产品智能合约404可以包括与产品和/或产品线有关的信息和/或逻辑。例如,产品智能合约可以包括许可结构、与控制访问或支付相关联的逻辑、属性/标签、变量值、规则/限制/约束、价格、期满等。替代地或另外地,产品智能合约404可包括描述可在一个或多个远程系统上执行的软件程序和/或应用的产品数据字段。产品数据字段可以包括例如产品的名称和/或产品的网址,和/或与产品相关的标识信息。产品数据字段可以另外地包括对与产品智能合约404相关联的许可工厂的引用。在其他示例中,产品智能合约404可以包括与产品相关的逻辑,包括对应于产品的软件api,访问产品的指令和/或用于安装与产品相关联的软件的可执行指令。备选地或附加地,产品智能合约404可以包括创建一个或多个许可工厂智能合约的产品逻辑。

许可工厂智能合约406可以包括数据字段和涉及创建和/或管理许可智能合约等等的逻辑。许可工厂智能合约406可以包括诸如对产品的引用和/或对一个或多个许可智能合约的引用的参数。另外,许可工厂智能合约406可以包括许可工厂逻辑407。

许可工厂逻辑可能包括自执行逻辑的示例。许可工厂逻辑407可以包括任意指示、管理和/或创建一个或多个许可智能合约408的逻辑。在一些示例中,许可工厂智能合约408可以包括多个预定规则、属性和/或逻辑,其先前被选择并用于生成一个或多个许可合约。因此,许可工厂逻辑的执行可以生成包括预定逻辑、规则和/或属性的一个或多个许可智能合约408。每个许可智能合约408可以对应于一个或多个许可组件(参见图1)。在一些示例中,许可工厂逻辑407可以包括模板逻辑,模板逻辑可以与其他逻辑组合以定义许可智能合约408的一个或多个规则。在一些示例中,模板逻辑可以包括一个或多个占位符。占位符可以包括可以接收参数的模板逻辑的一部分。例如,占位符可以用一个或多个参数替换、组合和/或增加,以生成许可智能合约408。在一些示例中,许可工厂逻辑407可以提供执行以下伪逻辑的逻辑:

只要相关智能合约中的记录和/或令牌的所有权反映出用户和/或公司拥有权利并满足其他指定准则,就授予访问。

除非出现条件x2,否则如果x1时间量已经经过,则限制访问。

如果订阅条件未得到满足,诸如订阅周期费用未被完全支付,则限制访问。

在预定的外部条件被满足时授予访问,例如,如果在预定的y位置请求访问则授予访问。

在满足或不满足预定条件的情况下,准许将许可智能合约诸如从x实体转移到z实体。

向实体x1授予针对诸如两周的预定的时段对产品的访问(诸如独占访问),然后返回对x2的访问。

许可工厂逻辑407可以与许可参数或创建参数组合以创建许可智能合约408和/或在许可合约中包括的自执行。例如,许可工厂逻辑406可以包括“如果x1时间量已经经过,则限制访问,除非x2发生”,许可参数x1可以包括“1年”并且许可参数x2可以包括“合约更新”。附加或者备选地,许可工厂逻辑407可以与使用数据组合以创建许可逻辑。例如,宏“如果在y位置请求访问,则授予访问”可以与由y指示的使用数据组合。

许可工厂智能合约406可以创建一个或多个许可智能合约等等,诸如许可智能合约408。许可智能合约408可以是具有与管理和/或维持许可协议有关的属性和逻辑的智能合约的示例。许可智能合约408可以表示准许或限制对许可组件104的访问的自执行令牌。在一些示例中,可以准许改变许可的所有权,同时可以限制智能许可的逻辑被更新。

许可智能合约408可以包括许可逻辑409。许可逻辑409可以由许可工厂智能合约406创建。例如,当许可工厂智能合约406创建许可智能合约408时,许可工厂智能合约406可以基于许可工厂逻辑407来配置许可逻辑。在一些示例中,许可工厂逻辑407可以将创建参数与模板逻辑组合以生成许可逻辑409

一般而言,许可逻辑409可以基于当前约束来提供许可是有效的、活动的和/或可用的指示等等。备选地或附加地,许可逻辑409可以确定是否授予对许可组件104的访问。在一些示例中,许可逻辑409可以使对许可组件的访问被允许或拒绝。例如,许可逻辑409可以与远程设备102传送消息,该消息使得远程设备102授予或拒绝对许可组件104的访问。备选地或另外地,许可逻辑409可以对与对应于许可智能合约408的应用有关的使用数据执行逻辑操作和/或数字计算。

自执行令牌116可以被包括在区块链114的一个或多个数据区块中。在一些示例中,特定类型的智能合约和/或各种类型的智能合约的组合可以被包括在区块链114中以实现针对诸如管理权利的特定用途裁剪的区块链的实现。例如,区块链114可以提供账本,该账本可以以通用供应商不可知的方式存储和跟踪完整许可生命周期。嵌入在智能合约中的逻辑可以规定预编程的可执行动作和条款的规则,并允许诸如购买、销售、结账、贷款等活动的分布式计算。

图5图示了被配置有自执行令牌116的区块链114的示例实现。区块链114可以被配置为建立与诸如软件产品的一个或多个产品的许可或许可组件104的任何其他示例有关的事务账本。区块链114可以跨任意属性累积身份数据,允许去去中心化验证,并且在用户批准的情况下选择性地将该数据传播到目标实体。另外,区块链114可促进并存储两个或更多个不信任方之间的价值、资产或责任的事务。此外,区块链114可以存储和调用数据记录的明确的最新状态,真实的来源-公开的或混淆的。

数据区块302可以包括与创建、修改和/或与智能合约的其他类型的交互有关的信息。例如,当自执行令牌被创建、更新或以其他方式修改时,一个或多个数据区块可以被添加到区块链114。数据区块可以包括自执行令牌和/或与自执行令牌有关的修改信息。备选地或附加地,数据区块可以包括以特定方式修改的自执行令牌的副本。

举例来说,如图5所示,区块链114可以包括数据区块302。数据区块302可以包括数据元素504a-d。在图5中标记为b0的第一数据区块可以包括区块链114的起源区块。备选地,第一数据区块可以与起源区块链接或被定位在区块链114中的一个或多个其他数据区块之后。第一数据区块的的第一数据元素504a可以包括指示公司智能合约402被创建的事务信息。备选地或附加地,第一数据元素504a可以包括公司智能合约402(或多个公司智能合约)。

区块链114可以包括第二数据区块。如图5所图示的,第二数据区块的数据元素504b可以包括指示产品智能合约404被插入区块链114中的事务。任意数量的第二数据区块可以被包括在区块链114中。

备选地或附加地,图5中被标记为b1的第二数据区块可以包括公司更新信息506。公司更新信息506可以包括对公司智能合约的更新、公司智能合约的有效性、和/或公司智能合约的所有权。例如,如图5所图示的,公司更新信息506可以指示公司智能合约402被更新以包括对第二数据区块中包括的产品智能合约404的引用。因此,通过标识区块链114中的第一数据区块和第二数据区块,可以获得公司智能合约402的当前版本。为了限制用于标识包括与公司有关的信息的所有块所需的搜索时间,第二数据区块可以包括公司智能合约402的更新副本。在其他示例中,公司更新信息可以被包括在分离的数据区块中。

区块链114可以包括存储一个或多个许可智能合约408的一个或多个数据区块。参考图5,被标记为b2的第三数据区块的数据元素504c可以包括指示许可工厂智能合约406被创建并被添加到区块链114的事务。任意数量的第三数据区块可以被包括在与各种许可工厂相对应的区块链114中。备选地或附加地,第三数据区块可以包括产品更新信息508,其指示对产品智能合约404和/或产品智能合约的所有权的更新。例如,产品更新信息可以指示产品智能合约404被更新以包括对在第三数据区块中包括的许可工厂智能合约406的引用。在一些示例中,第三数据区块可以包括被创建的许可工厂智能合约406的相应副本以及被更新的产品智能合约404的副本。在其他示例中,产品更新信息可以被包括在分离的数据区块中。

由于许可工厂智能合约406被用于生成附加的许可智能合约,所以可以将许可智能合约添加到一个或多个数据区块,该一个或多个数据区块被附加到区块链114。例如,参考图5,标记为b3的第四数据区块的数据元素504c可以包括指示许可智能合约408被创建并被添加到区块链114的事务。任意数量的第四数据区块可以被包括在区块链114中,区块链114对应于与许可工厂智能合约406相对应的各种许可智能合约。

备选地或附加地,第四数据区块(或区块链114中的另一数据区块)可包括许可工厂更新信息510。许可工厂更新信息510可包括对许可智能合约408的更新。例如,许可工厂更新信息510可以指示许可工厂智能合约406被更新以包括对在第四数据区块中包括的许可智能合约408的引用。在一些示例中,第四数据区块可以包括许可工厂智能合约406的相应副本,所述许可工厂智能合约406被修改以包括对许可智能合约408的引用。在其他示例中,许可工厂更新信息510可以被包括在分离的数据区块中。

在其他示例中,附加和/或备选数据区块可以被包括在区块链114中。例如,区块链114可以包括具有与许可智能合约有关的事务信息的数据区块。例如,当许可智能合约被更新或与许可智能合约有关的事件发生时,一个或多个数据区块可被添加到区块链114。例如,许可智能合约408可包括与许可智能合约的所有权有关的分配属性。数据区块可以被添加到区块链114,其包括与分配属性中的改变有关的信息。在一些示例中,添加到区块链114的数据区块可以包括许可智能合约408的更新版本。备选地,数据区块可以包括更新的记录。

图6图示了系统100的逻辑的流程图的示例。令牌管理器118可以获得包括许可创建参数的许可创建消息(602)。许可创建消息可以包括消息、api调用或任意其他形式的通信。许可创建消息可以包括一个或多个许可创建参数。许可创建参数可以包括用于创建许可智能合约408的信息。例如,许可创建参数可以包括用于生成许可智能合约408的许可工厂智能合约406的标识符。备选地或附加地,许可创建参数可以包括条款、条件、权利、义务、规则、定义和/或协议中包括的其他信息的数字表示。许可参数可以与许可工厂逻辑407结合以创建一个或多个许可智能合约。

响应于接收到许可创建消息,令牌管理器118可以从区块链114获取许可工厂智能合约406(604)。许可工厂智能合约406可以包括被配置为创建许可智能合约408的许可工厂逻辑407等等。在一些示例中,许可创建参数和/或许可创建消息可以包括许可工厂标识符。令牌管理器118和/或区块链数据库112可以遍历区块链114以基于许可工厂标识符来标识许可工厂智能合约406。在一些示例中,令牌管理器118可以标识区块链114中的、包括许可工厂智能合约406和/或许可工厂逻辑407的数据区块。

令牌管理器118可以基于许可工厂逻辑407的执行来生成许可智能合约408(606)。在一些示例中,令牌管理器118可以将许可创建参数与许可工厂逻辑407进行组合以生成许可智能合约408和/或许可逻辑409。例如,许可工厂逻辑407可以包括模板逻辑,其可以与许可创建参数组合来生成许可智能合约408和/或许可逻辑409。在一个示例中,许可工厂逻辑可以包括以下模板逻辑。“如果许可组件位于y位置的x英里内,则允许访问。”许可创建参数可以包括多个参数,诸如对应于x的“100”和对应于y的“印度班加罗尔”。

令牌管理器118可以将数据区块附加到区块链114,数据区块包括许可智能合约408(608)。数据区块可位于许可工厂智能合约406和/或区块链114的起源数据区块之后的区块链114中。随后的数据区块可在包括许可工厂智能合约406的数据区块之后被添加到区块链114。例如,包括与许可组件104(或硬件和/或软件的任意其他示例)有关的使用信息和/或访问事件的一个或多个数据区块可以被添加到区块链114。备选地或另外地,一个或多个数据区块可以包括与许可智能合约408的所有权的转移有关的信息。

令牌管理器118可以通过区块链114中包括的许可逻辑409的执行来控制对在远程设备102上配置的许可组件104的访问(610)。例如,令牌管理器118可以接收访问消息,访问消息指示对应于在远程设备102上配置的应用的访问事件。访问消息可以包括api调用或发送给令牌管理器118的消息。备选地或另外地,访问消息可以包括用于标识在区块链114中存储的许可智能合约的信息。标识信息可以用于标识包括许可智能合约408的数据区块。

在一些示例中,令牌管理器118可以将访问许可传送给远程设备102。访问许可可以包括用于确定许可权限的数据。访问许可可以管理远程设备102是否可以访问、启动、安装、卸载或执行与许可组件104和/或由许可组件104提供的特征的任意种类的通信。访问许可可以指定标识被准许或拒绝访问许可组件104的用户、机器或与用户或机器相关联的账户的信息。例如,标识信息可以包括ip地址、用户名、账户标识符和/或人、机器或帐户的任意其他标识。另外,访问准许可以指定被准许或限制的许可组件的各种特征。在一个示例中,当许可组件是应用时,访问准许可以指定在用户级特征被启用的同时管理特征被拒绝。准许服务106和/或许可组件104可以基于访问准许来准许或限制访问。

图7图示了系统100的逻辑的流程图的第二示例。令牌管理器118可以检测与许可组件104相对应的访问事件(702)。例如,令牌管理器118可以从远程设备102、准许服务106、许可组件104和/或被配置为监视对许可组件104的访问的任意其他组件接收访问消息。如前所述,访问消息可以包括消息或api调用,该消息或api调用包括诸如访问事件的信息,其指示许可组件或者由许可组件104提供的任意特征被访问、控制、切换、激活、安装、卸载和/或通信。备选地或附加地,访问消息可以指示用于访问控制、切换、激活、安装、卸载和/或与许可组件104通信的请求。

令牌管理器118可以标识区块链114(704)。例如,令牌管理器118可以向区块链数据库112查询区块链114。在一些示例中,区块链数据库112可以包括多个区块链。区块链中的每一个可以对应于个体公司、个体产品线、个体许可工厂、个体许可和/或个体许可组件。在一些示例中,访问消息可以包括标识信息,诸如公司、产品线、许可工厂、许可和/或许可组件104的标识信息。令牌管理器118可以基于标识信息来标识区块链114。例如,令牌管理器118可以将标识信息与在区块链114的起源数据区块中存储的信息进行比较。

令牌管理器118可以从区块链114获取许可智能合约(706)。例如,响应于检测到访问事件和/或标识区块链114,令牌管理器118可与区块链数据库112通信以标识区块链114中包括许可智能合约408的数据区块。在一些示例中,令牌管理器118可以遍历区块链114以标识包括先前创建的相应许可智能合约的多个数据区块。例如,使用一个或多个许可工厂智能合约,然后将其添加到区块链114中的一个或多个数据区块中,许可智能合约可以被先前创建。令牌管理器118可以响应于遍历区块链114来标识包括对应于许可组件104的许可智能合约408的数据区块。

令牌管理器118可以执行许可智能合约的许可逻辑(708)。在一些示例中,令牌管理器118可以将使用信息与许可逻辑组合(参见图8)。

令牌管理器118可以响应于许可逻辑的执行生成访问准许(710)。在一些示例中,许可逻辑的执行可以提供验证结果,该验证结果指示对许可组件104的访问被授权或拒绝。令牌管理器118可以基于验证结果来生成访问准许。备选地或另外地,许可逻辑的执行可以生成访问准许。

令牌管理器118可基于访问准许来限制或准许对许可组件104的访问(712)。例如,令牌管理器118可以使远程设备102限制对许可组件104的访问。在一些示例中,令牌管理器118可以将访问准许传送给远程设备102。准许服务106和/或许可组件104可以基于与令牌管理器118的通信来准许或限制对许可组件104或由许可组件104提供的特征的访问。

图8图示了系统100的逻辑的流程图的第三示例。令牌管理器118可以获得对应于许可组件104的使用信息(802)。例如,远程设备102可以向去中心化服务器节点108发送使用信息。备选地或另外地,令牌管理器118可以从某个其他源接收使用信息。

令牌管理器118可以将数据区块附加到区块链114,该数据区块包括使用信息(804)。例如,区块链114可以维护使用信息的日益增长的记录。区块链114可被访问以获取使用信息。在一些示例中,使用信息可以是累积的并且区块链114可以维护使用信息的账本。令牌管理器118可以访问存储在一个或多个先前数据区块中的先前使用信息,以累计与许可组件104相对应的使用量。在其他示例中,可以访问在区块链114中存储的使用信息以作出关于对许可组件104的访问权限的附加确定。在一个示例中,令牌管理器118可通过累积在区块链中存储的多个数据区块中指示的使用时间来累积许可组件的总使用时间。

令牌管理器118可检测对应于许可组件的触发事件(806)。触发事件可以包括访问事件的检测或接收,如本文所述。备选地或附加地,触发事件可以包括引起对许可组件104的访问权限的评估的任意事件。例如,触发事件可以包括使用信息的接收。备选地或附加地,触发事件可以包括对许可组件104的访问权限的周期性评估。

令牌管理器118可以从区块链114获取与许可组件104相对应的使用信息和许可智能合约408(808)。例如,响应于检测到触发事件,令牌管理器118可以访问区块链114以获取用于验证对许可组件104的访问的信息。许可智能合约408可以包括许可逻辑。

令牌管理器118可以将使用信息应用于许可逻辑(810)。例如,许可逻辑可以被配置为评估使用信息以确定是否准予对许可组件104的访问。在一些示例中,许可逻辑可以包括程序操作,并且可以将使用信息提供给程序操作作为参数。在其他示例中,许可逻辑可以将使用信息与预定阈值进行比较。在一个示例中,使用信息可以包括使用时间,并且预定阈值可以包括最大使用时间。诸如最大使用时间的预定阈值可以在许可逻辑中或许可智能合约中的其他地方被定义。

在一些示例中,令牌管理器可以基于使用信息来确定使用度量。使用度量可以包括总结许可组件的使用量的度量。例如,使用度量可以包括许可组件的累计使用时间、许可组件的一个或多个特征被访问的次数、或量化对许可组件的使用和/或访问的任意其他值。许可逻辑和/或令牌管理器118可以包括用于计算使用度量的逻辑。在一些示例中,令牌管理器118可以包括来自在区块链114中包括的分离数据区块的多条使用信息。例如,使用信息可能先前已经在各种时间被获取并且被添加到区块链114中的分离数据区块中。使用度量可以基于多条使用信息的组合来计算。

令牌管理器118可基于许可逻辑的执行来确定是否授予对许可组件的访问(812)。响应于访问被拒绝(812,否),令牌管理器118可以使得访问被限制(814)。例如,令牌管理器118可以向远程设备102传送消息,这使得远程设备102限制对许可组件104的访问。备选地,令牌管理器118可以确定访问被准予(812,是)。响应于访问被授予,令牌管理器118可以使对许可组件104的访问被授予。例如,令牌管理器118可以与远程设备102通信并且使远程设备允许对许可组件104的访问。

图9图示了系统100的逻辑的消息序列图的第一示例。诸如管理终端124的设备可以与管理服务120交互以接收与公司有关的一个或多个产品(902)。产品可能指硬件、软件或硬件或软件组合的数字标识产品线。例如,产品线可能指的是软件套件。公司可以指代所标识的公司。公司可以开发、分发和/或管理一个或多个产品线。管理服务120可以向管理终端提供用户界面,其允许供应商终端查看与公司相关联的产品线。用户界面可以显示一个或多个公司标识符。管理终端可以针对与公司有关的产品线生成查询请求。该请求可以包括由用户和/或管理终端选择的一个或多个公司标识符。

管理服务120可以与令牌管理器118交互以接收与公司有关的一个或多个产品(904)。例如,管理服务120可以将诸如httpget请求的查询传送给令牌管理器118。在一些示例中,查询将包括一个或多个公司标识符。

令牌管理器118可以与区块链数据库通信以取回一个或多个公司智能合约(906)。例如,区块链数据库112可以存储多个区块链,每个区块链对应于分离的公司。在一些示例中,每个区块链的起源数据区块可以包括唯一标识公司的公司信息。令牌管理器118可以通过例如检查起源数据区块并将从管理服务120或某个其他来源接收到的公司标识符与起源数据区块进行比较来标识与公司相对应的区块链。

区块链数据库112可以返回在区块链数据库112中存储的一个或多个产品智能合约(908)。取决于实现,区块链数据库112可以返回附加的或替代的信息。例如,区块链数据库112可以返回数据区块、区块链114、产品智能合约404、和或指向数据区块、区块链、产品智能合约404的参考信息,诸如指针。

令牌管理器118可以根据在管理服务120和令牌管理器118之间建立的协议来返回产品信息(910)。例如,令牌管理器118可以传送html、csv或者包括产品信息和/或产品智能合约的任意其他类型的信息。

管理服务120可以向管理终端提供现有产品的列表(912)。例如,管理服务120可以准备图形用户界面,图形用户界面在管理终端上显示与公司相关联的产品。在一些示例中,图形用户界面中显示的信息可以包括在区块链114中存储的产品智能合约和/或数据区块的地址。

图10图示了系统100的逻辑的消息序列图的第二示例。管理终端可以将产品创建参数传送给管理服务120(1002)。例如,管理终端可以显示由管理服务120提供的用户界面。用户界面可以接受产品参数。

管理服务120可将产品创建消息传送给令牌管理器118(1004)。产品创建请求可能包含产品参数。

令牌管理器118可以与区块链数据库112通信以基于产品创建消息和/或产品参数(1006)来生成产品智能合约404。备选地或附加地,令牌管理器118可以与区块链数据库112通信以将包括产品智能合约404的数据区块插入到区块链。

区块链数据库112可以将产品智能合约404的地址和/或包括产品智能合约404的数据区块分配给先前存储在数据库(1008)中的公司智能合约402。在一些示例中,区块链数据库112(或者令牌管理器118)可以将附加数据区块附加到区块链,该数据区块包括对公司智能合约402的更新(参见图4-5)。

区块链数据库可以将产品智能合约和/或在产品智能合约中包括的信息返回给令牌管理器118(1010)。令牌管理器可以将产品智能合约和/或在产品智能合约中包括的信息返回到管理服务120(1010)。在一些示例中,从令牌管理器返回到管理服务的信息可以根据由令牌管理器提供的api来格式化、屏蔽和/或补充。

管理服务可以将产品信息和/或区块链地址的列表返回给管理终端124(1012)。管理终端可以在用户界面上显示产品信息和/或区块链地址。

图11图示了系统100的逻辑的消息序列图的第三示例。管理终端可以请求与一个或多个产品智能合约有关的细节(1102)。响应于该请求,管理服务120可以例如经由httpget操作将产品标识符传送给令牌管理器118(1104)。令牌管理器118可以在区块链中查询产品智能合约404(1106)。备选地或附加地,令牌管理器118可以在区块链中查询与产品智能合约404和/或产品相关联的许可工厂(1108)。令牌管理器可以将许可工厂和/或与许可工厂相关的信息传送给管理服务120(1109)。在管理服务120接收到许可工厂智能信息之后,管理服务120可以对许可工厂智能合约和/或与许可工厂智能合约有关的信息进行格式化以显示在销售商设备上。管理服务120可以传送可用产品的细节并且显示针对许可工厂智能合约的信息(1110)。例如,使用许可工厂智能合约,用户可以在管理终端上提供输入以创建和/或定制许可智能合约408。这可以包括用特定条款、条件、逻辑或与特定许可智能合约有关的任意其他参数针对用户或用户组来裁剪许可智能合约408。

图12图示了系统100的逻辑的消息序列图的第四示例。管理终端可以与管理服务进行通信以显示用户界面(1202)。管理服务可访问模板数据库122以取回可被用于创建一个或多个许可工厂智能合约的许可工厂创建参数(1204)。许可工厂创建参数可以包括被用于创建许可智能合约408的规则、定义、义务、权利、逻辑或任意其他信息。管理服务可以与管理终端进行通信以显示许可工厂创建参数。

管理终端(或其用户)可以选择其中用于创建许可工厂智能合约的许可工厂创建参数(1208)。选择的许可工厂创建参数可以包括规则、定义、条款、权利、义务和/或自执行逻辑,规则、定义、条款、权利、义务和/或自执行逻辑可以被包括在使用许可工厂智能合约创建的一个或多个许可智能合约中。

管理服务可以将许可工厂创建消息传送给令牌管理器118(1210)。许可工厂创建消息可以包括许可工厂创建参数。令牌管理器118可以基于许可工厂创建参数来生成许可工厂逻辑407(1212)。备选地或另外地,令牌管理器118可以生成许可工厂智能合约406。令牌管理器118可以与区块链数据库112通信以将许可工厂智能合约406添加到区块链数据库112(1214)。例如,令牌管理器118和/或区块链数据库112可以生成一个或多个数据区块,并将许可工厂智能合约406添加到一个或多个数据区块。在一些示例中,区块链数据库和/或令牌管理器118可以将记录对产品智能合约的修改的附加数据区块附加到区块链。例如,区块链数据库可以将数据区块添加到区块链,该数据区块修改产品智能合约以将许可工厂地址添加到产品智能合约(1216)。

区块链数据库可以将创建的许可工厂和/或与许可工厂有关的信息返回给令牌管理器118(1218)。令牌管理器118可将所创建的许可工厂信息传送给管理服务(1220)。管理服务120可以向管理终端124传送产品和可用许可工厂的详细列表。例如,管理终端124可以显示允许产品和/或一个或多个许可工厂的选择的用户界面。在一个示例中,用户界面可响应于对产品的选择来显示可用的许可工厂。用户界面然后可以允许许可工厂的选择。响应于许可工厂的选择,管理终端124可以显示在选择的许可工厂中包括的模板逻辑的字段。管理终端124可以收集被输入到该字段的一个或多个许可创建参数,并将许可创建参数传送给管理服务120和/或令牌管理器。

图13图示了系统100的逻辑的消息序列图的第五示例。管理终端可以选择显示在管理终端上的产品信息和/或许可工厂信息(1302)。基于例如管理终端所选择的产品和/或许可工厂信息,管理服务120可以请求在区块链数据库112中存储的产品智能合约和/或许可工厂智能合约(1304)。例如,令牌管理器118可以取回一个或多个许可工厂合约。许可工厂合约可能包括生成许可的逻辑。

管理终端可以提供许可创建参数(1306)。管理终端可以将许可创建消息传送给令牌管理器118(1308)。备选地,管理服务120可将许可创建消息传送给令牌管理器118。许可创建消息可包括许可创建参数。令牌管理器118可以基于许可创建消息和/或许可创建参数来创建许可智能合约408。

令牌管理器118可以与区块链数据库112通信以将许可智能合约408添加到区块链数据库112(1310)。例如,许可工厂合约的许可工厂逻辑407可以被执行以创建许可智能合约408。令牌管理器118可以从区块链数据库112接收所创建的许可智能合约的标识符(1312)。在一些示例中,许可参数可以被组合和/或被提供给许可工厂逻辑以生成或修改许可智能合约408(1314)。在其他示例中,许可创建参数可以从其他来源获得,诸如区块链数据库112或任意其他数据库。令牌管理器118和/或区块链数据库112可以生成包括许可智能合约408的数据区块。令牌管理器118和/或区块链数据库112可以将数据区块附加到区块链114。

令牌管理器可以将许可智能合约和/或与许可智能合约有关的信息返回给管理服务120(1316)。管理员可以显示和/或向管理终端124传送显示信息(1318)。显示信息可以包括许可工厂智能合约和/或与许可工厂智能合约有关的信息。

图14图示了系统100的逻辑的消息序列图的第六示例。许可组件104和/或远程设备102可以传送访问事件(1402)。例如,如图14所示,访问事件可以指示在远程设备102上启动应用。准许服务106可以接收访问事件。准许服务106可以将访问消息传送给令牌管理器118(1404)。访问消息可以包括描述访问事件的参数。令牌管理器118可通过从与产品标识符相关联的一个或多个数据区块中查询区块链114来确定许可智能合约408存在。一旦许可智能合约408被标识,就可以执行智能合约中的一个或多个的许可逻辑以确定许可智能合约408是否有效(1406)。在一些示例中,使用信息可以与许可逻辑组合以确定访问应当被授予还是被拒绝。

令牌管理器118可以将访问许可传送给准许服务106(1408)。准许服务106可以基于访问准许来准许或拒绝对许可组件104的访问(1410)。例如,当访问准许指示拒绝准许时,准许服务106现在可以允许应用被启动。在另一个示例中,准许服务106可以响应于指示授予准许的访问准许允许应用来被启动。

在一些示例中,准许服务106可以获取对应于许可组件104的使用信息(1412)。准许服务106可以将使用信息提供给令牌管理器118(1414)。在一些示例中,准许服务106轮询与许可组件104有关的使用信息。备选地或另外地,准许服务106可以接收许可智能合约中的一个或多个。许可智能合约408可以指示应用所需的信息的类型。在一些示例中,在许可智能合约408中包括的逻辑可以经由中间应用在最终用户设备上执行。许可智能合约的逻辑可以请求或使得准许服务106从最终用户设备和/或许可组件104请求使用信息。备选地或另外地,许可智能合约的逻辑可以发送或使得令牌管理器118与区块链114一起发送使用信息(1416)。区块链114可以将使用信息存储在区块链数据库112、数据库或任意其他存储位置中。

图15图示了系统的逻辑的流程图的第四示例。令牌管理器118可以接收对应于许可组件的新授权证书(1502)。授权证书可以指用于证明用于访问许可组件104的授权的证书。授权证书可以包括标识符、密码或任意其他类型的授权信息。授权证书可以标识用户、设备和/或用户和/或设备的账户。例如,授权可以包括ip地址、设备名称、用户名、账户id或任意其他识别信息。备选地或另外地,授权证书可以包括自执行令牌的当前所有者,诸如许可智能合约408。例如,区块链可以包括自执行令牌的所有权的历史变化的账本。

令牌管理器118可以将新数据区块附加到区块链,新数据区块包括授权证书(1504)。响应于接收到新授权证书,令牌管理器可以更新区块链。由于区块链114维护自执行令牌的历史账本,所以新证书被添加到区块链114,同时一个或多个先前证书保留在区块链114中。一个或多个先前证书可以存储在分离数据区块中,分离数据区块存储在区块链中并且在新数据区块之前

令牌管理器118可以接收包括请求的授权证书的访问消息(1506)。请求的授权证书可以包括正被用于访问许可组件的授权证书。令牌管理器响应于访问消息的接收,可以从区块链获得新授权证书(1508)。在一些示例中,访问消息可以包括与许可组件104相对应的自执行令牌的标识符。令牌管理器118可以搜索区块链以标识包括授权证书的最近添加的数据区块。

令牌管理器118可以基于对新授权证书和所请求的授权证书的评估来控制对许可组件的访问(1508)。例如,令牌管理器118可以将请求的授权证书与新授权证书进行比较。令牌管理器118可以基于比较来授予或限制访问。

在流程图中图示的逻辑可以包括比所图示的附加的、不同的、或者更少的操作。所图示的操作可以按照与所图示不同的顺序来执行。

图16图示了包括存储器1604和处理器1602的系统100的示例。处理器1602可以与存储器1604进行通信。在一个示例中,处理器1602还可以与诸如网络接口(未示出)的附加元件通信。处理器1602的示例可以包括通用处理器、中央处理单元、微控制器、服务器、专用集成电路(asic)、数字信号处理器、现场可编程门阵列(fpga)和/或数字电路、模拟电路或其一些组合。

处理器1602可以是可操作来执行逻辑的一个或多个设备。该逻辑可以包括存储在存储器1604中或存储在其他存储器中的计算机可执行指令或计算机代码,所述计算机可执行指令或计算机代码在由处理器1602执行时使处理器1602执行或导致执行由以下各项的逻辑实现的特征:权利管理堆栈110、准许服务104、管理服务120、模板数据库120、供应商服务126、令牌管理器118、区块链数据库112、区块链114、自执行令牌116和/或系统100。计算机代码可以包括可由处理器1602执行的指令。

存储器1604可以是用于存储和取回数据的任意设备或其任意组合。存储器1604可以包括诸如随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)或闪存的非易失性和/或易失性存储器。备选地或附加地,存储器1604可以包括光学的、磁性的(硬盘驱动器)或任意其他形式的数据存储设备。

系统100可以以许多不同的方式来实现。例如,系统的每个组件可以包括电路或电路系统。每个电路或电路系统可以是硬件或硬件和软件的组合。该电路可以包括权利管理堆栈110、准许服务104、管理服务120、模板数据库120、供应商服务126、令牌管理器118、区块链数据库112、区块链114、自执行令牌116和/或系统100、和/或本文描述的系统100的其他组件和子组件。例如,每个电路或电路系统可以包括专用集成电路(asic)、现场可编程门阵列(fpga)、数字逻辑电路、模拟电路、分立电路的组合、门或任意其他类型的硬件或其组合。备选地或附加地,例如,每个电路可以包括存储器硬件,诸如存储器1604的一部分,其包括可由处理器1602或其他处理器执行以实现电路的特征中的一个或多个的指令。例如,存储器1604。在一些示例中,存储器1604可以包括以下项中的至少一项:权利管理堆栈110、准许服务104、管理服务120、模板数据库120、供应商服务126、令牌管理器118、区块链数据库112、区块链114、自执行令牌116和/或系统100。

当电路中的任意一个包括存储器的部分,该部分包括可用处理器1602执行的指令时,电路可以包括或可以不包括处理器1602。在一些示例中,每个电路可以仅仅是存储器1604或其他物理存储器的一部分,该部分包括可用处理器1604或其他处理器执行来实现对应电路而不包括任意其他硬件的电路的特征的指令。因为每个电路包括至少一些硬件,即使所包括的硬件包括软件,但每个电路可以互换地称为硬件电路。

示出了一些存储在计算机可读存储介质中的特征(例如,作为逻辑被实现为计算机可执行指令或者作为存储器中的数据结构)。系统100及其逻辑和数据结构的全部或一部分可以存储在一个或多个类型的计算机可读存储介质上、跨一个或多个类型的计算机可读存储介质分布,或者从一个或多个类型的计算机可读存储介质读取。计算机可读存储介质的示例可以包括硬盘、软盘、cd-rom、闪存驱动器、高速缓存、易失性存储器、非易失性存储器、ram、闪存或任意其他类型的计算机可读存储介质或存储装置。计算机可读存储介质可以包括任意类型的非暂态计算机可读介质,诸如cd-rom、易失性存储器、非易失性存储器、rom、ram或任意其他合适的存储设备。

系统100的处理能力可以分布在多个实体之间,诸如多个处理器和存储器之间,可选地包括多个分布式处理系统。参数、数据库和其他数据结构可以分开存储和管理,可以并入单个存储器或数据库中,可以以许多不同的方式逻辑地和物理地被组织,并且可以用不同类型的数据结构实现,诸如链接列表、散列表或隐式存储机制。诸如程序或电路的逻辑可以在多个程序之间组合或分离,跨多个存储器和处理器分布,并且可以在诸如共享库(例如动态链接库(dll))的库中实现。

无论所描述的具体实现如何,所有讨论本质上是示意性的而不是限制性的。例如,尽管实现的所选择的方面、特征或组件被描绘为存储在存储器中,但系统100或系统的全部或一部分可以存储在其他计算机可读存储介质上、跨其他计算机可读存储介质分布、或从其他计算机可读存储介质读取,例如,诸如硬盘、闪存驱动器、软盘和cd-rom的辅助存储装置。而且,各种模块、电路和屏幕显示功能只是这种功能的一个示例,并且涵盖类似功能的任意其他配置都是可能的。

可以在计算机可读存储介质上提供用于实现上面讨论的过程、方法和/或技术的相应逻辑、软件或指令。可以响应于存储在计算机可读介质中或计算机可读介质上的一个或多个逻辑或指令集合来执行图中所图示或本文描述的功能、动作或任务。功能、动作或任务独立于特定类型的指令集、存储介质、处理器或处理策略,并且可以通过独立或组合操作的软件、硬件、集成电路、固件、微代码等执行。同样,处理策略可以包括多处理、多任务处理、并行处理等。在一个示例中,指令被存储在可移动媒体设备上以供本地或远程系统读取。在其他示例中,逻辑或指令被存储在远程位置以通过计算机网络或通过电话线转移。在其他示例中,逻辑或指令被存储在给定的计算机、中央处理单元(“cpu”)、图形处理单元(“gpu”)或系统内。

此外,尽管以上描述了具体组件,但是本文描述的方法、系统和制品可包括附加的、更少的或不同的组件。例如,处理器可以实现为微处理器、微控制器、专用集成电路(asic)、分立逻辑或其他类型的电路或逻辑的组合。类似地,存储器可以是dram、sram、闪存或任意其他类型的存储器。标志、数据、数据库、表格、实体和其他数据结构可以被分离地存储和管理,可以被并入单个存储器或数据库中,可以被分布,或者可以以许多不同方式在逻辑和物理上组织。这些组件可以独立操作或者是执行相同程序或不同程序的相同装置的一部分。这些组件可以驻留在分离的硬件上,诸如分离的可拆卸电路板上,或共享共同的硬件,诸如用于实现来自存储器的指令的相同存储器和处理器。程序可以是单个程序的一部分、分离的程序或跨多个存储器和处理器分布。

可以说第二动作是“响应于”第一动作而不管第二动作是直接地还是间接地从第一动作产生。第二动作可以在比第一动作晚得多的时间发生并且仍然响应于第一动作。类似地,即使在第一动作和第二动作之间发生介入动作,并且即使一个或多个介入动作直接引起第二动作被执行,也可以说第二动作响应于第一动作。例如,如果第一动作设置标志,并且第三动作随后每当设置标志时启动第二动作,则第二动作可以响应于第一动作。

为了澄清公众的使用并由此向公众提供通知,短语“<a>,<b>,...和<n>中的至少一个”或“<a>,<b>,...,<n>或其组合中的至少一个”或“<a>,<b>,...和/或<n>”由申请人以最宽泛的含义定义,取代上文或下文中任意其他暗示的定义,除非本申请明确声明相反地表示选自包括a,b,...和n的组中的一种或多种元素。换句话说,所述短语是指元素a,b,...或n中的一种或多种的任意组合,包括单独任意一个元件或一个元件与其他元件中的一个或多个的组合,其也可以组合地包括未列出的附加元件。

尽管已经描述了各种实施例,但是对于本领域的普通技术人员来说显而易见的是,更多的实施例和实现是可能的。因此,本文描述的实施例是示例,而不是唯一可能的实施例和实现。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1