首页> 中国专利> 用于区块链上的智能合约执行的、系统级别的基于函数的访问控制

用于区块链上的智能合约执行的、系统级别的基于函数的访问控制

摘要

示出了用于区块链上的智能合约执行的、系统级别的基于函数的访问控制的技术。访问控制规则通过利用执行智能合约的内核中的函数边界检测工具在系统级别控制函数调用。检测工具生成调用栈,调用栈表示内核中用于执行智能合约的一系列函数调用。将访问控制规则应用于函数调用栈,以允许或禁止特定的函数或函数调用链。访问控制规则还可以定义函数调用链中所允许或禁止的参数数据。如果函数调用链或参数不满足访问控制规则中定义的要求,则可以阻止函数调用执行或完成执行。访问控制规则可以基于复杂的函数调用链来生成精密的访问控制策略。

著录项

说明书

背景技术

区块链通常提供去中心化的分布式账本,以安全且不变地记录交易和其他数据。当前,有若干种维护区块链中安全性的方法。

区块链安全性的一个方面通过工作量证明获得,其通常是具有动态级别难度的密码难题。工作量证明一般确保了单方用自己的条目重写区块链在计算上是不可行的。对于公共区块链,这还允许选择可以将新交易区块附加到区块链的获胜节点。

区块链安全性的另一方面是使用共识协议,其充当看门人来授权“矿工”写入区块链。这些协议通常有两种类型:1)具有非常低的冲突概率的密码计算,以确保在在时间段内只有一个写入者获胜;和2)非加密协议,例如消逝时间证明(PoET)、异步拜占庭容错(aBFT)、实用拜占庭容错(pBFT)或散列图增强并行共识协议。

区块链安全性的又一方面是所有区块链参与者(例如,用户、合约、签署人/验证人/矿工)对私钥的使用。这些实体中的每一个都在软件或硬件框架(诸如METAMASK、TREZOR或LEDGER NANO系列之类的数字钱包系统)中努力地保护其私钥。

然而,以上任何一种安全方法都不能有效地充当区块链平台本身的操作或部署在区块链上的智能合约的安全看门人。如果区块链使用门道进行编码(通过设计无意中或由于错误),或者如果区块链平台提供的运行智能合约的执行环境受到威胁,则区块链可能容易受到安全漏洞的攻击。结果,一些区块链上的智能合约被黑客入侵且资金被盗。

例如,以太坊区块链支持智能合约的回退函数,该回退函数始终在智能合约的末尾执行。黑客通过将来自智能合约钱包的Deposit()调用插入到由黑客控制的钱包中,利用该回退函数耗尽钱包。

针对这些和其他考虑,提出了本文所作的公开。

发明内容

公开了用于区块链上的智能合约执行的、系统级别的基于函数的访问控制的技术。

所公开的技术的示例涉及用于区块链上的智能合约执行的、系统级别的基于函数的访问控制的方法、系统和介质,在用于区块链上的智能合约执行的内核执行框架中执行以下步骤,其中内核执行框架被配置为执行函数边界检测,这些步骤涉及:检测通过区块链上的智能合约的一个或多个方法进行的函数调用,将函数调用添加到智能合约的函数调用栈;对照基于函数的访问控制规则集来检查函数调用栈,基于函数的访问控制规则集定义了一个或多个允许或禁止的函数调用序列,以及如果函数调用栈包括在基于函数的访问控制规则集下不允许的一个或多个函数调用,则阻止该函数调用的执行或完成。

在某些示例中,函数调用栈包括在智能合约执行期间调用的每个函数,基于函数的访问控制规则集包括至少一个定义函数调用序列的访问控制规则,以及对照基于函数的访问控制规则集来检查函数调用栈的步骤包括:对照在定义函数调用序列的访问控制规则中定义的函数调用序列,检查函数调用栈。

在某些其他示例中,基于函数的访问控制规则集包括至少一个基于数据的访问控制规则,并且检测通过区块链上的智能合约的一个或多个方法进行的函数调用的步骤包括:检测包括在函数调用栈中的至少一个值。对照基于函数的访问控制规则集来检查函数调用栈的步骤涉及:对照基于数据的访问控制规则来检查包括在函数调用栈中的至少一个值。如果在基于函数的访问控制规则集下不允许函数调用序列,则阻止函数调用的步骤包括:如果在基于数据的访问控制规则集下不允许包括在函数调用序列中的至少一个值,则阻止该函数调用。

在特定示例中,基于函数的访问控制规则集存储在区块链上,并且该方法包括通过将基于函数的访问控制规则区块添加到区块链来修改基于函数的访问控制规则集。

在其他示例中,内核执行框架是Linux操作系统框架,并且函数边界检测包括扩展的伯克利包过滤。在某些示例中,基于函数的访问控制规则集包括以下至少一项:允许的函数调用序列的白名单和禁止的函数调用序列的黑名单。

在又一示例中,在执行用于区块链上的智能合约执行的框架的虚拟机内执行以下步骤:检测通过区块链上的智能合约的一个或多个方法进行的函数调用,将函数调用添加到智能合约的函数调用栈,对照基于函数的访问控制规则集来检查函数调用栈,以及如果在基于函数的访问控制规则集下不允许函数调用,则阻止该函数调用。

应当理解,上述主题还可以被实现为计算机控制的设备、计算机过程、计算系统,或者被实现为诸如计算机可读介质之类的制品。通过阅读以下详细说明并查看相关附图,这些和各种其他特征将变得显而易见。提供本发明内容以用简化形式介绍对下面在具体实施方式中进一步描述的构思的选择。

发明内容不旨在标识所要求保护主题的关键特征或基本特征,也不旨在用于限制所要求保护主题的范围。此外,所要求保护的主题不限于解决在本公开的任何部分中指出的任何或所有缺点的实施方式。

附图说明

参照附图描述详细说明。在附图中,附图标记最左的数字标识首次出现该附图标记的附图。不同附图中的相同附图标记指示相似或相同的项目。

图1是示出用于使用区块链存储交易数据并使用区块链存储访问控制规则的系统的说明性示例的架构图;

图2A是示出保护交易数据的交易数据区块链的说明性示例的数据架构图;

图2B是示出保护交易数据的交易数据区块的说明性示例的数据架构图,该交易数据区块包括由区块链平台执行的方法;

图3A是示出根据所公开的技术的具有虚拟机的区块链平台的说明性示例的功能框图,该虚拟机执行来自具有函数边界访问控制的内核中的交易数据区块的方法;

图3B是示出根据所公开的技术的基于函数或数据的访问控制规则的说明性示例的数据架构图;

图4A是示出根据所公开的技术的用于定义基于函数或数据的访问控制规则集的过程的说明性示例的控制流程图;

图4B是示出根据所公开的技术的用于将基于函数或数据的访问控制规则应用于具有函数边界访问控制的内核中的调用栈中的函数调用的过程的说明性示例的控制流程图;

图4C是示出针对添加到分发给不可信节点的交易数据区块链或访问控制策略区块链的区块的验证过程的示例的控制流程图;

图5是示出用户使用应用编程接口来调用交易数据区块链上的数据区块中的方法的说明性示例的数据架构图;

图6A是示出基于图1的交易数据区块链的交易数据区块或访问控制策略区块链的访问控制规则区块的区块链账本的简化示例的数据架构图;

图6B是示出智能合约代码、交易和消息的说明性示例的数据架构图,智能合约代码、交易和消息被捆绑为区块,使得它们的完整性在密码学上是安全的并且使得它们可以被附加到区块链账本;

图7是示出用于能够实现本文提出的手段和技术的各方面的计算系统的示意性的计算机硬件和软件架构的计算机架构图;

图8是示出能够实现本文提出的手段和技术的各方面的分布式计算环境的图;以及

图9是示出用于能够实现本文提出的手段和技术的各方面的计算设备的计算设备架构的计算机架构图。

具体实施方式

在区块链安全的背景下,有利的是,利用根据所公开的技术的基于函数的访问控制(FBAC)来提高区块链平台上的区块链操作的安全性。

根据所公开的技术的利用FBAC的安全框架可以在区块链平台上执行区块链方法的内核中的函数调用级别上操作,以除了通常在区块链中利用的密码和共识安全性方法之外,在系统级别上显著提高区块链的安全性。

所公开的技术的系统级别安全性的某些方面的一个技术优点在于,可以在不编辑或重新部署智能合约或区块的情况下,保护已经部署到区块链的并因此不可变的智能合约或区块。因为所公开的技术在系统级别上提供了安全性,所以它可以高度扩展且易于配置。

所公开的技术的某些方面的另一技术优点在于,基于函数和数据的访问控制规则可以针对检查调用栈中的一系列函数调用,而不仅限于检查单个函数调用。

访问控制规则本身也可以存储在区块链上,并由区块链利用的多签名密码和共识安全方法保护。将访问控制规则存储在区块链上允许规则被审核并追踪到其来源。对访问控制规则的更新也可以存储在区块链上,并且所公开的技术可以被配置为获得用于FBAC安全框架的最新规则。

因为访问控制规则一般是静态数据而不是可执行代码,所以规则本身对利用具有很高的抵抗力。相比之下,智能合约或区块中的可执行代码可能容易受到执行智能合约代码的底层虚拟机(VM)中的利用的攻击。

在一些实施方式中,访问控制规则可以通过执行智能合约的区块链平台中的VM的附录来实现。在其他实施方式中,访问控制规则被从区块链读入独立的特权系统级别模块。

一般地,所公开的技术的FBAC框架可以防止特定智能合约、特定智能合约函数链和区块链基础设施函数的调用。FBAC框架使在各个级别(例如函数、合约、通道或共识算法)定义角色和绑定成为可能。FBAC框架在一些情况下可以用于在区块链平台中使用的沙盒算法,这可以帮助例如在具有不同共识算法的节点之间确保配置的一致性。

一般而言,所公开的技术的FBAC框架利用区块链平台的内核中的函数边界检测工具。函数边界检测工具可以追踪函数何时进入内核以及函数何时退出函数。函数边界检测工具的一个示例是LINUX操作系统中的伯克利包过滤器(eBPF)框架。

在一些实施方式中,所公开的技术的FBAC框架可以利用系统级别支持来运行。例如,在一个实施例中,FBAC框架可以在运行FBAC的其自己的特权VM中运行,并且可以对运行智能合约的VM行使控制。然而,在另一实施例中,相同的VM可以运行智能合约和FBAC二者。VM也可以使用底层操作系统的函数边界检测工具支持,例如eBPF。

多个FBAC策略可以与多个实体相关联或协作。例如,可以关联区块链上用于金融交易实体的钱包地址。对于企业交易,可以将该协作指定为每个FBAC策略内的字段。在将FBAC策略存储在区块链中之后,区块链中的每个对等方、验证方或交易发起方都可以具有策略的统一视图。

如上所述,访问控制规则可以基于函数和数据二者。可以监测作为函数参数传递的数据,以基于参数控制访问。基于数据的访问控制规则可以存储在区块链中。基于数据的访问控制规则例如可以用于保护区块链的某些数据片段免受一般访问。例如,在许可的区块链中,可以利用标记或密钥来确定对数据的访问。

如上所述,黑客能够通过插入Deposit()调用来利用智能合约中的回退函数,Deposit()使缺乏保护的钱包中的资金定向到由黑客控制的钱包中。在一个示例中,所公开的技术可用于防止这种使用访问控制规则的利用,以在一系列函数调用的末尾禁止Deposit()调用。

所公开的技术的可能用途的另一示例是许可的区块链。当前的区块链平台通过隔离跨通道的消息传递和对数据的访问,实现了针对不同参与者的不同许可视图。然而,一些智能合约可能最终在数百个实体之间共享。所公开的技术可以应用于定义访问控制规则,该访问控制规则确定不同用户(例如,用户、用户管理员、组管理员、集群管理员、逻辑分组管理员)的函数。

所公开的技术的可能用途的又一示例是在区块链平台中提供服务质量(QoS)。可以利用所公开的技术应用访问控制规则,以在高度粒度级别上实现差别资源分配,来为特定实体或功能传递所需的QoS。

所公开的技术的可能用途的又一示例是资源或速率限制执行。可以通过框架识别调用的函数链,并不断更新其资源利用率,并以此为基础或基于每个时间段的固定计数,应用访问控制规则来执行资源或速率限制。

所公开的技术的可能用途的另一示例是实现断路器。例如,当智能合约由于底层错误或类似问题或由于外部故障(例如网络I/O问题或类似问题)发生故障时,将出现错误。如果特定函数链被反复调用,并且已知该函数链不断发生故障,则断路器可能很有用。在该背景下,通过阻止函数链的进一步调用直到已经经过预定/预设的时间,才应用访问控制规则以实现断路器功能。这对于防止区块链平台不堪重负特别有用。在更大的分布式系统背景下(大规模地),这可能有助于实现最佳的区块链请求路由。

所公开的技术的可能用途的一个其他示例是防止智能合约欺骗。通过定义确定允许的函数链的FBAC策略,可以通过应用访问控制规则使任何其他函数链失效来终止其执行。在通过定义需要底层区块链固有的内部函数调用的访问控制规则而伪造了关键路径函数或通用智能合约的情况下,可以以这样的方式在系统级别上防止关键路径函数或通用智能合约的欺骗:使伪造的智能合约或关键路径函数无法执行不应执行的操作。当与可以从定义在区块链上的访问控制规则获得的受信任的根耦接时,可以使函数调用链更加可靠。

一般而言,所公开的技术通过利用内核中的函数边界检测工具来利用一个或多个访问控制规则或策略集以在系统级别上控制函数调用。函数边界检测工具可以生成表示内核中的一系列函数调用的函数调用栈。可以将访问控制规则应用于函数调用栈,以允许或禁止特定的函数调用链。如果函数调用链或参数不满足在访问控制规则中定义的要求,则可以阻止或终止函数调用。可以定义访问控制规则,以基于复杂的函数调用链和数据参数来生成精密的访问控制策略。

以下详细说明部分描述了用于利用访问控制规则在区块链平台中的系统级别进行基于函数的访问控制的技术。可以将访问控制规则保持在区块链上,以用于安全性、可访问性和不变性。

请注意,在一些情况下,不同的实体可以提供访问控制规则。例如,可以利用证书授权机构或其他可信的源来拥有和控制访问控制规则。在一些示例中,可以将对访问控制规则的修改或添加存储在需要可信实体的签名的区块链上的附加访问控制规则区块中。

得到的访问控制规则区块可以提供针对区块链平台或VM定义的访问控制规则或策略的记录,并且提供访问控制规则的可追踪且可审核的历史。

所公开的基于函数的访问控制技术的技术优点包括在系统级别安全地控制访问。所公开的基于函数的访问控制技术的另一技术优点是其控制复杂的函数调用链的能力。所公开的基于函数的访问控制的又一技术优点是区块链的分布式属性,这防止了未授权的实体在任何单个点处修改或破坏访问控制规则。本文提到的技术效果之外的其他技术效果也可以根据本文公开的技术的实施方式来实现。

如将在本文中更详细地描述的,可以理解,本文描述的手段和技术的实施方式可以包括使用固态电路、数字逻辑电路、计算机组件和/或在一个或多个输入设备上执行的软件。本文描述的信号可以包括用于传达数据文件的经改变的状态或与数据文件有关的其他信息的模拟和/或数字信号。

虽然本文描述的主题是在与计算机系统上的操作系统和应用程序的执行相结合执行的程序模块的一般背景下呈现的,但是本领域的技术人员将认识到,其他实施方式可以结合其他类型的程序模块来执行。一般地,程序模块包括例程、程序、组件、数据结构以及执行特定任务或实现特定抽象数据类型的其他类型的结构。此外,本领域的技术人员将理解,本文描述的主题可以与其他计算机系统配置一起实践,包括多处理器系统、大型计算机、基于微处理器的或可编程的消费电子产品、小型计算机、手持式设备等。

在以下详细描述中,参考构成其一部分并且通过图示的方式示出特定的配置或示例的附图。现在参考附图,其中贯穿若干附图,相同的附图标记表示相同的元素,将描述用于在系统级别基于函数的访问控制的计算系统、计算机可读存储介质以及计算机实现的方法的各方面。如将在下面参考附图更详细地描述的,存在可以体现本文描述的功能和技术的许多应用和服务。

图1是示出系统架构100的说明性示例的架构图,其中,区块链平台130维护可以经由广域网102访问的交易数据区块链140。在该示例中,区块链平台130还维护访问控制策略区块链150,访问控制策略区块链150存储可以在所公开的基于函数的访问控制技术中利用的访问控制规则。在执行交易数据区块链140的交易数据区块142中的函数期间,在系统级别应用访问控制规则,以执行基于函数的访问控制。

在图1的实施例中,区块链140和150可以各自是支持脚本的公开可用的区块链,例如支持SOLIDITY脚本语言的以太坊区块链或支持被称为SCRIPT的脚本语言的BITCOIN。区块链140和150也可以各自是私有区块链,或者可以利用公共区块链和私有区块链的组合。交易数据区块142和访问控制规则区块152也可以驻留在相同的区块链上。

在该示例中,证书授权机构是控制访问控制策略区块链150的信任实体。证书授权机构可以通过将访问控制规则区块152添加到区块链150中来添加或修改访问控制策略,该区块链150添加、删除或修改访问控制规则。访问控制规则区块152要求证书授权机构的密码签名有效。

诸如客户端设备、一个或多个服务器或远程计算资源之类的证书授权机构110由创建访问控制规则的可信实体控制。在一个示例中,证书授权机构110通过创建创世区块152A来发起访问控制策略区块链150。在其他示例中,可以将交易数据区块142和访问控制规则区块152添加到现有区块链。

可以利用交易数据区块链在交易数据区块142中安全地存储不同类型的数据,诸如与交易有关的数据或适于存储在区块链账本上的其他数据。交易数据区块142可以包括由区块链平台130执行的方法或函数调用。

对于访问控制策略区块链150,访问控制规则区块152可以包括访问控制规则,该访问控制规则针对域、区块链平台服务、企业或希望将所公开的基于函数的访问控制应用于智能合约中的方法执行的其他实体。

在一些实施例中,证书授权机构110可以由另一计算节点(例如,对等网络上的计算机或其他计算设备)代替。

在图1的示例中,交易数据区块由拥有交易的实体生成,并且在交易数据区块链140上保护该区块。存储在交易数据区块142中的交易数据可以与实体(例如客户端/服务器120A、120B或120C)执行的交易有关。在该示例中,客户端/服务器120可以与证书授权机构110以及用于支持和维护区块链140和150的区块链平台130的服务器的网络进行通信。例如,来自瑞士以太坊基金会的以太坊区块链平台提供了去中心化分布式的计算平台和操作系统,其提供脚本功能。

在一个示例中,证书授权机构110拥有并控制访问控制策略区块链150中的访问控制规则区块152。每个访问控制规则区块152包括与区块链平台130中允许或禁止的函数调用有关的一个或多个访问控制规则。在定义访问控制规则时,证书授权机构110创建包含访问控制规则的访问控制规则区块152,并将其链接到访问控制策略区块链150。在添加、修改或删除访问控制规则时,创建并入了这些改变的新的访问控制规则区块152,并且新的区块152由证书授权机构110签名并链接到访问控制策略区块链150中的先前访问控制规则区块。

尽管证书授权机构110维持对访问控制规则的控制,但是可以使访问控制策略区块链150对于诸如客户端/服务器120的其他实体是可访问的,使得这些实体可以识别、追踪或审计存储在区块链150中的区块中的有关访问控制规则。此外,区块链150中的访问控制规则可以被区块链平台130访问,以命令应用访问控制规则来执行所公开的基于函数的访问控制。

在一些示例中,通过使用可以访问区块链信息的应用,访问控制策略区块链150对于其他实体可以是可见的。通过提供对访问控制策略区块链150的访问,在可信实体(例如,证书授权机构110的用户)的控制下,该方法允许用户容易地访问维护在访问控制策略区块链150上的控制规则。

在另一示例中,访问控制策略区块链150的各方面可以被限制为仅对被授权访问区块链150的实体可见,例如证书授权机构110和区块链平台130。

图2A是示出基于图1的交易数据区块链账本140的区块142A-142E的交易数据区块链账本200的简化示例的数据架构图。图2A的交易数据区块链账本200示例被简化以示出区块210A-210E的区块头、元数据和签名,以便演示使用区块链存储交易数据。概括而言,区块链账本可以是全球共享的交易数据库。在一些示例中,签名可以涉及存储在区块142A-142E的数据中的全部或部分数据,并且还可以涉及与资源创建中所涉及的资源发起实体相对应的公钥地址。

区块链账本200可以被布置为默克尔树数据结构、被布置为链表或者被布置为允许密码完整性的任何类似数据结构。区块链账本200允许验证交易数据以及访问控制策略区块链150上的类似的访问控制规则未被破坏或篡改,因为任何篡改企图都会改变(或具有)区块的消息认证码,并且指向该区块的其他区块将不再对应。在图2A的一个实施例中,每个区块可以指向另一区块。每个区块可以包括指向另一区块的指针,以及另一区块的散列(或消息认证码函数)。

区块链账本中的每个区块可以可选地包含证明数据字段。证明数据字段可以指示奖励到期。证明可以是工作量证明、权益证明、研究证明或任何其他指示奖励到期的数据字段。例如,工作量证明可以指示执行了计算工作。作为另一示例,权益证明可以指示一定数量的加密货币已被持有一定时间。例如,如果已持有10个单位的加密货币达10天,则权益证明可以指示已经累积10*10=100个时间单位。研究证明可以指示已经进行了研究。在一个示例中,研究证明可以指示已经执行了一定数量的计算工作—诸如,在针对有效药物化合物的计算搜索期间,探索分子是否以某种方式相互作用。

在图2A的示例中,交易数据区块链200的区块210示出了使用区块链上的新交易数据区块保护交易数据的安全。在一个示例中,诸如图1的客户机/服务器120的用户之类的交易实体在创建交易数据区块210A时为该交易提供交易标识符和交易数据。交易实体对交易数据区块210A进行签名,并且区块链系统基于证明函数来验证交易数据区块,在该区块链系统内创建区块链200。

请注意,图1所示的访问控制策略区块链150可以采用具有包括访问控制规则的访问控制规则区块152的类似形式。可以在相同或不同的区块链上将用于连续添加、修改或删除的访问控制规则区块152链接在一起,使得可以使用区块链不变且可追踪地存储访问控制规则的历史记录。

请注意,可以利用与所公开的技术保持一致的多种方法。在与访问控制规则有关的一些示例中,证书授权机构110的用户是必需的实体,或者是唯一被允许验证或确认访问控制规则区块152的实体。在其他示例中,其他实体(诸如定义访问控制规则的系统管理员)是验证或确认访问控制规则区块152所必需的实体。

在图2A的示例中,交易数据区块链200的交易数据区块210包括交易标识符和交易数据以及拥有交易的实体的签名。为了针对另一交易添加另一交易数据区块,交易实体创建交易数据区块210B,其识别交易并包括交易数据。交易实体对交易数据区块210B进行签名,并将区块210B提交给区块链200,以由区块链平台进行验证。

为了针对附加交易添加更多的交易数据区块,相同或另一交易实体创建交易数据区块210C以保护交易TRANS_ID_3的交易数据以及该交易的数据。类似地,交易数据区块242D由另一交易实体创建以存储交易TRANS_ID_4的交易数据,并且交易数据区块242E被创建以存储TRANS_ID_5的交易数据。

交易数据区块142可以是智能合约,智能合约包括由区块链平台130执行的方法或函数。图2B是示出交易数据区块142的说明性示例的数据架构图,交易数据区块142具有由区块链平台或框架执行的函数。例如,函数Function_1、Function_2、Function_3和Function_4可以由在区块链平台130中运行的VM执行。访问控制策略区块链(诸如图1中的区块链150)使访问控制规则能够安全地存储,以维护可以用于所公开的技术的基于函数的访问控制的访问控制策略。从区块链150获得访问控制规则,并在系统级别将其应用于VM中的函数调用。

图3A是示出将所公开的技术的基于函数的访问控制应用于在区块链平台330中执行的交易数据区块242中的函数调用的示例的功能框图。在该示例中,区块链平台330包括VM 332A和332B,VM 332A和332B在内核340中执行并且执行来自交易数据区块242的函数调用。

内核340包括函数边界检测工具342(例如eBPF),其检测何时进入或退出函数并且创建调用栈344以表示一系列函数调用346。在该示例中,调用栈344包括用于交易数据区块242的执行中的函数调用的调用栈,该调用栈从Function_1到Function_2、从Function_2到Function_3以及从Function_3到Function_4。

区块链平台330包括函数边界访问控制模块348,在该示例中,函数边界访问控制模块348从区块链350获得访问控制规则,并将规则应用于调用栈344中的函数调用链。当函数边界检测工具342检测到函数边界时,FBAC 348将访问控制规则应用于调用栈344以确定是否应阻止该函数,并且在该示例中,向VM 332B发送信号以允许或拒绝函数的执行或完成。

请注意,FBAC模块346利用系统级别支持来运行。在一些示例中,它可以是运行FBAC功能的其自己的特权VM,并且可以对运行智能合约(例如交易数据区块242)的其他VM(例如VM 332A和332B)行使控制。然而,在其他示例中,相同的VM可以运行智能合约和FBAC功能。在任一示例中,VM将在底层操作系统的内核中使用函数边界检测工具342。

如上所述,FBAC策略的访问控制规则可以像智能合约一样存储在区块链中,并且由区块链框架当前使用的相同的多签名密码签名方法来支持,以确保能够追踪到所部署的访问控制规则的起源。还可以将策略的更新编码到区块链中,使得FBAC模块348仅动态应用最新的策略。通过在区块链本身上维护FBAC策略,可以自动不变地保护它们。由于这些策略是静态的且不是执行的代码,因此它们本身无法被黑客攻击或利用,这与智能合约不同,智能合约与执行智能合约的VM一样容易受到攻击。

在不同的实施方式中,FBAC策略可以通过执行智能合约的VM的附录来实现,或者作为独立特权系统级别模块来实现,其只能由从区块链读取的FBAC规则/策略来编程。在任何一种实施方式,FBAC模块中都没有后门可供恶意行为者利用。

图3B是示出图3A的访问控制策略区块链350中的访问控制规则区块352的说明性示例的数据架构图。在所公开的技术中,访问控制规则可以采取多种形式。

例如,访问控制规则区块352A包含基于函数的规则的白名单,该基于函数的规则的白名单定义了相对于来自图3A的交易数据区块242的函数调用所允许的函数和函数调用链。调用栈344中不符合规则区块352A的白名单函数规则的函数调用或函数调用链将导致FBAC模块348拒绝执行或完成函数调用。

例如,调用栈344中从Function_2到Function_4的调用不匹配任何白名单规则,并且将导致FBAC模块348向正在执行函数调用链的VM342B生成拒绝信号。然而,Function_1到Function_2到Function_3的调用栈确实与白名单规则之一匹配,并且将导致FBAC模块348向VM342B生成允许信号。请注意,区块352A中的规则被构造为允许针对Function_1到Function_2到Function_3到Function_4的允许的函数调用链发生每个临时函数调用。

在基于函数的规则的黑名单中示出了访问控制规则的另一形式,该基于函数的规则的黑名单定义了相对于来自图3A的交易数据区块242的函数调用被禁止的函数和函数调用链。调用栈344中与规则区块352A的黑名单函数规则中的一个匹配的函数调用或函数调用链将导致FBAC模块348拒绝函数调用的执行或完成。

例如,禁止对Function_5的调用(例如对Deposit()的调用),将导致FBAC模块348向VM 342B生成拒绝信号。类似地,超出调用栈344中从Function_2到Function_4的被允许的序列调用与黑名单规则之一匹配,并且将导致FBAC模块348向正在执行函数调用链的VM342B生成拒绝信号。然而,从Function_1到Function_2的调用与黑名单规则中任何一个都不匹配,并且将导致FBAC模块348向VM 342B生成允许信号。

在基于函数和数据的规则的白名单中示出了访问控制规则的又一形式,这些规则定义了相对于来自图3A的交易数据区块242的函数调用被允许的函数调用和参数。调用栈344中不符合规则区块352C的白名单函数规则的函数调用或函数调用链以及参数将导致FBAC模块348拒绝函数调用的执行或完成。

例如,来自Function_1的调用必须具有参数a=X。调用栈344中从具有参数a=X的Function_1到具有参数g=a的Function_2到具有参数n=g的Function_3的函数调用链与(Function_1[a=X],Function_2[g=a],Function_3[n=g])的白名单规则匹配,并将导致FBAC模块348向正在执行函数调用链的VM 342B生成允许信号。然而,具有与白名单规则中任何函数和参数都不匹配的参数的Function_1到Function_2到Function_3的调用栈,将导致FBAC模块348向VM 342B生成拒绝信号。请注意,区块352A中的规则被构造为允许针对Function_1到Function_2到Function_3到Function_4的允许函数调用链发生每个临时函数调用。

请注意,访问规则区块352C中示出的示例白名单规则强制函数调用参数关系,其中每个函数调用中的调用参数与先前函数调用中的参数匹配,例如(Function_1[a=X],Function_2[g=a],Function_3[n=g],Function_4[x=n])。例如,可以使用这样的规则来强制在整个函数调用链中使用一致的交易标识符值,这可以防止恶意行为者尝试将智能合约中正在执行的交易重定向的黑客行为。

访问规则区块352D示出了基于函数和数据的规则的黑名单的示例,该基于函数和数据的规则的黑名单定义了相对于来自图3A的交易数据区块242的函数调用所禁止的函数调用和参数。调用栈344中与规则区块352D的基于函数和数据的规则的黑名单之一匹配的函数调用或函数调用链以及参数将导致FBAC模块348拒绝函数调用的执行或完成。

例如,从Function_1进行的调用的参数a的值不得大于60。从Function_2进行的函数调用的参数值g不得等于0。从Function_3进行的函数调用的参数n的值不得大于40。来自Function_4的函数调用的参数x的值不得等于25。规则区块352D的示例中的规则说明了对智能合约中的函数强制输入参数的限制的访问控制策略。

一般而言,如果黑名单和白名单为空,则允许所有函数调用。如果黑名单为空且白名单包含访问控制规则,则仅允许白名单规则中定义的函数或函数链。如果黑名单包含访问控制规则,但白名单为空,则禁止所有函数。如果黑名单和白名单都包含访问控制规则,则禁止黑名单中定义的函数和函数链,而允许白名单中定义的函数和函数链。如果黑名单和白名单中的访问控制规则冲突,则黑名单规则一般优先。

请注意,基于函数或数据的访问规则可以存储在区块链的侧链中。还请注意,图3B所示的示例访问控制规则是相对简单的,并且将容易理解,所公开的技术使得能够在系统级别实现高度复杂且变化多样的访问控制策略。例如,可以允许或禁止多个不同的函数调用链或多个调用参数值。

此外,由FBAC模块348生成的访问或拒绝信号可以被配置为更复杂或定义更复杂的访问控制策略。例如,代替简单的拒绝信号,FBAC模块348可以被配置为出于速率限制的目的延迟允许信号的生成。类似地,代替简单的允许信号,FBAC模块348可以被配置为出于差分QoS或资源分配的目的来更改生成允许信号的时间。

同样,在一些实现中,状态数据可以由FBAC模块348维护,并且可以使用状态数据来定义访问控制策略。例如,关于函数在时间间隔内已调用的次数的状态数据,以出于断路器函数的目的而生成拒绝信号,或出于速率限制函数的目的而延迟允许信号的生成。

另外,可以定义一些访问控制策略以强制许可。例如,可以使用白名单规则允许某些用户或实体访问交易数据区块中的特定数据,或者通过黑名单规则禁止访问数据。

能够容易理解的是,所公开的技术使得能够在系统级别上定义和实施复杂且精密的访问控制策略。可以实现与所示示例不同或超出所示示例的许多变型。

可以以多种方式定义和确定图3B中所示的访问控制策略。例如,具有管理许可的用户可以定义访问控制规则,并将其保存在FBAC模块348中或作为内核340中的VM的附录。在另一示例中,可信实体(诸如证书授权机构)接收访问权限控制规则并管理规则到用于智能合约的执行平台(例如区块链平台330)中的FBAC模块348或VM的分发。

在又一示例中,具有管理许可的用户可以将访问控制规则存储在访问控制策略区块链350上由用户拥有的规则区块中。或者在不同的示例中,管理用户将访问控制规则提供给可信实体,例如证书授权机构,其将访问控制规则存储在由可信实体拥有的访问控制策略区块链350的规则区块中。

图4A是示出根据所公开的技术的各方面的过程400的说明性示例的控制流程图,由此定义了访问控制策略,并分发访问控制策略以用于基于函数的访问控制。在402处,如上所述或以适于特定实施方式的其他方式定义用于访问控制策略的访问控制规则。在404处,如上所述地分发访问控制规则,使得访问控制规则对于FBAC模块348或根据所公开的技术的执行系统级别的基于函数的访问控制的另一模块是安全且可访问的。

图4B是示出根据所公开的技术的各方面的用于系统级别的基于函数的访问控制的过程410的说明性示例的控制流程图。在412处,在内核执行框架中执行智能合约,例如由区块链平台提供的用于执行智能合约的内核框架,内核执行框架配置有函数边界检测工具,例如eBPF。在414处,函数边界检测工具在系统级别(例如,在执行智能合约中的方法时进行的进入或离开函数调用)检测函数调用。

在416处,为检测到的函数调用创建函数调用栈。函数调用栈可以包括按调用顺序已被调用的一系列函数调用,还可以包括在函数调用中传递的参数。在一些实施方式中,也可以维护其他数据,例如关于函数和资源的状态数据。

在418处,对照已经定义的基于函数或数据的访问控制规则来检查函数调用栈。如上所述,访问控制规则可以包括针对函数调用栈中指示的函数调用或数据的白名单或黑名单。另外,在一些实施方式中,可以定义针对某些目的利用状态数据的访问控制规则,例如速率限制或断路器功能。

在420处,如果访问控制规则指示允许函数调用,则控制分支到422以允许函数的执行。如果访问控制规则指示不允许函数调用,则控制分支到424以拒绝或阻止函数调用的执行或完成。

过程410是用于基于函数的访问控制的简化过程。如上所述,访问控制规则和基于函数的访问控制过程可以被配置为在更精密的级别上控制函数调用,例如针对QoS、动态资源分配或速率限制的目的而延迟或加速函数调用的执行。

图4C是示出验证过程480的示例的控制流程图,验证过程480针对添加到使用不可信区块链节点实现的交易数据区块链账本或访问控制策略区块链账本的区块。在过程480中,当针对图1中的交易数据区块链140创建交易数据区块142或针对图1中的访问控制策略区块链150创建访问控制规则区块152时,在482处向不可信节点的集群广播交易。在484处,节点竞争以计算交易的验证解决方案。在486处,获胜节点广播用于交易数据区块或访问控制规则区块的验证解决方案,并将该数据区块添加到对应数据区块链账本的副本,例如,图1中的交易数据区块链140或访问控制策略区块链150。

在488处,响应于获胜节点的广播,其他节点按照获胜节点建立的交易顺序将交易数据区块或访问控制规则区块添加到其交易数据区块链账本或访问控制策略区块链账本的副本。去中心化的验证协议可以维护交易数据区块链账本或访问控制策略区块链账本的完整性、不变性和安全性。

应当理解的是,在不脱离所公开的技术的情况下,可以利用示例示出的过程和多种其他方法。

取决于区块链平台的脚本能力,交易数据区块链的数据区块中的方法或函数可以包括更广泛的代码执行。例如,与限制对单个用户的访问的交易数据系统相比,通过多个用户提供对交易的共享访问的交易数据系统可以涉及在区块链中更广泛的代码执行能力。这样的交易数据系统可以涉及利用系统级别函数和基于数据的访问控制的访问控制策略,以实现用于控制对交易数据的不同部分的访问的权限系统。

应当理解,在不背离所公开的技术的教导的条件下,系统级别的基于函数的访问控制与基于函数或数据的访问控制规则的利用可以在实施方式的配置中提供高度的灵活性、复杂性和变化。

请注意,所公开的技术不限于上述交易数据示例,而是可以应用于在区块链平台上执行的各种智能合约。可以将该技术应用于在多种使用背景中提供安全的系统级别访问控制。

图5是示出用于在诸如图1、图2A、图2B和图3A中的交易数据区块之类的区块链平台上启动智能合约脚本的执行的接口的说明性示例的数据架构图。在该示例中,应用程序接口(API)510向支持交易数据区块链的区块链平台520提供接口。区块链平台520支持智能合约522,诸如图2B中的交易数据区块242,其包括脚本524,该脚本具有在由区块链平台520执行时相对于交易数据区块链实施操作的代码。

在图5的示例中,在智能合约522中示出了四个脚本。客户端/服务器502在交易数据区块链上发起一个交易,使Function_1执行并调用Function_2。Function_2调用Function_3,Function_3调用Function_4,在该示例中,Function_4向客户端/服务器502返回消息506。这些函数在区块链平台520上的执行框架中执行,诸如图3A所示的框架,该框架使用访问控制规则在函数调用上执行系统级别的基于函数的访问控制。

区块链账本数据结构

图6A是示出基于图1的交易数据区块链140的区块142A-142E或访问控制策略区块链150的区块152A-152E的区块链账本600的简化示例的数据架构图。图6A的区块链账本600示例被简化以示出区块142A-142E或区块152A-152E的区块头、元数据和签名,以便使用区块链演示安全交易数据或访问规则账本。概括而言,区块链账本可以是全球共享的交易数据库。

图6A是具有数据树的区块链账本600的说明性示例,该数据树保存使用密码技术验证的交易数据。在图6A中,每个区块610包括具有关于先前区块和后续区块的信息的区块头612,并且将交易根节点614存储到保存交易数据的数据树620。交易数据可以存储智能合约、与交易有关的数据或任何其他数据。智能合约的元素也可以存储在区块的交易节点内。

在图6A的示例中,使用默克尔树620对交易数据进行密码保护。例如,可以将区块610A的数据树620A的交易Tx1节点634A散列为散列1节点632A,可以将交易Tx2节点638A散列为散列2节点636A。散列1节点632A和散列2节点636A可以被散列为散列12节点630A。可以形成类似的子树以生成散列34节点640A。散列12节点630A和散列34节点640A可以被散列为在数据区块610A中分类的交易根614A散列。通过使用默克尔树或任何类似的数据结构,可以通过验证散列值是否正确来检查交易的完整性。

图6B是示出被捆绑为区块的智能合约代码、交易和消息的说明性示例的数据架构图,使得其完整性在密码学上是安全的,并且可以将它们附加到区块链账本。在图6B中,智能合约642是在计算机上执行的代码。更具体地,智能合约的代码可以存储在区块链账本中,并在给定的时间由分布式区块链平台的节点执行。可以将智能代码执行的结果存储在区块链账本中。可选地,可以在执行智能合约代码时消耗货币。在图6B的示例中,智能合约642在虚拟机环境中执行,尽管这是可选的。

在图6B中,智能合约642的各方面被存储在图6A的区块链账本的区块610中的数据树620中的交易数据节点中。在图6B的示例中,智能合约642A被存储在区块610A中的数据树620A的数据区块Tx1节点634A中,智能合约642B被存储在Tx2节点638A中,与智能合约642B相关联的合约账户654被存储在Tx3节点644A中,并且外部帐户被存储在Tx4节点648A中。

智能合约和交易数据在区块链账本中的存储

为了确保智能合约安全并生成安全数据,区块链账本必须保持最新状态。例如,如果创建了智能合约,则必须以安全的方式存储与智能合约相关联的代码。类似地,当智能合约代码执行并生成交易数据时,交易数据必须以安全的方式存储。

在图6B的示例中,示出用于维护区块链账本的两个可能的实施例。在一个实施例中,不可信的矿工节点(“矿工”)680可以因解决密码难题而得到奖励,从而被允许将区块附加到区块链上。备选地,可以使用可信节点690的集合将下一个区块附加到区块链账本。节点可以执行智能合约代码,然后一个获胜节点可以将下一个区块附加到区块链账本。

尽管本文公开的技术的各方面类似于智能合约,但是在本技术中,合约的策略可以确定维护区块链账本的方式。例如,策略可以要求对账本上的区块的验证或授权过程是通过对可信节点的集群的集中控制来确定的。在这种情况下,集中控制可以是授权可信节点(例如证书授权机构110)对交易区块进行证明和签名以验证它们,并且可以不需要矿工的验证。

备选地,策略可以提供由不可信节点的去中心化的集群决定的验证过程。在将区块链账本分发给不可信节点的集群的情况下,可以采用对链中区块的挖掘来验证区块链账本。

区块链可以使用诸如工作量证明之类的各种时间戳方案来序列化改变。备选的共识方法包括权益证明、燃烧证明、研究证明,它们也可用于序列化改变。

如上所述,在一些示例中,矿工可以验证区块链账本以保护区块链。在这种情况下,矿工可以集体商定要使用的验证解决方案。然而,如果使用小型网络,例如专用网络,则解决方案可以是默克尔树,并且可以不需要对验证解决方案的挖掘。当创建交易区块(例如用于交易数据区块链140的交易数据区块142或用于访问控制策略区块链150的访问控制规则区块152)时,该区块是未确认且未识别的实体。为了作为公认的“货币”的一部分,可以将其添加到区块链并因此与可信集群的概念有关。

在可信集群中,当添加数据区块142或152时,每个节点竞争以确认下一“交易”(例如,新的交易数据或访问控制规则区块)。在一个示例中,节点竞争以挖掘并获得最低的散列值:min{previous_hash,contents_hash,random_nonce_to_be_guessed}->result。交易顺序受计算竞赛的保护(相信没有一个实体可以击败区块链网络的集体资源)。广播和确认相互认证参数以防止在区块链中的两次输入。

备选地,通过在受限的网络上广播用于认证安全账本的元数据,例如,仅广播签名的散列,区块链可以减少集中保存数据带来的风险。去中心化的共识使区块链适于记录安全交易或事件。还可以对包含与数据文件有关的信息的元数据进行加密,以限制访问,使得元数据不会公开与数据文件有关的信息。

可以利用挖掘过程(诸如可以与图4C的确认过程480结合使用)来阻止双重记帐、覆盖或重放攻击,利用基于“诚信”的商定上的共同布置,即没有单个节点可以控制整个集群。挖掘的一个可行假设是存在诚实方的等同权利分布,而这些诚实方凌驾于不诚实方或妥协方之上。去中心化系统中的每个节点或矿工具有区块链的副本。不存在中心化的“官方”副本,并且没有比任意其他用户更“可信”的用户。在482处,使用软件将交易广播到网络。在484处,挖掘节点竞争以计算验证解决方案来验证交易,然后在486处将完成的区块验证广播给其他节点。在488处,每个节点以获胜节点建立的交易顺序将区块添加到区块链的其副本中。

请注意,在受限制的网络中,被授权检查或挖掘数据文件的权益相关者可以自己访问或不访问交易区块,但是需要具有元数据的密钥(因为它们是受限制的网络的成员并且是可信的)以获取详细信息。由于将密钥应用于具有不同数据分类的数据,因此可以对权益相关者进行划分。

去中心化的区块链也可以使用ad-hoc安全消息传递和分布式联网。在该示例中,访问控制策略区块链账本与常规区块链的区别在于:存在中心化的情报交易站,例如用于验证的授权中央控制。在没有挖掘过程的情况下,可信集群可以包含在中心化的区块链中,而不是公共或民主的区块链中。对此的一种看法是,去中心化的部分被称为“民主的N个诚实方”(多方的诚实方是一种密码学概念),而中心化的部分被称为“用于区块链信息校正的可信君主制”。例如,将数据文件维护为集中授权并保持脱机状态可能是有利的。

在一些示例中,可以通过加密手段将对区块链上的资源的访问和访问控制规则限制为仅对授权的服务器开放。由于交易数据或访问控制策略区块链账本是分布式的,因此授权的服务器可以对其进行验证。公钥可以用作公共区块链账本上的地址。

请注意,去中心化的区块链的增长可以伴随着节点中心化的风险,因为在更大数据上运行所需的计算机资源变得越来越昂贵。

本技术可以涉及在一台或多台机器中发生的操作。如本文所使用的,“机器”意味着用指令编程的以执行专门的计算操作的物理数据存储和处理硬件。应当理解,两个或更多个不同的机器可以共享硬件组件。例如,同一集成电路可以是两个或更多不同机器的一部分。

本领域普通技术人员将认识到,可以利用多种方法并将其与涉及访问控制策略区块链账本的本方法结合。本文描述的访问控制策略区块链账本的不同方面的特定示例是说明性的,并不旨在限制所示技术的范围。

智能合约

智能合约由代码定义。如前所述,智能合约的条款和条件可以编码(例如,通过散列)到区块链账本中。具体地,可以将智能合约编译为字节码(如果在虚拟机中执行),然后可以如前所述将字节码存储在区块链账本中。类似地,可以通过前述方式将由智能合约执行和生成的交易数据存储在区块链账本中。

用于使用智能合约和区块链账本的计算机架构

请注意,图4A-图4C的过程400、410和480的至少一些部分、图2B的交易数据区块242的脚本、图5的智能合约522、图6B的智能合约642以及与本文描述的交易数据和访问控制策略区块链账本相关的其他过程和操作可以在一个或多个服务器(例如图8中的计算机环境800或云)中实现,并且定义如本文所述地翻译或解释的用户控制输入信号的结果的数据可以被传达给用户设备以用于显示。备选地,访问控制策略区块链账本过程可以在客户端设备中实现。在其他示例中,一些操作可以在一个计算资源(诸如服务器)集中实现,而其他步骤可以在其他计算资源(例如客户端设备)中实现。

应该理解,本文描述的方法可以在任何时间终止,并且不需要以其整体实施。如下所述,可以通过执行包括在计算机存储介质上的计算机可读指令来执行本文描述方法的一些或全部操作和/或基本等同的操作。在说明书和权利要求书中使用的术语“计算机可读指令”及其变型在本文中被广泛地使用以包括例程、应用、应用模块、程序模块、程序、组件、数据结构、算法等。计算机可读指令可以在各种系统配置上实现,包括单处理器或多处理器系统、小型计算机、大型计算机、个人计算机、手持计算设备、基于微处理器的可编程消费电子产品、其组合等。

因此,应当理解,本文描述的逻辑操作被实现为:(1)在计算系统上运行的计算机实现的动作或程序模块的序列和/或(2)计算系统内的互连机器逻辑电路或电路模块。实施方式是取决于计算系统的性能和其他要求的选择问题。因此,本文描述的逻辑操作被不同地称为状态、操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可以以软件、固件、专用数字逻辑及其任意组合来实现。

如本文所述,结合本文描述的附图,例程(例如,图4A-图4C的过程400、410和480、图2B的交易数据区块242的脚本、图5的智能合约522,图6B的智能合约642)的操作在本文中被描述为至少部分地由应用、组件和/或电路来实现。尽管以下说明参考图1、图2B、图4A-图4C、图5和图B的组件,但是可以理解,例程的操作也可以以许多其他方式来实现。例如,例程可以至少部分地由计算机处理器或另一计算机的一个或多个处理器实现。另外,例程的一个或多个操作可以备选地或附加地至少部分地由单独工作或结合其他软件模块工作的计算机来实现。

例如,例程的操作在本文中被描述为至少部分地由应用、组件和/或电路实现,这些应用、组件和/或电路在本文中统称为模块。在一些配置中,模块可以是动态链接库(DLL)、静态链接库、由应用编程接口(API)产生的功能、已编译程序、解释程序、脚本或任何其他可执行指令集。数据和/或模块(诸如本文公开的数据和模块)可以存储在一个或多个存储器组件中的数据结构中。可以通过对数据结构的链接或引用进行寻址来从数据结构中检索数据。

尽管以下说明参考了以上讨论的附图的组件,但是可以理解,例程(例如,图4A-图4C的过程400、410和480、图2B的交易数据区块242的脚本、图5的智能合约522、图6B的智能合约642)的运行也可以以许多其他方式来实现。例如,例程可以至少部分地由另一远程计算机或本地计算机或电路的处理器来实现。另外,例程的一个或多个操作可以备选地或附加地至少部分地由单独工作或与其他软件模块结合工作的芯片组来实现。适于提供本文公开的技术的任何服务、电路或应用可以在本文描述的操作中使用。

图7示出用于计算机的示例计算机架构700的附加细节,例如设备110和120A-120C(图1),能够执行本文描述的程序组件。因此,图7所示的计算机架构700示出了用于服务器计算机、移动电话、PDA、智能电话、台式计算机、上网本计算机、平板计算机、机载计算机、游戏机和/或便携式计算机的架构。可以利用计算机架构700来执行本文提出的软件组件的任何方面。

图7所示的计算机架构700包括中央处理单元702(“CPU”)、包括随机存取存储器706(“RAM”)和只读存储器(“ROM”)708的系统存储器704、以及将存储器704耦接到CPU 702的系统总线710。基本输入/输出系统存储在ROM 708中,该基本输入/输出系统包含有助于在计算机架构700内的子元素之间传递信息(例如在启动期间)的基本例程。计算机架构700还包括大容量存储设备712,用于存储操作系统707、数据(诸如交易数据区块链数据720或访问控制策略区块链数据722的副本)以及一个或多个应用程序。

大容量存储设备712通过连接到总线710的大容量存储控制器(未示出)连接到CPU702。大容量存储设备712及其相关联的计算机可读介质为计算机架构700提供了非易失性存储。尽管本文包括的计算机可读介质的描述是指大容量存储设备,例如固态驱动器、硬盘或CD-ROM驱动器,但本领域技术人员应理解,计算机可读介质可以是计算机架构700可以访问的任何可用的计算机存储介质或通信介质。

通信介质包括计算机可读指令、数据结构、程序模块、或者诸如载波或其他传输机制的调制数据信号中的其他数据,并且包括任何传递介质。术语“调制数据信号”是指具有以一种方式改变或设置其一个或多个特征以便在信号中编码信息的信号。作为示例且非限制性地,通信介质包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声学、RF、红外和其他无线介质之类的无线介质。以上任何内容的组合也应包括在计算机可读介质的范围内。

作为示例且非限制性地,计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其他固态存储技术、CD-ROM、数字通用光盘(“DVD”)、HD-DVD、蓝光或其他光学存储设备、磁带盒、磁带、磁盘存储设备或其他磁性存储设备,或可用于存储所需信息并可由计算机架构700访问的任何其他介质。为了权利要求的目的,短语“计算机存储介质”、“计算机可读存储介质”及其变型本身并不包括波、信号和/或其他暂时和/或无形通信介质。

根据各种配置,计算机架构700可以使用通过网络756和/或另一网络(未示出)到远程计算机的逻辑连接在联网环境中运行。计算机架构700可以通过连接到总线710的网络接口单元714连接到网络756。应当理解,网络接口单元714也可以用于连接到其他类型的网络和远程计算机系统。计算机架构700还可以包括输入/输出控制器716,用于接收和处理来自许多其他设备的输入,包括键盘、鼠标、游戏控制器、电视遥控器或电子笔(图7中未示出)。类似地,输入/输出控制器716可以向显示屏、打印机或其他类型的输出设备(图7中也未示出)提供输出。

应当理解,当本文描述的软件组件被加载到CPU 702中并被执行时,可以将CPU702和整个计算机架构700从通用计算系统变换为被定制以促进本文提出的功能的专用计算系统。CPU 702可以由任意数量的晶体管或其他分立电路元件构成,它们可以单独或共同地呈现任意数量的状态。更具体地,响应于包含在本文公开的软件模块内的可执行指令,CPU 702可以作为有限状态机运行。这些计算机可执行指令可以通过指定CPU 702如何在状态之间转变来对CPU 702进行变换,从而对构成CPU 702的晶体管或其他分立的硬件元素进行变换。

对本文提出的软件模块进行编码也可以对本文提出的计算机可读介质的物理结构进行变换。在本说明书的不同实施方式中,物理结构的特定变换可以取决于各种因素。这些因素的示例可以包括但不限于用于实现计算机可读介质的技术,无论计算机可读介质以主存储器还是辅存储器等表征。例如,如果计算机可读介质被实现为基于半导体的存储器,则本文公开的软件可以通过对半导体存储器的物理状态进行变换而编码在计算机可读介质上。例如,软件可以对构成半导体存储器的晶体管、电容器或其他分立电路元件的状态进行变换。软件还可以对这些组件的物理状态进行变换,以便在其上存储数据。

作为另一示例,可以使用磁性或光学技术来实现本文公开的计算机可读介质。在这样的实施方式中,当软件被编码在磁性或光学介质中时,本文提出的软件可以对磁性或光学介质的物理状态进行变换。这些变换可以包括更改给定磁性介质内的特定位置的磁性特征。这些变换还可以包括更改给定光学介质内的特定位置的物理特征或特性,以改变那些位置的光学特性。在不背离本说明书的范围和精神的情况下,物理介质的其他变换是可能的,提供前述示例仅是为了便于该讨论。

鉴于以上描述,应当理解,在计算机架构700中发生了许多类型的物理变换,以便存储和执行本文提出的软件组件。还应当理解,计算机架构700可以包括其他类型的计算设备,包括手持计算机、嵌入式计算机系统、个人数字助理以及本领域技术人员已知的其他类型的计算设备。还可以考虑,计算机架构700可以未包括图7所示的所有组件,可以包括图7中未显式示出的其他组件,或者可以利用与图7所示的架构完全不同的架构。

图8描绘了说明性的分布式计算环境800,该分布式计算环境800能够执行本文描述的软件组件,以用于对区块链账本的系统级别的基于函数的访问控制。因此,图8所示的分布式计算环境800可以用于执行本文提出的软件组件的许多方面。例如,可以利用分布式计算环境800来执行本文描述的软件组件的一个或多个方面。此外,分布式计算环境800可以代表以上讨论的分布式区块链平台的组件。

根据各种实施方式,分布式计算环境800包括在网络804上运行、与网络804通信或作为网络804的一部分的计算环境802。网络804可以是或可以包括如上所述的网络856。网络804还可以包括各种接入网络。一个或多个客户端设备806A-806N(以下统称为和/或一般性称为“客户端806”)可以经由网络804和/或其他连接(图8中未示出)与计算环境802进行通信。在一个示出的配置中,客户端806包括诸如膝上型计算机、台式计算机或其他计算设备之类的计算设备806A;板式或平板计算设备(“平板计算设备”)806B;诸如移动电话、智能电话、车载计算机或其他移动计算设备之类的移动计算设备806C;服务器计算机806D;和/或其他设备806N,其可以包括硬件安全模块。应当理解,任何数量的设备806都可以与计算环境802进行通信。本文中参照图7和图8示出并描述了设备806的两个示例计算架构。应当理解,所示出的设备806和本文中图示和描述的计算架构仅是示例性的,不应被解释为以任何方式进行限制。

在所示的配置中,计算环境802包括应用服务器808、数据存储装置810和一个或多个网络接口812。根据各种实施方式,应用服务器808的功能可以由一个或多个服务器计算机提供,该一个或多个服务器计算机作为网络804的一部分执行或与网络804通信。应用服务器808可以托管各种服务、虚拟机、门户和/或其他资源。在所示的配置中,应用服务器808托管一个或多个虚拟机814,用于托管应用或其他功能。根据各种实施方式,虚拟机814托管用于数据管理区块链账本的一个或多个应用和/或软件模块。应当理解,该配置仅是说明性的并且不应以任何方式理解为限制性的。

应用服务器808还可以托管系统级别的基于函数的访问控制功能模块816,诸如针对图3A的区块链平台330所描述的那些。FBAC模块816可以将访问控制策略应用于在虚拟机814中执行的智能合约。

根据各种实施方式,应用服务器808还包括一个或多个交易数据管理服务820和一个或多个区块链服务822。交易数据管理服务820可以包括用于管理交易数据区块链(例如图1中的交易数据区块链140)上的交易数据的服务。访问控制策略管理服务823可以包括用于管理访问控制策略区块链(例如图1中的访问控制策略区块链150)上的访问控制规则的服务,或者以其他方式维护由FBAC模块816应用的访问控制策略。区块链服务822可以包括用于参与一个或多个区块链的管理的服务,例如通过创建创世区块、交易数据或访问控制规则区块、以及执行验证。

如图8所示,应用程序服务器808还可以托管其他服务、应用、门户和/或其他资源(“其他资源”)824。其他资源824可以包括但不限于数据加密、数据共享或任何其他功能。

如上所述,计算环境802可以包括数据存储装置810。根据各种实施方式,数据存储装置810的功能由在网络804上运行或与网络804通信的一个或多个数据库或数据存储提供。数据存储装置810的功能还可以由被配置为托管计算环境802的数据的一个或多个服务器计算机提供。数据存储装置810可以包括、托管或提供一个或多个真实或虚拟的数据存储826A-826N(以下统称为和/或一般化称为“数据存储826”)。数据存储826被配置为托管由应用服务器808使用或创建的数据和/或其他数据。数据存储826的各方面可以与用于访问控制策略区块链的服务相关联。尽管在图8中未示出,但是数据存储826还可以托管或存储网页文档、word文档、演示文档、数据结构、由推荐引擎执行的算法和/或任何应用程序或另一模块利用的其他数据。

计算环境802可以与网络接口812通信或由网络接口812访问。网络接口812可以包括用于支持两个或更多个计算设备之间的通信的各种类型的网络硬件和软件,两个或更多个计算设备包括但不限于客户端806和应用服务器808。应当理解,网络接口812还可以用于连接到其他类型的网络和/或计算机系统。

应该理解,本文描述的分布式计算环境800可以为本文描述的软件元件的任何方面提供任意数量的虚拟计算资源和/或其他分布式功能,这些虚拟计算资源和/或其他分布式功能可以配置为执行本文公开的软件组件的任何方面。根据本文公开的概念和技术的各种实施方式,分布式计算环境800可以使用设备806将本文描述的软件功能作为服务提供给客户端。应当理解,设备806可以包括真实机或虚拟机,包括但不限于服务器计算机、网络服务器、个人计算机、移动计算设备、智能电话和/或可以包括用户输入设备的其他设备。因此,本文公开的概念和技术的各种配置使被配置为访问分布式计算环境800的任何设备能够利用本文描述的功能来创建和支持访问控制策略区块链账本等。

现在转到图9,本文描述了用于能够执行各种软件组件的计算设备的示例性计算设备架构900,用于支持区块链账本并将访问控制策略应用于区块链账本。计算设备架构900适用于可以管理区块链账本的计算设备。在一些配置中,计算设备包括但不限于移动电话、车载计算机、平板设备、板式设备、便携式视频游戏设备、传统台式计算机、便携式计算机(例如,膝上型计算机、笔记本计算机、超便携式计算机和上网本)、服务器计算机、游戏机和其他计算机系统。计算设备架构900适用于图1所示的证书授权机构110、客户端/服务器120A-120C和区块链平台130以及图8所示的计算设备806A-806N。

图9所示的计算设备架构900包括处理器902、存储器组件904、网络连接组件906、传感器组件908、输入/输出组件910和电源组件912。在所示的配置中,处理器902与存储器组件904、网络连接组件906、传感器组件908、输入/输出(“I/O”)组件910和电源组件912通信。尽管在图9所示的各个组件之间未示出连接,但是这些组件可以进行交互以执行设备功能。在一些配置中,组件被布置为经由一个或多个总线(未示出)进行通信。

处理器902包括中央处理单元(“CPU”),其被配置为处理数据、执行一个或多个应用程序的计算机可执行指令以及与计算设备架构900的其他组件通信以便执行本文描述的各种功能。处理器902可被用于执行本文提出的软件组件的各方面,尤其是至少部分利用安全数据的那些方面。

在一些配置中,处理器902包括图形处理单元(“GPU”),其被配置为加速由CPU执行的操作,包括但不限于通过执行安全计算应用、通用科学和/或工程计算应用以及诸如高分辨率视频的图形密集型计算应用(例如620P、1080P和更高分辨率)、视频游戏、三维(“3D”)建模应用等所执行的操作。在一些配置中,处理器902被配置为与离散GPU(未示出)通信。在任何情况下,都可以根据协同处理CPU/GPU计算模型来配置CPU和GPU,其中应用的顺序部分在CPU上执行,计算密集部分由GPU加速。

在一些配置中,处理器902是片上系统(“SoC”)或者与本文以下描述的一个或多个其他组件一起包括在片上系统中。例如,SoC可以包括处理器902、GPU、网络连接组件906中的一个或多个以及传感器组件908中的一个或多个。在一些配置中,处理器902部分地利用层叠封装(“PoP”)集成电路封装技术来制造。处理器902可以是单核或多核处理器。

可以根据可从英国剑桥的安谋控股获得许可的ARM架构来创建处理器902。备询地,可以根据诸如可从加利福尼亚州山景城的英特尔公司获得的x86架构等来创建处理器902。在一些配置中,处理器902是可从加利福尼亚州圣地亚哥的高通公司获得的SNAPDRAGON SoC、可从加利福尼亚州圣克拉拉的英伟达公司获得的TEGRA SoC、可从韩国首尔的三星公司获得的HUMMINGBIRD SoC、可从德克萨斯州达拉斯的德州仪器获得的开放多媒体应用平台(“OMAP”)SoC、上述任何SoC的定制版本或专属SoC。

存储器组件904包括随机存取存储器(“RAM”)914、只读存储器(“ROM”)916、集成存储存储装置(“集成存储”)918和可移动存储存储装置(“可移动存储”)920。在一些配置中,RAM 914或其一部分,ROM 916或其一部分和/或RAM 914和ROM 916的一些组合被集成在处理器902中。在一些配置中,ROM 916被配置为存储固件、操作系统或其一部分(例如,操作系统内核)和/或引导加载器,以从集成存储装置918和/或可移动存储装置920加载操作系统内核。

集成存储装置918可一包括固态存储器、硬盘或固态存储器和硬盘的组合。集成存储装置918可以被焊接或以其他方式连接到逻辑板,处理器902和本文描述的其他组件也可以被连接到该逻辑板。这样,集成存储装置918被集成在计算设备中。集成存储装置918被配置为存储操作系统或其部分、应用程序、数据和本文描述的其他软件组件。

可移动存储装置920可以包括固态存储器、硬盘或固态存储器和硬盘的组合。在一些配置中,提供可移动存储装置920以代替集成存储装置918。在其他配置中,提供可移动存储装置920作为另外可选的存储器。在一些配置中,可移动存储装置920与集成存储装置918逻辑地组合,使得总的可用存储作为总的组合存储容量可用。在一些配置中,向用户示出了集成存储装置918和可移动存储装置920的总组合容量,而不是针对集成存储装置918和可移动存储装置920的单独的存储容量。

可移动存储装置920被配置为插入可移动存储内存插槽(未示出)或其他机制中,通过该机制可移动存储装置920被插入并且被保护以便于连接,通过该连接可移动存储装置920可以与计算设备的诸如处理器902之类的其他组件通信。可移动存储装置920可以以各种存储卡格式体现,包括但不限于PC卡、CompactFlash卡、记忆棒、安全数字(“SD”)、miniSD、microSD、通用集成电路卡(“UICC”)(例如,用户识别模块(“SIM”)或通用SIM(“USIM”))、专有格式等。

可以理解,一个或多个存储器组件904可以存储操作系统。根据各种配置,操作系统可以包括但不限于服务器操作系统,例如由The Open Group认证的各种形式的UNIX和由自由软件基金会(Free Software Foundation)认证的LINUX,或者软件即服务(Software-as-a-Service,SaaS)架构的各个方面,例如来自华盛顿州雷蒙德市的微软公司的MICROSFTAZURE或华盛顿州西雅图市的亚马逊公司的AWS。操作系统还可以包括华盛顿州雷德蒙德的微软公司的WINDOWS MOBILE OS、微软公司的WINDOWS PHONE OS、微软公司的WINDOWS、加利福尼亚州库比蒂诺的苹果公司的MAC OS或IOS和加利福尼亚山景城的谷歌公司的ANDROIDOS。可以预期其他操作系统。

网络连接组件906包括无线广域网组件(“WWAN组件”)922、无线局域网组件(“WLAN组件”)924和无线个人局域网组件(“WPAN组件”)926。网络连接性组件906促进去往和来自网络956或另一网络的通信,该网络可以是WWAN、WLAN或WPAN。尽管仅示出了网络956,但是网络连接组件906可以促进与包括图9的网络956的多个网络的同时通信。例如,网络连接组件906可以促进经由WWAN、WLAN或WPAN中的一个或多个与多个网络的同时通信。

网络956可以是WWAN或可以包括WWAN,例如利用一种或多种移动电信技术经由WWAN组件922利用计算设备架构900向计算设备提供语音和/或数据服务的移动电信网络。移动电信技术可以包括但不限于全球移动通信系统(“GSM”)、码分多址(“CDMA”)ONE、CDMA7000、通用移动通信系统(“UMTS”)、长期演进(“LTE”)和微波访问的全球互操作性(“WiMAX”)。另外,网络956可以利用各种信道接入方法(上述标准可以使用或可以不使用),包括但不限于时分多址(“TDMA”)、频分多址(“FDMA”)、CDMA、宽带CDMA(“W-CDMA”)、正交频分复用(“OFDM”)、空分多址(“SDMA”)等。可以使用通用分组无线服务(“GPRS”)、全球演进的增强数据速率(“EDGE”)、包括高速下行链路分组接入(“HSDPA”)的高速分组访问(“HSPA”)协议系列、增强型上行链路(“EUL”)或以其他方式被称为高速上行链路分组访问(“HSUPA”)、演进的HSPA(“HSPA+”)、LTE和其他各种当前和未来的无线数据访问标准。网络956可以被配置为利用以上技术的任意组合来提供语音和/或数据通信。网络956可以被配置为或适于根据未来一代的技术来提供语音和/或数据通信。

在一些配置中,WWAN组件922被配置为向网络956提供双多模式连接。例如,WWAN组件922可以被配置为向网络956提供连接,其中,网络956经由GSM和UMTS技术或经由一些其他技术的组合提供服务。备选地,可以利用多个WWAN组件922来执行这样的功能,和/或提供附加的功能以支持其他不兼容的技术(即,不能由单个WWAN组件支持)。WWAN组件922可以促进与多个网络(例如,UMTS网络和LTE网络)的类似连接。

网络956可以是根据一个或多个电气和电子工程师学会802.11标准(例如IEEE802.11a、802.11b、802.11g、802.11n和/或未来802.11标准之类)运行的WLAN(本文中统称为WI-FI)。还可以考虑802.11标准草案。在一些配置中,利用一个或多个无线WI-FI接入点来实现WLAN。在一些配置中,一个或多个无线WI-FI接入点是具有到充当WI-FI热点的WWAN的连接的另一计算设备。WLAN组件924被配置为经由WI-FI接入点连接到网络956。可以经由各种加密技术来保护这种连接,这些加密技术包括但不限于WI-FI保护访问(“WPA”)、WPA2、有线等效保密性(“WEP”)等。

网络956可以是根据红外数据协会(Infrared Data Association,“IrDA”)、蓝牙、无线通用串行总线(“USB”)、Z-Wave、ZIGBEE或某些其他短距离无线技术运行的WPAN。在一些配置中,WPAN组件926被配置为促进经由WPAN与其他设备(例如外围设备、计算机或其他计算设备)的通信。

传感器组件908包括磁力计928、环境光传感器930、接近传感器932、加速度计934、陀螺仪936和全球定位系统传感器(“GPS传感器”)938。可以设想,诸如但不限于温度传感器或冲击检测传感器的其他传感器也可以并入计算设备架构900中。

I/O组件910包括显示器940、触摸屏942、数据I/O接口组件(“数据I/O”)944、音频I/O接口组件(“音频I/O”)946、视频I/O接口组件(“视频I/O”)948和相机950。在一些配置中,显示器940和触摸屏942相组合。在一些配置中,数据I/O组件944、音频I/O组件946和视频I/O组件948中的两个或更多个相组合。I/O组件910可以包括被配置为支持以下描述的各种接口的分立处理器,或者可以包括内置于处理器902的处理功能。

所示的电源部件912包括可以连接到电量表954的一个或多个电池952。电池952可以是可充电的或一次性的。可充电电池类型包括但不限于锂聚合物、锂离子、镍镉和镍金属氢化物。每个电池952可以由一个或多个电池单元制成。

电源组件912还可以包括电源连接器,该电源连接器可以与一个或多个上述I/O组件910组合。电源组件912可以通过I/O组件与外部电源系统或充电设备接口。

各种实施方式的示例

最后,尽管已经用特定于结构特征和/或方法动作的语言描述了各种配置,但是应当理解,所附表示中定义的主题不必限于所描述的特定特征或动作。相反,这些特定特征和动作是作为实现所要求保护的主题的示例形式公开的。

根据以下条款做出本公开:

条款1、一种计算机实现的方法,用于区块链上的智能合约执行的、系统级别的基于函数的访问控制,该方法包括,在用于区块链上的智能合约执行的内核执行框架中执行以下步骤,其中内核执行框架被配置为执行函数边界检测:检测通过区块链上的智能合约的一个或多个方法进行的函数调用;将函数调用添加到智能合约的函数调用栈;对照基于函数的访问控制规则集来检查函数调用栈,基于函数的访问控制规则集定义了一个或多个允许或禁止的函数调用序列;以及如果函数调用栈包括在基于函数的访问控制规则集下不允许的一个或多个函数调用,则阻止该函数调用的执行或完成。

条款2、根据条款1所述的计算机实现的方法,其中:函数调用栈包括在智能合约执行期间调用的每个函数;基于函数的访问控制规则集包括至少一个定义函数调用序列的访问控制规则;以及对照基于函数的访问控制规则集来检查函数调用栈的步骤包括:对照在定义函数调用序列的访问控制规则中定义的该函数调用序列,检查函数调用栈。

条款3、根据条款1所述的计算机实现的方法,其中:定义基于函数的访问控制规则集的步骤包括至少一个基于数据的访问控制规则;检测通过区块链上的智能合约的一个或多个方法进行的函数调用的步骤包括:检测包括在函数调用栈中的至少一个值;对照基于函数的访问控制规则集来检查函数调用栈的步骤包括:对照基于数据的访问控制规则来检查包括在函数调用栈中的至少一个值;以及如果在基于函数的访问控制规则集下不允许函数调用序列,则阻止该函数调用的步骤包括:如果在基于数据的访问控制规则集下不允许包括在函数调用序列中的至少一个值,则阻止该函数调用。

条款4、根据条款1所述的计算机实现的方法,其中:基于函数的访问控制规则集存储在区块链上;以及该方法包括通过将基于函数的访问控制规则区块添加到区块链来修改基于函数的访问控制规则集。

条款5、根据条款1所述的计算机实现的方法,其中,内核执行框架包括Linux操作系统框架,并且函数边界检测包括扩展的伯克利包过滤。

条款6、根据条款1所述的计算机实现的方法,其中,在执行用于区块链上的智能合约执行的框架的一个或多个虚拟机内执行以下步骤:检测通过区块链上的智能合约的一个或多个方法进行的函数调用,将函数调用添加到智能合约的函数调用栈,对照基于函数的访问控制规则集来检查函数调用栈,以及如果在基于函数的访问控制规则集下不允许函数调用,则阻止该函数调用。

条款7、根据条款1所述的计算机实现的方法,其中,基于函数的访问控制规则集包括以下至少一项:允许的函数调用序列的白名单和禁止的函数调用序列的黑名单。

条款8、一种用于区块链上的智能合约执行的、系统级别的基于函数的访问控制的系统,该系统包括:一个或多个处理器;以及与一个或多个处理器通信的一个或多个存储设备,存储设备具有存储在其上的计算机可读指令,该计算机可读指令在由处理器执行时,使该处理器执行用于区块链上的智能合约执行的系统级别的基于函数的访问控制的方法,该方法包括,在用于区块链上的智能合约执行的内核执行框架中执行以下步骤,其中内核执行框架被配置为执行函数边界检测:检测通过区块链上的智能合约的一个或多个方法进行的函数调用;将函数调用添加到智能合约的函数调用栈;对照基于函数的访问控制规则集来检查函数调用栈,基于函数的访问控制规则集定义了一个或多个允许或禁止的函数调用序列;以及如果函数调用栈包括在基于函数的访问控制规则集下不允许的一个或多个函数调用,则阻止该函数调用的执行或完成。

条款9、根据条款8所述的系统,其中:函数调用栈包括在智能合约执行期间调用的每个函数;基于函数的访问控制规则集包括至少一个定义函数调用序列的访问控制规则;以及对照基于函数的访问控制规则集来检查函数调用栈的步骤包括:对照在定义函数调用序列的访问控制规则中定义的该函数调用序列,检查函数调用栈。

条款10、根据条款8所述的系统,其中:定义基于函数的访问控制规则集的步骤包括至少一个基于数据的访问控制规则;检测区块链上的智能合约的一个或多个方法之间的函数调用的步骤包括:检测包括在函数调用栈中的至少一个值;对照基于函数的访问控制规则集来检查函数调用栈的步骤包括:对照基于数据的访问控制规则来检查包括在函数调用栈中的至少一个值;以及如果在基于函数的访问控制规则集下不允许函数调用序列,则阻止函数调用的步骤包括:如果在基于数据的访问控制规则集下不允许包括在函数调用序列中的至少一个值,则阻止该函数调用。

条款11、根据条款8所述的系统,其中:基于函数的访问控制规则集存储在区块链上;以及方法包括通过将基于函数的访问控制规则区块添加到区块链来修改基于函数的访问控制规则集。

条款12、根据条款8所述的系统,其中,内核执行框架包括Linux操作系统框架,并且函数边界检测包括扩展的伯克利包过滤。

条款13、根据条款8所述的系统,在执行用于区块链上的智能合约执行的框架的一个或多个虚拟机内执行以下步骤:检测通过区块链上的智能合约的一个或多个方法进行的函数调用,将函数调用添加到智能合约的函数调用栈,对照基于函数的访问控制规则集来检查函数调用栈,以及如果在基于函数的访问控制规则集下不允许函数调用,则阻止该函数调用。

条款14、根据条款8所述的系统,其中,基于函数的访问控制规则集包括以下至少一项:允许的函数调用序列的白名单和禁止的函数调用序列的黑名单。

条款15、一种或多种计算机存储介质,具有存储在其上的计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时,使该处理器执行用于区块链上的智能合约执行的、系统级别的基于函数的访问控制的方法,该方法包括,在用于区块链上的智能合约执行的内核执行框架中执行以下步骤,其中内核执行框架被配置为执行函数边界检测:检测通过区块链上的智能合约的一个或多个方法进行的函数调用;将函数调用添加到智能合约的函数调用栈;对照基于函数的访问控制规则集来检查函数调用栈,基于函数的访问控制规则集定义了一个或多个允许或禁止的函数调用序列;以及如果函数调用栈包括在基于函数的访问控制规则集下不允许的一个或多个函数调用,则阻止该函数调用的执行或完成。

条款16、条款15的计算机存储介质,其中:函数调用栈包括在智能合约执行期间调用的每个函数;基于函数的访问控制规则集包括至少一个定义函数调用序列的访问控制规则;以及对照基于函数的访问控制规则集来检查函数调用栈的步骤包括:对照在定义函数调用序列的访问控制规则中定义的该函数调用序列,检查函数调用栈。

条款17、根据条款15所述的计算机存储介质,其中:定义基于函数的访问控制规则集的步骤包括至少一个基于数据的访问控制规则;检测通过区块链上的智能合约的一个或多个方法进行的函数调用的步骤包括:检测包括在函数调用栈中的至少一个值;对照基于函数的访问控制规则集来检查函数调用栈的步骤包括:对照基于数据的访问控制规则来检查包括在函数调用栈中的至少一个值;以及如果在基于函数的访问控制规则集下不允许函数调用序列,则阻止该函数调用的步骤包括:如果在基于数据的访问控制规则集下不允许包括在函数调用序列中的至少一个值,则阻止该函数调用。

条款18、根据条款15所述的计算机存储介质,其中:基于函数的访问控制规则集存储在区块链上;以及该方法包括通过将基于函数的访问控制规则区块添加到区块链来修改基于函数的访问控制规则集。

条款19、根据条款15所述的计算机存储介质,其中,内核执行框架包括Linux操作系统框架,并且函数边界检测包括扩展的伯克利包过滤。

条款20、根据条款15所述的计算机存储介质,其中,在执行用于区块链上的智能合约执行的框架的一个或多个虚拟机内执行以下步骤:检测通过区块链上的智能合约的一个或多个方法进行的函数调用,将函数调用添加到智能合约的函数调用栈,对照基于函数的访问控制规则集来检查函数调用栈,以及如果在基于函数的访问控制规则集下不允许函数调用,则阻止该函数调用。

尽管已经以对计算机结构特征、方法和转换动作特定的语言、特定的计算机器和计算机可读介质描述了本文呈现的主题,但是应当理解的是,在所附权利要求中阐述的主题不必受限于本文描述的特定特征、动作或介质。相反,所公开的特定特征、动作和介质是作为实现所要求保护的主题的示例形式而公开的。

以上描述的主题仅以说明的形式提供,并且不应被解释为限制性的。可以在不遵循所示出和描述的示例配置和应用的情况下,并且在不脱离在所附权利要求中阐述的本公开的范围的情况下,对本文描述的主题进行各种修改和改变。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号