一种对节点资源的访问控制方法技术

技术编号:26793516 阅读:27 留言:0更新日期:2020-12-22 17:09
本发明专利技术实施例提供了一种对节点资源的访问控制方法,涉及区块链技术领域,预先构建的P2P网络中的第一节点向第二节点发起针对智能合约的调用任务,以使所述第二节点执行所述智能合约;所述第二节点为所述P2P网络中事先启动了所述智能合约的节点;所述第二节点在执行所述智能合约前,针对该调用任务,判断所述第一节点是否有所述调用任务的访问权限,以及所述访问权限的授权步状态;当所述第一节点有所述调用任务的访问权限时,所述第二节点根据所述访问权限的授权步状态执行或不执行所述智能合约,以此能实现在分布式、弱信任环境下实现数据资源的访问控制的动态管理,有效避免某个智能合约对节点资源的过度消费。

【技术实现步骤摘要】
一种对节点资源的访问控制方法
本专利技术涉及区块链
,特别是涉及一种对节点资源的访问控制方法。
技术介绍
区块链起源于中本聪的比特币,本质上是通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。它依靠密码学和数学巧妙的分布式算法,在无法建立信任关系的互联网上、无需任何信任中心的情况下,使得参与者达成共识,完成信任与价值的可靠传递。而运行于区块链上的程序,即智能合约,正是通过一种冗余计算的方式提供了可信计算的服务。典型的提供可信计算的区块链平台都是面向金融场景,包括以太坊、超级账本等。可信计算一般包括四个维度:可用性、可靠性、效率和安全性。这些典型的面向金融场景的区块链着重解决了可用性、可靠性和对数字货币交易的安全性。随着云计算、大数据的普及,大多数的企业、单位甚至个人都有着大量的、多维的数据。通过大数据技术去发挥这些数据的价值的时代已经到来。然而,当数据的产生、数据的存储和数据的使用涉及到不同的实体时,数据的接入和使用就面临着信任的问题。例如,当前大量的个人的数据产生于移动应用的使用过程中。这些数据的生产者,是个人和应用提供商,而存储则分布于个人手机和云端服务器。对于一个普通用户而言,他的数据分散在各个不同的应用提供商之间。当有一个特定的大数据应用需要用到同一个用户的多维的、分散的数据时,就会遇到各个参与者之间的可信问题:大数据应用如何向用户和数据提供方证明自己的行为是符合预期,不会泄漏数据或将数据二次转手。要解决大数据场景下的可信计算问题我们必须应对以下挑战:即分布式环境下多种资源的访问控制,在大数据场景下,各种不同的参与者有的提供数据资源、有的提供计算资源,为了保障各类资源的安全与隐私,这就需要对这些资源进行访问控制。而数据资源因其可复制性,一旦到了数据使用者手里就可能失控。因此,如何在分布式、弱信任环境下实现数据资源的访问控制就成为当前的重大难点。
技术实现思路
鉴于上述问题,提出了本专利技术实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种对节点资源的访问控制方法。针对上述技术问题,本专利技术实施例公开了一种对节点资源的访问控制方法,所述方法包括:预先构建的P2P网络中的第一节点向第二节点发起针对智能合约的调用任务,以使所述第二节点执行所述智能合约;所述第一节点为所述P2P网络中的任意节点,所述第二节点为所述P2P网络中事先启动了所述智能合约的节点;所述第二节点在执行所述智能合约前,针对该调用任务,判断所述第一节点是否有所述调用任务的访问权限,以及所述访问权限的授权步状态;当所述第一节点有所述调用任务的访问权限时,所述第二节点根据所述访问权限的授权步状态,执行或不执行所述智能合约。进一步的,所述第二节点在执行所述智能合约时会占用本地的资源,所述资源包括CPU资源、内存资源或输入输出资源;所述方法还包括:在所述智能合约的开发过程中,在所述智能合约的合约代码被编译为字节码时,所述P2P网络中的用户端将针对所述资源消耗的监测逻辑插桩到跳转指令和函数调用指令的位置,并针对所述跳转指令和所述函数调用指令之间的指令,设定所述资源的消耗上限;在所述智能合约的执行过程中,所述第二节点遇到所述跳转指令或所述函数调用指令时,执行针对所述资源消耗的监测逻辑,以计算所述智能合约在本地执行时所述资源的总消耗量;所述第二节点将计算获得的所述资源的总消耗量与从所述调用任务中获取的所述资源的消耗上限进行比较;当所述资源的总消耗量大于所述资源的消耗上限时,改变所述访问权限的授权步状态。进一步的,所述方法还包括:针对跳转指令和函数调用指令之间的指令,所述用户端设定每种指令的所述资源单位消耗量;所述第二节点遇到所述跳转指令或所述函数调用指令时,执行针对所述资源消耗的监测逻辑,以计算所述智能合约在本地执行时所述资源的总消耗量,包括:所述第二节点计算所述跳转指令和所述函数调用指令两个插桩点之间的指令类型和指令数量;所述第二节点根据计算获得的指令类型和指令数量以及从所述调用任务获得的每种指令的所述资源单位消耗量,计算所述智能合约在本地执行时的所述资源的总消耗量。进一步的,所述输入输出资源具有多种类型,所述方法还包括:在所述智能合约的开发过程中,针对所述输入输出资源的多种类型,用户端在所述智能合约的合约代码上方添加相应访问权限的注解,并显示所述注解,以将所述输入输出资源的多种类型一一提前声明。进一步的,所述访问权限的授权步状态包括:1)睡眠状态,表示授权步还未生成;2)激活状态:表示授权步被请求激活,此时授权步已经生成;3)有效状态,表示授权步开始执行,随着权限的使用,它的保护态发生变化;4)挂起状态:表示授权步被管理员或因执行条件不足而强制处于挂起状态,它可以被恢复成有效状态,可能因生命周期用完或被管理员强制为无效状态;5)无效状态:表示授权步已经没有存在的必要,可以在任务流程中删除。进一步的,在所述第一节点向所述第二节点发起针对智能合约的调用任务前,所述方法还包括:所述P2P网络中的任一节点在接收到用户端发送的合约启动请求时,该节点作为主节点启动所述智能合约,并在所述P2P网络中随机选择多个从节点,以使所述从节点启动所述智能合约,其中,所述智能合约存储于预先设置的可信分布式账本中;所述主节点和所述从节点在启动所述智能合约后,生成一组公私钥;其中,所述从节点将所述公私钥中的公钥返回给所述主节点,将所述公私钥中的私钥存储在本地;所述主节点将所有从节点返回的公钥与所述智能合约的元信息存证到所述可信分布式账本中,并将所述可信分布式账本返回的哈希值作为合约校验地址返回给所述用户端;预先构建的P2P网络中的第一节点向第二节点发起针对智能合约的调用任务,包括:所述第一节点在接收到所述用户端发送的针对所述智能合约的执行请求时,向所述P2P网络中所有的所述第二节点发起针对所述智能合约的调用任务,所述第二节点为所述主节点或所述从节点;所述方法还包括:所述第二节点针对该调用任务执行所述智能合约的执行请求,并根据所述智能合约的状态向所述第一节点返回相应的执行结果,所述执行结果包括所述P2P网络中所有的所述第二节点基于自身私钥的签名;所述第一节点依据预先设置的结果统计策略,将所述执行结果返回给所述用户端;所述用户端从所述合约校验地址获取所述公钥,并根据公钥对所述执行结果中的签名进行验证。进一步的,所述合约启动请求包括所述智能合约在所述可信分布式账本中的合约代码地址和执行模式,所述执行模式包括单点执行模式或多点执行模式,所述方法还包括:所述用户端在开发完所述智能合约时,将所述智能合约保存至所述可信分布式账本上,并将所述可信分布式账本返回的哈希值作为所述合约代码地址;所述用户端针对所述合约代码地址,生成所述合约启动请求,并采用自身私钥对所述合约启动请求进行签名;所述P2P网络中的本文档来自技高网
...

【技术保护点】
1.一种对节点资源的访问控制方法,其特征在于,所述方法包括:/n预先构建的P2P网络中的第一节点向第二节点发起针对智能合约的调用任务,以使所述第二节点执行所述智能合约;所述第一节点为所述P2P网络中的任意节点,所述第二节点为所述P2P网络中事先启动了所述智能合约的节点;/n所述第二节点在执行所述智能合约前,针对该调用任务,判断所述第一节点是否有所述调用任务的访问权限,以及所述访问权限的授权步状态;/n当所述第一节点有所述调用任务的访问权限时,所述第二节点根据所述访问权限的授权步状态,执行或不执行所述智能合约。/n

【技术特征摘要】
1.一种对节点资源的访问控制方法,其特征在于,所述方法包括:
预先构建的P2P网络中的第一节点向第二节点发起针对智能合约的调用任务,以使所述第二节点执行所述智能合约;所述第一节点为所述P2P网络中的任意节点,所述第二节点为所述P2P网络中事先启动了所述智能合约的节点;
所述第二节点在执行所述智能合约前,针对该调用任务,判断所述第一节点是否有所述调用任务的访问权限,以及所述访问权限的授权步状态;
当所述第一节点有所述调用任务的访问权限时,所述第二节点根据所述访问权限的授权步状态,执行或不执行所述智能合约。


2.根据权利要求1所述的方法,其特征在于,所述第二节点在执行所述智能合约时会占用本地的资源,所述资源包括CPU资源、内存资源、网络资源或输入输出资源;所述方法还包括:
在所述智能合约的开发过程中,在所述智能合约的合约代码被编译为字节码时,所述P2P网络中的用户端将针对所述资源消耗的监测逻辑插桩到跳转指令和函数调用指令的位置,并以两个插桩点之间的所有指令作为一个基本块,确定所述基本块占用所述资源的单位消耗量以及所述智能合约占用所述资源的消耗上限;
在所述智能合约的执行过程中,所述第二节点遇到跳转指令或函数调用指令时,执行针对所述资源消耗的监测逻辑,根据所述基本块占用所述资源的单位消耗量,计算所述智能合约在本地执行时占用所述资源的总消耗量;
所述第二节点从所述调取任务中获取所述智能合约占用所述资源的消耗上限,并将所述智能合约在本地执行时占用所述资源的总消耗量与所述智能合约占用所述资源的消耗上限进行比较;
当所述智能合约在本地执行时占用所述资源的总消耗量大于所述智能合约占用所述资源的消耗上限时,改变所述访问权限的授权步状态。


3.根据权利要求2所述的方法,其特征在于,所述用户端以两个插桩点之间的所有指令作为一个基本块,确定所述基本块占用所述资源的单位消耗量以及所述智能合约占用所述资源的消耗上限,包括:
所述用户端确定所述跳转指令和所述函数调用指令两个插桩点之间的指令类型和指令数量,并定义每种指令类型占用所述资源的消耗量;
所述用户端根据所述指令数量和每种指令类型占用所述资源的消耗量,以两个插桩点之间的所有指令作为一个基本块,确定所述基本块占用所述资源的单位消耗量以及所述智能合约占用所述资源的消耗上限;
所述第二节点遇到跳转指令或函数调用指令时,执行针对所述资源消耗的监测逻辑,根据所述基本块占用所述资源的单位消耗量,计算所述智能合约在本地执行时占用所述资源的总消耗量,包括:
所述第二节点遇到跳转指令或函数调用指令时,执行针对所述资源消耗的监测逻辑,根据所计数的所述基本块的数量和所述基本块占用所述资源的单位消耗量,计算所述智能合约在本地执行时占用所述资源的总消耗量。


4.根据权利要求2所述的方法,其特征在于,所述输入输出资源具有多种类型,所述方法还包括:
在所述智能合约的开发过程中,针对所述输入输出资源的多种类型,用户端在所述智能合约的合约代码上方添加相应访问权限的注解,并显示所述注解,以将所述输入输出资源的多种类型一一提前声明。


5.根据权利要求1或2所述的方法,其特征在于,所述访问权限的授权步状态包括:
1)睡眠状态,表示授权步还未生成;
2)激活状态:表示授权步被请求激活,此时授权步已经生成;
3)有效状态,表示授权步开始执行,随着权限的使用,它的保护态发生变化;
4)挂起状态:表示授权步被管理员或因执行条件不足而强制处于挂起状态,它可以被恢复成有效状态,可能因生命周期用完或被管理员强制为无效状态;
5)无效状态:表示授权步已经没有存在的必要,可以在任务流程中删除。


6.根据权利要求1所述的方法,其特征在于,在所述第一节点向所述第二节点发起针对智能合约的调用任务前,所述方法还包括:
所述P2P网络中的任一节点在接收到用户端发送的合约启动请求时,该节点作为主节点启动所述智能合约,并在所述P2P网络中随机选择多个从节点,以使所述从节点启动所述智能合约,其中,所述智能合约存储于预先设置的可信分布式账本中;
所述主节点和所述从节点在启动所述智能合约后,生成一组公私钥;其中,所述从节点将所述公私钥中的公钥返回给所述主节点,将所述公私钥中的私钥存储在本地;
所述主节点将所有从节点返回的公钥与所述智能合约的元信息存证到所述可信分布式账本中,并将所述可信分布式账本返回的哈希值作为合约校验地址返回给所...

【专利技术属性】
技术研发人员:蔡华谦朱晓旻张舒汇郭京申舒俊宜
申请(专利权)人:北京智融云河科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1